geo-activity-playground 0.40.0__py3-none-any.whl → 0.41.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. geo_activity_playground/alembic/versions/38882503dc7c_add_tags_to_activities.py +70 -0
  2. geo_activity_playground/alembic/versions/script.py.mako +0 -6
  3. geo_activity_playground/core/activities.py +17 -30
  4. geo_activity_playground/core/datamodel.py +83 -2
  5. geo_activity_playground/core/test_datamodel.py +14 -1
  6. geo_activity_playground/importers/strava_checkout.py +2 -5
  7. geo_activity_playground/webui/app.py +6 -2
  8. geo_activity_playground/webui/blueprints/activity_blueprint.py +20 -3
  9. geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py +50 -25
  10. geo_activity_playground/webui/blueprints/calendar_blueprint.py +12 -4
  11. geo_activity_playground/webui/blueprints/eddington_blueprints.py +253 -0
  12. geo_activity_playground/webui/blueprints/entry_views.py +30 -15
  13. geo_activity_playground/webui/blueprints/explorer_blueprint.py +83 -9
  14. geo_activity_playground/webui/blueprints/summary_blueprint.py +102 -42
  15. geo_activity_playground/webui/columns.py +37 -0
  16. geo_activity_playground/webui/templates/activity/show.html.j2 +15 -4
  17. geo_activity_playground/webui/templates/bubble_chart/index.html.j2 +24 -8
  18. geo_activity_playground/webui/templates/eddington/elevation_gain.html.j2 +150 -0
  19. geo_activity_playground/webui/templates/elevation_eddington/index.html.j2 +150 -0
  20. geo_activity_playground/webui/templates/explorer/server-side.html.j2 +72 -0
  21. geo_activity_playground/webui/templates/home.html.j2 +14 -5
  22. geo_activity_playground/webui/templates/page.html.j2 +10 -1
  23. geo_activity_playground/webui/templates/summary/index.html.j2 +91 -2
  24. {geo_activity_playground-0.40.0.dist-info → geo_activity_playground-0.41.0.dist-info}/METADATA +1 -1
  25. {geo_activity_playground-0.40.0.dist-info → geo_activity_playground-0.41.0.dist-info}/RECORD +29 -24
  26. geo_activity_playground/webui/blueprints/eddington_blueprint.py +0 -194
  27. /geo_activity_playground/webui/templates/eddington/{index.html.j2 → distance.html.j2} +0 -0
  28. {geo_activity_playground-0.40.0.dist-info → geo_activity_playground-0.41.0.dist-info}/LICENSE +0 -0
  29. {geo_activity_playground-0.40.0.dist-info → geo_activity_playground-0.41.0.dist-info}/WHEEL +0 -0
  30. {geo_activity_playground-0.40.0.dist-info → geo_activity_playground-0.41.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,150 @@
1
+ {% extends "page.html.j2" %}
2
+ {% from "search_form.html.j2" import search_form %}
3
+
4
+ {% block container %}
5
+ <h1 class="mb-3">Eddington Number for Elevation Gain</h1>
6
+
7
+ <div class="mb-3">
8
+ {{ search_form(query, equipments_avail, kinds_avail, search_query_favorites, search_query_last, request_url) }}
9
+ </div>
10
+
11
+ <div class="row mb-3">
12
+ <div class="col-md-4">
13
+ <form method="GET">
14
+ <div class="mb-3">
15
+ <label class="form-label">Divisor</label>
16
+ <select class="form-select" aria-label="Divisor" name="elevation_eddington_divisor" onchange="this.form.submit()">
17
+ {% for dv in divisor_values_avail %}
18
+ <option {% if dv==elevation_eddington_divisor %} selected {% endif %}>{{ dv }}</option>
19
+ {% endfor %}
20
+ {% for key, value in query.items() %}
21
+ {% if value and key != "active" %}
22
+ {% if value is sequence %}
23
+ {% for v in value %}
24
+ <input type="hidden" name="{{ key }}" value="{{ v }}"/>
25
+ {% endfor %}
26
+ {% else %}
27
+ <input type="hidden" name="{{ key }}" value="{{ value }}"/>
28
+ {% endif %}
29
+ {% endif %}
30
+ {% endfor %}
31
+ </select>
32
+ </div>
33
+ </form>
34
+
35
+ <h2>Definition</h2>
36
+
37
+ <p>Your Eddington number with divisor {{ elevation_eddington_divisor }} is <b>{{ eddington_number }}</b>.</p>
38
+
39
+ <p>That means that on {{ (eddington_number / elevation_eddington_divisor) | int }} separate days you
40
+ have recorded activities with an elevation gain of more than {{ eddington_number }} m. Going high is one thing, going often is
41
+ another. But going high often is hard. Also if you increment the Eddington number, all days with less
42
+ elevation gain will not count any more. It becomes increasingly hard to increment the Eddington number because you
43
+ don't only need to achieve a higher count, but all flatter activities don't count towards the bigger number.
44
+ </p>
45
+ </div>
46
+
47
+ <div class="col-md-8">
48
+ <h2>Missing days</h2>
49
+
50
+ <p>How many more days do you need to increment your Eddington number?</p>
51
+
52
+ <table class="table">
53
+ <thead>
54
+ <tr>
55
+ <th>Elevation Gain</th>
56
+ <th>Count</th>
57
+ <th>Missing days</th>
58
+ </tr>
59
+ </thead>
60
+ <tbody>
61
+ {% for row in eddington_table %}
62
+ <tr>
63
+ <td>{{ row['elevation_gain'] }}</td>
64
+ <td>{{ row['total'] }}</td>
65
+ <td>{{ row['missing'] }}</td>
66
+ </tr>
67
+ {% endfor %}
68
+ </tbody>
69
+ </table>
70
+ </div>
71
+ </div>
72
+
73
+ <div class="row mb-1">
74
+ <div class="col">
75
+ <h2>Plot</h2>
76
+
77
+ <p>In a graphical representation, the Eddington number is the elevation gain where the red line intersects with the
78
+ blue area.</p>
79
+
80
+ {{ vega_direct("logarithmic_plot", logarithmic_plot) }}
81
+ </div>
82
+ </div>
83
+
84
+ <div class="mb-3">
85
+ <h2 class="mb-3">Eddington number history</h2>
86
+
87
+ <p>How did the Eddington number evolve over time?</p>
88
+
89
+ {{ vega_direct("eddington_number_history_plot", eddington_number_history_plot) }}
90
+ </div>
91
+
92
+ <div class="mb-3">
93
+ <h2 class="mb-3">Yearly Eddington number</h2>
94
+
95
+ <p>If we only consider the activities within one calendar year for the Eddington number, we get the following:</p>
96
+
97
+ <table class="table">
98
+ <thead>
99
+ <tr>
100
+ <th>Year</th>
101
+ <th>Eddington number</th>
102
+ </tr>
103
+ </thead>
104
+ <tbody>
105
+ {% for year, eddington in yearly_eddington.items() %}
106
+ <tr>
107
+ <td>{{ year }}</td>
108
+ <td>{{ eddington }}</td>
109
+ </tr>
110
+ {% endfor %}
111
+ </tbody>
112
+ </table>
113
+ </div>
114
+
115
+
116
+ <h2 class="mb-3">Eddington number per Week</h2>
117
+
118
+ <div class="row mb-3">
119
+ <div class="col-md-8">
120
+ {{ vega_direct("eddington_per_week_plot", eddington_per_week_plot) }}
121
+ </div>
122
+
123
+ <div class="col-md-4">
124
+ <table class="table">
125
+ <thead>
126
+ <tr>
127
+ <th>Elevation Gain</th>
128
+ <th>Count</th>
129
+ <th>Missing weeks</th>
130
+ </tr>
131
+ </thead>
132
+ <tbody>
133
+ {% for row in eddington_table_weeks %}
134
+ <tr>
135
+ <td>{{ row['elevation_gain'] }}</td>
136
+ <td>{{ row['total'] }}</td>
137
+ <td>{{ row['missing'] }}</td>
138
+ </tr>
139
+ {% endfor %}
140
+ </tbody>
141
+ </table>
142
+ </div>
143
+ </div>
144
+
145
+ <div class="row mb-1">
146
+
147
+ </div>
148
+
149
+
150
+ {% endblock %}
@@ -0,0 +1,72 @@
1
+ {% extends "page.html.j2" %}
2
+
3
+ {% block container %}
4
+
5
+ <h1>Explorer Tiles</h1>
6
+
7
+ {% if zoom_level_not_generated %}
8
+ <p>You try to access explorer tiles for a level that hasn't been generated before. That is not a problem, we just don't
9
+ generate all levels to save a bit of time. If you want to have it, just enable it!</p>
10
+
11
+ <a href="{{ url_for('.enable_zoom_level', zoom=zoom_level_not_generated) }}" class="btn btn-primary">Enable Zoom {{
12
+ zoom_level_not_generated }}</a>
13
+ {% else %}
14
+
15
+ <div class="row mb-3">
16
+ <div class="col">
17
+ <h2>Map with explored tiles</h2>
18
+ </div>
19
+ </div>
20
+
21
+ <div class="row mb-3">
22
+ <div class="col">
23
+ <div id="explorer-map" class="mb-1" style="height: 800px;"></div>
24
+ <p>Download tiles in visible area: <a href="#" onclick="downloadAs('explored.geojson')">Explored as GeoJSON</a>,
25
+ <a href="#" onclick="downloadAs('explored.gpx')"">Explored as GPX</a>, <a href=" #"
26
+ onclick="downloadAs('missing.geojson')">Missing as GeoJSON</a> or <a href="#"
27
+ onclick="downloadAs('missing.gpx')"">Missing as GPX</a>.</p>
28
+ <script>
29
+ let map = L.map('explorer-map', {
30
+ fullscreenControl: true,
31
+ center: [{{ center.latitude }}, {{ center.longitude }}],
32
+ zoom: 12
33
+ });
34
+ L.tileLayer('/explorer/{{ zoom }}/tile/{z}/{x}/{y}.png', {
35
+ maxZoom: 19,
36
+ attribution: '{{ map_tile_attribution|safe }}'
37
+ }).addTo(map)
38
+
39
+ let bbox = {{ center.bbox| safe }}
40
+ if (bbox) {
41
+ map.fitBounds(L.geoJSON(bbox).getBounds())
42
+ }
43
+ </script>
44
+ </div>
45
+ </div>
46
+
47
+ <div class=" row mb-3">
48
+ <div class="col">
49
+ <h2>Tile history</h2>
50
+ </div>
51
+ </div>
52
+
53
+ <div class="row mb-3">
54
+ <div class="col-md-4">
55
+ {% if plot_tile_evolution|length > 0 %}
56
+ {{ vega_direct("plot_tile_evolution", plot_tile_evolution) }}
57
+ {% endif %}
58
+ </div>
59
+ <div class="col-md-4">
60
+ {% if plot_cluster_evolution|length > 0 %}
61
+ {{ vega_direct("plot_cluster_evolution", plot_cluster_evolution) }}
62
+ {% endif %}
63
+ </div>
64
+ <div class="col-md-4">
65
+ {% if plot_square_evolution|length > 0 %}
66
+ {{ vega_direct("plot_square_evolution", plot_square_evolution) }}
67
+ {% endif %}
68
+ </div>
69
+ </div>
70
+
71
+ {% endif %}
72
+ {% endblock %}
@@ -9,11 +9,10 @@
9
9
  <div class="col">
10
10
  <h2>Last 30 days</h2>
11
11
  {{ vega_direct("distance-last-30-days", distance_last_30_days_plot) }}
12
+ {{ vega_direct("elevation-gain-last-30-days", elevation_gain_last_30_days_plot) }}
12
13
  </div>
13
14
  </div>
14
15
 
15
-
16
-
17
16
  <script>
18
17
  function add_map(id, geojson) {
19
18
  let map = L.map(`map-${id}`, {
@@ -45,11 +44,21 @@
45
44
  </script>
46
45
  <div class="card-body">
47
46
  <a href="{{ url_for('activity.show', id=elem.activity.id) }}">
48
- <h5 class="card-title">{{ elem.activity["name"] }}</h5>
47
+ <h5 class="card-title">{{ elem.activity.name }}</h5>
49
48
  </a>
50
- <p class="card-text">{{ elem.activity.kind }} with {{ (elem.activity.distance_km)|round(1) }} km in {{
51
- elem.activity.elapsed_time|td }}</p>
49
+ <p class="card-text">
50
+ {{ elem.activity.kind.name }} with
51
+ 📏 {{ (elem.activity.distance_km)|round(1) }} km
52
+ {% if elem.activity.elapsed_time %}
53
+ ⏱️ {{ elem.activity.elapsed_time|td }}
54
+ {% endif %}
55
+ {% if elem.activity.elevation_gain %}
56
+ ⛰️ {{ (elem.activity.elevation_gain)|round|int }} m
57
+ {% endif %}
58
+ </p>
59
+ {% if elem.activity.start %}
52
60
  <p class="card-text"><small class="text-body-secondary">{{ elem.activity.start|dt }}</small></p>
61
+ {% endif %}
53
62
  </div>
54
63
  </div>
55
64
  </div>
@@ -78,9 +78,12 @@
78
78
  <li><a class="dropdown-item" href="{{ url_for('summary.index') }}">Summary
79
79
  Statistics</a>
80
80
  </li>
81
- <li><a class="dropdown-item" href="{{ url_for('eddington.index') }}">Eddington
81
+ <li><a class="dropdown-item" href="{{ url_for('eddington.distance') }}">Eddington
82
82
  Number</a>
83
83
  </li>
84
+ <li><a class="dropdown-item" href="{{ url_for('eddington.elevation_gain') }}">Elevation
85
+ Eddington Number</a>
86
+ </li>
84
87
  <li><a class="dropdown-item" href="{{ url_for('equipment.index') }}">Equipment</a></li>
85
88
  </ul>
86
89
  </li>
@@ -95,6 +98,12 @@
95
98
  Tiles (Zoom 14)</a></li>
96
99
  <li><a class="dropdown-item" href="{{ url_for('explorer.map', zoom=17) }}">Squadratinhos
97
100
  (Zoom 17)</a></li>
101
+ <li><a class="dropdown-item" href="{{ url_for('explorer.server_side', zoom=14) }}">Fast
102
+ Explorer
103
+ Tiles (Zoom 14)</a></li>
104
+ <li><a class="dropdown-item" href="{{ url_for('explorer.server_side', zoom=17) }}">Fast
105
+ Squadratinhos
106
+ (Zoom 17)</a></li>
98
107
 
99
108
  <li>
100
109
  <hr class="dropdown-divider">
@@ -40,7 +40,6 @@
40
40
  </div>
41
41
  </div>
42
42
 
43
-
44
43
  <p>How much distance have you covered in each year up to that time of the year? The first plot gives you each year as
45
44
  one line. The second plot shows you how distance you have covered in each year and with which activity kinds.</p>
46
45
 
@@ -112,6 +111,96 @@
112
111
  {% endfor %}
113
112
  </div>
114
113
 
114
+ <h2>Elevation Gain</h2>
115
+
116
+ <p>This is your weekly elevation gain for the past rolling year, split by activity kind.</p>
117
+
118
+ <div class="row mb-3">
119
+ <div class="col">
120
+ {{ vega_direct("plot_weekly_elevation_gain", plot_weekly_elevation_gain) }}
121
+ </div>
122
+ </div>
123
+
124
+ <p>Similarly, you find the same data but aggregated by whole months for the past two years. Also split by activity kind.
125
+ </p>
126
+
127
+ <div class="row mb-3">
128
+ <div class="col">
129
+ {{ vega_direct("plot_monthly_elevation_gain", plot_monthly_elevation_gain) }}
130
+ </div>
131
+ </div>
132
+
133
+ <p>How much elevation have you gained in each year up to that time of the year? The first plot gives you each year as
134
+ one line. The second plot shows you how much elevation you have gained in each year and with which activity kinds.</p>
135
+
136
+ <div class="row mb-3">
137
+ <div class="col-md-6">
138
+ {{ vega_direct("plot_year_elevation_gain_cumulative", plot_year_elevation_gain_cumulative) }}
139
+ </div>
140
+ <div class="col-md-6">
141
+ {{ vega_direct("plot_yearly_elevation_gain", plot_yearly_elevation_gain) }}
142
+ </div>
143
+ </div>
144
+
145
+ <div class="row mb-3">
146
+ <div class="col-md-4">
147
+ <p>What's the average elevation gain per activity? This naturally differs per activity and perhaps also varies with
148
+ the years. This table gives you all the mean values.</p>
149
+ </div>
150
+
151
+ <div class="col-md-8">
152
+ <table class="table table-sort table-arrows">
153
+ <thead>
154
+ <tr>
155
+ <th style="text-align: right;">Year</th>
156
+ {% for col in tabulate_year_kind_mean_elevation_gain['columns'][1:] %}
157
+ <th style="text-align: right;">{{ col }}</th>
158
+ {% endfor %}
159
+ </tr>
160
+ </thead>
161
+ <tbody>
162
+ {% for row in tabulate_year_kind_mean_elevation_gain['data'] %}
163
+ <tr>
164
+ {% for value in row %}
165
+ <td align="right">
166
+ {% if value == value %}
167
+ {{ value | round(1) }}
168
+ {% if not loop.first %}
169
+ m
170
+ {% endif %}
171
+ {% endif %}
172
+ </td>
173
+ {% endfor %}
174
+ </tr>
175
+ {% endfor %}
176
+ </tbody>
177
+ </table>
178
+ </div>
179
+ </div>
180
+
181
+ <p>Next we take one row per month, each column is a day-of-month. The brighter a box, the more elevation gain you have covered
182
+ on that day. This makes it easy to spot those days where you really covered a lot of elevation gain!</p>
183
+
184
+
185
+ <ul class="nav nav-pills mb-3" id="myTab" role="tablist">
186
+ {% for year, plot in plot_elevation_gain_heatmaps.items() %}
187
+ <li class="nav-item" role="presentation">
188
+ <button class="nav-link {% if loop.last %} active {% endif %}" id="heatmap-elevation-gain-{{ year }}" data-bs-toggle="tab"
189
+ data-bs-target="#heatmap-elevation-gain-{{ year }}-pane" type="button" role="tab" aria-controls="heatmap-elevation-gain-{{ year }}-pane"
190
+ aria-selected="{{ loop.last }}">{{ year }}</button>
191
+ </li>
192
+ {% endfor %}
193
+ </ul>
194
+
195
+ <div class="tab-content mb-3" id="myTabContent">
196
+ {% for year, plot in plot_elevation_gain_heatmaps.items() %}
197
+ <div class="tab-pane fade {% if loop.last %} show active {% endif %}" id="heatmap-elevation-gain-{{ year }}-pane" role="tabpanel"
198
+ aria-labelledby="heatmap-elevation-gain-{{ year }}" tabindex="0">
199
+ {{ vega_direct("plot_elevation_gain_heatmap_%d"|format(year), plot) }}
200
+ </div>
201
+ {% endfor %}
202
+ </div>
203
+
115
204
  <h2>Hall of Fame</h2>
116
205
 
117
206
  <script>
@@ -151,7 +240,7 @@
151
240
  </ul>
152
241
  </p>
153
242
  <p class="card-text"><small class="text-body-secondary"></small>{{ activity.kind }} with {{
154
- (activity.distance_km)|round(1) }} km in {{
243
+ (activity.distance_km)|round(1) }} km / {{activity.elevation_gain|round|int}} m in {{
155
244
  activity.elapsed_time|td }} on {{ activity.start|dt }}</small></p>
156
245
  </div>
157
246
  </div>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geo-activity-playground
3
- Version: 0.40.0
3
+ Version: 0.41.0
4
4
  Summary: Analysis of geo data activities like rides, runs or hikes.
5
5
  License: MIT
6
6
  Author: Martin Ueding
@@ -3,18 +3,19 @@ geo_activity_playground/__main__.py,sha256=eL7NlKydYrzi4ikTvvKmlwkEFxx0V6CXOHOhR
3
3
  geo_activity_playground/alembic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
4
4
  geo_activity_playground/alembic/env.py,sha256=46oMzwSROaAsYuYWTd46txFdRLD3adm_SCn01A_ex8Q,2081
5
5
  geo_activity_playground/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
6
+ geo_activity_playground/alembic/versions/38882503dc7c_add_tags_to_activities.py,sha256=HmvYgHlVodHB7xyigg7zHkFXSi1znWqKfOHcd6y9sZE,3157
6
7
  geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py,sha256=WrmlDllnJECg6cSOeS05wYCa977_SXbJUV5khDSzntw,1082
7
8
  geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py,sha256=YTnnENkQ8WqLz7PFof7tUWNkWcoHGkAfAM52x1N9umo,3029
8
9
  geo_activity_playground/alembic/versions/93cc82ad1b60_add_parametricplotspec.py,sha256=P9nG348kz6Wi2lD8lJ_f-0juBtlJb1tqBWYqP2XMQPE,1365
9
10
  geo_activity_playground/alembic/versions/ab83b9d23127_add_upstream_id.py,sha256=Wz02lBP2r7-09DjuQP8u8i7ypQ2SZU5RUc422-_ZBDk,851
10
11
  geo_activity_playground/alembic/versions/b03491c593f6_add_crop_indices.py,sha256=1pt7aes0PWJXZ98HxqeDK-ehaU9KLApjCmZYoqCa8V0,975
11
12
  geo_activity_playground/alembic/versions/e02e27876deb_add_square_planner_bookmark_name.py,sha256=Y0OMxp5z_-CQ83rww6GEBFRawXu0J0pLrLArgSjJ7wQ,866
12
- geo_activity_playground/alembic/versions/script.py.mako,sha256=3qBrHBf7F7ChKDUIdiNItiSXrDpgQdM7sR0YKzpaC50,689
13
+ geo_activity_playground/alembic/versions/script.py.mako,sha256=JADdI7OljvzEw8JTwKoIw589EZWmKBjtqdRsjnpNd_c,578
13
14
  geo_activity_playground/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- geo_activity_playground/core/activities.py,sha256=R3RDvOkHyWL2Wr-Bgqjgr5wDjVqaJ3WSECL2fbMyiu8,5485
15
+ geo_activity_playground/core/activities.py,sha256=0dZk_Xa033FwRVXotcac4BxyW0pLNQAymYiWUkVDIYI,4761
15
16
  geo_activity_playground/core/config.py,sha256=eGWWbNfHa6H64AHCnFYTsAJ7-pWi-PhyxL4hjZ4u03U,5256
16
17
  geo_activity_playground/core/coordinates.py,sha256=tDfr9mlXhK6E_MMIJ0vYWVCoH0Lq8uyuaqUgaa8i0jg,966
17
- geo_activity_playground/core/datamodel.py,sha256=v5tLkPO53ilVIE78_gLz7igi6qh0ffdDPJmF7P2lkgE,10303
18
+ geo_activity_playground/core/datamodel.py,sha256=tOGo5PqcKZ8g3EAqh4vsj8NGBm4WXqBi5ChyqZbmaik,12866
18
19
  geo_activity_playground/core/enrichment.py,sha256=kc9747ocSs2_3R7oW9Rjs3_lKP37gdvBUbyWpILaqHc,7346
19
20
  geo_activity_playground/core/heart_rate.py,sha256=-S3WAhS7AOywrw_Lk5jfuo_fu6zvZQ1VtjwEKSycWpU,1542
20
21
  geo_activity_playground/core/meta_search.py,sha256=naErjAC7ZCFhOF6d492kbegZxCdzbpGcJvjQLJTE4xE,5016
@@ -25,7 +26,7 @@ geo_activity_playground/core/raster_map.py,sha256=Cq8dNLdxVQg3Agzn2bmXVu0-8kZf56
25
26
  geo_activity_playground/core/similarity.py,sha256=L2de3DPRdDeDY5AxZwLDcH7FjHWRWklr41VNU06q9kQ,3117
26
27
  geo_activity_playground/core/summary_stats.py,sha256=v5FtWnE1imDF5axI6asVN55wCrlD73oZ6lvqzxsTN2c,1006
27
28
  geo_activity_playground/core/tasks.py,sha256=-_9cxekoHSWzCW4XblNeqrwi2tTqr5AE7_-p8fdqhwc,2886
28
- geo_activity_playground/core/test_datamodel.py,sha256=noNgiGzs2BOZvdi2FosLvW8YTinE6Gl7_JrEs7D8GBI,230
29
+ geo_activity_playground/core/test_datamodel.py,sha256=-VrGHgx5Z3MSQPqHGmmm7atRJYbg5y_ukvRHKxk22PI,569
29
30
  geo_activity_playground/core/test_meta_search.py,sha256=zhuD343Xce-4Fkznw81DHQ7pK5eyX5UbcyCHuYRKsr8,3091
30
31
  geo_activity_playground/core/test_summary_stats.py,sha256=qH_45mPRFD2H-Rr0Ku-RYc67vhC7qKxbPr7J2F36uV8,3081
31
32
  geo_activity_playground/core/test_tiles.py,sha256=zce1FxNfsSpOQt66jMehdQRVoNdl-oiFydx6iVBHZXM,764
@@ -42,30 +43,31 @@ geo_activity_playground/importers/activity_parsers.py,sha256=yD7L5eDOpiLWf6RHSQf
42
43
  geo_activity_playground/importers/csv_parser.py,sha256=O1pP5GLhWhnWcy2Lsrr9g17Zspuibpt-GtZ3ZS5eZF4,2143
43
44
  geo_activity_playground/importers/directory.py,sha256=4Q7UAFa7ztkgqf4FvPbH2LlrO-7a8Fu7tkYPHOpHm1g,5210
44
45
  geo_activity_playground/importers/strava_api.py,sha256=J0-VXNrLq22fhTcWkQPE5AVrzy5aegC7SBi-UXFtAy4,7576
45
- geo_activity_playground/importers/strava_checkout.py,sha256=uNcmA-ADURNpW5zJdRkG07eHjj1MVoIKsv0EWdc5iRw,10090
46
+ geo_activity_playground/importers/strava_checkout.py,sha256=3AEFlNr811MdVz_Ww1zz_alptr_3mDvGr188bM3qU7U,9977
46
47
  geo_activity_playground/importers/test_csv_parser.py,sha256=nOTVTdlzIY0TDcbWp7xNyNaIO6Mkeu55hVziVl22QE4,1092
47
48
  geo_activity_playground/importers/test_directory.py,sha256=_fn_-y98ZyElbG0BRxAmGFdtGobUShPU86SdEOpuv-A,691
48
49
  geo_activity_playground/importers/test_strava_api.py,sha256=7b8bl5Rh2BctCmvTPEhCadxtUOq3mfzuadD6F5XxRio,398
49
50
  geo_activity_playground/webui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- geo_activity_playground/webui/app.py,sha256=xoRnF2ISq74v48ZBpyrCxEFPCwtS4fw3WZvWbvExSmE,7208
51
+ geo_activity_playground/webui/app.py,sha256=BOaYo3a8U53w7zgWHLDxiYxrWqHQyW5piGSNoMtW7lc,7277
51
52
  geo_activity_playground/webui/authenticator.py,sha256=jtQqvpVHa_eLTAulmvvJgDRoCWOEege49G9zn3MfYk8,1394
52
53
  geo_activity_playground/webui/blueprints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
- geo_activity_playground/webui/blueprints/activity_blueprint.py,sha256=A0hxhdEY_Ma5AEWT3Gv70Ys70DWSqSJOEdQAMeNb5CU,24337
54
+ geo_activity_playground/webui/blueprints/activity_blueprint.py,sha256=lUCoL5meZy2ovvTjLeam0nhTzNVrRpjKHrjW-vnlHcg,24974
54
55
  geo_activity_playground/webui/blueprints/auth_blueprint.py,sha256=_VZeP3VN626BoOOZUkNVnuw9v-cEOrkHz5lhFPmxqMY,784
55
- geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py,sha256=tiqDf-DZLdjm8faatZ5fqbh7gkII2KmBPRtkcKqoLIA,2194
56
- geo_activity_playground/webui/blueprints/calendar_blueprint.py,sha256=L6R8xieYYXeEMDzJs-MjWax1JAHhppWy3r3U8MyCOAk,2585
57
- geo_activity_playground/webui/blueprints/eddington_blueprint.py,sha256=DHvq1gY8-C7xsHp5LxqM3eN2eAOwbyLyBH3J8E0zXps,6937
58
- geo_activity_playground/webui/blueprints/entry_views.py,sha256=-CRrE5b9QYyrmQhLYSW0qo20XRY9RDDJUepJCwFoKOs,2322
56
+ geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py,sha256=xESHzYxlbhz4oNDuxV0A70eVKpFwz84pYC3q_YVZZg8,2812
57
+ geo_activity_playground/webui/blueprints/calendar_blueprint.py,sha256=4EIBZ8rdXEu3tbl1faVlRwHb8Qp0JuMc3eyxwMkq6g8,2848
58
+ geo_activity_playground/webui/blueprints/eddington_blueprints.py,sha256=Umb2wtKmAXuQZEXt0d985qMILtvqc3vxj_yXymnzmUs,8702
59
+ geo_activity_playground/webui/blueprints/entry_views.py,sha256=RK2ypZO75DhweGjoKK7pG699urDB7twFkWaS2CyWmtw,2824
59
60
  geo_activity_playground/webui/blueprints/equipment_blueprint.py,sha256=juQ5L2BlrECb00LBbiY2yc0b8W_B9Y3fPwtbiaRfgpo,5634
60
- geo_activity_playground/webui/blueprints/explorer_blueprint.py,sha256=ZNDRwtmYvWGyqDe3fszGp0DR5qzRRxRss32ZGPRuXsY,12469
61
+ geo_activity_playground/webui/blueprints/explorer_blueprint.py,sha256=6w6seOCVf7Z5y4BBtgVwoZ4t8qastnm7ViX8Bs_zj2w,15566
61
62
  geo_activity_playground/webui/blueprints/heatmap_blueprint.py,sha256=iHI5YJYhX7ZOlzTgzl2efIRDzt3UMYCx7X4-LVd0MWk,8702
62
63
  geo_activity_playground/webui/blueprints/plot_builder_blueprint.py,sha256=7HrjpBM-608HSOh0i31Lmt7yDNMfWlEn6G7DlYqlV9w,3031
63
64
  geo_activity_playground/webui/blueprints/search_blueprint.py,sha256=Sv_KL1Cdai26y51qVfI-5jZLhtElREsEar1dbR_VAC4,2275
64
65
  geo_activity_playground/webui/blueprints/settings_blueprint.py,sha256=UUv63BDQFnBPq8fLDdlWHd5mxL5qIgcGUuqQRFemyEA,16108
65
66
  geo_activity_playground/webui/blueprints/square_planner_blueprint.py,sha256=xVaxJxmt8Dysl3UL9f2y__LVLtTH2Np1Ust4OSXKRAk,4746
66
- geo_activity_playground/webui/blueprints/summary_blueprint.py,sha256=-CArocRkcjzC7aTOCsG_8BnLJSX2b9X9C79mesyfvRw,9465
67
+ geo_activity_playground/webui/blueprints/summary_blueprint.py,sha256=rK4LGR2Rpioy4wSqNYuyRn4WxaWeBLensJ3PmAd-ouY,11469
67
68
  geo_activity_playground/webui/blueprints/tile_blueprint.py,sha256=YzZf9OrNdjhc1_j4MtO1DMcw1uCv29ueNsYd-mWqgbg,837
68
69
  geo_activity_playground/webui/blueprints/upload_blueprint.py,sha256=_VeGu08vlRZlRn5J4t7VdBk2TTW5GXB4JUcge9mbX9Y,4111
70
+ geo_activity_playground/webui/columns.py,sha256=hSW8bFVKRUMBlWZYAN-tZ_tfED3VDQK75e4Zzw7_jZ0,642
69
71
  geo_activity_playground/webui/flasher.py,sha256=Covc1D9cO_jjokRWnvyiXCc2tfp3aZ8XkNqFdA1AXtk,500
70
72
  geo_activity_playground/webui/plot_util.py,sha256=5Uesjj-xcMskQX2z9viDZYHSxLGrH2a5dHA1ogsJW9U,261
71
73
  geo_activity_playground/webui/search_util.py,sha256=uAxnN9Tdei8IKV6Lqx4z5UIJf0_HKLd9NG9meiu5u4s,2202
@@ -107,18 +109,21 @@ geo_activity_playground/webui/templates/activity/day.html.j2,sha256=CHEvxlZralCm
107
109
  geo_activity_playground/webui/templates/activity/edit.html.j2,sha256=9HDFjYfUQBB6HAgeIZppFPlpiJ1vDZWcGyP7uYG_Hnw,1369
108
110
  geo_activity_playground/webui/templates/activity/lines.html.j2,sha256=_ZDg1ruW-9UMJfOudy1-uY_-IcSSaagq7tPCih5Bb8g,1079
109
111
  geo_activity_playground/webui/templates/activity/name.html.j2,sha256=7Wbh3IrVL5lMRve467H0P10Shn5FzGpaXLhV0H-X4Hk,2725
110
- geo_activity_playground/webui/templates/activity/show.html.j2,sha256=NKXplqDMkzS5z7JKJliNr5bKxTG6cr3ahd6vrmN0280,8322
112
+ geo_activity_playground/webui/templates/activity/show.html.j2,sha256=70zyc-fIr4JeU7VuLp_O4SYuNMkvDDTnsLFq7woYTlo,8964
111
113
  geo_activity_playground/webui/templates/activity/trim.html.j2,sha256=3oAXQab6QqWjGBC9KCvWNOVn8uRmxoDLj3hx_O63TXc,1836
112
114
  geo_activity_playground/webui/templates/auth/index.html.j2,sha256=ILQ5HvTEYc3OrtOAIFt1VrqWorVD70V9DC342znmP70,579
113
- geo_activity_playground/webui/templates/bubble_chart/index.html.j2,sha256=pqyafhIgL97FuD4_-lMb8lRWC3rejwrjawbmfp17XFY,1143
115
+ geo_activity_playground/webui/templates/bubble_chart/index.html.j2,sha256=yd7lWjtxxVmJZqCiXb0Y1gMEOQ7LQYJXEdpE7JB1OZY,1616
114
116
  geo_activity_playground/webui/templates/calendar/index.html.j2,sha256=8dV9yeDwfv0Mm81mhiPHN5r3hdPUWl1Yye03x0Rqbo8,1601
115
117
  geo_activity_playground/webui/templates/calendar/month.html.j2,sha256=IEhGqknL69okX5brMzTgZdnmrgUQLmGGkDE5zd7RG7s,2008
116
- geo_activity_playground/webui/templates/eddington/index.html.j2,sha256=_3oxzHhC_s9ATtvGmuIWKqvjIQYJNvdCxmYnOyN9QnY,3716
118
+ geo_activity_playground/webui/templates/eddington/distance.html.j2,sha256=_3oxzHhC_s9ATtvGmuIWKqvjIQYJNvdCxmYnOyN9QnY,3716
119
+ geo_activity_playground/webui/templates/eddington/elevation_gain.html.j2,sha256=an8eaZIMFpGwQiwVWkNhLtu6djl_NU7eTaOsBEiMUK8,4931
120
+ geo_activity_playground/webui/templates/elevation_eddington/index.html.j2,sha256=pG7w3QY0yZKI322_EzDgCc1c1p5k2Xl-WqemiKa4MVY,4969
117
121
  geo_activity_playground/webui/templates/equipment/index.html.j2,sha256=wwrGmfCCBn-5CzMymi80hg3lNMZ7J1fAWWl_2zHeiMc,1845
118
122
  geo_activity_playground/webui/templates/explorer/index.html.j2,sha256=3t9ikAF6oMvEaVlS3Kb1tj9ngomIQlatzqPnqVsEDKA,6908
123
+ geo_activity_playground/webui/templates/explorer/server-side.html.j2,sha256=3eYh3mmgPDmxFjH6Ofx1iw-jptcD9ctZixYh59mka3w,2496
119
124
  geo_activity_playground/webui/templates/heatmap/index.html.j2,sha256=kTVvEt-GmSNebDlVMa6zwyIuP0mJcZQFuqj-IY8JV5U,1359
120
- geo_activity_playground/webui/templates/home.html.j2,sha256=vQp9uMn7BLY7pexWJVpQVWN8ZbbtWZvkW_hYSkYQeZs,2212
121
- geo_activity_playground/webui/templates/page.html.j2,sha256=1if_h8w2nsq9wNut-nzlpTNsPsQTxV0yPMdgUvz7bz8,11250
125
+ geo_activity_playground/webui/templates/home.html.j2,sha256=L0wVZ6RA3mel1Wt7ZD7PbaMUEEcdO2XLDy1e1ZdRPUY,2697
126
+ geo_activity_playground/webui/templates/page.html.j2,sha256=d8-wLkWPzcuvrbkAT1viTbeVyH29__TMyAoMjYmzuVs,11939
122
127
  geo_activity_playground/webui/templates/plot_builder/edit.html.j2,sha256=x5Ki425me3HY6CcBQ37le9g8rCpbOxFVkdr0N_L84-g,2230
123
128
  geo_activity_playground/webui/templates/plot_builder/index.html.j2,sha256=fBuGLT2HIwlgz5eGeKXOdIDqzDSQoY99w-hyt_0JP-w,832
124
129
  geo_activity_playground/webui/templates/search/index.html.j2,sha256=_kxTgsdbT8o-4ryW0pvyWE7a-rOs7xzGUpdSPp8Q1is,1320
@@ -135,11 +140,11 @@ geo_activity_playground/webui/templates/settings/segmentation.html.j2,sha256=QV7
135
140
  geo_activity_playground/webui/templates/settings/sharepic.html.j2,sha256=qZkfEpd4CtKKMaSSVadqvNEgMRYLV-0X-pw5-nJvukk,678
136
141
  geo_activity_playground/webui/templates/settings/strava.html.j2,sha256=GCE5gskQ6xJ8AM1qGrrUVLDOiuqg510mWzzsZjia0gk,2211
137
142
  geo_activity_playground/webui/templates/square_planner/index.html.j2,sha256=-OnY2nQCgZCslOzf28ogZwFykwF8tZm7PgFwOE3eBDk,8176
138
- geo_activity_playground/webui/templates/summary/index.html.j2,sha256=T8YUGMXaZYeVl7Q5-H1YhdnGo3bx_LtExPQ60qj_Zhs,5638
143
+ geo_activity_playground/webui/templates/summary/index.html.j2,sha256=ozGuoF36RBUN56Cnc8AFFguRdu_c4dP4eAotw8aidE8,9262
139
144
  geo_activity_playground/webui/templates/upload/index.html.j2,sha256=I1Ix8tDS3YBdi-HdaNfjkzYXVVCjfUTe5PFTnap1ydc,775
140
145
  geo_activity_playground/webui/templates/upload/reload.html.j2,sha256=YZWX5eDeNyqKJdQAywDBcU8DZBm22rRBbZqFjrFrCvQ,556
141
- geo_activity_playground-0.40.0.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
142
- geo_activity_playground-0.40.0.dist-info/METADATA,sha256=lhX789KVp1udKHGEsa3XojbAwFYRHs2X1E0DlTr9veo,1758
143
- geo_activity_playground-0.40.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
144
- geo_activity_playground-0.40.0.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
145
- geo_activity_playground-0.40.0.dist-info/RECORD,,
146
+ geo_activity_playground-0.41.0.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
147
+ geo_activity_playground-0.41.0.dist-info/METADATA,sha256=0vXuY0ptWhByXxwVagr3Xlmgf0Frwhatre1ZPSHM6h4,1758
148
+ geo_activity_playground-0.41.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
149
+ geo_activity_playground-0.41.0.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
150
+ geo_activity_playground-0.41.0.dist-info/RECORD,,