geo-activity-playground 0.38.2__py3-none-any.whl → 0.39.1__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 (116) hide show
  1. geo_activity_playground/__main__.py +5 -47
  2. geo_activity_playground/alembic/README +1 -0
  3. geo_activity_playground/alembic/env.py +76 -0
  4. geo_activity_playground/alembic/script.py.mako +26 -0
  5. geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py +33 -0
  6. geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py +73 -0
  7. geo_activity_playground/alembic/versions/ab83b9d23127_add_upstream_id.py +28 -0
  8. geo_activity_playground/alembic/versions/b03491c593f6_add_crop_indices.py +30 -0
  9. geo_activity_playground/alembic/versions/e02e27876deb_add_square_planner_bookmark_name.py +28 -0
  10. geo_activity_playground/alembic/versions/script.py.mako +28 -0
  11. geo_activity_playground/core/activities.py +53 -136
  12. geo_activity_playground/core/config.py +3 -3
  13. geo_activity_playground/core/datamodel.py +257 -0
  14. geo_activity_playground/core/enrichment.py +90 -92
  15. geo_activity_playground/core/heart_rate.py +1 -2
  16. geo_activity_playground/core/parametric_plot.py +101 -0
  17. geo_activity_playground/core/paths.py +6 -7
  18. geo_activity_playground/core/raster_map.py +43 -4
  19. geo_activity_playground/core/similarity.py +1 -2
  20. geo_activity_playground/core/tasks.py +2 -2
  21. geo_activity_playground/core/test_meta_search.py +3 -3
  22. geo_activity_playground/core/test_summary_stats.py +1 -1
  23. geo_activity_playground/explorer/grid_file.py +2 -2
  24. geo_activity_playground/explorer/tile_visits.py +8 -10
  25. geo_activity_playground/heatmap_video.py +7 -8
  26. geo_activity_playground/importers/activity_parsers.py +2 -2
  27. geo_activity_playground/importers/directory.py +9 -10
  28. geo_activity_playground/importers/strava_api.py +9 -9
  29. geo_activity_playground/importers/strava_checkout.py +12 -13
  30. geo_activity_playground/importers/test_csv_parser.py +3 -3
  31. geo_activity_playground/importers/test_directory.py +1 -1
  32. geo_activity_playground/importers/test_strava_api.py +1 -1
  33. geo_activity_playground/webui/app.py +96 -86
  34. geo_activity_playground/webui/authenticator.py +1 -1
  35. geo_activity_playground/webui/{activity/controller.py → blueprints/activity_blueprint.py} +246 -108
  36. geo_activity_playground/webui/{auth_blueprint.py → blueprints/auth_blueprint.py} +1 -1
  37. geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py +61 -0
  38. geo_activity_playground/webui/{calendar/controller.py → blueprints/calendar_blueprint.py} +19 -19
  39. geo_activity_playground/webui/{eddington_blueprint.py → blueprints/eddington_blueprint.py} +5 -5
  40. geo_activity_playground/webui/blueprints/entry_views.py +68 -0
  41. geo_activity_playground/webui/{equipment_blueprint.py → blueprints/equipment_blueprint.py} +37 -4
  42. geo_activity_playground/webui/{explorer/controller.py → blueprints/explorer_blueprint.py} +88 -54
  43. geo_activity_playground/webui/blueprints/heatmap_blueprint.py +233 -0
  44. geo_activity_playground/webui/blueprints/plot_builder_blueprint.py +43 -0
  45. geo_activity_playground/webui/{search_blueprint.py → blueprints/search_blueprint.py} +7 -11
  46. geo_activity_playground/webui/blueprints/settings_blueprint.py +446 -0
  47. geo_activity_playground/webui/{square_planner_blueprint.py → blueprints/square_planner_blueprint.py} +31 -6
  48. geo_activity_playground/webui/{summary_blueprint.py → blueprints/summary_blueprint.py} +11 -23
  49. geo_activity_playground/webui/blueprints/tile_blueprint.py +27 -0
  50. geo_activity_playground/webui/{upload_blueprint.py → blueprints/upload_blueprint.py} +13 -18
  51. geo_activity_playground/webui/flasher.py +26 -0
  52. geo_activity_playground/webui/plot_util.py +1 -1
  53. geo_activity_playground/webui/search_util.py +4 -6
  54. geo_activity_playground/webui/static/images/layers-2x.png +0 -0
  55. geo_activity_playground/webui/static/images/layers.png +0 -0
  56. geo_activity_playground/webui/static/images/marker-icon-2x.png +0 -0
  57. geo_activity_playground/webui/static/images/marker-icon.png +0 -0
  58. geo_activity_playground/webui/static/images/marker-shadow.png +0 -0
  59. geo_activity_playground/webui/templates/activity/day.html.j2 +81 -0
  60. geo_activity_playground/webui/templates/activity/edit.html.j2 +38 -0
  61. geo_activity_playground/webui/{activity/templates → templates}/activity/name.html.j2 +29 -27
  62. geo_activity_playground/webui/{activity/templates → templates}/activity/show.html.j2 +57 -33
  63. geo_activity_playground/webui/templates/activity/trim.html.j2 +68 -0
  64. geo_activity_playground/webui/templates/bubble_chart/index.html.j2 +26 -0
  65. geo_activity_playground/webui/templates/calendar/index.html.j2 +48 -0
  66. geo_activity_playground/webui/templates/calendar/month.html.j2 +57 -0
  67. geo_activity_playground/webui/templates/equipment/index.html.j2 +7 -0
  68. geo_activity_playground/webui/templates/home.html.j2 +6 -6
  69. geo_activity_playground/webui/templates/page.html.j2 +2 -1
  70. geo_activity_playground/webui/templates/plot_builder/index.html.j2 +44 -0
  71. geo_activity_playground/webui/{settings/templates → templates}/settings/index.html.j2 +9 -20
  72. geo_activity_playground/webui/templates/settings/manage-equipments.html.j2 +49 -0
  73. geo_activity_playground/webui/templates/settings/manage-kinds.html.j2 +48 -0
  74. geo_activity_playground/webui/{settings/templates → templates}/settings/privacy-zones.html.j2 +2 -0
  75. geo_activity_playground/webui/{settings/templates → templates}/settings/strava.html.j2 +2 -0
  76. geo_activity_playground/webui/templates/square_planner/index.html.j2 +63 -13
  77. {geo_activity_playground-0.38.2.dist-info → geo_activity_playground-0.39.1.dist-info}/METADATA +5 -1
  78. geo_activity_playground-0.39.1.dist-info/RECORD +136 -0
  79. geo_activity_playground/__init__.py +0 -0
  80. geo_activity_playground/core/__init__.py +0 -0
  81. geo_activity_playground/explorer/__init__.py +0 -0
  82. geo_activity_playground/importers/__init__.py +0 -0
  83. geo_activity_playground/webui/__init__.py +0 -0
  84. geo_activity_playground/webui/activity/__init__.py +0 -0
  85. geo_activity_playground/webui/activity/blueprint.py +0 -109
  86. geo_activity_playground/webui/activity/templates/activity/day.html.j2 +0 -80
  87. geo_activity_playground/webui/activity/templates/activity/edit.html.j2 +0 -42
  88. geo_activity_playground/webui/calendar/__init__.py +0 -0
  89. geo_activity_playground/webui/calendar/blueprint.py +0 -23
  90. geo_activity_playground/webui/calendar/templates/calendar/index.html.j2 +0 -46
  91. geo_activity_playground/webui/calendar/templates/calendar/month.html.j2 +0 -55
  92. geo_activity_playground/webui/entry_controller.py +0 -63
  93. geo_activity_playground/webui/explorer/__init__.py +0 -0
  94. geo_activity_playground/webui/explorer/blueprint.py +0 -62
  95. geo_activity_playground/webui/heatmap/__init__.py +0 -0
  96. geo_activity_playground/webui/heatmap/blueprint.py +0 -51
  97. geo_activity_playground/webui/heatmap/heatmap_controller.py +0 -216
  98. geo_activity_playground/webui/settings/blueprint.py +0 -262
  99. geo_activity_playground/webui/settings/controller.py +0 -272
  100. geo_activity_playground/webui/settings/templates/settings/equipment-offsets.html.j2 +0 -44
  101. geo_activity_playground/webui/settings/templates/settings/kind-renames.html.j2 +0 -25
  102. geo_activity_playground/webui/settings/templates/settings/kinds-without-achievements.html.j2 +0 -30
  103. geo_activity_playground/webui/tile_blueprint.py +0 -42
  104. geo_activity_playground-0.38.2.dist-info/RECORD +0 -129
  105. /geo_activity_playground/webui/{activity/templates → templates}/activity/lines.html.j2 +0 -0
  106. /geo_activity_playground/webui/{explorer/templates → templates}/explorer/index.html.j2 +0 -0
  107. /geo_activity_playground/webui/{heatmap/templates → templates}/heatmap/index.html.j2 +0 -0
  108. /geo_activity_playground/webui/{settings/templates → templates}/settings/admin-password.html.j2 +0 -0
  109. /geo_activity_playground/webui/{settings/templates → templates}/settings/color-schemes.html.j2 +0 -0
  110. /geo_activity_playground/webui/{settings/templates → templates}/settings/heart-rate.html.j2 +0 -0
  111. /geo_activity_playground/webui/{settings/templates → templates}/settings/metadata-extraction.html.j2 +0 -0
  112. /geo_activity_playground/webui/{settings/templates → templates}/settings/segmentation.html.j2 +0 -0
  113. /geo_activity_playground/webui/{settings/templates → templates}/settings/sharepic.html.j2 +0 -0
  114. {geo_activity_playground-0.38.2.dist-info → geo_activity_playground-0.39.1.dist-info}/LICENSE +0 -0
  115. {geo_activity_playground-0.38.2.dist-info → geo_activity_playground-0.39.1.dist-info}/WHEEL +0 -0
  116. {geo_activity_playground-0.38.2.dist-info → geo_activity_playground-0.39.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,44 @@
1
+ {% extends "page.html.j2" %}
2
+ {% from "search_form.html.j2" import search_form %}
3
+
4
+ {% block container %}
5
+
6
+ <h1 class="row mb-3">Plot Builder</h1>
7
+
8
+
9
+ <div class="row">
10
+ <div class="col-md-4">
11
+ {% macro select_field(label, name, choices, active) %}
12
+ <div class="mb-3">
13
+ <label for="{{ name }}">{{ label }}</label>
14
+ <select name="{{ name }}" class="form-select">
15
+ {% for choice_value, choice_label in choices.items() %}
16
+ <option id="{{ name }}" value="{{ choice_value }}" {% if active==choice_value %} selected {% endif %}>
17
+ {{ choice_label }}
18
+ </option>
19
+ {% endfor %}
20
+ </select>
21
+ </div>
22
+ {% endmacro %}
23
+
24
+ <form>
25
+ {{ select_field("Mark", "mark", marks, mark)}}
26
+
27
+ {{ select_field("X", "x", continuous, x)}}
28
+ {{ select_field("Y", "y", continuous, y)}}
29
+ {{ select_field("Color", "color", continuous, color)}}
30
+ {{ select_field("Size", "size", continuous, size)}}
31
+ {{ select_field("Shape", "shape", discrete, shape)}}
32
+ {{ select_field("Row", "row", discrete, row)}}
33
+ {{ select_field("Column", "column", discrete, column)}}
34
+
35
+ <button type="submit" class="btn btn-primary">Submit</button>
36
+ </form>
37
+ </div>
38
+ <div class="col-md-8">
39
+ {% if plot %}
40
+ {{ vega_direct("plot", plot) }}
41
+ {% endif %}
42
+ </div>
43
+ </div>
44
+ {% endblock %}
@@ -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 offsets</h5>
36
- <p class="card-text">Not all activities with a given equipment are recorded? Just set an offset.</p>
37
- <a href="{{ url_for('.equipment_offsets') }}" class="btn btn-primary">Set up equipment offsets</a>
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">Heart rate</h5>
45
- <p class="card-text">Specify maximum heart rate to derive heart rate zones.</p>
46
- <a href="{{ url_for('.heart_rate') }}" class="btn btn-primary">Set up heart rate</a>
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">Kinds without achievements</h5>
63
- <p class="card-text">Recorded car rides that shouldn't count towards the explorer tiles? Exempt
64
- activity kinds from consideration.</p>
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 %}
@@ -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 }}">↖</a>
16
+ href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y-1 }}/{{ square_size+1 }}">↖&#xFE0E;</a>
17
17
  <a class="btn btn-primary"
