Skip to content

Commit

Permalink
add list of activities to display to config and use it for activities…
Browse files Browse the repository at this point in the history
… notebook
  • Loading branch information
Tom Goetz committed Feb 13, 2022
1 parent 19bfff5 commit 87473ed
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 23 deletions.
2 changes: 1 addition & 1 deletion Fit
Submodule Fit updated from af51e2 to cbf5fd
32 changes: 12 additions & 20 deletions Jupyter/activities.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,16 @@
"import snakemd\n",
"\n",
"import fitfile\n",
"from garmindb import ConfigManager\n",
"from garmindb import ConfigManager, GarminConnectConfigManager\n",
"from garmindb.garmindb import GarminDb, Attributes, ActivitiesDb, Activities, StepsActivities, ActivityLaps, ActivityRecords\n",
"from idbutils.list_and_dict import list_not_none\n",
"\n",
"from jupyter_funcs import format_number\n",
"\n",
"\n",
"gc_config = GarminConnectConfigManager()\n",
"db_params_dict = ConfigManager.get_db_params()\n",
"\n",
"\n",
"garmin_db = GarminDb(db_params_dict)\n",
"garmin_act_db = ActivitiesDb(db_params_dict)\n",
"measurement_system = Attributes.measurements_type(garmin_db)\n",
Expand Down Expand Up @@ -88,25 +89,16 @@
"doc.add_header(\"Last Ten Activities\", 3)\n",
"doc.add_table(['Id', 'Name', 'Type', 'Sport', f'Distance ({distance_units})', 'Elapsed Time', f'Speed ({unit_strings[fitfile.units.UnitTypes.speed]})', f'Pace ({unit_strings[fitfile.units.UnitTypes.pace]})', 'Calories'], rows)\n",
"\n",
"rows = []\n",
"for display_activity in gc_config.display_activities():\n",
" name = display_activity.activity_name().capitalize()\n",
" rows.append([f'Latest {name}'] + __format_activity(Activities.get_latest_by_sport(garmin_act_db, display_activity)))\n",
" rows.append([f'Fastest {name}'] + __format_activity(Activities.get_fastest_by_sport(garmin_act_db, display_activity)))\n",
" rows.append([f'Slowest {name}'] + __format_activity(Activities.get_slowest_by_sport(garmin_act_db, display_activity)))\n",
" rows.append([f'Longest {name}'] + __format_activity(Activities.get_longest_by_sport(garmin_act_db, display_activity)))\n",
"\n",
"doc.add_header(\"Interesting Activities\", 3)\n",
"doc.add_table(['What', 'Id', 'Name', 'Type', 'Sport', f'Distance ({distance_units})', 'Elapsed Time', f'Speed ({unit_strings[fitfile.units.UnitTypes.speed]})', f'Pace ({unit_strings[fitfile.units.UnitTypes.pace]})', 'Calories'], [\n",
" ['Latest Walk'] + __format_activity(Activities.get_latest_by_sport(garmin_act_db, fitfile.Sport.walking)),\n",
" ['Fastest Walk'] + __format_activity(Activities.get_fastest_by_sport(garmin_act_db, fitfile.Sport.walking)),\n",
" ['Slowest Walk'] + __format_activity(Activities.get_slowest_by_sport(garmin_act_db, fitfile.Sport.walking)),\n",
" ['Longest Walk'] + __format_activity(Activities.get_longest_by_sport(garmin_act_db, fitfile.Sport.walking)),\n",
" ['Latest Run'] + __format_activity(Activities.get_latest_by_sport(garmin_act_db, fitfile.Sport.running)),\n",
" ['Fastest Run'] + __format_activity(Activities.get_fastest_by_sport(garmin_act_db, fitfile.Sport.running)),\n",
" ['Slowest Run'] + __format_activity(Activities.get_slowest_by_sport(garmin_act_db, fitfile.Sport.running)),\n",
" ['Longest Run'] + __format_activity(Activities.get_longest_by_sport(garmin_act_db, fitfile.Sport.running)),\n",
" ['Latest Hike'] + __format_activity(Activities.get_latest_by_sport(garmin_act_db, fitfile.Sport.hiking)),\n",
" ['Fastest Hike'] + __format_activity(Activities.get_fastest_by_sport(garmin_act_db, fitfile.Sport.hiking)),\n",
" ['Slowest Hike'] + __format_activity(Activities.get_slowest_by_sport(garmin_act_db, fitfile.Sport.hiking)),\n",
" ['Longest Hike'] + __format_activity(Activities.get_longest_by_sport(garmin_act_db, fitfile.Sport.hiking)),\n",
" ['Latest Paddle'] + __format_activity(Activities.get_latest_by_sport(garmin_act_db, fitfile.Sport.paddling)),\n",
" ['Fastest Paddle'] + __format_activity(Activities.get_fastest_by_sport(garmin_act_db, fitfile.Sport.paddling)),\n",
" ['Slowest Paddle'] + __format_activity(Activities.get_slowest_by_sport(garmin_act_db, fitfile.Sport.paddling)),\n",
" ['Longest Paddle'] + __format_activity(Activities.get_longest_by_sport(garmin_act_db, fitfile.Sport.paddling))\n",
"])\n",
"doc.add_table(['What', 'Id', 'Name', 'Type', 'Sport', f'Distance ({distance_units})', 'Elapsed Time', f'Speed ({unit_strings[fitfile.units.UnitTypes.speed]})', f'Pace ({unit_strings[fitfile.units.UnitTypes.pace]})', 'Calories'], rows)\n",
"\n",
"doc.add_header(\"Courses\", 3)\n",
"courses = Activities.get_col_distinct(garmin_act_db, Activities.course_id)\n",
Expand Down
3 changes: 3 additions & 0 deletions garmindb/GarminConnectConfig.json.example
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,8 @@
"steps" : []
},
"modes": {
},
"activities": {
"display" : None
}
}
2 changes: 2 additions & 0 deletions garmindb/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,5 @@ class Config():
checkup = {
'look_back_days' : 90
}

