geo-activity-playground 0.36.2__py3-none-any.whl → 0.38.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 (33) hide show
  1. geo_activity_playground/core/activities.py +12 -0
  2. geo_activity_playground/core/config.py +6 -2
  3. geo_activity_playground/core/enrichment.py +9 -0
  4. geo_activity_playground/core/meta_search.py +157 -0
  5. geo_activity_playground/core/summary_stats.py +30 -0
  6. geo_activity_playground/core/test_meta_search.py +100 -0
  7. geo_activity_playground/core/test_summary_stats.py +108 -0
  8. geo_activity_playground/webui/activity/controller.py +20 -0
  9. geo_activity_playground/webui/activity/templates/activity/day.html.j2 +3 -10
  10. geo_activity_playground/webui/activity/templates/activity/name.html.j2 +2 -0
  11. geo_activity_playground/webui/activity/templates/activity/show.html.j2 +17 -0
  12. geo_activity_playground/webui/app.py +27 -10
  13. geo_activity_playground/webui/eddington_blueprint.py +167 -58
  14. geo_activity_playground/webui/{equipment/controller.py → equipment_blueprint.py} +29 -42
  15. geo_activity_playground/webui/explorer/blueprint.py +4 -0
  16. geo_activity_playground/webui/heatmap/blueprint.py +10 -29
  17. geo_activity_playground/webui/heatmap/heatmap_controller.py +45 -103
  18. geo_activity_playground/webui/heatmap/templates/heatmap/index.html.j2 +5 -37
  19. geo_activity_playground/webui/search_blueprint.py +40 -71
  20. geo_activity_playground/webui/search_util.py +64 -0
  21. geo_activity_playground/webui/summary_blueprint.py +40 -39
  22. geo_activity_playground/webui/templates/eddington/index.html.j2 +73 -1
  23. geo_activity_playground/webui/{equipment/templates → templates}/equipment/index.html.j2 +3 -5
  24. geo_activity_playground/webui/templates/search/index.html.j2 +34 -87
  25. geo_activity_playground/webui/templates/search_form.html.j2 +116 -0
  26. geo_activity_playground/webui/templates/summary/index.html.j2 +5 -1
  27. {geo_activity_playground-0.36.2.dist-info → geo_activity_playground-0.38.0.dist-info}/METADATA +1 -1
  28. {geo_activity_playground-0.36.2.dist-info → geo_activity_playground-0.38.0.dist-info}/RECORD +31 -27
  29. geo_activity_playground/webui/equipment/__init__.py +0 -0
  30. geo_activity_playground/webui/equipment/blueprint.py +0 -16
  31. {geo_activity_playground-0.36.2.dist-info → geo_activity_playground-0.38.0.dist-info}/LICENSE +0 -0
  32. {geo_activity_playground-0.36.2.dist-info → geo_activity_playground-0.38.0.dist-info}/WHEEL +0 -0
  33. {geo_activity_playground-0.36.2.dist-info → geo_activity_playground-0.38.0.dist-info}/entry_points.txt +0 -0
@@ -1,8 +1,13 @@
1
1
  {% extends "page.html.j2" %}
2
+ {% from "search_form.html.j2" import search_form %}
2
3
 
3
4
  {% block container %}
4
5
  <h1 class="mb-3">Eddington Number</h1>
5
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
+
6
11
  <div class="row mb-3">
7
12
  <div class="col-md-4">
8
13
  <h2>Definition</h2>
@@ -50,7 +55,74 @@
50
55
  <p>In a graphical representation, the Eddington number is the distance where the red line intersects with the
51
56
  blue area.</p>
52
57
 