18
- href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y+1 }}/{{ square_size-1 }}">↘</a>
18
+ href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y+1 }}/{{ square_size-1 }}">↘&#xFE0E;</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 }}">↙</a>
23
+ href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y+1 }}/{{ square_size-1 }}">↙&#xFE0E;</a>
24
24
  <a class="btn btn-primary"
25
- href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y-1 }}/{{ square_size+1 }}">↗</a>
25
+ href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y-1 }}/{{ square_size+1 }}">↗&#xFE0E;</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 }}">↖</a>
35
+ href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y-1 }}/{{ square_size }}">↖&#xFE0E;</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 }}">↗</a>
43
+ href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y-1 }}/{{ square_size }}">↗&#xFE0E;</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 }}">↙</a>
60
+ href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y+1 }}/{{ square_size }}">↙&#xFE0E;</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 }}">↘</a>
68
+ href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y+1 }}/{{ square_size }}">↘&#xFE0E;</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 }}">↙</a>
78
+ href="/square-planner/{{ zoom }}/{{ square_x-1 }}/{{ square_y }}/{{ square_size+1 }}">↙&#xFE0E;</a>
79
79
  <a class="btn btn-primary"
80
- href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y }}/{{ square_size-1 }}">↗</a>
80
+ href="/square-planner/{{ zoom }}/{{ square_x+1 }}/{{ square_y }}/{{ square_size-1 }}">↗&#xFE0E;</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 }}">↖</a>
85
+ href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y }}/{{ square_size-1 }}">↖&#xFE0E;</a>
86
86
  <a class="btn btn-primary"