default_display_activities = ['walking', 'running', 'cycling']
6 changes: 6 additions & 0 deletions garmindb/config_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import tempfile

from idbutils import DbParams
from fitfile import Sport

from .config import Config

Expand Down Expand Up @@ -260,3 +261,8 @@ def graphs_activity_config(cls, activity, key):
activity = cls.graphs.get(activity)
if activity is not None:
return activity.get(key)

@classmethod
def default_display_activities(cls):
"""Return a list of the default activities to display."""
return [Sport.strict_from_string(activity) for activity in cls.default_display_activities]
8 changes: 8 additions & 0 deletions garmindb/garmin_connect_config_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import datetime

from idbutils import JsonConfig
from fitfile import Sport

from .statistics import Statistics
from .config_manager import ConfigManager
Expand Down Expand Up @@ -97,3 +98,10 @@ def enabled_stats(self):
json_enabled_stats_dict = self.config.get('enabled_stats', {stat_name: True for stat_name in list(Statistics)})
self.enabled_statistics = [Statistics.from_string(stat_name) for stat_name, stat_enabled in json_enabled_stats_dict.items() if stat_enabled]
return self.enabled_statistics

def display_activities(self):
"""Return a list of the interesting activities."""
activities_list = self.__get_node_value('activities', 'display')
if not activities_list:
activities_list = ConfigManager.default_display_activities()
return [Sport.strict_from_string(activity) for activity in activities_list]
2 changes: 1 addition & 1 deletion requirements.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ tqdm
matplotlib
cloudscraper
ipykernel
fitfile>=1.1.0
fitfile>=1.1.1
tcxfile>=1.0.4
idbutils>=1.0.5
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ matplotlib
cloudscraper
ipykernel
ipyleaflet
fitfile>=1.1.0
fitfile>=1.1.1
tcxfile>=1.0.4
idbutils>=1.0.5

0 comments on commit 87473ed

Please sign in to comment.