53
- {{ vega_direct("eddington-log", logarithmic_plot) }}
58
+ {{ vega_direct("logarithmic_plot", logarithmic_plot) }}
59
+ </div>
60
+ </div>
61
+
62
+ <div class="mb-3">
63
+ <h2 class="mb-3">Eddington number history</h2>
64
+
65
+ <p>How did the Eddington number evolve over time?</p>
66
+
67
+ {{ vega_direct("eddington_number_history_plot", eddington_number_history_plot) }}
68
+ </div>
69
+
70
+ <div class="mb-3">
71
+ <h2 class="mb-3">Yearly Eddington number</h2>
72
+
73
+ <p>If we only consider the activities within one calendar year for the Eddington number, we get the following:</p>
74
+
75
+ <table class="table">
76
+ <thead>
77
+ <tr>
78
+ <th>Year</th>
79
+ <th>Eddington number</th>
80
+ </tr>
81
+ </thead>
82
+ <tbody>
83
+ {% for year, eddington in yearly_eddington.items() %}
84
+ <tr>
85
+ <td>{{ year }}</td>
86
+ <td>{{ eddington }}</td>
87
+ </tr>
88
+ {% endfor %}
89
+ </tbody>
90
+ </table>
91
+ </div>
92
+
93
+
94
+ <h2 class="mb-3">Eddington number per Week</h2>
95
+
96
+ <div class="row mb-3">
97
+ <div class="col-md-8">
98
+ {{ vega_direct("eddington_per_week_plot", eddington_per_week_plot) }}
99
+ </div>
100
+
101
+ <div class="col-md-4">
102
+ <table class="table">
103
+ <thead>
104
+ <tr>
105
+ <th>Distance / km</th>
106
+ <th>Count</th>
107
+ <th>Missing weeks</th>
108
+ </tr>
109
+ </thead>
110
+ <tbody>
111
+ {% for row in eddington_table_weeks %}
112
+ <tr>
113
+ <td>{{ row['distance_km'] }}</td>
114
+ <td>{{ row['total'] }}</td>
115
+ <td>{{ row['missing'] }}</td>
116
+ </tr>
117
+ {% endfor %}
118
+ </tbody>
119
+ </table>
54
120
  </div>
55
121
  </div>
122
+
123
+ <div class="row mb-1">
124
+
125
+ </div>
126
+
127
+
56
128
  {% endblock %}
@@ -13,7 +13,6 @@
13
13
  <thead>
14
14
  <tr>
15
15
  <th>Equipment</th>
16
- <th>Primarily used for</th>
17
16
  <th style="text-align: right;">Distance / km</th>
18
17
  <th style="text-align: right;">First use</th>
19
18
  <th style="text-align: right;">Last use</th>
@@ -23,10 +22,9 @@
23
22
  {% for equipment in equipment_summary %}
24
23
  <tr>
25
24
  <td>{{ equipment.equipment }}</td>
26
- <td>{{ equipment.primarily_used_for }}</td>
27
- <td style="text-align: right;">{{ equipment.total_distance_km|int }}</td>
28
- <td style="text-align: right;">{{ equipment.first_use.date() }}</td>
29
- <td style="text-align: right;">{{ equipment.last_use.date() }}</td>
25
+ <td style="text-align: right;">{{ equipment.total_distance_km }}</td>
26
+ <td style="text-align: right;">{{ equipment.first_use }}</td>
27
+ <td style="text-align: right;">{{ equipment.last_use }}</td>
30
28
  </tr>
31
29
  {% endfor %}
32
30
  </tbody>
@@ -1,95 +1,42 @@
1
1
  {% extends "page.html.j2" %}
2
+ {% from "search_form.html.j2" import search_form %}
2
3
 
3
4
  {% block container %}
4
5
 
5
6
  <h1 class="row mb-3">Activities Overview & Search</h1>
6
7
 
7
- <div class="row mb-3">
8
- <div class="col-md-2">
9
- <form>
10
- <div class="mb-3">
11
- <label for="name" class="form-label">Name</label>
12
- <input type="text" class="form-control" id="name" name="name" value="{{ name }}">
13
- <div class="form-check">
14
- <input class="form-check-input" type="checkbox" name="name_exact" value="true" id="name_exact" {% if
15
- name_exact %} checked {% endif %}>
16
- <label class="form-check-label" for="name_exact">
17
- Exact match
18
- </label>
19
- </div>
20
- <div class="form-check">
21
- <input class="form-check-input" type="checkbox" name="name_casing" value="true" id="name_casing" {%
22
- if name_casing %} checked {% endif %}>
23
- <label class="form-check-label" for="name_casing">
24
- Case sensitive
25
- </label>
26
- </div>
27
- </div>
28
-
29
- <div class="mb-3">
30
- <label for="begin" class="form-label">After</label>
31
- <input type="text" class="form-control" id="begin" name="begin" value="{{ begin }}">
32
- <label for="end" class="form-label">Until</label>
33
- <input type="text" class="form-control" id="end" name="end" value="{{ end }}">
34
- </div>
35
-
36
- <div class="mb-3">
37
- <label for="" class="form-label">Kind</label>
38
- {% for kind in kinds_avail %}
39
- <div class="form-check">
40
- <input class="form-check-input" type="checkbox" name="kind" value="{{ kind }}" id="kind_{{ kind }}"
41
- {% if kind in kinds %} checked {% endif %}>
42
- <label class="form-check-label" for="kind_{{ kind }}">
43
- {{ kind }}
44
- </label>
45
- </div>
46
- {% endfor %}
47
- </div>
48
-
49
- <div class="mb-3">
50
- <label for="" class="form-label">Equipment</label>
51
- {% for equipment in equipments_avail %}
52
- <div class="form-check">
53
- <input class="form-check-input" type="checkbox" name="equipment" value="{{ equipment }}"
54
- id="equipment_{{ equipment }}" {% if equipment in equipments %} checked {% endif %}>
55
- <label class="form-check-label" for="equipment_{{ equipment }}">
56
- {{ equipment }}
57
- </label>
58
- </div>
59
- {% endfor %}
60
- </div>
61
-
62
- <button type="submit" class="btn btn-primary">Search</button>
63
- </form>
64
- </div>
65
-
66
- <div class="col-md-10">
67
- <table class="table table-sort table-arrows">
68
- <thead>
69
- <tr>
70
- <th>Name</th>
71
- <th>Start</th>
72
- <th>Kind</th>
73
- <th class="numeric-sort">Distance</th>
74
- <th>Elapsed time</th>
75
- </tr>
76
- </thead>
77
- <tbody>
78
- {% for index, activity in activities %}
79
- <tr>
80
- <td><a href="{{ url_for('activity.show', id=activity['id']) }}">{{ activity['name'] }}</a></td>
81
- <td>
82
- {% if activity['start'] is defined %}
83
- {{ activity['start']|dt }}
84
- {% endif %}
85
- </td>
86
- <td>{{ activity['kind'] }}</td>
87
- <td>{{ '%.1f' % activity["distance_km"] }} km</td>
88
- <td>{{ activity.elapsed_time|td }}</td>
89
- </tr>
90
- {% endfor %}
91
- </tbody>
92
- </table>
93
- </div>
8
+ <div class="mb-3">
9
+ {{ search_form(query, equipments_avail, kinds_avail, search_query_favorites, search_query_last, request_url) }}
94
10
  </div>
11
+
12
+ <table class="table table-sort table-arrows">
13
+ <thead>
14
+ <tr>
15
+ <th>Name</th>
16
+ <th>Date</th>
17
+ <th class="numeric-sort">Distance</th>
18
+ <th>Elapsed time</th>
19
+ <th>Speed / km/h</th>
20
+ <th>Equipment</th>
21
+ <th>Kind</th>
22
+ </tr>
23
+ </thead>
24
+ <tbody>
25
+ {% for index, activity in activities %}
26
+ <tr>
27
+ <td><a href="{{ url_for('activity.show', id=activity['id']) }}">{{ activity['name'] }}</a></td>
28
+ <td>
29
+ {% if activity['start'] is defined %}
30
+ {{ activity['start']|dt }}
31
+ {% endif %}
32
+ </td>
33
+ <td>{{ '%.1f' % activity["distance_km"] }} km</td>
34
+ <td>{{ activity.elapsed_time|td }}</td>
35
+ <td>{{ activity.average_speed_moving_kmh|round(1) }}</td>
36
+ <td>{{ activity["equipment"] }}</td>
37
+ <td>{{ activity['kind'] }}</td>
38
+ </tr>
39
+ {% endfor %}
40
+ </tbody>
41
+ </table>
95
42
  {% endblock %}