87
- href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y }}/{{ square_size+1 }}">↘</a>
87
+ href="/square-planner/{{ zoom }}/{{ square_x }}/{{ square_y }}/{{ square_size+1 }}">↘&#xFE0E;</a>
88
88
  </td>
89
89
  </tr>
90
90
  </table>
@@ -145,7 +145,57 @@
145
145
  </div>
146
146
  </div>
147
147
 
148
- <p class="mb-3">This feature was developed in memory of Natenom who unfortunately didn't live to enjoy it for more tile
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 %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geo-activity-playground
3
- Version: 0.38.2
3
+ Version: 0.39.1
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,136 @@
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=R3RDvOkHyWL2Wr-Bgqjgr5wDjVqaJ3WSECL2fbMyiu8,5485
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=EeMcwZ2xbqQRwo6R7lOJwbc9iIXnpgg2E4eBdsAbk24,8685
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/parametric_plot.py,sha256=JdG2HvQHn5mMY1pfcebdgajzpp0CD7KvaHyeaJodDsE,3538
19
+ geo_activity_playground/core/paths.py,sha256=aUXGuNn9hBvGPQWPoUJeImHN0PB0fS1tja1tm2eq8mA,2595
20
+ geo_activity_playground/core/privacy_zones.py,sha256=4TumHsVUN1uW6RG3ArqTXDykPVipF98DCxVBe7YNdO8,512
21
+ geo_activity_playground/core/raster_map.py,sha256=Cq8dNLdxVQg3Agzn2bmXVu0-8kZf56QrSe-LKNn3jaU,7994
22
+ geo_activity_playground/core/similarity.py,sha256=L2de3DPRdDeDY5AxZwLDcH7FjHWRWklr41VNU06q9kQ,3117
23
+ geo_activity_playground/core/summary_stats.py,sha256=v5FtWnE1imDF5axI6asVN55wCrlD73oZ6lvqzxsTN2c,1006
24
+ geo_activity_playground/core/tasks.py,sha256=-_9cxekoHSWzCW4XblNeqrwi2tTqr5AE7_-p8fdqhwc,2886
25
+ geo_activity_playground/core/test_meta_search.py,sha256=zhuD343Xce-4Fkznw81DHQ7pK5eyX5UbcyCHuYRKsr8,3091
26
+ geo_activity_playground/core/test_summary_stats.py,sha256=qH_45mPRFD2H-Rr0Ku-RYc67vhC7qKxbPr7J2F36uV8,3081
27
+ geo_activity_playground/core/test_tiles.py,sha256=zce1FxNfsSpOQt66jMehdQRVoNdl-oiFydx6iVBHZXM,764
28
+ geo_activity_playground/core/test_time_conversion.py,sha256=Sh6nZA3uCTOdZTZa3yOijtR0m74QtZu2mcWXsDNnyQI,984
29
+ geo_activity_playground/core/tiles.py,sha256=lV6X1Uc9XQecu2LALIvxpnMcLsVtWx7JczJ5a_S1eZE,2139
30
+ geo_activity_playground/core/time_conversion.py,sha256=x5mXG6Y4GtdX7CBmwucGNSWBp9JQJDbZ7u0JkdUY1Vs,379
31
+ geo_activity_playground/explorer/grid_file.py,sha256=YNL_c4O1-kxaajATJwj4ZLywCL5Hpj9qy2h-F7rk8Yg,3260
32
+ geo_activity_playground/explorer/tile_visits.py,sha256=C8IpAGmrjMGYhyTVK-tl2ptM9-CXF2mwibhJYn7gLf8,13905
33
+ geo_activity_playground/explorer/video.py,sha256=7j6Qv3HG6On7Tn7xh7Olwrx_fbQnfzS7CeRg3TEApHg,4397
34
+ geo_activity_playground/heatmap_video.py,sha256=I8i1uVvbbPUXVtvLAROaLy58nQoUPnuMCZkERWNkQjg,3318
35
+ geo_activity_playground/importers/activity_parsers.py,sha256=DL11K2KFcESo7SC4CrvV4u1RALT5TbUJ22oOp7f1aG0,11058
36
+ geo_activity_playground/importers/csv_parser.py,sha256=O1pP5GLhWhnWcy2Lsrr9g17Zspuibpt-GtZ3ZS5eZF4,2143
37
+ geo_activity_playground/importers/directory.py,sha256=4Q7UAFa7ztkgqf4FvPbH2LlrO-7a8Fu7tkYPHOpHm1g,5210
38
+ geo_activity_playground/importers/strava_api.py,sha256=J0-VXNrLq22fhTcWkQPE5AVrzy5aegC7SBi-UXFtAy4,7576
39
+ geo_activity_playground/importers/strava_checkout.py,sha256=EixNFXXnxkopqUs0qe6iShYTbGu_o_g2_1lxuUIsz4E,9679
40
+ geo_activity_playground/importers/test_csv_parser.py,sha256=nOTVTdlzIY0TDcbWp7xNyNaIO6Mkeu55hVziVl22QE4,1092
41
+ geo_activity_playground/importers/test_directory.py,sha256=_fn_-y98ZyElbG0BRxAmGFdtGobUShPU86SdEOpuv-A,691
42
+ geo_activity_playground/importers/test_strava_api.py,sha256=7b8bl5Rh2BctCmvTPEhCadxtUOq3mfzuadD6F5XxRio,398
43
+ geo_activity_playground/webui/app.py,sha256=h1AULky6kMxxmi54h3aTaE8rtJjOeRoCXIYI4gFNicU,7013
44
+ geo_activity_playground/webui/authenticator.py,sha256=jtQqvpVHa_eLTAulmvvJgDRoCWOEege49G9zn3MfYk8,1394
45
+ geo_activity_playground/webui/blueprints/activity_blueprint.py,sha256=ERYcUqvaG-hQqOr6uKEIZzGk1WelNKDHwvecsfu2c3c,24328
46
+ geo_activity_playground/webui/blueprints/auth_blueprint.py,sha256=_VZeP3VN626BoOOZUkNVnuw9v-cEOrkHz5lhFPmxqMY,784
47
+ geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py,sha256=tiqDf-DZLdjm8faatZ5fqbh7gkII2KmBPRtkcKqoLIA,2194
48
+ geo_activity_playground/webui/blueprints/calendar_blueprint.py,sha256=L6R8xieYYXeEMDzJs-MjWax1JAHhppWy3r3U8MyCOAk,2585
49
+ geo_activity_playground/webui/blueprints/eddington_blueprint.py,sha256=DHvq1gY8-C7xsHp5LxqM3eN2eAOwbyLyBH3J8E0zXps,6937
50
+ geo_activity_playground/webui/blueprints/entry_views.py,sha256=-CRrE5b9QYyrmQhLYSW0qo20XRY9RDDJUepJCwFoKOs,2322
51
+ geo_activity_playground/webui/blueprints/equipment_blueprint.py,sha256=juQ5L2BlrECb00LBbiY2yc0b8W_B9Y3fPwtbiaRfgpo,5634
52
+ geo_activity_playground/webui/blueprints/explorer_blueprint.py,sha256=ZNDRwtmYvWGyqDe3fszGp0DR5qzRRxRss32ZGPRuXsY,12469
53
+ geo_activity_playground/webui/blueprints/heatmap_blueprint.py,sha256=iHI5YJYhX7ZOlzTgzl2efIRDzt3UMYCx7X4-LVd0MWk,8702
54
+ geo_activity_playground/webui/blueprints/plot_builder_blueprint.py,sha256=EWLsNNIAl7eK73WVIi5Tneqjg0QVUZXoM1lScldr4ck,1544
55
+ geo_activity_playground/webui/blueprints/search_blueprint.py,sha256=Sv_KL1Cdai26y51qVfI-5jZLhtElREsEar1dbR_VAC4,2275
56
+ geo_activity_playground/webui/blueprints/settings_blueprint.py,sha256=UUv63BDQFnBPq8fLDdlWHd5mxL5qIgcGUuqQRFemyEA,16108
57
+ geo_activity_playground/webui/blueprints/square_planner_blueprint.py,sha256=xVaxJxmt8Dysl3UL9f2y__LVLtTH2Np1Ust4OSXKRAk,4746
58
+ geo_activity_playground/webui/blueprints/summary_blueprint.py,sha256=g7j0wmqk3PwPJ-zQrSEJMcke1SUsrSkiOBhOfzaIP1A,9126
59
+ geo_activity_playground/webui/blueprints/tile_blueprint.py,sha256=YzZf9OrNdjhc1_j4MtO1DMcw1uCv29ueNsYd-mWqgbg,837
60
+ geo_activity_playground/webui/blueprints/upload_blueprint.py,sha256=_VeGu08vlRZlRn5J4t7VdBk2TTW5GXB4JUcge9mbX9Y,4111
61
+ geo_activity_playground/webui/flasher.py,sha256=Covc1D9cO_jjokRWnvyiXCc2tfp3aZ8XkNqFdA1AXtk,500
62
+ geo_activity_playground/webui/plot_util.py,sha256=5Uesjj-xcMskQX2z9viDZYHSxLGrH2a5dHA1ogsJW9U,261
63
+ geo_activity_playground/webui/search_util.py,sha256=uAxnN9Tdei8IKV6Lqx4z5UIJf0_HKLd9NG9meiu5u4s,2202
64
+ geo_activity_playground/webui/static/Leaflet.fullscreen.min.js,sha256=MMWj_yFOercjzhk8wKIIKyDCK7olXrwk_7R7TjDhGYs,3677
65
+ geo_activity_playground/webui/static/MarkerCluster.Default.css,sha256=LWhzWaQGZRsWFrrJxg-6Zn8TT84k0_trtiHBc6qcGpY,1346
66
+ geo_activity_playground/webui/static/MarkerCluster.css,sha256=-bdWuWOXMFkX0v9Cvr3OWClPiYefDQz9GGZP_7xZxdc,886
67
+ geo_activity_playground/webui/static/android-chrome-192x192.png,sha256=yxZgo8Jw4hrgOgrn3tvi9G0AXWGFD29kjCuxC07WoT4,17610
68
+ geo_activity_playground/webui/static/android-chrome-512x512.png,sha256=Uiv62gQpUjMOdp9d6exzd6IyOi5zgQdgjIVVWYw5m98,38891
69
+ geo_activity_playground/webui/static/apple-touch-icon.png,sha256=TNLa0YIS1mbWajvIQthC2bGve6ET3DbJzrAbs6Pf3Ps,13046
70
+ geo_activity_playground/webui/static/bootstrap-dark-mode.js,sha256=XfyhxIFgjDc6aEj0kYgKpG5zjS5gvyhWCJmNfUG4HJY,2622
71
+ geo_activity_playground/webui/static/bootstrap.bundle.min.js,sha256=gvZPYrsDwbwYJLD5yeBfcNujPhRoGOY831wwbIzz3t0,80663
72
+ geo_activity_playground/webui/static/bootstrap.min.css,sha256=MBffSnbbXwHCuZtgPYiwMQbfE7z-GOZ7fBPCNB06Z98,232948
73
+ geo_activity_playground/webui/static/browserconfig.xml,sha256=u5EvU6U1jKSDiXHW0i4rXrs0lT_tmS82otbJnvmccrk,253
74
+ geo_activity_playground/webui/static/favicon-16x16.png,sha256=Yy8lRjGB7itDaeUI_l_Toq3OO0gzgPGnqIfM3CqcQy0,1419
75
+ geo_activity_playground/webui/static/favicon-32x32.png,sha256=K52R99pLGgWHnjFPPkVieBm051Er-sTCiMvgLr9Alrg,2587
76
+ geo_activity_playground/webui/static/favicon-48x48.png,sha256=NIIuC1OV1umv2pETJH2yDUZhhzJDk0TERsbwA5tQM9A,2008
77
+ geo_activity_playground/webui/static/favicon.ico,sha256=zAkbToeh1fq8rh6osWyEjr-cgdX-ec5viI0vPAwLn7A,15086
78
+ geo_activity_playground/webui/static/favicon.svg,sha256=gwESIDvoxOpg3tHvbiAc-wVEM4fY0pFzWnX_guQcv1c,52247
79
+ geo_activity_playground/webui/static/fullscreen.png,sha256=yDtz-dhjuAoo6q9xc00-_XNTrGwEWrN80pOneFdol4g,299
80
+ geo_activity_playground/webui/static/fullscreen@2x.png,sha256=HVi2guZO6sekf2NggilbzjUTvJDweXpSMBS81fhtnX0,420
81
+ geo_activity_playground/webui/static/images/layers-2x.png,sha256=Bm2sqFDY_77wB68AsG6sABVyje4nnFHzy2xxbffELt8,1259
82
+ geo_activity_playground/webui/static/images/layers.png,sha256=Hbvp0CjikvNvy6j4s6KNXokydU_CIVuaxp5M3s9RB8Y,696
83
+ geo_activity_playground/webui/static/images/marker-icon-2x.png,sha256=ABecTB7oMNOhCEEq4NKU9Vd2z-sIXGASmjmqb8SuJSg,2464
84
+ geo_activity_playground/webui/static/images/marker-icon.png,sha256=V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy_owHesdxDc,1466
85
+ geo_activity_playground/webui/static/images/marker-shadow.png,sha256=Jk9cZAM58ELdcpBiz8BMF_jqDymIK1OOOEjtjxDttNo,618
86
+ geo_activity_playground/webui/static/leaflet.css,sha256=p4NxAoJBhIIN-hmNHrzRCf9tD_miZyoHS5obTRR9BMY,14806
87
+ geo_activity_playground/webui/static/leaflet.fullscreen.css,sha256=YTbhDGEH5amI_JfotPMN7IByFpsN9e4tCBnv5oNdvHU,994
88
+ geo_activity_playground/webui/static/leaflet.js,sha256=20nQCchB9co0qIjJZRGuk2_Z9VM-kNiyxNV1lvTlZBo,147552
89
+ geo_activity_playground/webui/static/leaflet.markercluster.js,sha256=WL6HHfYfbFEkZOFdsJQeY7lJG_E5airjvqbznghUzRw,33724
90
+ geo_activity_playground/webui/static/mstile-150x150.png,sha256=j1ANUQJ1Xi1DR2sGqYZztob2ypfGw04eNtGpN9SxExA,11964
91
+ geo_activity_playground/webui/static/site.webmanifest,sha256=G5wl5Ahfz6wyDt-Z7ea-ywG1WS1S7ZQ_QX9TM2ox6Lk,450
92
+ geo_activity_playground/webui/static/table-sort.min.js,sha256=sFeDrgkXTePr2ciJU9_mLh-Z8qtYhPIQMgOZtj0LwBY,8506
93
+ geo_activity_playground/webui/static/vega-embed@6,sha256=EtAqz74-xZ75o33UgiouBOKWG1u7Zxu-Zh0iIXFbmdo,60630
94
+ geo_activity_playground/webui/static/vega-lite@4,sha256=roXmcY9bUF91uB9V-eSEUHEgfwoXe6B1xoDPuIe5ou8,267999
95
+ geo_activity_playground/webui/static/vega@5,sha256=5DLHUaY2P0ph2mKSDMfX69E88J2ClJ-PSGJI-Acdw84,514536
96
+ geo_activity_playground/webui/static/web-app-manifest-192x192.png,sha256=eEImN6iWfSv-EnSNPL5WbX84PKakse_8VZMBPWWye3o,13582
97
+ geo_activity_playground/webui/static/web-app-manifest-512x512.png,sha256=vU9oQ4HnQerFDZVzcAT9twj4_Doc6_9v9wVvoRI-f_E,48318
98
+ geo_activity_playground/webui/templates/activity/day.html.j2,sha256=CHEvxlZralCm3-kTbZsGn0xj9VdSv9V5zalPSoAluus,2810
99
+ geo_activity_playground/webui/templates/activity/edit.html.j2,sha256=9HDFjYfUQBB6HAgeIZppFPlpiJ1vDZWcGyP7uYG_Hnw,1369
100
+ geo_activity_playground/webui/templates/activity/lines.html.j2,sha256=_ZDg1ruW-9UMJfOudy1-uY_-IcSSaagq7tPCih5Bb8g,1079
101
+ geo_activity_playground/webui/templates/activity/name.html.j2,sha256=7Wbh3IrVL5lMRve467H0P10Shn5FzGpaXLhV0H-X4Hk,2725
102
+ geo_activity_playground/webui/templates/activity/show.html.j2,sha256=OjgD8uM1L8nO12yPcHAhqMPFOtA2k2iUNkCT3EhHBg8,8318
103
+ geo_activity_playground/webui/templates/activity/trim.html.j2,sha256=3oAXQab6QqWjGBC9KCvWNOVn8uRmxoDLj3hx_O63TXc,1836
104
+ geo_activity_playground/webui/templates/auth/index.html.j2,sha256=ILQ5HvTEYc3OrtOAIFt1VrqWorVD70V9DC342znmP70,579
105
+ geo_activity_playground/webui/templates/bubble_chart/index.html.j2,sha256=pqyafhIgL97FuD4_-lMb8lRWC3rejwrjawbmfp17XFY,1143
106
+ geo_activity_playground/webui/templates/calendar/index.html.j2,sha256=8dV9yeDwfv0Mm81mhiPHN5r3hdPUWl1Yye03x0Rqbo8,1601
107
+ geo_activity_playground/webui/templates/calendar/month.html.j2,sha256=IEhGqknL69okX5brMzTgZdnmrgUQLmGGkDE5zd7RG7s,2008
108
+ geo_activity_playground/webui/templates/eddington/index.html.j2,sha256=_3oxzHhC_s9ATtvGmuIWKqvjIQYJNvdCxmYnOyN9QnY,3716
109
+ geo_activity_playground/webui/templates/equipment/index.html.j2,sha256=wwrGmfCCBn-5CzMymi80hg3lNMZ7J1fAWWl_2zHeiMc,1845
110
+ geo_activity_playground/webui/templates/explorer/index.html.j2,sha256=3t9ikAF6oMvEaVlS3Kb1tj9ngomIQlatzqPnqVsEDKA,6908
111
+ geo_activity_playground/webui/templates/heatmap/index.html.j2,sha256=kTVvEt-GmSNebDlVMa6zwyIuP0mJcZQFuqj-IY8JV5U,1359
112
+ geo_activity_playground/webui/templates/home.html.j2,sha256=vQp9uMn7BLY7pexWJVpQVWN8ZbbtWZvkW_hYSkYQeZs,2212
113
+ geo_activity_playground/webui/templates/page.html.j2,sha256=TSNEZNLFzJ76G_22dDIXoTozfdWjmKk03qZl6exsdCQ,11043
114
+ geo_activity_playground/webui/templates/plot_builder/index.html.j2,sha256=JQvXHVnPqA6Vlp2HfOt8_LhzvJ_eH5xTxe8-51sMkQk,1493
115
+ geo_activity_playground/webui/templates/search/index.html.j2,sha256=_kxTgsdbT8o-4ryW0pvyWE7a-rOs7xzGUpdSPp8Q1is,1320
116
+ geo_activity_playground/webui/templates/search_form.html.j2,sha256=TG9xIql0HnhsXtbHZxl3GLBt6cGYjA8jPeBq11syQ3A,6512
117
+ geo_activity_playground/webui/templates/settings/admin-password.html.j2,sha256=VYwddpObD1RpeTH5Dm4y7VtmT7kwURDCIjxyzJeq08c,495
118
+ geo_activity_playground/webui/templates/settings/color-schemes.html.j2,sha256=iR91Wxd2_TMuIo9dBDZBrWSUGHNwTwzC6O8oNH-XBt4,1653
119
+ geo_activity_playground/webui/templates/settings/heart-rate.html.j2,sha256=UPT3MegRgSeff36lhCo0l3ZwhqNSIg5gM6h2s32GkCY,4255
120
+ geo_activity_playground/webui/templates/settings/index.html.j2,sha256=3a62-F3EWZpY-n0zB8sBgQSx_HUyr_2OWOa5neln94o,4648
121
+ geo_activity_playground/webui/templates/settings/manage-equipments.html.j2,sha256=vPGGlwyG_xMZc4a6JdajwWMJBfN1lBNBtDSt6QPJBiY,1585
122
+ geo_activity_playground/webui/templates/settings/manage-kinds.html.j2,sha256=382VW-cEe0iPJ8TNL2jrcRtVYb_RFdzDyeC1ncpWZ9M,1616
123
+ geo_activity_playground/webui/templates/settings/metadata-extraction.html.j2,sha256=0g9RlHFKipN45RaH_FANWnY1lfXUkKjtc_9B-vJ19LQ,2298
124
+ geo_activity_playground/webui/templates/settings/privacy-zones.html.j2,sha256=KpTMhzl-m6v5WQSHzWB3KaR7uMNg9Sd3R06twkJ1Zg4,3254
125
+ geo_activity_playground/webui/templates/settings/segmentation.html.j2,sha256=QV72TZcIxqql-vEsq2lKHzo5UxoxeeXkRA9se46GWKU,1187
126
+ geo_activity_playground/webui/templates/settings/sharepic.html.j2,sha256=qZkfEpd4CtKKMaSSVadqvNEgMRYLV-0X-pw5-nJvukk,678
127
+ geo_activity_playground/webui/templates/settings/strava.html.j2,sha256=GCE5gskQ6xJ8AM1qGrrUVLDOiuqg510mWzzsZjia0gk,2211
128
+ geo_activity_playground/webui/templates/square_planner/index.html.j2,sha256=-OnY2nQCgZCslOzf28ogZwFykwF8tZm7PgFwOE3eBDk,8176
129
+ geo_activity_playground/webui/templates/summary/index.html.j2,sha256=bM89LdumssVvmuI0EeI8mnzMYxSzNjWY_XWfzn-f6nI,5377
130
+ geo_activity_playground/webui/templates/upload/index.html.j2,sha256=I1Ix8tDS3YBdi-HdaNfjkzYXVVCjfUTe5PFTnap1ydc,775
131
+ geo_activity_playground/webui/templates/upload/reload.html.j2,sha256=YZWX5eDeNyqKJdQAywDBcU8DZBm22rRBbZqFjrFrCvQ,556
132
+ geo_activity_playground-0.39.1.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
133
+ geo_activity_playground-0.39.1.dist-info/METADATA,sha256=ez-3_BF1sUiuV-TSZ7pO0yIjHw6u0BBxJtVQ8aITGn4,1758
134
+ geo_activity_playground-0.39.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
135
+ geo_activity_playground-0.39.1.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
136
+ geo_activity_playground-0.39.1.dist-info/RECORD,,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes