geo-activity-playground 0.38.1__py3-none-any.whl → 0.39.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.
- geo_activity_playground/__main__.py +5 -47
- geo_activity_playground/alembic/README +1 -0
- geo_activity_playground/alembic/env.py +76 -0
- geo_activity_playground/alembic/script.py.mako +26 -0
- geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py +33 -0
- geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py +73 -0
- geo_activity_playground/alembic/versions/ab83b9d23127_add_upstream_id.py +28 -0
- geo_activity_playground/alembic/versions/b03491c593f6_add_crop_indices.py +30 -0
- geo_activity_playground/alembic/versions/e02e27876deb_add_square_planner_bookmark_name.py +28 -0
- geo_activity_playground/alembic/versions/script.py.mako +28 -0
- geo_activity_playground/core/activities.py +50 -136
- geo_activity_playground/core/config.py +3 -3
- geo_activity_playground/core/datamodel.py +257 -0
- geo_activity_playground/core/enrichment.py +90 -92
- geo_activity_playground/core/heart_rate.py +1 -2
- geo_activity_playground/core/paths.py +6 -7
- geo_activity_playground/core/raster_map.py +43 -4
- geo_activity_playground/core/similarity.py +1 -2
- geo_activity_playground/core/tasks.py +2 -2
- geo_activity_playground/core/test_meta_search.py +3 -3
- geo_activity_playground/core/test_summary_stats.py +1 -1
- geo_activity_playground/explorer/grid_file.py +2 -2
- geo_activity_playground/explorer/tile_visits.py +8 -10
- geo_activity_playground/heatmap_video.py +7 -8
- geo_activity_playground/importers/activity_parsers.py +2 -2
- geo_activity_playground/importers/directory.py +9 -10
- geo_activity_playground/importers/strava_api.py +9 -9
- geo_activity_playground/importers/strava_checkout.py +12 -13
- geo_activity_playground/importers/test_csv_parser.py +3 -3
- geo_activity_playground/importers/test_directory.py +1 -1
- geo_activity_playground/importers/test_strava_api.py +1 -1
- geo_activity_playground/webui/app.py +94 -86
- geo_activity_playground/webui/authenticator.py +1 -1
- geo_activity_playground/webui/{activity/controller.py → blueprints/activity_blueprint.py} +246 -108
- geo_activity_playground/webui/{auth_blueprint.py → blueprints/auth_blueprint.py} +1 -1
- geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py +61 -0
- geo_activity_playground/webui/{calendar/controller.py → blueprints/calendar_blueprint.py} +19 -19
- geo_activity_playground/webui/{eddington_blueprint.py → blueprints/eddington_blueprint.py} +9 -5
- geo_activity_playground/webui/blueprints/entry_views.py +68 -0
- geo_activity_playground/webui/{equipment_blueprint.py → blueprints/equipment_blueprint.py} +58 -4
- geo_activity_playground/webui/{explorer/controller.py → blueprints/explorer_blueprint.py} +88 -54
- geo_activity_playground/webui/blueprints/heatmap_blueprint.py +233 -0
- geo_activity_playground/webui/{search_blueprint.py → blueprints/search_blueprint.py} +7 -11
- geo_activity_playground/webui/blueprints/settings_blueprint.py +446 -0
- geo_activity_playground/webui/{square_planner_blueprint.py → blueprints/square_planner_blueprint.py} +31 -6
- geo_activity_playground/webui/{summary_blueprint.py → blueprints/summary_blueprint.py} +21 -26
- geo_activity_playground/webui/blueprints/tile_blueprint.py +27 -0
- geo_activity_playground/webui/{upload_blueprint.py → blueprints/upload_blueprint.py} +13 -18
- geo_activity_playground/webui/flasher.py +26 -0
- geo_activity_playground/webui/plot_util.py +1 -1
- geo_activity_playground/webui/search_util.py +4 -6
- geo_activity_playground/webui/static/images/layers-2x.png +0 -0
- geo_activity_playground/webui/static/images/layers.png +0 -0
- geo_activity_playground/webui/static/images/marker-icon-2x.png +0 -0
- geo_activity_playground/webui/static/images/marker-icon.png +0 -0
- geo_activity_playground/webui/static/images/marker-shadow.png +0 -0
- geo_activity_playground/webui/templates/activity/day.html.j2 +81 -0
- geo_activity_playground/webui/templates/activity/edit.html.j2 +38 -0
- geo_activity_playground/webui/{activity/templates → templates}/activity/name.html.j2 +29 -27
- geo_activity_playground/webui/{activity/templates → templates}/activity/show.html.j2 +60 -36
- geo_activity_playground/webui/templates/activity/trim.html.j2 +68 -0
- geo_activity_playground/webui/templates/bubble_chart/index.html.j2 +26 -0
- geo_activity_playground/webui/templates/calendar/index.html.j2 +48 -0
- geo_activity_playground/webui/templates/calendar/month.html.j2 +57 -0
- geo_activity_playground/webui/templates/equipment/index.html.j2 +7 -0
- geo_activity_playground/webui/templates/home.html.j2 +6 -6
- geo_activity_playground/webui/templates/page.html.j2 +2 -1
- geo_activity_playground/webui/{settings/templates → templates}/settings/index.html.j2 +9 -20
- geo_activity_playground/webui/templates/settings/manage-equipments.html.j2 +49 -0
- geo_activity_playground/webui/templates/settings/manage-kinds.html.j2 +48 -0
- geo_activity_playground/webui/{settings/templates → templates}/settings/metadata-extraction.html.j2 +1 -1
- geo_activity_playground/webui/{settings/templates → templates}/settings/privacy-zones.html.j2 +2 -0
- geo_activity_playground/webui/{settings/templates → templates}/settings/strava.html.j2 +2 -0
- geo_activity_playground/webui/templates/square_planner/index.html.j2 +63 -13
- {geo_activity_playground-0.38.1.dist-info → geo_activity_playground-0.39.0.dist-info}/METADATA +5 -1
- geo_activity_playground-0.39.0.dist-info/RECORD +133 -0
- geo_activity_playground/__init__.py +0 -0
- geo_activity_playground/core/__init__.py +0 -0
- geo_activity_playground/explorer/__init__.py +0 -0
- geo_activity_playground/importers/__init__.py +0 -0
- geo_activity_playground/webui/__init__.py +0 -0
- geo_activity_playground/webui/activity/__init__.py +0 -0
- geo_activity_playground/webui/activity/blueprint.py +0 -109
- geo_activity_playground/webui/activity/templates/activity/day.html.j2 +0 -80
- geo_activity_playground/webui/activity/templates/activity/edit.html.j2 +0 -42
- geo_activity_playground/webui/calendar/__init__.py +0 -0
- geo_activity_playground/webui/calendar/blueprint.py +0 -23
- geo_activity_playground/webui/calendar/templates/calendar/index.html.j2 +0 -46
- geo_activity_playground/webui/calendar/templates/calendar/month.html.j2 +0 -55
- geo_activity_playground/webui/entry_controller.py +0 -63
- geo_activity_playground/webui/explorer/__init__.py +0 -0
- geo_activity_playground/webui/explorer/blueprint.py +0 -62
- geo_activity_playground/webui/heatmap/__init__.py +0 -0
- geo_activity_playground/webui/heatmap/blueprint.py +0 -51
- geo_activity_playground/webui/heatmap/heatmap_controller.py +0 -216
- geo_activity_playground/webui/settings/blueprint.py +0 -262
- geo_activity_playground/webui/settings/controller.py +0 -272
- geo_activity_playground/webui/settings/templates/settings/equipment-offsets.html.j2 +0 -44
- geo_activity_playground/webui/settings/templates/settings/kind-renames.html.j2 +0 -25
- geo_activity_playground/webui/settings/templates/settings/kinds-without-achievements.html.j2 +0 -30
- geo_activity_playground/webui/tile_blueprint.py +0 -42
- geo_activity_playground-0.38.1.dist-info/RECORD +0 -129
- /geo_activity_playground/webui/{activity/templates → templates}/activity/lines.html.j2 +0 -0
- /geo_activity_playground/webui/{explorer/templates → templates}/explorer/index.html.j2 +0 -0
- /geo_activity_playground/webui/{heatmap/templates → templates}/heatmap/index.html.j2 +0 -0
- /geo_activity_playground/webui/{settings/templates → templates}/settings/admin-password.html.j2 +0 -0
- /geo_activity_playground/webui/{settings/templates → templates}/settings/color-schemes.html.j2 +0 -0
- /geo_activity_playground/webui/{settings/templates → templates}/settings/heart-rate.html.j2 +0 -0
- /geo_activity_playground/webui/{settings/templates → templates}/settings/segmentation.html.j2 +0 -0
- /geo_activity_playground/webui/{settings/templates → templates}/settings/sharepic.html.j2 +0 -0
- {geo_activity_playground-0.38.1.dist-info → geo_activity_playground-0.39.0.dist-info}/LICENSE +0 -0
- {geo_activity_playground-0.38.1.dist-info → geo_activity_playground-0.39.0.dist-info}/WHEEL +0 -0
- {geo_activity_playground-0.38.1.dist-info → geo_activity_playground-0.39.0.dist-info}/entry_points.txt +0 -0
@@ -64,6 +64,7 @@
|
|
64
64
|
<ul class="dropdown-menu">
|
65
65
|
<li><a class="dropdown-item" href="{{ url_for('calendar.index') }}">Calendar</a></li>
|
66
66
|
<li><a class="dropdown-item" href="{{ url_for('search.index') }}">Overview & Search</a>
|
67
|
+
<li><a class="dropdown-item" href="{{ url_for('bubble_chart.index') }}">Bubble Chart</a>
|
67
68
|
</li>
|
68
69
|
</ul>
|
69
70
|
</li>
|
@@ -195,7 +196,7 @@
|
|
195
196
|
|
196
197
|
<div class="row border-top py-3 my-4">
|
197
198
|
<ul class="nav col-4">
|
198
|
-
<li class="nav-item
|
199
|
+
<li class="nav-item px-2 nav-link"><a href="https://github.com/martin-ueding/geo-activity-playground/blob/main/docs/changelog.md" class="nav-link px-2 text-muted" target="_blank">Version {{ version }}</a></li>
|
199
200
|
</ul>
|
200
201
|
<ul class="nav col-8 justify-content-end">
|
201
202
|
<li class="nav-item"><a href="https://github.com/martin-ueding/geo-activity-playground"
|
@@ -32,38 +32,27 @@
|
|
32
32
|
<div class="col">
|
33
33
|
<div class="card">
|
34
34
|
<div class="card-body">
|
35
|
-
<h5 class="card-title">Equipment
|
36
|
-
<p class="card-text">
|
37
|
-
<a href="{{ url_for('.
|
35
|
+
<h5 class="card-title">Equipment</h5>
|
36
|
+
<p class="card-text">Manage your equipments here.</p>
|
37
|
+
<a href="{{ url_for('.manage_equipments') }}" class="btn btn-primary">Manage equipments</a>
|
38
38
|
</div>
|
39
39
|
</div>
|
40
40
|
</div>
|
41
41
|
<div class="col">
|
42
42
|
<div class="card">
|
43
43
|
<div class="card-body">
|
44
|
-
<h5 class="card-title">
|
45
|
-
<p class="card-text">
|
46
|
-
<a href="{{ url_for('.
|
47
|
-
</div>
|
48
|
-
</div>
|
49
|
-
</div>
|
50
|
-
<div class="col">
|
51
|
-
<div class="card">
|
52
|
-
<div class="card-body">
|
53
|
-
<h5 class="card-title">Kind renames</h5>
|
54
|
-
<p class="card-text">Bulk rename activity kinds</p>
|
55
|
-
<a href="{{ url_for('.kind_renames') }}" class="btn btn-primary">Set up kind renames</a>
|
44
|
+
<h5 class="card-title">Kinds</h5>
|
45
|
+
<p class="card-text">Manage your activity kinds here.</p>
|
46
|
+
<a href="{{ url_for('.manage_kinds') }}" class="btn btn-primary">Manage kinds</a>
|
56
47
|
</div>
|
57
48
|
</div>
|
58
49
|
</div>
|
59
50
|
<div class="col">
|
60
51
|
<div class="card">
|
61
52
|
<div class="card-body">
|
62
|
-
<h5 class="card-title">
|
63
|
-
<p class="card-text">
|
64
|
-
|
65
|
-
<a href="{{ url_for('.kinds_without_achievements') }}" class="btn btn-primary">Set up kinds without
|
66
|
-
achievements</a>
|
53
|
+
<h5 class="card-title">Heart rate</h5>
|
54
|
+
<p class="card-text">Specify maximum heart rate to derive heart rate zones.</p>
|
55
|
+
<a href="{{ url_for('.heart_rate') }}" class="btn btn-primary">Set up heart rate</a>
|
67
56
|
</div>
|
68
57
|
</div>
|
69
58
|
</div>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
{% extends "page.html.j2" %}
|
2
|
+
|
3
|
+
{% block container %}
|
4
|
+
|
5
|
+
<h1 class="mb-3">Equipments</h1>
|
6
|
+
|
7
|
+
<p>If you record every activity with an equipment but haven't started from the beginning, you might have a certain
|
8
|
+
distance that is not accounted for. In order to have this reflected in the equipment overview, you can enter offsets
|
9
|
+
here.</p>
|
10
|
+
|
11
|
+
<form method="POST">
|
12
|
+
<div class="row g-3 mb-1">
|
13
|
+
<div class="col">
|
14
|
+
<label class="form-label">Equipment</label>
|
15
|
+
</div>
|
16
|
+
<div class="col">
|
17
|
+
<label class="form-label">Offset / km</label>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
{% for equipment in equipments %}
|
21
|
+
<div class="row g-3 mb-1">
|
22
|
+
<input type="hidden" name="id" value="{{ equipment.id }}" />
|
23
|
+
<div class="col">
|
24
|
+
|
25
|
+
<input type="text" class="form-control" id="name_{{ loop.index }}" name="name"
|
26
|
+
value="{{ equipment.name }}" />
|
27
|
+
</div>
|
28
|
+
<div class="col">
|
29
|
+
<input type="number" class="form-control" id="offset_km_{{ loop.index }}" name="offset_km"
|
30
|
+
value="{{ equipment.offset_km }}" />
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
{% endfor %}
|
34
|
+
|
35
|
+
<div class="row g-3 mb-3 mt-2">
|
36
|
+
<input type="hidden" name="id" value="" />
|
37
|
+
<div class="col">
|
38
|
+
<input type="text" class="form-control" id="name_new" name="name" />
|
39
|
+
</div>
|
40
|
+
<div class="col">
|
41
|
+
<input type="number" class="form-control" id="offset_km_new" name="offset_km" />
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<button type="submit" class="btn btn-primary">Save</button>
|
46
|
+
</form>
|
47
|
+
|
48
|
+
|
49
|
+
{% endblock %}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
{% extends "page.html.j2" %}
|
2
|
+
|
3
|
+
{% block container %}
|
4
|
+
|
5
|
+
<h1 class="mb-3">Kinds</h1>
|
6
|
+
|
7
|
+
<p>Apart from bicycle rides and runs, you might also record your car and train rides. If you don't want to include these
|
8
|
+
for achievements like explorer tiles, you can enter the activity kinds that should not be considered here.</p>
|
9
|
+
|
10
|
+
<form method="POST">
|
11
|
+
<div class="row g-3 mb-1">
|
12
|
+
<div class="col">
|
13
|
+
<label class="form-label">Kind</label>
|
14
|
+
</div>
|
15
|
+
<div class="col">
|
16
|
+
<label class="form-label">Consider for Achievements</label>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
{% for kind in kinds %}
|
20
|
+
<div class="row g-3 mb-1">
|
21
|
+
<input type="hidden" name="id" value="{{ kind.id }}" />
|
22
|
+
<div class="col">
|
23
|
+
|
24
|
+
<input type="text" class="form-control" name="name" value="{{ kind.name }}" />
|
25
|
+
</div>
|
26
|
+
<div class="col">
|
27
|
+
<input type="checkbox" class="form-check-input" name="consider_for_achievements" value="{{ kind.id }}" {% if
|
28
|
+
kind.consider_for_achievements %} checked {% endif %} />
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
{% endfor %}
|
32
|
+
|
33
|
+
<div class="row g-3 mb-3 mt-2">
|
34
|
+
<input type="hidden" name="id" value="" />
|
35
|
+
<div class="col">
|
36
|
+
<input type="text" class="form-control" id="name_new" name="name" />
|
37
|
+
</div>
|
38
|
+
<div class="col">
|
39
|
+
<input type="checkbox" class="form-check-input" id="consider_for_achievements_new"
|
40
|
+
name="consider_for_achievements" value="new" />
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<button type="submit" class="btn btn-primary">Save</button>
|
45
|
+
</form>
|
46
|
+
|
47
|
+
|
48
|
+
{% endblock %}
|
geo_activity_playground/webui/{settings/templates → templates}/settings/metadata-extraction.html.j2
RENAMED
@@ -42,7 +42,7 @@
|
|
42
42
|
</div>
|
43
43
|
|
44
44
|
<p>Have a look at the documentation
|
45
|
-
<a href="https://martin-ueding.github.io/geo-activity-playground/
|
45
|
+
<a href="https://martin-ueding.github.io/geo-activity-playground/advanced-metadata-extraction">Advanced Metadata Extraction</a>
|
46
46
|
for explanations and examples.</p>
|
47
47
|
</div>
|
48
48
|
</div>
|
geo_activity_playground/webui/{settings/templates → templates}/settings/privacy-zones.html.j2
RENAMED
@@ -13,6 +13,8 @@
|
|
13
13
|
<p>You can change the name on an existing privacy zone. To delete a zone, delete the name or the GeoJSON. Zones without
|
14
14
|
a name will be deleted.</p>
|
15
15
|
|
16
|
+
<p>For more information about how to use this feature see <a href="https://martin-ueding.github.io/geo-activity-playground/create-a-privacy-zone/" target="_blank">this page in the documentation</a></p>
|
17
|
+
|
16
18
|
<script>
|
17
19
|
function add_map(id, geojson) {
|
18
20
|
let map = L.map(`map-${id}`, {
|
@@ -14,6 +14,8 @@
|
|
14
14
|
href="https://www.strava.com/settings/api">Strava API page</a> and create your own app. Then fill in
|
15
15
|
"client ID" and "client secret" in the form.</p>
|
16
16
|
|
17
|
+
<p>For more information about how to use this feature see <a href="https://martin-ueding.github.io/geo-activity-playground/connect-strava-api/" target="_blank">this page in the documentation</a> For initial import of activities consider <a href="https://martin-ueding.github.io/geo-activity-playground/moving-from-strava/" target="_blank">importing a Strava Archive</a>.</p>
|
18
|
+
|
17
19
|
<p>
|
18
20
|
Status:
|
19
21
|
{% if strava_client_code %}
|
@@ -13,16 +13,16 @@
|
|
13
13
|
<tr>
|
14
14
|
<td>
|
15
15
|
<a class="btn btn-primary"
|
16
|
-
href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y-1 }}/{{ square_size+1 }}"
|
16
|
+
href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y-1 }}/{{ square_size+1 }}">↖︎</a>
|
17
17
|
<a class="btn btn-primary"
|
18
|
-
href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y+1 }}/{{ square_size-1 }}"
|
18
|
+
href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y+1 }}/{{ square_size-1 }}">↘︎</a>
|
19
19
|
</td>
|
20
20
|
<td></td>
|
21
21
|
<td>
|
22
22
|
<a class="btn btn-primary"
|
23
|
-
href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y+1 }}/{{ square_size-1 }}"
|
23
|
+
href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y+1 }}/{{ square_size-1 }}">↙︎</a>
|
24
24
|
<a class="btn btn-primary"
|
25
|
-
href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y-1 }}/{{ square_size+1 }}"
|
25
|
+
href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y-1 }}/{{ square_size+1 }}">↗︎</a>
|
26
26
|
</td>
|
27
27
|
</tr>
|
28
28
|
<tr>
|
@@ -32,7 +32,7 @@
|
|
32
32
|
<tr>
|
33
33
|
<td>
|
34
34
|
<a class="btn btn-primary"
|
35
|
-
href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y-1 }}/{{ square_size }}"
|
35
|
+
href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y-1 }}/{{ square_size }}">↖︎</a>
|
36
36
|
</td>
|
37
37
|
<td>
|
38
38
|
<a class="btn btn-primary"
|
@@ -40,7 +40,7 @@
|
|
40
40
|
</td>
|
41
41
|
<td>
|
42
42
|
<a class="btn btn-primary"
|
43
|
-
href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y-1 }}/{{ square_size }}"
|
43
|
+
href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y-1 }}/{{ square_size }}">↗︎</a>
|
44
44
|
</td>
|
45
45
|
</tr>
|
46
46
|
<tr>
|
@@ -57,7 +57,7 @@
|
|
57
57
|
<tr>
|
58
58
|
<td>
|
59
59
|
<a class="btn btn-primary"
|
60
|
-
href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y+1 }}/{{ square_size }}"
|
60
|
+
href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y+1 }}/{{ square_size }}">↙︎</a>
|
61
61
|
</td>
|
62
62
|
<td>
|
63
63
|
<a class="btn btn-primary"
|
@@ -65,7 +65,7 @@
|
|
65
65
|
</td>
|
66
66
|
<td>
|
67
67
|
<a class="btn btn-primary"
|
68
|
-
href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y+1 }}/{{ square_size }}"
|
68
|
+
href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y+1 }}/{{ square_size }}">↘︎</a>
|
69
69
|
</td>
|
70
70
|
</tr>
|
71
71
|
</table>
|
@@ -75,16 +75,16 @@
|
|
75
75
|
<tr>
|
76
76
|
<td>
|
77
77
|
<a class="btn btn-primary"
|
78
|
-
href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y }}/{{ square_size+1 }}"
|
78
|
+
href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y }}/{{ square_size+1 }}">↙︎</a>
|
79
79
|
<a class="btn btn-primary"
|
80
|
-
href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y }}/{{ square_size-1 }}"
|
80
|
+
href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y }}/{{ square_size-1 }}">↗︎</a>
|
81
81
|
</td>
|
82
82
|
<td></td>
|
83
83
|
<td>
|
84
84
|
<a class="btn btn-primary"
|
85
|
-
href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y }}/{{ square_size-1 }}"
|
85
|
+
href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y }}/{{ square_size-1 }}">↖︎</a>
|
86
86
|
<a class="btn btn-primary"
|
87
|
-
href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y }}/{{ square_size+1 }}"
|
87
|
+
href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y }}/{{ square_size+1 }}">↘︎</a>
|
88
88
|
</td>
|
89
89
|
</tr>
|
90
90
|
</table>
|
@@ -145,7 +145,57 @@
|
|
145
145
|
</div>
|
146
146
|
</div>
|
147
147
|
|
148
|
-
|
148
|
+
|
149
|
+
<form class="row row-cols-lg-auto g-3 align-items-center bm-3 mb-3" method="POST"
|
150
|
+
action="{{ url_for('.save_bookmark', zoom=zoom, x=square_x, y=square_y, size=square_size) }}">
|
151
|
+
<div class="col-12">
|
152
|
+
<label class="visually-hidden" for="inlineFormInputGroupUsername">Name</label>
|
153
|
+
<input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Name" name="name">
|
154
|
+
</div>
|
155
|
+
|
156
|
+
<div class="col-12">
|
157
|
+
<button type="submit" class="btn btn-primary">Create bookmark</button>
|
158
|
+
</div>
|
159
|
+
</form>
|
160
|
+
|
161
|
+
|
162
|
+
{% if bookmarks %}
|
163
|
+
<h2 class="mb-3">Bookmarks</h2>
|
164
|
+
<table class="table mb-3">
|
165
|
+
<thead>
|
166
|
+
<tr>
|
167
|
+
<th>Name</th>
|
168
|
+
<th>Zoom</th>
|
169
|
+
<th>X</th>
|
170
|
+
<th>Y</th>
|
171
|
+
<th>Size</th>
|
172
|
+
<th>Actions</th>
|
173
|
+
</tr>
|
174
|
+
</thead>
|
175
|
+
<tbody>
|
176
|
+
{% for bookmark in bookmarks %}
|
177
|
+
<tr>
|
178
|
+
<td>{{ bookmark.name }}</td>
|
179
|
+
<td>{{ bookmark.zoom }}</td>
|
180
|
+
<td>{{ bookmark.x }}</td>
|
181
|
+
<td>{{ bookmark.y }}</td>
|
182
|
+
<td>{{ bookmark.size }}</td>
|
183
|
+
<td>
|
184
|
+
<a class="btn btn-small btn-primary"
|
185
|
+
href="{{ url_for('.index', zoom=bookmark.zoom, x=bookmark.x, y=bookmark.y, size=bookmark.size) }}">Open</a>
|
186
|
+
<a class="btn btn-small btn-danger" href="{{ url_for('.delete_bookmark', id=bookmark.id) }}"
|
187
|
+
onclick="if(!confirm('Are you sure to Delete This?')){ event.preventDefault() }">Delete</a>
|
188
|
+
</td>
|
189
|
+
</tr>
|
190
|
+
{% endfor %}
|
191
|
+
</tbody>
|
192
|
+
</table>
|
193
|
+
{% endif %}
|
194
|
+
|
195
|
+
<hr />
|
196
|
+
|
197
|
+
<p class="mb-3">This feature was developed in memory of Natenom who unfortunately didn't live to enjoy it for more
|
198
|
+
tile
|
149
199
|
exploring.</p>
|
150
200
|
|
151
201
|
{% endblock %}
|
{geo_activity_playground-0.38.1.dist-info → geo_activity_playground-0.39.0.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: geo-activity-playground
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.39.0
|
4
4
|
Summary: Analysis of geo data activities like rides, runs or hikes.
|
5
5
|
License: MIT
|
6
6
|
Author: Martin Ueding
|
@@ -12,12 +12,15 @@ Classifier: Programming Language :: Python :: 3.10
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
14
14
|
Requires-Dist: Pillow (>=11.0.0,<12.0.0)
|
15
|
+
Requires-Dist: alembic (>=1.15.2,<2.0.0)
|
15
16
|
Requires-Dist: altair (>=5.5.0,<6.0.0)
|
16
17
|
Requires-Dist: appdirs (>=1.4.4,<2.0.0)
|
17
18
|
Requires-Dist: charset-normalizer (>=3.3.2,<4.0.0)
|
18
19
|
Requires-Dist: coloredlogs (>=15.0.1,<16.0.0)
|
19
20
|
Requires-Dist: fitdecode (>=0.10.0,<0.11.0)
|
20
21
|
Requires-Dist: flask (>=3.0.0,<4.0.0)
|
22
|
+
Requires-Dist: flask-alembic (>=3.1.1,<4.0.0)
|
23
|
+
Requires-Dist: flask-sqlalchemy (>=3.1.1,<4.0.0)
|
21
24
|
Requires-Dist: geojson (>=3.0.1,<4.0.0)
|
22
25
|
Requires-Dist: gpxpy (>=1.5.0,<2.0.0)
|
23
26
|
Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
|
@@ -28,6 +31,7 @@ Requires-Dist: pyarrow (>=19.0.1,<20.0.0)
|
|
28
31
|
Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
|
29
32
|
Requires-Dist: requests (>=2.28.1,<3.0.0)
|
30
33
|
Requires-Dist: shapely (>=2.0.5,<3.0.0)
|
34
|
+
Requires-Dist: sqlalchemy (>=2.0.40,<3.0.0)
|
31
35
|
Requires-Dist: stravalib (>=2.0,<3.0)
|
32
36
|
Requires-Dist: tcxreader (>=0.4.5,<0.5.0)
|
33
37
|
Requires-Dist: tomli (>=2.0.1,<3.0.0) ; python_version < "3.11"
|
@@ -0,0 +1,133 @@
|
|
1
|
+
geo_activity_playground/__main__.py,sha256=eL7NlKydYrzi4ikTvvKmlwkEFxx0V6CXOHOhRtazmd8,2907
|
2
|
+
geo_activity_playground/alembic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
3
|
+
geo_activity_playground/alembic/env.py,sha256=46oMzwSROaAsYuYWTd46txFdRLD3adm_SCn01A_ex8Q,2081
|
4
|
+
geo_activity_playground/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
5
|
+
geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py,sha256=WrmlDllnJECg6cSOeS05wYCa977_SXbJUV5khDSzntw,1082
|
6
|
+
geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py,sha256=YTnnENkQ8WqLz7PFof7tUWNkWcoHGkAfAM52x1N9umo,3029
|
7
|
+
geo_activity_playground/alembic/versions/ab83b9d23127_add_upstream_id.py,sha256=Wz02lBP2r7-09DjuQP8u8i7ypQ2SZU5RUc422-_ZBDk,851
|
8
|
+
geo_activity_playground/alembic/versions/b03491c593f6_add_crop_indices.py,sha256=1pt7aes0PWJXZ98HxqeDK-ehaU9KLApjCmZYoqCa8V0,975
|
9
|
+
geo_activity_playground/alembic/versions/e02e27876deb_add_square_planner_bookmark_name.py,sha256=Y0OMxp5z_-CQ83rww6GEBFRawXu0J0pLrLArgSjJ7wQ,866
|
10
|
+
geo_activity_playground/alembic/versions/script.py.mako,sha256=3qBrHBf7F7ChKDUIdiNItiSXrDpgQdM7sR0YKzpaC50,689
|
11
|
+
geo_activity_playground/core/activities.py,sha256=7Z8xiT0juLdo1nQ3fPqWKtSp6MjRkSzd-_FYrzb-Tpg,5360
|
12
|
+
geo_activity_playground/core/config.py,sha256=eGWWbNfHa6H64AHCnFYTsAJ7-pWi-PhyxL4hjZ4u03U,5256
|
13
|
+
geo_activity_playground/core/coordinates.py,sha256=tDfr9mlXhK6E_MMIJ0vYWVCoH0Lq8uyuaqUgaa8i0jg,966
|
14
|
+
geo_activity_playground/core/datamodel.py,sha256=cbVNvvHLYHYBg-Gaabm3bewfro8uQ4Sqdq_0mujcos0,8693
|
15
|
+
geo_activity_playground/core/enrichment.py,sha256=LWAKF6mAKtiZcIF8ptAgpt8fYTYZAnSuXGHuX5TTO6o,7220
|
16
|
+
geo_activity_playground/core/heart_rate.py,sha256=-S3WAhS7AOywrw_Lk5jfuo_fu6zvZQ1VtjwEKSycWpU,1542
|
17
|
+
geo_activity_playground/core/meta_search.py,sha256=naErjAC7ZCFhOF6d492kbegZxCdzbpGcJvjQLJTE4xE,5016
|
18
|
+
geo_activity_playground/core/paths.py,sha256=aUXGuNn9hBvGPQWPoUJeImHN0PB0fS1tja1tm2eq8mA,2595
|
19
|
+
geo_activity_playground/core/privacy_zones.py,sha256=4TumHsVUN1uW6RG3ArqTXDykPVipF98DCxVBe7YNdO8,512
|
20
|
+
geo_activity_playground/core/raster_map.py,sha256=Cq8dNLdxVQg3Agzn2bmXVu0-8kZf56QrSe-LKNn3jaU,7994
|
21
|
+
geo_activity_playground/core/similarity.py,sha256=L2de3DPRdDeDY5AxZwLDcH7FjHWRWklr41VNU06q9kQ,3117
|
22
|
+
geo_activity_playground/core/summary_stats.py,sha256=v5FtWnE1imDF5axI6asVN55wCrlD73oZ6lvqzxsTN2c,1006
|
23
|
+
geo_activity_playground/core/tasks.py,sha256=-_9cxekoHSWzCW4XblNeqrwi2tTqr5AE7_-p8fdqhwc,2886
|
24
|
+
geo_activity_playground/core/test_meta_search.py,sha256=zhuD343Xce-4Fkznw81DHQ7pK5eyX5UbcyCHuYRKsr8,3091
|
25
|
+
geo_activity_playground/core/test_summary_stats.py,sha256=qH_45mPRFD2H-Rr0Ku-RYc67vhC7qKxbPr7J2F36uV8,3081
|
26
|
+
geo_activity_playground/core/test_tiles.py,sha256=zce1FxNfsSpOQt66jMehdQRVoNdl-oiFydx6iVBHZXM,764
|
27
|
+
geo_activity_playground/core/test_time_conversion.py,sha256=Sh6nZA3uCTOdZTZa3yOijtR0m74QtZu2mcWXsDNnyQI,984
|
28
|
+
geo_activity_playground/core/tiles.py,sha256=lV6X1Uc9XQecu2LALIvxpnMcLsVtWx7JczJ5a_S1eZE,2139
|
29
|
+
geo_activity_playground/core/time_conversion.py,sha256=x5mXG6Y4GtdX7CBmwucGNSWBp9JQJDbZ7u0JkdUY1Vs,379
|
30
|
+
geo_activity_playground/explorer/grid_file.py,sha256=YNL_c4O1-kxaajATJwj4ZLywCL5Hpj9qy2h-F7rk8Yg,3260
|
31
|
+
geo_activity_playground/explorer/tile_visits.py,sha256=C8IpAGmrjMGYhyTVK-tl2ptM9-CXF2mwibhJYn7gLf8,13905
|
32
|
+
geo_activity_playground/explorer/video.py,sha256=7j6Qv3HG6On7Tn7xh7Olwrx_fbQnfzS7CeRg3TEApHg,4397
|
33
|
+
geo_activity_playground/heatmap_video.py,sha256=I8i1uVvbbPUXVtvLAROaLy58nQoUPnuMCZkERWNkQjg,3318
|
34
|
+
geo_activity_playground/importers/activity_parsers.py,sha256=DL11K2KFcESo7SC4CrvV4u1RALT5TbUJ22oOp7f1aG0,11058
|
35
|
+
geo_activity_playground/importers/csv_parser.py,sha256=O1pP5GLhWhnWcy2Lsrr9g17Zspuibpt-GtZ3ZS5eZF4,2143
|
36
|
+
geo_activity_playground/importers/directory.py,sha256=4Q7UAFa7ztkgqf4FvPbH2LlrO-7a8Fu7tkYPHOpHm1g,5210
|
37
|
+
geo_activity_playground/importers/strava_api.py,sha256=J0-VXNrLq22fhTcWkQPE5AVrzy5aegC7SBi-UXFtAy4,7576
|
38
|
+
geo_activity_playground/importers/strava_checkout.py,sha256=EixNFXXnxkopqUs0qe6iShYTbGu_o_g2_1lxuUIsz4E,9679
|
39
|
+
geo_activity_playground/importers/test_csv_parser.py,sha256=nOTVTdlzIY0TDcbWp7xNyNaIO6Mkeu55hVziVl22QE4,1092
|
40
|
+
geo_activity_playground/importers/test_directory.py,sha256=_fn_-y98ZyElbG0BRxAmGFdtGobUShPU86SdEOpuv-A,691
|
41
|
+
geo_activity_playground/importers/test_strava_api.py,sha256=7b8bl5Rh2BctCmvTPEhCadxtUOq3mfzuadD6F5XxRio,398
|
42
|
+
geo_activity_playground/webui/app.py,sha256=K-xZsNjorxPhVl9_z-W1MX0_s3gTjZ8XU7P56SFhwDk,6872
|
43
|
+
geo_activity_playground/webui/authenticator.py,sha256=jtQqvpVHa_eLTAulmvvJgDRoCWOEege49G9zn3MfYk8,1394
|
44
|
+
geo_activity_playground/webui/blueprints/activity_blueprint.py,sha256=ERYcUqvaG-hQqOr6uKEIZzGk1WelNKDHwvecsfu2c3c,24328
|
45
|
+
geo_activity_playground/webui/blueprints/auth_blueprint.py,sha256=_VZeP3VN626BoOOZUkNVnuw9v-cEOrkHz5lhFPmxqMY,784
|
46
|
+
geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py,sha256=tiqDf-DZLdjm8faatZ5fqbh7gkII2KmBPRtkcKqoLIA,2194
|
47
|
+
geo_activity_playground/webui/blueprints/calendar_blueprint.py,sha256=L6R8xieYYXeEMDzJs-MjWax1JAHhppWy3r3U8MyCOAk,2585
|
48
|
+
geo_activity_playground/webui/blueprints/eddington_blueprint.py,sha256=DHvq1gY8-C7xsHp5LxqM3eN2eAOwbyLyBH3J8E0zXps,6937
|
49
|
+
geo_activity_playground/webui/blueprints/entry_views.py,sha256=-CRrE5b9QYyrmQhLYSW0qo20XRY9RDDJUepJCwFoKOs,2322
|
50
|
+
geo_activity_playground/webui/blueprints/equipment_blueprint.py,sha256=juQ5L2BlrECb00LBbiY2yc0b8W_B9Y3fPwtbiaRfgpo,5634
|
51
|
+
geo_activity_playground/webui/blueprints/explorer_blueprint.py,sha256=ZNDRwtmYvWGyqDe3fszGp0DR5qzRRxRss32ZGPRuXsY,12469
|
52
|
+
geo_activity_playground/webui/blueprints/heatmap_blueprint.py,sha256=iHI5YJYhX7ZOlzTgzl2efIRDzt3UMYCx7X4-LVd0MWk,8702
|
53
|
+
geo_activity_playground/webui/blueprints/search_blueprint.py,sha256=Sv_KL1Cdai26y51qVfI-5jZLhtElREsEar1dbR_VAC4,2275
|
54
|
+
geo_activity_playground/webui/blueprints/settings_blueprint.py,sha256=UUv63BDQFnBPq8fLDdlWHd5mxL5qIgcGUuqQRFemyEA,16108
|
55
|
+
geo_activity_playground/webui/blueprints/square_planner_blueprint.py,sha256=xVaxJxmt8Dysl3UL9f2y__LVLtTH2Np1Ust4OSXKRAk,4746
|
56
|
+
geo_activity_playground/webui/blueprints/summary_blueprint.py,sha256=g7j0wmqk3PwPJ-zQrSEJMcke1SUsrSkiOBhOfzaIP1A,9126
|
57
|
+
geo_activity_playground/webui/blueprints/tile_blueprint.py,sha256=YzZf9OrNdjhc1_j4MtO1DMcw1uCv29ueNsYd-mWqgbg,837
|
58
|
+
geo_activity_playground/webui/blueprints/upload_blueprint.py,sha256=_VeGu08vlRZlRn5J4t7VdBk2TTW5GXB4JUcge9mbX9Y,4111
|
59
|
+
geo_activity_playground/webui/flasher.py,sha256=Covc1D9cO_jjokRWnvyiXCc2tfp3aZ8XkNqFdA1AXtk,500
|
60
|
+
geo_activity_playground/webui/plot_util.py,sha256=5Uesjj-xcMskQX2z9viDZYHSxLGrH2a5dHA1ogsJW9U,261
|
61
|
+
geo_activity_playground/webui/search_util.py,sha256=uAxnN9Tdei8IKV6Lqx4z5UIJf0_HKLd9NG9meiu5u4s,2202
|
62
|
+
geo_activity_playground/webui/static/Leaflet.fullscreen.min.js,sha256=MMWj_yFOercjzhk8wKIIKyDCK7olXrwk_7R7TjDhGYs,3677
|
63
|
+
geo_activity_playground/webui/static/MarkerCluster.Default.css,sha256=LWhzWaQGZRsWFrrJxg-6Zn8TT84k0_trtiHBc6qcGpY,1346
|
64
|
+
geo_activity_playground/webui/static/MarkerCluster.css,sha256=-bdWuWOXMFkX0v9Cvr3OWClPiYefDQz9GGZP_7xZxdc,886
|
65
|
+
geo_activity_playground/webui/static/android-chrome-192x192.png,sha256=yxZgo8Jw4hrgOgrn3tvi9G0AXWGFD29kjCuxC07WoT4,17610
|
66
|
+
geo_activity_playground/webui/static/android-chrome-512x512.png,sha256=Uiv62gQpUjMOdp9d6exzd6IyOi5zgQdgjIVVWYw5m98,38891
|
67
|
+
geo_activity_playground/webui/static/apple-touch-icon.png,sha256=TNLa0YIS1mbWajvIQthC2bGve6ET3DbJzrAbs6Pf3Ps,13046
|
68
|
+
geo_activity_playground/webui/static/bootstrap-dark-mode.js,sha256=XfyhxIFgjDc6aEj0kYgKpG5zjS5gvyhWCJmNfUG4HJY,2622
|
69
|
+
geo_activity_playground/webui/static/bootstrap.bundle.min.js,sha256=gvZPYrsDwbwYJLD5yeBfcNujPhRoGOY831wwbIzz3t0,80663
|
70
|
+
geo_activity_playground/webui/static/bootstrap.min.css,sha256=MBffSnbbXwHCuZtgPYiwMQbfE7z-GOZ7fBPCNB06Z98,232948
|
71
|
+
geo_activity_playground/webui/static/browserconfig.xml,sha256=u5EvU6U1jKSDiXHW0i4rXrs0lT_tmS82otbJnvmccrk,253
|
72
|
+
geo_activity_playground/webui/static/favicon-16x16.png,sha256=Yy8lRjGB7itDaeUI_l_Toq3OO0gzgPGnqIfM3CqcQy0,1419
|
73
|
+
geo_activity_playground/webui/static/favicon-32x32.png,sha256=K52R99pLGgWHnjFPPkVieBm051Er-sTCiMvgLr9Alrg,2587
|
74
|
+
geo_activity_playground/webui/static/favicon-48x48.png,sha256=NIIuC1OV1umv2pETJH2yDUZhhzJDk0TERsbwA5tQM9A,2008
|
75
|
+
geo_activity_playground/webui/static/favicon.ico,sha256=zAkbToeh1fq8rh6osWyEjr-cgdX-ec5viI0vPAwLn7A,15086
|
76
|
+
geo_activity_playground/webui/static/favicon.svg,sha256=gwESIDvoxOpg3tHvbiAc-wVEM4fY0pFzWnX_guQcv1c,52247
|
77
|
+
geo_activity_playground/webui/static/fullscreen.png,sha256=yDtz-dhjuAoo6q9xc00-_XNTrGwEWrN80pOneFdol4g,299
|
78
|
+
geo_activity_playground/webui/static/fullscreen@2x.png,sha256=HVi2guZO6sekf2NggilbzjUTvJDweXpSMBS81fhtnX0,420
|
79
|
+
geo_activity_playground/webui/static/images/layers-2x.png,sha256=Bm2sqFDY_77wB68AsG6sABVyje4nnFHzy2xxbffELt8,1259
|
80
|
+
geo_activity_playground/webui/static/images/layers.png,sha256=Hbvp0CjikvNvy6j4s6KNXokydU_CIVuaxp5M3s9RB8Y,696
|
81
|
+
geo_activity_playground/webui/static/images/marker-icon-2x.png,sha256=ABecTB7oMNOhCEEq4NKU9Vd2z-sIXGASmjmqb8SuJSg,2464
|
82
|
+
geo_activity_playground/webui/static/images/marker-icon.png,sha256=V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy_owHesdxDc,1466
|
83
|
+
geo_activity_playground/webui/static/images/marker-shadow.png,sha256=Jk9cZAM58ELdcpBiz8BMF_jqDymIK1OOOEjtjxDttNo,618
|
84
|
+
geo_activity_playground/webui/static/leaflet.css,sha256=p4NxAoJBhIIN-hmNHrzRCf9tD_miZyoHS5obTRR9BMY,14806
|
85
|
+
geo_activity_playground/webui/static/leaflet.fullscreen.css,sha256=YTbhDGEH5amI_JfotPMN7IByFpsN9e4tCBnv5oNdvHU,994
|
86
|
+
geo_activity_playground/webui/static/leaflet.js,sha256=20nQCchB9co0qIjJZRGuk2_Z9VM-kNiyxNV1lvTlZBo,147552
|
87
|
+
geo_activity_playground/webui/static/leaflet.markercluster.js,sha256=WL6HHfYfbFEkZOFdsJQeY7lJG_E5airjvqbznghUzRw,33724
|
88
|
+
geo_activity_playground/webui/static/mstile-150x150.png,sha256=j1ANUQJ1Xi1DR2sGqYZztob2ypfGw04eNtGpN9SxExA,11964
|
89
|
+
geo_activity_playground/webui/static/site.webmanifest,sha256=G5wl5Ahfz6wyDt-Z7ea-ywG1WS1S7ZQ_QX9TM2ox6Lk,450
|
90
|
+
geo_activity_playground/webui/static/table-sort.min.js,sha256=sFeDrgkXTePr2ciJU9_mLh-Z8qtYhPIQMgOZtj0LwBY,8506
|
91
|
+
geo_activity_playground/webui/static/vega-embed@6,sha256=EtAqz74-xZ75o33UgiouBOKWG1u7Zxu-Zh0iIXFbmdo,60630
|
92
|
+
geo_activity_playground/webui/static/vega-lite@4,sha256=roXmcY9bUF91uB9V-eSEUHEgfwoXe6B1xoDPuIe5ou8,267999
|
93
|
+
geo_activity_playground/webui/static/vega@5,sha256=5DLHUaY2P0ph2mKSDMfX69E88J2ClJ-PSGJI-Acdw84,514536
|
94
|
+
geo_activity_playground/webui/static/web-app-manifest-192x192.png,sha256=eEImN6iWfSv-EnSNPL5WbX84PKakse_8VZMBPWWye3o,13582
|
95
|
+
geo_activity_playground/webui/static/web-app-manifest-512x512.png,sha256=vU9oQ4HnQerFDZVzcAT9twj4_Doc6_9v9wVvoRI-f_E,48318
|
96
|
+
geo_activity_playground/webui/templates/activity/day.html.j2,sha256=CHEvxlZralCm3-kTbZsGn0xj9VdSv9V5zalPSoAluus,2810
|
97
|
+
geo_activity_playground/webui/templates/activity/edit.html.j2,sha256=9HDFjYfUQBB6HAgeIZppFPlpiJ1vDZWcGyP7uYG_Hnw,1369
|
98
|
+
geo_activity_playground/webui/templates/activity/lines.html.j2,sha256=_ZDg1ruW-9UMJfOudy1-uY_-IcSSaagq7tPCih5Bb8g,1079
|
99
|
+
geo_activity_playground/webui/templates/activity/name.html.j2,sha256=7Wbh3IrVL5lMRve467H0P10Shn5FzGpaXLhV0H-X4Hk,2725
|
100
|
+
geo_activity_playground/webui/templates/activity/show.html.j2,sha256=OjgD8uM1L8nO12yPcHAhqMPFOtA2k2iUNkCT3EhHBg8,8318
|
101
|
+
geo_activity_playground/webui/templates/activity/trim.html.j2,sha256=3oAXQab6QqWjGBC9KCvWNOVn8uRmxoDLj3hx_O63TXc,1836
|
102
|
+
geo_activity_playground/webui/templates/auth/index.html.j2,sha256=ILQ5HvTEYc3OrtOAIFt1VrqWorVD70V9DC342znmP70,579
|
103
|
+
geo_activity_playground/webui/templates/bubble_chart/index.html.j2,sha256=pqyafhIgL97FuD4_-lMb8lRWC3rejwrjawbmfp17XFY,1143
|
104
|
+
geo_activity_playground/webui/templates/calendar/index.html.j2,sha256=8dV9yeDwfv0Mm81mhiPHN5r3hdPUWl1Yye03x0Rqbo8,1601
|
105
|
+
geo_activity_playground/webui/templates/calendar/month.html.j2,sha256=IEhGqknL69okX5brMzTgZdnmrgUQLmGGkDE5zd7RG7s,2008
|
106
|
+
geo_activity_playground/webui/templates/eddington/index.html.j2,sha256=_3oxzHhC_s9ATtvGmuIWKqvjIQYJNvdCxmYnOyN9QnY,3716
|
107
|
+
geo_activity_playground/webui/templates/equipment/index.html.j2,sha256=wwrGmfCCBn-5CzMymi80hg3lNMZ7J1fAWWl_2zHeiMc,1845
|
108
|
+
geo_activity_playground/webui/templates/explorer/index.html.j2,sha256=3t9ikAF6oMvEaVlS3Kb1tj9ngomIQlatzqPnqVsEDKA,6908
|
109
|
+
geo_activity_playground/webui/templates/heatmap/index.html.j2,sha256=kTVvEt-GmSNebDlVMa6zwyIuP0mJcZQFuqj-IY8JV5U,1359
|
110
|
+
geo_activity_playground/webui/templates/home.html.j2,sha256=vQp9uMn7BLY7pexWJVpQVWN8ZbbtWZvkW_hYSkYQeZs,2212
|
111
|
+
geo_activity_playground/webui/templates/page.html.j2,sha256=TSNEZNLFzJ76G_22dDIXoTozfdWjmKk03qZl6exsdCQ,11043
|
112
|
+
geo_activity_playground/webui/templates/search/index.html.j2,sha256=_kxTgsdbT8o-4ryW0pvyWE7a-rOs7xzGUpdSPp8Q1is,1320
|
113
|
+
geo_activity_playground/webui/templates/search_form.html.j2,sha256=TG9xIql0HnhsXtbHZxl3GLBt6cGYjA8jPeBq11syQ3A,6512
|
114
|
+
geo_activity_playground/webui/templates/settings/admin-password.html.j2,sha256=VYwddpObD1RpeTH5Dm4y7VtmT7kwURDCIjxyzJeq08c,495
|
115
|
+
geo_activity_playground/webui/templates/settings/color-schemes.html.j2,sha256=iR91Wxd2_TMuIo9dBDZBrWSUGHNwTwzC6O8oNH-XBt4,1653
|
116
|
+
geo_activity_playground/webui/templates/settings/heart-rate.html.j2,sha256=UPT3MegRgSeff36lhCo0l3ZwhqNSIg5gM6h2s32GkCY,4255
|
117
|
+
geo_activity_playground/webui/templates/settings/index.html.j2,sha256=3a62-F3EWZpY-n0zB8sBgQSx_HUyr_2OWOa5neln94o,4648
|
118
|
+
geo_activity_playground/webui/templates/settings/manage-equipments.html.j2,sha256=vPGGlwyG_xMZc4a6JdajwWMJBfN1lBNBtDSt6QPJBiY,1585
|
119
|
+
geo_activity_playground/webui/templates/settings/manage-kinds.html.j2,sha256=382VW-cEe0iPJ8TNL2jrcRtVYb_RFdzDyeC1ncpWZ9M,1616
|
120
|
+
geo_activity_playground/webui/templates/settings/metadata-extraction.html.j2,sha256=0g9RlHFKipN45RaH_FANWnY1lfXUkKjtc_9B-vJ19LQ,2298
|
121
|
+
geo_activity_playground/webui/templates/settings/privacy-zones.html.j2,sha256=KpTMhzl-m6v5WQSHzWB3KaR7uMNg9Sd3R06twkJ1Zg4,3254
|
122
|
+
geo_activity_playground/webui/templates/settings/segmentation.html.j2,sha256=QV72TZcIxqql-vEsq2lKHzo5UxoxeeXkRA9se46GWKU,1187
|
123
|
+
geo_activity_playground/webui/templates/settings/sharepic.html.j2,sha256=qZkfEpd4CtKKMaSSVadqvNEgMRYLV-0X-pw5-nJvukk,678
|
124
|
+
geo_activity_playground/webui/templates/settings/strava.html.j2,sha256=GCE5gskQ6xJ8AM1qGrrUVLDOiuqg510mWzzsZjia0gk,2211
|
125
|
+
geo_activity_playground/webui/templates/square_planner/index.html.j2,sha256=-OnY2nQCgZCslOzf28ogZwFykwF8tZm7PgFwOE3eBDk,8176
|
126
|
+
geo_activity_playground/webui/templates/summary/index.html.j2,sha256=bM89LdumssVvmuI0EeI8mnzMYxSzNjWY_XWfzn-f6nI,5377
|
127
|
+
geo_activity_playground/webui/templates/upload/index.html.j2,sha256=I1Ix8tDS3YBdi-HdaNfjkzYXVVCjfUTe5PFTnap1ydc,775
|
128
|
+
geo_activity_playground/webui/templates/upload/reload.html.j2,sha256=YZWX5eDeNyqKJdQAywDBcU8DZBm22rRBbZqFjrFrCvQ,556
|
129
|
+
geo_activity_playground-0.39.0.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
|
130
|
+
geo_activity_playground-0.39.0.dist-info/METADATA,sha256=jughq9g1K5BCZKW7diQ6A8p9Lmp1CJk3vlQhDUcYmc0,1758
|
131
|
+
geo_activity_playground-0.39.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
132
|
+
geo_activity_playground-0.39.0.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
|
133
|
+
geo_activity_playground-0.39.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,109 +0,0 @@
|
|
1
|
-
import json
|
2
|
-
import urllib.parse
|
3
|
-
|
4
|
-
from flask import Blueprint
|
5
|
-
from flask import redirect
|
6
|
-
from flask import render_template
|
7
|
-
from flask import request
|
8
|
-
from flask import Response
|
9
|
-
from flask import url_for
|
10
|
-
|
11
|
-
from geo_activity_playground.core.activities import ActivityRepository
|
12
|
-
from geo_activity_playground.core.paths import activity_meta_override_dir
|
13
|
-
from geo_activity_playground.webui.activity.controller import ActivityController
|
14
|
-
from geo_activity_playground.webui.authenticator import Authenticator
|
15
|
-
from geo_activity_playground.webui.authenticator import needs_authentication
|
16
|
-
|
17
|
-
|
18
|
-
def make_activity_blueprint(
|
19
|
-
activity_controller: ActivityController,
|
20
|
-
repository: ActivityRepository,
|
21
|
-
authenticator: Authenticator,
|
22
|
-
) -> Blueprint:
|
23
|
-
blueprint = Blueprint("activity", __name__, template_folder="templates")
|
24
|
-
|
25
|
-
@blueprint.route("/all")
|
26
|
-
def all():
|
27
|
-
return render_template(
|
28
|
-
"activity/lines.html.j2", **activity_controller.render_all()
|
29
|
-
)
|
30
|
-
|
31
|
-
@blueprint.route("/<id>")
|
32
|
-
def show(id: str):
|
33
|
-
return render_template(
|
34
|
-
"activity/show.html.j2", **activity_controller.render_activity(int(id))
|
35
|
-
)
|
36
|
-
|
37
|
-
@blueprint.route("/<id>/sharepic.png")
|
38
|
-
def sharepic(id: str):
|
39
|
-
return Response(
|
40
|
-
activity_controller.render_sharepic(int(id)),
|
41
|
-
mimetype="image/png",
|
42
|
-
)
|
43
|
-
|
44
|
-
@blueprint.route("/day/<year>/<month>/<day>")
|
45
|
-
def day(year: str, month: str, day: str):
|
46
|
-
return render_template(
|
47
|
-
"activity/day.html.j2",
|
48
|
-
**activity_controller.render_day(int(year), int(month), int(day)),
|
49
|
-
)
|
50
|
-
|
51
|
-
@blueprint.route("/day-sharepic/<year>/<month>/<day>/sharepic.png")
|
52
|
-
def day_sharepic(year: str, month: str, day: str):
|
53
|
-
return Response(
|
54
|
-
activity_controller.render_day_sharepic(int(year), int(month), int(day)),
|
55
|
-
mimetype="image/png",
|
56
|
-
)
|
57
|
-
|
58
|
-
@blueprint.route("/name/<name>")
|
59
|
-
def name(name: str):
|
60
|
-
return render_template(
|
61
|
-
"activity/name.html.j2",
|
62
|
-
**activity_controller.render_name(urllib.parse.unquote(name)),
|
63
|
-
)
|
64
|
-
|
65
|
-
@blueprint.route("/edit/<id>", methods=["GET", "POST"])
|
66
|
-
@needs_authentication(authenticator)
|
67
|
-
def edit(id: str):
|
68
|
-
activity_id = int(id)
|
69
|
-
activity = repository.get_activity_by_id(activity_id)
|
70
|
-
override_file = activity_meta_override_dir() / f"{activity_id}.json"
|
71
|
-
if override_file.exists():
|
72
|
-
with open(override_file) as f:
|
73
|
-
override = json.load(f)
|
74
|
-
else:
|
75
|
-
override = {}
|
76
|
-
|
77
|
-
if request.method == "POST":
|
78
|
-
override = {}
|
79
|
-
if value := request.form.get("name"):
|
80
|
-
override["name"] = value
|
81
|
-
repository.meta.loc[activity_id, "name"] = value
|
82
|
-
if value := request.form.get("kind"):
|
83
|
-
override["kind"] = value
|
84
|
-
repository.meta.loc[activity_id, "kind"] = value
|
85
|
-
if value := request.form.get("equipment"):
|
86
|
-
override["equipment"] = value
|
87
|
-
repository.meta.loc[activity_id, "equipment"] = value
|
88
|
-
if value := request.form.get("commute"):
|
89
|
-
override["commute"] = True
|
90
|
-
repository.meta.loc[activity_id, "commute"] = True
|
91
|
-
if value := request.form.get("consider_for_achievements"):
|
92
|
-
override["consider_for_achievements"] = True
|
93
|
-
repository.meta.loc[activity_id, "consider_for_achievements"] = True
|
94
|
-
|
95
|
-
with open(override_file, "w") as f:
|
96
|
-
json.dump(override, f, ensure_ascii=False, indent=4, sort_keys=True)
|
97
|
-
|
98
|
-
repository.save()
|
99
|
-
|
100
|
-
return redirect(url_for(".show", id=activity_id))
|
101
|
-
|
102
|
-
return render_template(
|
103
|
-
"activity/edit.html.j2",
|
104
|
-
activity_id=activity_id,
|
105
|
-
activity=activity,
|
106
|
-
override=override,
|
107
|
-
)
|
108
|
-
|
109
|
-
return blueprint
|