@@ -0,0 +1,116 @@
1
+ {% macro search_form(query, equipments_avail, kinds_avail, search_query_favorites, search_query_last, request_url) %}
2
+ <div class="accordion" id="search_form_accordion">
3
+ <div class="accordion-item">
4
+ <h2 class="accordion-header">
5
+ <button class="accordion-button {{ '' if query.active else 'collapsed' }}" type="button"
6
+ data-bs-toggle="collapse" data-bs-target="#search_form" aria-expanded="true"
7
+ aria-controls="search_form">
8
+ Activity Filter
9
+ </button>
10
+ </h2>
11
+ <div id="search_form" class="accordion-collapse collapse {{ 'show' if query.active else '' }}"
12
+ data-bs-parent="#search_form_accordion">
13
+ <div class="accordion-body">
14
+ <div class="row">
15
+ <div class="col-8">
16
+ <form>
17
+ <div class="row g-3">
18
+ <div class="col-12">
19
+ <label for="name" class="form-label">Name</label>
20
+ <input type="text" class="form-control" id="name" name="name"
21
+ value="{{ query.name }}">
22
+
23
+ <div class="form-check">
24
+ <input class="form-check-input" type="checkbox" name="name_case_sensitive"
25
+ value="true" id="name_case_sensitive" {% if query.name_case_sensitive %}
26
+ checked {% endif %}>
27
+ <label class="form-check-label" for="name_case_sensitive">
28
+ Case sensitive
29
+ </label>
30
+ </div>
31
+ </div>
32
+
33
+ <div class="col-6">
34
+ <label for="start_begin" class="form-label">After</label>
35
+ <input type="date" class="form-control" id="start_begin" name="start_begin"
36
+ value="{{ query.start_begin }}">
37
+ </div>
38
+ <div class="col-6">
39
+ <label for="start_end" class="form-label">Until</label>
40
+ <input type="date" class="form-control" id="start_end" name="start_end"
41
+ value="{{ query.start_end }}">
42
+ </div>
43
+
44
+ <div class="col-12">
45
+ <label for="" class="form-label">Kind</label>
46
+ <div class="form-control">
47
+ {% for kind in kinds_avail %}
48
+ <div class="form-check form-check-inline">
49
+ <input class="form-check-input" type="checkbox" name="kind"
50
+ value="{{ kind }}" id="kind_{{ kind }}" {% if kind in query.kind %}
51
+ checked {% endif %}>
52
+ <label class="form-check-label" for="kind_{{ kind }}">
53
+ {{ kind }}
54
+ </label>
55
+ </div>
56
+ {% endfor %}
57
+ </div>
58
+ </div>
59
+
60
+ <div class="col-12">
61
+ <label for="" class="form-label">Equipment</label>
62
+ <div class="form-control">
63
+ {% for equipment in equipments_avail %}
64
+ <div class="form-check form-check-inline">
65
+ <input class="form-check-input" type="checkbox" name="equipment"
66
+ value="{{ equipment }}" id="equipment_{{ equipment }}" {% if equipment
67
+ in query.equipment %} checked {% endif %}>
68
+ <label class="form-check-label" for="equipment_{{ equipment }}">
69
+ {{ equipment }}
70
+ </label>
71
+ </div>
72
+ {% endfor %}
73
+ </div>
74
+ </div>
75
+
76
+ <div class="col-6">
77
+ <button type="submit" class="btn btn-primary">Filter</button>
78
+ </div>
79
+ <div class="col-6">
80
+ <a class="btn btn-danger" href="?">Reset</a>
81
+ </div>
82
+ </div>
83
+ </form>
84
+ </div>
85
+ <div class="col-4">
86
+ <h5 class="mb-3">Favorite queries</h5>
87
+ <ul class="mb-3">
88
+ {% for description, url_parameters in search_query_favorites %}
89
+ {{ _show_search_query(description, url_parameters, True, request_url) }}
90
+ {% endfor %}
91
+ </ul>
92
+
93
+ <h5 class="mb-3">Last queries</h5>
94
+ <ol class="mb-3">
95
+ {% for description, url_parameters in search_query_last %}
96
+ {{ _show_search_query(description, url_parameters, False, request_url) }}
97
+ {% endfor %}
98
+ </ol>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ </div>
105
+ {% endmacro %}
106
+
107
+ {% macro _show_search_query(description, url_parameters, is_favorite, request_url) %}
108
+ <li>
109
+ <a href="?{{ url_parameters }}">{{ description }}</a>
110
+ {% if is_favorite %}
111
+ <a href="{{ url_for('search.delete_search_query') }}?{{ url_parameters }}&redirect={{ request_url }}">🗑️</a>
112
+ {% else %}
113
+ <a href="{{ url_for('search.save_search_query') }}?{{ url_parameters }}&redirect={{ request_url }}">💾</a>
114
+ {% endif %}
115
+ </li>
116
+ {% endmacro %}
@@ -1,10 +1,14 @@
1
1
  {% extends "page.html.j2" %}
2
+ {% from "search_form.html.j2" import search_form %}
2
3
 
3
4
  {% block container %}
4
5
 
5
-
6
6
  <h1>Summary Statistics</h1>
7
7
 
8
+ <div class="mb-3">
9
+ {{ search_form(query, equipments_avail, kinds_avail, search_query_favorites, search_query_last, request_url) }}
10
+ </div>
11
+
8
12
  <h2>Distances</h2>
9
13
 
10
14
  <p>This is your weekly distance for the past rolling year, split by activity kind.</p>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geo-activity-playground
3
- Version: 0.36.2
3
+ Version: 0.38.0
4
4
  Summary: Analysis of geo data activities like rides, runs or hikes.
5
5
  License: MIT
6
6
  Author: Martin Ueding
@@ -1,16 +1,20 @@
1
1
  geo_activity_playground/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  geo_activity_playground/__main__.py,sha256=vFKB0Jjk8ImDHqok6Fddb5CRWHEnxyn5r4Zs0A1EsCQ,4585
3
3
  geo_activity_playground/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- geo_activity_playground/core/activities.py,sha256=CYIr7bw9IJ7QQjjt1AWMGXcjZwl7PT-4gaxBOmuO2Qg,7197
5
- geo_activity_playground/core/config.py,sha256=uqiwk7CgcuGx8JemHSsRKjRwyNT1YTb7V0gX0OJhfaI,5109
4
+ geo_activity_playground/core/activities.py,sha256=hIn11bsriNhcalWRWPU8SYqM7cKEFI-n9voqSyT7Tdk,7695
5
+ geo_activity_playground/core/config.py,sha256=oo0pSoBZVU__U81OzW2Qdw8C5Tq_pO7CWibA4CugZmc,5296
6
6
  geo_activity_playground/core/coordinates.py,sha256=tDfr9mlXhK6E_MMIJ0vYWVCoH0Lq8uyuaqUgaa8i0jg,966
7
- geo_activity_playground/core/enrichment.py,sha256=fUmk6avy_rqePlHmJQFTQhAxjgIRaxxmq18N2OSXBBg,7771
7
+ geo_activity_playground/core/enrichment.py,sha256=od2H0W-Ubw1lhVeB_qTbFMuxN7jU5Gkb0eHH7QpZkTA,8186
8
8
  geo_activity_playground/core/heart_rate.py,sha256=IwMt58TpjOYqpAxtsj07zP2ttpN_J3GZeiv-qGhYyJc,1598
9
+ geo_activity_playground/core/meta_search.py,sha256=naErjAC7ZCFhOF6d492kbegZxCdzbpGcJvjQLJTE4xE,5016
9
10
  geo_activity_playground/core/paths.py,sha256=RBeUi38riP_msTGPy1TsPRNiblzE-lFivaJSLULE8b0,2503
10
11
  geo_activity_playground/core/privacy_zones.py,sha256=4TumHsVUN1uW6RG3ArqTXDykPVipF98DCxVBe7YNdO8,512
11
12
  geo_activity_playground/core/raster_map.py,sha256=RrbpotWIIT1friSewSxRczk4FY6v8ofOO6kO1ERMWvM,6962
12
13
  geo_activity_playground/core/similarity.py,sha256=Jo8jRViuORCxdIGvyaflgsQhwu9S_jn10a450FRL18A,3159
14
+ geo_activity_playground/core/summary_stats.py,sha256=v5FtWnE1imDF5axI6asVN55wCrlD73oZ6lvqzxsTN2c,1006
13
15
  geo_activity_playground/core/tasks.py,sha256=aMDBWJqp6ek2ao6G6Xa8GOSZbcQqXoWL74SGRowRPIk,2942
16
+ geo_activity_playground/core/test_meta_search.py,sha256=kEFOphGfbWT0hW-4ivZHGEq3BTL01ODCxCK_KUSP61w,3175
17
+ geo_activity_playground/core/test_summary_stats.py,sha256=OU2Epm1QFsEDYdWfCy5QUeFXqoIeG8Sk1tX8LbFj8Xk,3109
14
18
  geo_activity_playground/core/test_tiles.py,sha256=zce1FxNfsSpOQt66jMehdQRVoNdl-oiFydx6iVBHZXM,764
15
19
  geo_activity_playground/core/test_time_conversion.py,sha256=Sh6nZA3uCTOdZTZa3yOijtR0m74QtZu2mcWXsDNnyQI,984
16
20
  geo_activity_playground/core/tiles.py,sha256=lV6X1Uc9XQecu2LALIvxpnMcLsVtWx7JczJ5a_S1eZE,2139
@@ -32,13 +36,13 @@ geo_activity_playground/importers/test_strava_api.py,sha256=4vX7wDr1a9aRh8myxNrI
32
36
  geo_activity_playground/webui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
37
  geo_activity_playground/webui/activity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
38
  geo_activity_playground/webui/activity/blueprint.py,sha256=J2f6zzBtwkrem51WDakLXKahVcOxMT2JKbbFgu0VFws,3914
35
- geo_activity_playground/webui/activity/controller.py,sha256=Gps0qGa3vd3xvBW4EIpwoQxYbkYItFfzlz0tzaj8HCA,19508
36
- geo_activity_playground/webui/activity/templates/activity/day.html.j2,sha256=wkYmcnIsMlvE9wgKemYCNU6jwsk5IJvg8pcBA2OMh00,2795
39
+ geo_activity_playground/webui/activity/controller.py,sha256=2nVbcVUc7BTccnfJzzw_XcgwyGte_7phUOrmZxF__s4,20159
40
+ geo_activity_playground/webui/activity/templates/activity/day.html.j2,sha256=tFRiYj61iJyCwEasIezoJeSOTpRvHY-58nlaalS8PPA,2587
37
41
  geo_activity_playground/webui/activity/templates/activity/edit.html.j2,sha256=ckcTTxcQOhmvvAGNTEOtWCUG4LhvO4HfQImlIa5qKs8,1530
38
42
  geo_activity_playground/webui/activity/templates/activity/lines.html.j2,sha256=_ZDg1ruW-9UMJfOudy1-uY_-IcSSaagq7tPCih5Bb8g,1079
39
- geo_activity_playground/webui/activity/templates/activity/name.html.j2,sha256=tKviMqMouHEGv3xBQVIsJgwj_hjwAsmGVefM3UMqlYg,2437
40
- geo_activity_playground/webui/activity/templates/activity/show.html.j2,sha256=bEx37UGSTeeJl7gN4fjyOpINFQwZ5Zm-HOKpLqcJGfs,6905
41
- geo_activity_playground/webui/app.py,sha256=eXF7reuw6bX-Ez3hDK3nPacePrD4XRcElp0gBRdyWoI,5440
43
+ geo_activity_playground/webui/activity/templates/activity/name.html.j2,sha256=H2v1H92T-iIbA_tYnYP59bgXAY6HpgG368eCF7NDboY,2557
44
+ geo_activity_playground/webui/activity/templates/activity/show.html.j2,sha256=Vc42G_rQOna13Qi_opVPbjVLB05PrY1xAdt9MFscbvI,7709
45
+ geo_activity_playground/webui/app.py,sha256=K5PT6jzeG7cWle5cdWEvha7XmQJPACnHbhKSZlgSynA,6173
42
46
  geo_activity_playground/webui/auth_blueprint.py,sha256=sERpBU6cXdBuVjMMiRQBGJMibFZCfrUXMPj4ukzd_Ug,783
43
47
  geo_activity_playground/webui/authenticator.py,sha256=k278OEVuOfAmTGT4F2X4pqSTwwkK_FA87EIhAeysEqc,1416
44
48
  geo_activity_playground/webui/calendar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -46,22 +50,20 @@ geo_activity_playground/webui/calendar/blueprint.py,sha256=Kjyx9lkJoM5tL8vNba0Y7
46
50
  geo_activity_playground/webui/calendar/controller.py,sha256=QpSAkR2s1sbLSu6P_fNNTccgGglOzEH2PIv1XwKxeVY,2778
47
51
  geo_activity_playground/webui/calendar/templates/calendar/index.html.j2,sha256=xoR6R4cUgTQNRHQv3m3f4Bc-yCjJEsJj5d4_CWlJsRo,1427
48
52
  geo_activity_playground/webui/calendar/templates/calendar/month.html.j2,sha256=sRIiNo_Rp9CHary6e-lnpKJKOuAonoDEBvKMxzbTLQE,1802
49
- geo_activity_playground/webui/eddington_blueprint.py,sha256=70Jyrlv9s2HAbspJ-7JAOZsH02PrIbMCRL28wNomVgk,3084
53
+ geo_activity_playground/webui/eddington_blueprint.py,sha256=1MuYSILMlkq3Xc0qgrIaeT-aCIic3jazYFek3LDbSqU,6876
50
54
  geo_activity_playground/webui/entry_controller.py,sha256=McxbyouKWHJ3a2R9agPazZoG7VHiFO1RvnkBr08dMH8,2168
51
- geo_activity_playground/webui/equipment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- geo_activity_playground/webui/equipment/blueprint.py,sha256=kJhCSdakke_UhT2RIP-fMoAMaC1oFttRoCPeiAIaB6g,491
53
- geo_activity_playground/webui/equipment/controller.py,sha256=lMivui3EBUnkYZf9Lgv1kHZ0c7IxRAza-ox8YOz3ONY,4079
54
- geo_activity_playground/webui/equipment/templates/equipment/index.html.j2,sha256=fvRaDbCuiSZ8AzJTpu1dk8FTAGZ2yfsLhprtVYHFZWo,1802
55
+ geo_activity_playground/webui/equipment_blueprint.py,sha256=wyH-kvJxx9TB-Tx4iPBB02ubes5T-efrBBenbmEKSRU,3509
55
56
  geo_activity_playground/webui/explorer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- geo_activity_playground/webui/explorer/blueprint.py,sha256=iLmdayavR7B1_l67VvkMGsaYeABSXEe9IwTydK_-Owg,2027
57
+ geo_activity_playground/webui/explorer/blueprint.py,sha256=GJcNgtkR0Ya15lsc6896wNXQEiTL36Ltd-8w28iecEA,2249
57
58
  geo_activity_playground/webui/explorer/controller.py,sha256=pIzWh0TpLJgKQZlS325-QT7nA1q9ms7fRqQIp24PNfo,11705
58
59
  geo_activity_playground/webui/explorer/templates/explorer/index.html.j2,sha256=3t9ikAF6oMvEaVlS3Kb1tj9ngomIQlatzqPnqVsEDKA,6908
59
60
  geo_activity_playground/webui/heatmap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- geo_activity_playground/webui/heatmap/blueprint.py,sha256=-Cd-b2_3uU-6tBDsqlbyrVacftDod8SoIZnDRsIC5H8,2548
61
- geo_activity_playground/webui/heatmap/heatmap_controller.py,sha256=kO9IrRdaIcCuTu6d5lSOi8rLbBl_gqbht9psGtPzbIk,10709
62
- geo_activity_playground/webui/heatmap/templates/heatmap/index.html.j2,sha256=lO3WdD7CkLSnTuQeQMvCkuFpJbL_TDp7Zocbwbug0wg,2512
61
+ geo_activity_playground/webui/heatmap/blueprint.py,sha256=UndzdkSBS_mvpDYDxlotkKxi6sP3hECXz3cb0H4Kdbk,1966
62
+ geo_activity_playground/webui/heatmap/heatmap_controller.py,sha256=rKhPUEHQDY0ZoSY0CHywJLRbJThKuSp6ywkevlsBHcM,8591
63
+ geo_activity_playground/webui/heatmap/templates/heatmap/index.html.j2,sha256=kTVvEt-GmSNebDlVMa6zwyIuP0mJcZQFuqj-IY8JV5U,1359
63
64
  geo_activity_playground/webui/plot_util.py,sha256=pTTQoqOCkLVjkgOit7mbry28kMruZIL8amZozSzEpxQ,283
64
- geo_activity_playground/webui/search_blueprint.py,sha256=3EBj70BHxEj8ZInK0Fj04p3JJMcHByj-xwOISmaj_4E,3299
65
+ geo_activity_playground/webui/search_blueprint.py,sha256=6YELyCMRQ5uyh67mf11OjAFXPaCg_Iw1t1Bvci4mALI,2567
66
+ geo_activity_playground/webui/search_util.py,sha256=jMY7DrJQVa9e8x7POE5QsReZL-SIyYaWvjUGB_R6kW0,2326
65
67
  geo_activity_playground/webui/settings/blueprint.py,sha256=l5H9kxjwMpqPQoF8moIp3r6oU-RQmuWr38yiHUZYU00,9391
66
68
  geo_activity_playground/webui/settings/controller.py,sha256=MIZVBfoGNvmJnB_ECV_x5eH2i6gDZvkWSQ4PcSKyLKs,9170
67
69
  geo_activity_playground/webui/settings/templates/settings/admin-password.html.j2,sha256=VYwddpObD1RpeTH5Dm4y7VtmT7kwURDCIjxyzJeq08c,495
@@ -106,20 +108,22 @@ geo_activity_playground/webui/static/vega-lite@4,sha256=roXmcY9bUF91uB9V-eSEUHEg
106
108
  geo_activity_playground/webui/static/vega@5,sha256=5DLHUaY2P0ph2mKSDMfX69E88J2ClJ-PSGJI-Acdw84,514536
107
109
  geo_activity_playground/webui/static/web-app-manifest-192x192.png,sha256=eEImN6iWfSv-EnSNPL5WbX84PKakse_8VZMBPWWye3o,13582
108
110
  geo_activity_playground/webui/static/web-app-manifest-512x512.png,sha256=vU9oQ4HnQerFDZVzcAT9twj4_Doc6_9v9wVvoRI-f_E,48318
109
- geo_activity_playground/webui/summary_blueprint.py,sha256=FrPQgx6-lOX3DiaCveJu_n0a_mSTt-XUMxWVcHNkUUU,9399
111
+ geo_activity_playground/webui/summary_blueprint.py,sha256=1d75wbw3_X5SsmKWV9HRzS7Z9uCtt9MHnp1r6wKa7PU,9535
110
112
  geo_activity_playground/webui/templates/auth/index.html.j2,sha256=ILQ5HvTEYc3OrtOAIFt1VrqWorVD70V9DC342znmP70,579
111
- geo_activity_playground/webui/templates/eddington/index.html.j2,sha256=XHKeUymQMS5x00PLOVlg-nSRCz_jHB2pvD8QunULWJ4,1839
113
+ geo_activity_playground/webui/templates/eddington/index.html.j2,sha256=_3oxzHhC_s9ATtvGmuIWKqvjIQYJNvdCxmYnOyN9QnY,3716
114
+ geo_activity_playground/webui/templates/equipment/index.html.j2,sha256=4FsMPjse9iZsWZiwD9At95CdUa_pVf2g7UugygOH8vk,1672
112
115
  geo_activity_playground/webui/templates/home.html.j2,sha256=IdCqI_LLcYrpUjjCO-tbXR4s05XYrPOateiJ4idF3bo,2202
113
116
  geo_activity_playground/webui/templates/page.html.j2,sha256=CHRvO2HGHjBnMNffX7a-C-pm2544wErKOcW66lghKos,10785
114
- geo_activity_playground/webui/templates/search/index.html.j2,sha256=f8Bv5Ph3e2ovrjzzKSRsoYe8RAiI0U5UtOUa-tqv7oc,3942
117
+ geo_activity_playground/webui/templates/search/index.html.j2,sha256=_kxTgsdbT8o-4ryW0pvyWE7a-rOs7xzGUpdSPp8Q1is,1320
118
+ geo_activity_playground/webui/templates/search_form.html.j2,sha256=TG9xIql0HnhsXtbHZxl3GLBt6cGYjA8jPeBq11syQ3A,6512
115
119
  geo_activity_playground/webui/templates/square_planner/index.html.j2,sha256=xFbYBQtkOl3U4WGkvIuU_5uazGHn8ObvQfNgPGq0Gqg,6469
116
- geo_activity_playground/webui/templates/summary/index.html.j2,sha256=ctOx3Qjx6nRDpUtFf1DlJhK_gtU77Vwx_S6euLz9-W4,5183
120
+ geo_activity_playground/webui/templates/summary/index.html.j2,sha256=bM89LdumssVvmuI0EeI8mnzMYxSzNjWY_XWfzn-f6nI,5377
117
121
  geo_activity_playground/webui/templates/upload/index.html.j2,sha256=I1Ix8tDS3YBdi-HdaNfjkzYXVVCjfUTe5PFTnap1ydc,775
118
122
  geo_activity_playground/webui/templates/upload/reload.html.j2,sha256=YZWX5eDeNyqKJdQAywDBcU8DZBm22rRBbZqFjrFrCvQ,556
119
123
  geo_activity_playground/webui/tile_blueprint.py,sha256=QU8YRjhMf-lhPJGqrCjV49QBX0ATgTny96GYhqJwwyI,1755
120
124
  geo_activity_playground/webui/upload_blueprint.py,sha256=Ha3H5Dsl6YS6YYmFouXamU8viEpLIj1YIE9XJVCiakY,4368
121
- geo_activity_playground-0.36.2.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
122
- geo_activity_playground-0.36.2.dist-info/METADATA,sha256=aY1oBQQwX1TnqyZ9VcCSseQsuyMUDGWhsQ6AlP9UtAw,1573
123
- geo_activity_playground-0.36.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
124
- geo_activity_playground-0.36.2.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
125
- geo_activity_playground-0.36.2.dist-info/RECORD,,
125
+ geo_activity_playground-0.38.0.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
126
+ geo_activity_playground-0.38.0.dist-info/METADATA,sha256=Mlj1jwAXTRf43R9CFqymICnZVmTnc0wpaW_b7rSHo6k,1573
127
+ geo_activity_playground-0.38.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
128
+ geo_activity_playground-0.38.0.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
129
+ geo_activity_playground-0.38.0.dist-info/RECORD,,
File without changes
@@ -1,16 +0,0 @@
1
- from flask import Blueprint
2
- from flask import render_template
3
-
4
- from geo_activity_playground.webui.equipment.controller import EquipmentController
5
-
6
-
7
- def make_equipment_blueprint(equipment_controller: EquipmentController) -> Blueprint:
8
- blueprint = Blueprint("equipment", __name__, template_folder="templates")
9
-
10
- @blueprint.route("/")
11
- def index():
12
- return render_template(
13
- "equipment/index.html.j2", **equipment_controller.render()
14
- )
15
-
16
- return blueprint