geo-activity-playground 0.31.0__py3-none-any.whl → 0.34.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.
- geo_activity_playground/__main__.py +1 -1
- geo_activity_playground/core/activities.py +1 -1
- geo_activity_playground/core/config.py +5 -1
- geo_activity_playground/core/heatmap.py +61 -15
- geo_activity_playground/core/tiles.py +8 -5
- geo_activity_playground/explorer/video.py +2 -1
- geo_activity_playground/importers/directory.py +6 -2
- geo_activity_playground/importers/strava_checkout.py +8 -2
- geo_activity_playground/webui/activity/blueprint.py +7 -0
- geo_activity_playground/webui/activity/controller.py +127 -43
- geo_activity_playground/webui/activity/templates/activity/day.html.j2 +6 -2
- geo_activity_playground/webui/activity/templates/activity/lines.html.j2 +1 -1
- geo_activity_playground/webui/activity/templates/activity/name.html.j2 +3 -2
- geo_activity_playground/webui/activity/templates/activity/show.html.j2 +2 -2
- geo_activity_playground/webui/app.py +15 -3
- geo_activity_playground/webui/entry_controller.py +1 -1
- geo_activity_playground/webui/equipment/controller.py +1 -1
- geo_activity_playground/webui/explorer/templates/explorer/index.html.j2 +20 -44
- geo_activity_playground/webui/heatmap/blueprint.py +5 -2
- geo_activity_playground/webui/heatmap/heatmap_controller.py +14 -4
- geo_activity_playground/webui/heatmap/templates/heatmap/index.html.j2 +1 -1
- geo_activity_playground/webui/settings/blueprint.py +44 -33
- geo_activity_playground/webui/settings/templates/settings/color-schemes.html.j2 +11 -2
- geo_activity_playground/webui/settings/templates/settings/privacy-zones.html.j2 +1 -1
- geo_activity_playground/webui/square_planner/templates/square_planner/index.html.j2 +1 -1
- geo_activity_playground/webui/static/Leaflet.fullscreen.min.js +1 -0
- geo_activity_playground/webui/static/MarkerCluster.Default.css +60 -0
- geo_activity_playground/webui/static/MarkerCluster.css +14 -0
- geo_activity_playground/webui/static/bootstrap.min.css +6 -0
- geo_activity_playground/webui/static/fullscreen.png +0 -0
- geo_activity_playground/webui/static/fullscreen@2x.png +0 -0
- geo_activity_playground/webui/static/leaflet.css +661 -0
- geo_activity_playground/webui/static/leaflet.fullscreen.css +40 -0
- geo_activity_playground/webui/static/leaflet.js +6 -0
- geo_activity_playground/webui/static/leaflet.markercluster.js +3 -0
- geo_activity_playground/webui/static/table-sort.min.js +8 -0
- geo_activity_playground/webui/static/vega-embed@6 +7 -0
- geo_activity_playground/webui/static/vega-lite@4 +2 -0
- geo_activity_playground/webui/static/vega@5 +2 -0
- geo_activity_playground/webui/summary/controller.py +20 -25
- geo_activity_playground/webui/summary/templates/summary/index.html.j2 +18 -5
- geo_activity_playground/webui/templates/home.html.j2 +4 -3
- geo_activity_playground/webui/templates/page.html.j2 +14 -16
- geo_activity_playground/webui/tile/blueprint.py +3 -2
- geo_activity_playground/webui/tile/controller.py +7 -3
- geo_activity_playground/webui/{upload/controller.py → upload_blueprint.py} +41 -35
- {geo_activity_playground-0.31.0.dist-info → geo_activity_playground-0.34.1.dist-info}/METADATA +5 -6
- {geo_activity_playground-0.31.0.dist-info → geo_activity_playground-0.34.1.dist-info}/RECORD +53 -41
- geo_activity_playground/webui/upload/__init__.py +0 -0
- geo_activity_playground/webui/upload/blueprint.py +0 -44
- /geo_activity_playground/webui/{upload/templates → templates}/upload/index.html.j2 +0 -0
- /geo_activity_playground/webui/{upload/templates → templates}/upload/reload.html.j2 +0 -0
- {geo_activity_playground-0.31.0.dist-info → geo_activity_playground-0.34.1.dist-info}/LICENSE +0 -0
- {geo_activity_playground-0.31.0.dist-info → geo_activity_playground-0.34.1.dist-info}/WHEEL +0 -0
- {geo_activity_playground-0.31.0.dist-info → geo_activity_playground-0.34.1.dist-info}/entry_points.txt +0 -0
@@ -21,7 +21,7 @@ class SummaryController:
|
|
21
21
|
def render(self) -> dict:
|
22
22
|
kind_scale = make_kind_scale(self._repository.meta, self._config)
|
23
23
|
df = embellished_activities(self._repository.meta)
|
24
|
-
df = df.loc[df["consider_for_achievements"]]
|
24
|
+
# df = df.loc[df["consider_for_achievements"]]
|
25
25
|
|
26
26
|
year_kind_total = (
|
27
27
|
df[["year", "kind", "distance_km", "hours"]]
|
@@ -31,7 +31,7 @@ class SummaryController:
|
|
31
31
|
)
|
32
32
|
|
33
33
|
return {
|
34
|
-
"
|
34
|
+
"plot_distance_heatmaps": plot_distance_heatmaps(df, self._config),
|
35
35
|
"plot_monthly_distance": plot_monthly_distance(df, kind_scale),
|
36
36
|
"plot_yearly_distance": plot_yearly_distance(year_kind_total, kind_scale),
|
37
37
|
"plot_year_cumulative": plot_year_cumulative(df),
|
@@ -105,6 +105,7 @@ def embellished_activities(meta: pd.DataFrame) -> pd.DataFrame:
|
|
105
105
|
df["month"] = [start.month for start in df["start"]]
|
106
106
|
df["day"] = [start.day for start in df["start"]]
|
107
107
|
df["week"] = [start.isocalendar().week for start in df["start"]]
|
108
|
+
df["iso_year"] = [start.isocalendar().year for start in df["start"]]
|
108
109
|
df["hours"] = [
|
109
110
|
elapsed_time.total_seconds() / 3600 for elapsed_time in df["elapsed_time"]
|
110
111
|
]
|
@@ -112,17 +113,10 @@ def embellished_activities(meta: pd.DataFrame) -> pd.DataFrame:
|
|
112
113
|
return df
|
113
114
|
|
114
115
|
|
115
|
-
def
|
116
|
-
return
|
117
|
-
alt.Chart(
|
118
|
-
meta.loc[
|
119
|
-
(
|
120
|
-
meta["start"]
|
121
|
-
>= pd.to_datetime(
|
122
|
-
datetime.datetime.now() - datetime.timedelta(days=2 * 365)
|
123
|
-
)
|
124
|
-
)
|
125
|
-
],
|
116
|
+
def plot_distance_heatmaps(meta: pd.DataFrame, config: Config) -> dict[int, str]:
|
117
|
+
return {
|
118
|
+
year: alt.Chart(
|
119
|
+
meta.loc[(meta["year"] == year)],
|
126
120
|
title="Daily Distance Heatmap",
|
127
121
|
)
|
128
122
|
.mark_rect()
|
@@ -130,7 +124,7 @@ def plot_distance_heatmap(meta: pd.DataFrame, config: Config) -> str:
|
|
130
124
|
alt.X("date(start):O", title="Day of month"),
|
131
125
|
alt.Y(
|
132
126
|
"yearmonth(start):O",
|
133
|
-
scale=alt.Scale(reverse=True),
|
127
|
+
# scale=alt.Scale(reverse=True),
|
134
128
|
title="Year and month",
|
135
129
|
),
|
136
130
|
alt.Color(
|
@@ -146,7 +140,8 @@ def plot_distance_heatmap(meta: pd.DataFrame, config: Config) -> str:
|
|
146
140
|
],
|
147
141
|
)
|
148
142
|
.to_json(format="vega")
|
149
|
-
|
143
|
+
for year in sorted(meta["year"].unique())
|
144
|
+
}
|
150
145
|
|
151
146
|
|
152
147
|
def plot_monthly_distance(meta: pd.DataFrame, kind_scale: alt.Scale) -> str:
|
@@ -194,8 +189,8 @@ def plot_yearly_distance(year_kind_total: pd.DataFrame, kind_scale: alt.Scale) -
|
|
194
189
|
|
195
190
|
def plot_year_cumulative(df: pd.DataFrame) -> str:
|
196
191
|
year_cumulative = (
|
197
|
-
df[["
|
198
|
-
.groupby("
|
192
|
+
df[["iso_year", "week", "distance_km"]]
|
193
|
+
.groupby("iso_year")
|
199
194
|
.apply(
|
200
195
|
lambda group: pd.DataFrame(
|
201
196
|
{"week": group["week"], "distance_km": group["distance_km"].cumsum()}
|
@@ -211,10 +206,10 @@ def plot_year_cumulative(df: pd.DataFrame) -> str:
|
|
211
206
|
.encode(
|
212
207
|
alt.X("week", title="Week"),
|
213
208
|
alt.Y("distance_km", title="Distance / km"),
|
214
|
-
alt.Color("
|
209
|
+
alt.Color("iso_year:N", title="Year"),
|
215
210
|
[
|
216
211
|
alt.Tooltip("week", title="Week"),
|
217
|
-
alt.Tooltip("
|
212
|
+
alt.Tooltip("iso_year:N", title="Year"),
|
218
213
|
alt.Tooltip("distance_km", title="Distance / km"),
|
219
214
|
],
|
220
215
|
)
|
@@ -240,26 +235,26 @@ def tabulate_year_kind_mean(df: pd.DataFrame) -> pd.DataFrame:
|
|
240
235
|
|
241
236
|
def plot_weekly_distance(df: pd.DataFrame, kind_scale: alt.Scale) -> str:
|
242
237
|
week_kind_total_distance = (
|
243
|
-
df[["
|
244
|
-
.groupby(["
|
238
|
+
df[["iso_year", "week", "kind", "distance_km"]]
|
239
|
+
.groupby(["iso_year", "week", "kind"])
|
245
240
|
.sum()
|
246
241
|
.reset_index()
|
247
242
|
)
|
248
243
|
week_kind_total_distance["year_week"] = [
|
249
244
|
f"{year}-{week:02d}"
|
250
245
|
for year, week in zip(
|
251
|
-
week_kind_total_distance["
|
246
|
+
week_kind_total_distance["iso_year"], week_kind_total_distance["week"]
|
252
247
|
)
|
253
248
|
]
|
254
249
|
|
255
|
-
last_year = week_kind_total_distance["
|
250
|
+
last_year = week_kind_total_distance["iso_year"].iloc[-1]
|
256
251
|
last_week = week_kind_total_distance["week"].iloc[-1]
|
257
252
|
|
258
253
|
return (
|
259
254
|
alt.Chart(
|
260
255
|
week_kind_total_distance.loc[
|
261
|
-
(week_kind_total_distance["
|
262
|
-
| (week_kind_total_distance["
|
256
|
+
(week_kind_total_distance["iso_year"] == last_year)
|
257
|
+
| (week_kind_total_distance["iso_year"] == last_year - 1)
|
263
258
|
& (week_kind_total_distance["week"] >= last_week)
|
264
259
|
],
|
265
260
|
title="Weekly Distance",
|
@@ -76,13 +76,26 @@
|
|
76
76
|
<p>Next we take one row per month, each column is a day-of-month. The brighter a box, the more distance you have covered
|
77
77
|
on that day. This makes it easy to spot those days where you really covered a lot of distance!</p>
|
78
78
|
|
79
|
-
|
80
|
-
|
81
|
-
|
79
|
+
|
80
|
+
<ul class="nav nav-pills mb-3" id="myTab" role="tablist">
|
81
|
+
{% for year, plot in plot_distance_heatmaps.items() %}
|
82
|
+
<li class="nav-item" role="presentation">
|
83
|
+
<button class="nav-link {% if loop.last %} active {% endif %}" id="heatmap-{{ year }}" data-bs-toggle="tab"
|
84
|
+
data-bs-target="#heatmap-{{ year }}-pane" type="button" role="tab" aria-controls="heatmap-{{ year }}-pane"
|
85
|
+
aria-selected="{{ loop.last }}">{{ year }}</button>
|
86
|
+
</li>
|
87
|
+
{% endfor %}
|
88
|
+
</ul>
|
89
|
+
|
90
|
+
<div class="tab-content mb-3" id="myTabContent">
|
91
|
+
{% for year, plot in plot_distance_heatmaps.items() %}
|
92
|
+
<div class="tab-pane fade {% if loop.last %} show active {% endif %}" id="heatmap-{{ year }}-pane" role="tabpanel"
|
93
|
+
aria-labelledby="heatmap-{{ year }}" tabindex="0">
|
94
|
+
{{ vega_direct("plot_distance_heatmap_%d"|format(year), plot) }}
|
82
95
|
</div>
|
96
|
+
{% endfor %}
|
83
97
|
</div>
|
84
98
|
|
85
|
-
|
86
99
|
<h2>Hall of Fame</h2>
|
87
100
|
|
88
101
|
<script>
|
@@ -92,7 +105,7 @@
|
|
92
105
|
})
|
93
106
|
L.tileLayer('/tile/color/{z}/{x}/{y}.png', {
|
94
107
|
maxZoom: 19,
|
95
|
-
attribution: '
|
108
|
+
attribution: '{{ map_tile_attribution|safe }}'
|
96
109
|
}).addTo(map)
|
97
110
|
|
98
111
|
let geojson_layer = L.geoJSON(geojson).addTo(map)
|
@@ -26,7 +26,7 @@
|
|
26
26
|
})
|
27
27
|
L.tileLayer('/tile/color/{z}/{x}/{y}.png', {
|
28
28
|
maxZoom: 19,
|
29
|
-
attribution: '
|
29
|
+
attribution: '{{ map_tile_attribution|safe }}'
|
30
30
|
}).addTo(map)
|
31
31
|
|
32
32
|
let geojson_layer = L.geoJSON(geojson).addTo(map)
|
@@ -58,8 +58,9 @@
|
|
58
58
|
</div>
|
59
59
|
{% endfor %}
|
60
60
|
{% else %}
|
61
|
-
<p>You don't have activities yet. Either put some files into a directory <tt>Activities</tt
|
62
|
-
href="{{ url_for('settings.strava') }}">set up
|
61
|
+
<p>You don't have activities yet. Either put some files into a directory <tt>Activities</tt>, <a
|
62
|
+
href="{{ url_for('upload.index') }}">upload activities</a> or <a href="{{ url_for('settings.strava') }}">set up
|
63
|
+
Strava API</a>.</p>
|
63
64
|
{% endif %}
|
64
65
|
|
65
66
|
{% endblock %}
|
@@ -8,33 +8,31 @@
|
|
8
8
|
<title>Geo Activity Playground</title>
|
9
9
|
|
10
10
|
<!-- Bootstrap CSS. -->
|
11
|
-
<link href="
|
11
|
+
<link href="/static/bootstrap.min.css" rel="stylesheet"
|
12
12
|
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
|
13
13
|
|
14
14
|
<!-- Leaflet for interactive maps. -->
|
15
|
-
<link rel="stylesheet" href="
|
16
|
-
|
17
|
-
<script src="
|
18
|
-
|
15
|
+
<link rel="stylesheet" href="/static/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
|
16
|
+
crossorigin="" />
|
17
|
+
<script src="/static/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="
|
18
|
+
crossorigin=""></script>
|
19
19
|
|
20
20
|
<!-- Fullscreen button for Leaflet. -->
|
21
|
-
<link href='
|
22
|
-
|
23
|
-
<script src='https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js'></script>
|
21
|
+
<link href='/static/leaflet.fullscreen.css' rel='stylesheet' />
|
22
|
+
<script src='/static/Leaflet.fullscreen.min.js'></script>
|
24
23
|
|
25
|
-
<link rel="stylesheet" href="
|
26
|
-
<link rel="stylesheet" href="
|
27
|
-
|
28
|
-
<script src="https://unpkg.com/leaflet.markercluster@1.4.1/dist/leaflet.markercluster.js"></script>
|
24
|
+
<link rel="stylesheet" href="/static/MarkerCluster.css" crossorigin="" />
|
25
|
+
<link rel="stylesheet" href="/static/MarkerCluster.Default.css" crossorigin="" />
|
26
|
+
<script src="/static/leaflet.markercluster.js"></script>
|
29
27
|
|
30
28
|
<!-- Vega for plots.-->
|
31
|
-
<script src="
|
32
|
-
<script src="
|
33
|
-
<script src="
|
29
|
+
<script src="/static/vega@5"></script>
|
30
|
+
<script src="/static/vega-lite@4"></script>
|
31
|
+
<script src="/static/vega-embed@6"></script>
|
34
32
|
|
35
33
|
<script src="/static/bootstrap-dark-mode.js"></script>
|
36
34
|
|
37
|
-
<script src="
|
35
|
+
<script src="/static/table-sort.min.js"></script>
|
38
36
|
|
39
37
|
<!-- Favicon. -->
|
40
38
|
<link rel="apple-touch-icon" sizes="180x180" href="/static/apple-touch-icon.png">
|
@@ -2,12 +2,13 @@ from flask import Blueprint
|
|
2
2
|
from flask import Response
|
3
3
|
|
4
4
|
from .controller import TileController
|
5
|
+
from geo_activity_playground.core.config import Config
|
5
6
|
|
6
7
|
|
7
|
-
def make_tile_blueprint() -> Blueprint:
|
8
|
+
def make_tile_blueprint(config: Config) -> Blueprint:
|
8
9
|
blueprint = Blueprint("tiles", __name__, template_folder="templates")
|
9
10
|
|
10
|
-
tile_controller = TileController()
|
11
|
+
tile_controller = TileController(config)
|
11
12
|
|
12
13
|
@blueprint.route("/color/<z>/<x>/<y>.png")
|
13
14
|
def tile_color(x: str, y: str, z: str):
|
@@ -3,18 +3,22 @@ import io
|
|
3
3
|
import matplotlib.pyplot as pl
|
4
4
|
import numpy as np
|
5
5
|
|
6
|
+
from geo_activity_playground.core.config import Config
|
6
7
|
from geo_activity_playground.core.tiles import get_tile
|
7
8
|
|
8
9
|
|
9
10
|
class TileController:
|
11
|
+
def __init__(self, config: Config):
|
12
|
+
self._config = config
|
13
|
+
|
10
14
|
def render_color(self, x: int, y: int, z: int) -> bytes:
|
11
|
-
map_tile = np.array(get_tile(z, x, y)) / 255
|
15
|
+
map_tile = np.array(get_tile(z, x, y, self._config.map_tile_url)) / 255
|
12
16
|
f = io.BytesIO()
|
13
17
|
pl.imsave(f, map_tile, format="png")
|
14
18
|
return bytes(f.getbuffer())
|
15
19
|
|
16
20
|
def render_grayscale(self, x: int, y: int, z: int) -> bytes:
|
17
|
-
map_tile = np.array(get_tile(z, x, y)) / 255
|
21
|
+
map_tile = np.array(get_tile(z, x, y, self._config.map_tile_url)) / 255
|
18
22
|
map_tile = np.sum(map_tile * [0.2126, 0.7152, 0.0722], axis=2) # to grayscale
|
19
23
|
map_tile = np.dstack((map_tile, map_tile, map_tile)) # to rgb
|
20
24
|
f = io.BytesIO()
|
@@ -22,7 +26,7 @@ class TileController:
|
|
22
26
|
return bytes(f.getbuffer())
|
23
27
|
|
24
28
|
def render_pastel(self, x: int, y: int, z: int) -> bytes:
|
25
|
-
map_tile = np.array(get_tile(z, x, y)) / 255
|
29
|
+
map_tile = np.array(get_tile(z, x, y, self._config.map_tile_url)) / 255
|
26
30
|
averaged_tile = np.sum(map_tile * [0.2126, 0.7152, 0.0722], axis=2)
|
27
31
|
grayscale_tile = np.dstack((averaged_tile, averaged_tile, averaged_tile))
|
28
32
|
factor = 0.7
|
@@ -1,53 +1,51 @@
|
|
1
|
-
import logging
|
2
1
|
import os
|
3
2
|
import pathlib
|
4
3
|
|
4
|
+
from flask import Blueprint
|
5
5
|
from flask import flash
|
6
6
|
from flask import redirect
|
7
|
+
from flask import render_template
|
7
8
|
from flask import request
|
8
|
-
from flask import Response
|
9
9
|
from flask import url_for
|
10
|
-
from werkzeug.utils import secure_filename
|
11
10
|
|
12
|
-
from
|
13
|
-
from
|
11
|
+
from ..core.activities import ActivityRepository
|
12
|
+
from ..core.activities import build_activity_meta
|
13
|
+
from ..explorer.tile_visits import compute_tile_evolution
|
14
|
+
from ..explorer.tile_visits import compute_tile_visits_new
|
15
|
+
from ..explorer.tile_visits import TileVisitAccessor
|
14
16
|
from geo_activity_playground.core.config import Config
|
15
17
|
from geo_activity_playground.core.enrichment import enrich_activities
|
16
|
-
from geo_activity_playground.explorer.tile_visits import compute_tile_evolution
|
17
|
-
from geo_activity_playground.explorer.tile_visits import compute_tile_visits_new
|
18
|
-
from geo_activity_playground.explorer.tile_visits import TileVisitAccessor
|
19
18
|
from geo_activity_playground.importers.directory import get_file_hash
|
20
19
|
from geo_activity_playground.importers.directory import import_from_directory
|
21
20
|
from geo_activity_playground.importers.strava_api import import_from_strava_api
|
22
21
|
from geo_activity_playground.importers.strava_checkout import (
|
23
22
|
import_from_strava_checkout,
|
24
23
|
)
|
24
|
+
from geo_activity_playground.webui.authenticator import Authenticator
|
25
|
+
from geo_activity_playground.webui.authenticator import needs_authentication
|
25
26
|
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
tile_visit_accessor: TileVisitAccessor,
|
35
|
-
config: Config,
|
36
|
-
) -> None:
|
37
|
-
self._repository = repository
|
38
|
-
self._tile_visit_accessor = tile_visit_accessor
|
39
|
-
self._config = config
|
28
|
+
def make_upload_blueprint(
|
29
|
+
repository: ActivityRepository,
|
30
|
+
tile_visit_accessor: TileVisitAccessor,
|
31
|
+
config: Config,
|
32
|
+
authenticator: Authenticator,
|
33
|
+
) -> Blueprint:
|
34
|
+
blueprint = Blueprint("upload", __name__, template_folder="templates")
|
40
35
|
|
41
|
-
|
36
|
+
@blueprint.route("/")
|
37
|
+
@needs_authentication(authenticator)
|
38
|
+
def index():
|
39
|
+
pathlib.Path("Activities").mkdir(exist_ok=True, parents=True)
|
42
40
|
directories = []
|
43
41
|
for root, dirs, files in os.walk("Activities"):
|
44
42
|
directories.append(root)
|
45
43
|
directories.sort()
|
46
|
-
return
|
47
|
-
"directories": directories,
|
48
|
-
}
|
44
|
+
return render_template("upload/index.html.j2", directories=directories)
|
49
45
|
|
50
|
-
|
46
|
+
@blueprint.route("/receive", methods=["POST"])
|
47
|
+
@needs_authentication(authenticator)
|
48
|
+
def receive():
|
51
49
|
# check if the post request has the file part
|
52
50
|
if "file" not in request.files:
|
53
51
|
flash("No file could be found. Did you select a file?", "warning")
|
@@ -74,25 +72,34 @@ class UploadController:
|
|
74
72
|
assert target_path.is_relative_to("Activities")
|
75
73
|
file.save(target_path)
|
76
74
|
scan_for_activities(
|
77
|
-
|
78
|
-
|
79
|
-
|
75
|
+
repository,
|
76
|
+
tile_visit_accessor,
|
77
|
+
config,
|
80
78
|
skip_strava=True,
|
81
79
|
)
|
82
80
|
activity_id = get_file_hash(target_path)
|
83
81
|
flash(f"Activity was saved with ID {activity_id}.", "success")
|
84
82
|
return redirect(f"/activity/{activity_id}")
|
85
83
|
|
86
|
-
|
84
|
+
@blueprint.route("/refresh")
|
85
|
+
@needs_authentication(authenticator)
|
86
|
+
def reload():
|
87
|
+
return render_template("upload/reload.html.j2")
|
88
|
+
|
89
|
+
@blueprint.route("/execute-reload")
|
90
|
+
@needs_authentication(authenticator)
|
91
|
+
def execute_reload():
|
87
92
|
scan_for_activities(
|
88
|
-
|
89
|
-
|
90
|
-
|
93
|
+
repository,
|
94
|
+
tile_visit_accessor,
|
95
|
+
config,
|
91
96
|
skip_strava=True,
|
92
97
|
)
|
93
98
|
flash("Scanned for new activities.", category="success")
|
94
99
|
return redirect(url_for("index"))
|
95
100
|
|
101
|
+
return blueprint
|
102
|
+
|
96
103
|
|
97
104
|
def scan_for_activities(
|
98
105
|
repository: ActivityRepository,
|
@@ -102,8 +109,7 @@ def scan_for_activities(
|
|
102
109
|
) -> None:
|
103
110
|
if pathlib.Path("Activities").exists():
|
104
111
|
import_from_directory(
|
105
|
-
config.metadata_extraction_regexes,
|
106
|
-
config.num_processes,
|
112
|
+
config.metadata_extraction_regexes, config.num_processes, config
|
107
113
|
)
|
108
114
|
if pathlib.Path("Strava Export").exists():
|
109
115
|
import_from_strava_checkout()
|
{geo_activity_playground-0.31.0.dist-info → geo_activity_playground-0.34.1.dist-info}/METADATA
RENAMED
@@ -1,17 +1,17 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: geo-activity-playground
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.34.1
|
4
4
|
Summary: Analysis of geo data activities like rides, runs or hikes.
|
5
5
|
License: MIT
|
6
6
|
Author: Martin Ueding
|
7
7
|
Author-email: mu@martin-ueding.de
|
8
|
-
Requires-Python: >=3.10,<3.
|
8
|
+
Requires-Python: >=3.10,<3.14
|
9
9
|
Classifier: License :: OSI Approved :: MIT License
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
11
11
|
Classifier: Programming Language :: Python :: 3.10
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
14
|
-
Requires-Dist: Pillow (>=
|
14
|
+
Requires-Dist: Pillow (>=11.0.0,<12.0.0)
|
15
15
|
Requires-Dist: altair (>=5.1.2,<6.0.0)
|
16
16
|
Requires-Dist: appdirs (>=1.4.4,<2.0.0)
|
17
17
|
Requires-Dist: charset-normalizer (>=3.3.2,<4.0.0)
|
@@ -22,12 +22,11 @@ Requires-Dist: geojson (>=3.0.1,<4.0.0)
|
|
22
22
|
Requires-Dist: gpxpy (>=1.5.0,<2.0.0)
|
23
23
|
Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
|
24
24
|
Requires-Dist: matplotlib (>=3.6.3,<4.0.0)
|
25
|
-
Requires-Dist: numpy (>=1.
|
25
|
+
Requires-Dist: numpy (>=2.1.3,<3.0.0)
|
26
26
|
Requires-Dist: pandas (>=2.2,<3.0)
|
27
|
-
Requires-Dist: pyarrow (>=
|
27
|
+
Requires-Dist: pyarrow (>=18.1.0,<19.0.0)
|
28
28
|
Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
|
29
29
|
Requires-Dist: requests (>=2.28.1,<3.0.0)
|
30
|
-
Requires-Dist: scipy (>=1.8.1,<2.0.0)
|
31
30
|
Requires-Dist: shapely (>=2.0.5,<3.0.0)
|
32
31
|
Requires-Dist: stravalib (>=2.0,<3.0)
|
33
32
|
Requires-Dist: tcxreader (>=0.4.5,<0.5.0)
|
{geo_activity_playground-0.31.0.dist-info → geo_activity_playground-0.34.1.dist-info}/RECORD
RENAMED
@@ -1,43 +1,43 @@
|
|
1
1
|
geo_activity_playground/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
geo_activity_playground/__main__.py,sha256=
|
2
|
+
geo_activity_playground/__main__.py,sha256=qbKjs7IsJwF2gB3b0lh7tGt6uraPqq5w-xGBIxrgoHI,3988
|
3
3
|
geo_activity_playground/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
geo_activity_playground/core/activities.py,sha256=
|
5
|
-
geo_activity_playground/core/config.py,sha256=
|
4
|
+
geo_activity_playground/core/activities.py,sha256=MiQev1L7NnSVnxgbArlT-FpWTESTwnKh7pyT1tcEHqU,6926
|
5
|
+
geo_activity_playground/core/config.py,sha256=uqiwk7CgcuGx8JemHSsRKjRwyNT1YTb7V0gX0OJhfaI,5109
|
6
6
|
geo_activity_playground/core/coordinates.py,sha256=tDfr9mlXhK6E_MMIJ0vYWVCoH0Lq8uyuaqUgaa8i0jg,966
|
7
7
|
geo_activity_playground/core/enrichment.py,sha256=fUmk6avy_rqePlHmJQFTQhAxjgIRaxxmq18N2OSXBBg,7771
|
8
8
|
geo_activity_playground/core/heart_rate.py,sha256=IwMt58TpjOYqpAxtsj07zP2ttpN_J3GZeiv-qGhYyJc,1598
|
9
|
-
geo_activity_playground/core/heatmap.py,sha256=
|
9
|
+
geo_activity_playground/core/heatmap.py,sha256=iTxefUTjTToPrKpVbauJHXkqxpNppXOEK6vvKuNkHkk,5906
|
10
10
|
geo_activity_playground/core/paths.py,sha256=RBeUi38riP_msTGPy1TsPRNiblzE-lFivaJSLULE8b0,2503
|
11
11
|
geo_activity_playground/core/privacy_zones.py,sha256=4TumHsVUN1uW6RG3ArqTXDykPVipF98DCxVBe7YNdO8,512
|
12
12
|
geo_activity_playground/core/similarity.py,sha256=Jo8jRViuORCxdIGvyaflgsQhwu9S_jn10a450FRL18A,3159
|
13
13
|
geo_activity_playground/core/tasks.py,sha256=aMDBWJqp6ek2ao6G6Xa8GOSZbcQqXoWL74SGRowRPIk,2942
|
14
14
|
geo_activity_playground/core/test_tiles.py,sha256=zce1FxNfsSpOQt66jMehdQRVoNdl-oiFydx6iVBHZXM,764
|
15
15
|
geo_activity_playground/core/test_time_conversion.py,sha256=Sh6nZA3uCTOdZTZa3yOijtR0m74QtZu2mcWXsDNnyQI,984
|
16
|
-
geo_activity_playground/core/tiles.py,sha256=
|
16
|
+
geo_activity_playground/core/tiles.py,sha256=qUe4h3rzHJb8xThAgUKSLElt8S6zID_OuaWXDkWLwAU,3539
|
17
17
|
geo_activity_playground/core/time_conversion.py,sha256=x5mXG6Y4GtdX7CBmwucGNSWBp9JQJDbZ7u0JkdUY1Vs,379
|
18
18
|
geo_activity_playground/explorer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
geo_activity_playground/explorer/grid_file.py,sha256=k6j6KBEk2a2BY-onE8SV5TJsERGGyOrlY4as__meWpA,3304
|
20
20
|
geo_activity_playground/explorer/tile_visits.py,sha256=CSHAjgzKWe1iB-zvaqgsR5Z_lFycpWqUfxnPCAWvYaU,14173
|
21
|
-
geo_activity_playground/explorer/video.py,sha256=
|
21
|
+
geo_activity_playground/explorer/video.py,sha256=35-mMEvD8phnc2xbWdwCHhl_uMIUogHrnFwrTfk2Yj8,4392
|
22
22
|
geo_activity_playground/importers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
23
|
geo_activity_playground/importers/activity_parsers.py,sha256=XNQs0ziqAcVqIoiLAX5Ndmhb6v__29XdjUPvNvc7oBI,11082
|
24
24
|
geo_activity_playground/importers/csv_parser.py,sha256=O1pP5GLhWhnWcy2Lsrr9g17Zspuibpt-GtZ3ZS5eZF4,2143
|
25
|
-
geo_activity_playground/importers/directory.py,sha256=
|
25
|
+
geo_activity_playground/importers/directory.py,sha256=CA-vFOMm8G4MSM_Q09OwQKduCApL2PWaxLTVxgw_xpw,5908
|
26
26
|
geo_activity_playground/importers/strava_api.py,sha256=cJCZsLemhOlxTtZh0z_npidgae9SD5HyEUry2uvem_A,7775
|
27
|
-
geo_activity_playground/importers/strava_checkout.py,sha256=
|
27
|
+
geo_activity_playground/importers/strava_checkout.py,sha256=dAKW1wVqlA5zRw25SvpYZZrEikJtaUluInyhJ0RfsFc,10002
|
28
28
|
geo_activity_playground/importers/test_csv_parser.py,sha256=LXqva7GuSAfXYE2zZQrg-69lCtfy5MxLSq6BRwL_VyI,1191
|
29
29
|
geo_activity_playground/importers/test_directory.py,sha256=ljXokx7q0OgtHvEdHftcQYEmZJUDVv3OOF5opklxdT4,724
|
30
30
|
geo_activity_playground/importers/test_strava_api.py,sha256=4vX7wDr1a9aRh8myxNrIq6RwDBbP8ZeoXXPc10CAbW4,431
|
31
31
|
geo_activity_playground/webui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
32
|
geo_activity_playground/webui/activity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
geo_activity_playground/webui/activity/blueprint.py,sha256=
|
34
|
-
geo_activity_playground/webui/activity/controller.py,sha256=
|
35
|
-
geo_activity_playground/webui/activity/templates/activity/day.html.j2,sha256=
|
33
|
+
geo_activity_playground/webui/activity/blueprint.py,sha256=2Fa_6a86Aa3Yr3hQdkRylQqqVusyyVzPd1x3il5ZXNk,4176
|
34
|
+
geo_activity_playground/webui/activity/controller.py,sha256=0HXQZAD9Muf62jV-GqQKJPq5qNgdbV-KEcPmHX_8iGo,21429
|
35
|
+
geo_activity_playground/webui/activity/templates/activity/day.html.j2,sha256=wkYmcnIsMlvE9wgKemYCNU6jwsk5IJvg8pcBA2OMh00,2795
|
36
36
|
geo_activity_playground/webui/activity/templates/activity/edit.html.j2,sha256=ckcTTxcQOhmvvAGNTEOtWCUG4LhvO4HfQImlIa5qKs8,1530
|
37
|
-
geo_activity_playground/webui/activity/templates/activity/lines.html.j2,sha256=
|
38
|
-
geo_activity_playground/webui/activity/templates/activity/name.html.j2,sha256=
|
39
|
-
geo_activity_playground/webui/activity/templates/activity/show.html.j2,sha256=
|
40
|
-
geo_activity_playground/webui/app.py,sha256=
|
37
|
+
geo_activity_playground/webui/activity/templates/activity/lines.html.j2,sha256=_ZDg1ruW-9UMJfOudy1-uY_-IcSSaagq7tPCih5Bb8g,1079
|
38
|
+
geo_activity_playground/webui/activity/templates/activity/name.html.j2,sha256=tKviMqMouHEGv3xBQVIsJgwj_hjwAsmGVefM3UMqlYg,2437
|
39
|
+
geo_activity_playground/webui/activity/templates/activity/show.html.j2,sha256=bEx37UGSTeeJl7gN4fjyOpINFQwZ5Zm-HOKpLqcJGfs,6905
|
40
|
+
geo_activity_playground/webui/app.py,sha256=KghChBgJvRZ9Cx7Z5wmqx6X0Q6GH-2hi97eaKEE_Zvc,5118
|
41
41
|
geo_activity_playground/webui/auth/blueprint.py,sha256=Lx-ZvMnfHLC1CMre1xPQI3k_pCtQoZvgRhtmafULzoE,812
|
42
42
|
geo_activity_playground/webui/auth/templates/auth/index.html.j2,sha256=ILQ5HvTEYc3OrtOAIFt1VrqWorVD70V9DC342znmP70,579
|
43
43
|
geo_activity_playground/webui/authenticator.py,sha256=k278OEVuOfAmTGT4F2X4pqSTwwkK_FA87EIhAeysEqc,1416
|
@@ -50,70 +50,82 @@ geo_activity_playground/webui/eddington/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
|
|
50
50
|
geo_activity_playground/webui/eddington/blueprint.py,sha256=evIvueLfDWVTxJ9pRguqmZ9-Pybd2WmBRst_-7vX2QA,551
|
51
51
|
geo_activity_playground/webui/eddington/controller.py,sha256=ly7JSkSS79kO4CL_xugB62uRuuWKVqOjbN-pheelv94,2910
|
52
52
|
geo_activity_playground/webui/eddington/templates/eddington/index.html.j2,sha256=XHKeUymQMS5x00PLOVlg-nSRCz_jHB2pvD8QunULWJ4,1839
|
53
|
-
geo_activity_playground/webui/entry_controller.py,sha256=
|
53
|
+
geo_activity_playground/webui/entry_controller.py,sha256=McxbyouKWHJ3a2R9agPazZoG7VHiFO1RvnkBr08dMH8,2168
|
54
54
|
geo_activity_playground/webui/equipment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
55
|
geo_activity_playground/webui/equipment/blueprint.py,sha256=_NIhRJuJNbXpEd_nEPo01AqnUqPgo1vawFn7E3yoeng,636
|
56
|
-
geo_activity_playground/webui/equipment/controller.py,sha256=
|
56
|
+
geo_activity_playground/webui/equipment/controller.py,sha256=lMivui3EBUnkYZf9Lgv1kHZ0c7IxRAza-ox8YOz3ONY,4079
|
57
57
|
geo_activity_playground/webui/equipment/templates/equipment/index.html.j2,sha256=fvRaDbCuiSZ8AzJTpu1dk8FTAGZ2yfsLhprtVYHFZWo,1802
|
58
58
|
geo_activity_playground/webui/explorer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
59
59
|
geo_activity_playground/webui/explorer/blueprint.py,sha256=EKnBs8llqT6Wy1uac18dF2epp3TebF9p3iGlSbj6Vl0,2337
|
60
60
|
geo_activity_playground/webui/explorer/controller.py,sha256=pIzWh0TpLJgKQZlS325-QT7nA1q9ms7fRqQIp24PNfo,11705
|
61
|
-
geo_activity_playground/webui/explorer/templates/explorer/index.html.j2,sha256=
|
61
|
+
geo_activity_playground/webui/explorer/templates/explorer/index.html.j2,sha256=aGos75uUyjevDWKSyQwVyvuGHIY6qoGASMbgU6k71YU,6707
|
62
62
|
geo_activity_playground/webui/heatmap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
63
|
-
geo_activity_playground/webui/heatmap/blueprint.py,sha256=
|
64
|
-
geo_activity_playground/webui/heatmap/heatmap_controller.py,sha256=
|
65
|
-
geo_activity_playground/webui/heatmap/templates/heatmap/index.html.j2,sha256=
|
63
|
+
geo_activity_playground/webui/heatmap/blueprint.py,sha256=ZEImDIwT3uiDIKapqCU49llvyqG79n7ZEu1GHgoLZqo,1558
|
64
|
+
geo_activity_playground/webui/heatmap/heatmap_controller.py,sha256=Qw9MGW3TFWlG2JkA_r9RHgYq4hvPiJaZeAg5D9lIFC0,7821
|
65
|
+
geo_activity_playground/webui/heatmap/templates/heatmap/index.html.j2,sha256=BMjqbZ-btSFawuNDxgZxOkF5JvhD_p9DOBJ-4-1IKnU,1833
|
66
66
|
geo_activity_playground/webui/plot_util.py,sha256=pTTQoqOCkLVjkgOit7mbry28kMruZIL8amZozSzEpxQ,283
|
67
67
|
geo_activity_playground/webui/search/blueprint.py,sha256=7TDsiqEowMyHNlFImk-hCGso69KOieG4rfJnLRHpRz8,3300
|
68
68
|
geo_activity_playground/webui/search/templates/search/index.html.j2,sha256=d39uhteoY6JOZePqhLIYLERqkckW3oghMnTUZa7X1J8,3798
|
69
|
-
geo_activity_playground/webui/settings/blueprint.py,sha256=
|
69
|
+
geo_activity_playground/webui/settings/blueprint.py,sha256=GIrCOBNw-uNWDmKj4uduYOiKpoTLEfFbGmUmXkoBqro,9405
|
70
70
|
geo_activity_playground/webui/settings/controller.py,sha256=MIZVBfoGNvmJnB_ECV_x5eH2i6gDZvkWSQ4PcSKyLKs,9170
|
71
71
|
geo_activity_playground/webui/settings/templates/settings/admin-password.html.j2,sha256=VYwddpObD1RpeTH5Dm4y7VtmT7kwURDCIjxyzJeq08c,495
|
72
|
-
geo_activity_playground/webui/settings/templates/settings/color-schemes.html.j2,sha256=
|
72
|
+
geo_activity_playground/webui/settings/templates/settings/color-schemes.html.j2,sha256=iR91Wxd2_TMuIo9dBDZBrWSUGHNwTwzC6O8oNH-XBt4,1653
|
73
73
|
geo_activity_playground/webui/settings/templates/settings/equipment-offsets.html.j2,sha256=ltaYwFe8S8Mi72ddmIp1vwqlu8MEXXjBGfbpN2WBTC4,1728
|
74
74
|
geo_activity_playground/webui/settings/templates/settings/heart-rate.html.j2,sha256=UPT3MegRgSeff36lhCo0l3ZwhqNSIg5gM6h2s32GkCY,4255
|
75
75
|
geo_activity_playground/webui/settings/templates/settings/index.html.j2,sha256=r7HBq91BKBrWT2_TNR7OcLokuOcUK-Czyi_zOjveIRk,5287
|
76
76
|
geo_activity_playground/webui/settings/templates/settings/kind-renames.html.j2,sha256=yWVIMJq0XOpeTLglEqLxlQAG0mVhaCVw9j0Iu4nIrgI,757
|
77
77
|
geo_activity_playground/webui/settings/templates/settings/kinds-without-achievements.html.j2,sha256=IdUfXon1Pu8zX3NirKb28ypshLHOvZRpz2T4bJrzrak,1067
|
78
78
|
geo_activity_playground/webui/settings/templates/settings/metadata-extraction.html.j2,sha256=EUHZ-MWnSPAkiad0CHSj9UUkRUQwItTbKYJcZz9TVi0,2314
|
79
|
-
geo_activity_playground/webui/settings/templates/settings/privacy-zones.html.j2,sha256=
|
79
|
+
geo_activity_playground/webui/settings/templates/settings/privacy-zones.html.j2,sha256=OBKHlOezJauaDerLpOAJYq7wL-KxsWMn-BpSKJ93I0c,3051
|
80
80
|
geo_activity_playground/webui/settings/templates/settings/segmentation.html.j2,sha256=QV72TZcIxqql-vEsq2lKHzo5UxoxeeXkRA9se46GWKU,1187
|
81
81
|
geo_activity_playground/webui/settings/templates/settings/sharepic.html.j2,sha256=qZkfEpd4CtKKMaSSVadqvNEgMRYLV-0X-pw5-nJvukk,678
|
82
82
|
geo_activity_playground/webui/settings/templates/settings/strava.html.j2,sha256=FrXgT-m1PgvsQWo9kMKpk8QenKeifSDBCZFqKgsHRxQ,1827
|
83
83
|
geo_activity_playground/webui/square_planner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
84
84
|
geo_activity_playground/webui/square_planner/blueprint.py,sha256=r2VkSM547chX85g6c1BQ8NC-tkdqGdYp-2ZALBiiDTc,1320
|
85
85
|
geo_activity_playground/webui/square_planner/controller.py,sha256=ML6ftOyr3tTh7D4DBcRP76CvkyTxqI5QWgMeG9wC8FE,3561
|
86
|
-
geo_activity_playground/webui/square_planner/templates/square_planner/index.html.j2,sha256=
|
86
|
+
geo_activity_playground/webui/square_planner/templates/square_planner/index.html.j2,sha256=xFbYBQtkOl3U4WGkvIuU_5uazGHn8ObvQfNgPGq0Gqg,6469
|
87
|
+
geo_activity_playground/webui/static/Leaflet.fullscreen.min.js,sha256=MMWj_yFOercjzhk8wKIIKyDCK7olXrwk_7R7TjDhGYs,3677
|
88
|
+
geo_activity_playground/webui/static/MarkerCluster.Default.css,sha256=LWhzWaQGZRsWFrrJxg-6Zn8TT84k0_trtiHBc6qcGpY,1346
|
89
|
+
geo_activity_playground/webui/static/MarkerCluster.css,sha256=-bdWuWOXMFkX0v9Cvr3OWClPiYefDQz9GGZP_7xZxdc,886
|
87
90
|
geo_activity_playground/webui/static/android-chrome-192x192.png,sha256=yxZgo8Jw4hrgOgrn3tvi9G0AXWGFD29kjCuxC07WoT4,17610
|
88
91
|
geo_activity_playground/webui/static/android-chrome-512x512.png,sha256=Uiv62gQpUjMOdp9d6exzd6IyOi5zgQdgjIVVWYw5m98,38891
|
89
92
|
geo_activity_playground/webui/static/apple-touch-icon.png,sha256=TNLa0YIS1mbWajvIQthC2bGve6ET3DbJzrAbs6Pf3Ps,13046
|
90
93
|
geo_activity_playground/webui/static/bootstrap-dark-mode.js,sha256=XfyhxIFgjDc6aEj0kYgKpG5zjS5gvyhWCJmNfUG4HJY,2622
|
94
|
+
geo_activity_playground/webui/static/bootstrap.min.css,sha256=MBffSnbbXwHCuZtgPYiwMQbfE7z-GOZ7fBPCNB06Z98,232948
|
91
95
|
geo_activity_playground/webui/static/browserconfig.xml,sha256=u5EvU6U1jKSDiXHW0i4rXrs0lT_tmS82otbJnvmccrk,253
|
92
96
|
geo_activity_playground/webui/static/favicon-16x16.png,sha256=Yy8lRjGB7itDaeUI_l_Toq3OO0gzgPGnqIfM3CqcQy0,1419
|
93
97
|
geo_activity_playground/webui/static/favicon-32x32.png,sha256=K52R99pLGgWHnjFPPkVieBm051Er-sTCiMvgLr9Alrg,2587
|
94
98
|
geo_activity_playground/webui/static/favicon-48x48.png,sha256=NIIuC1OV1umv2pETJH2yDUZhhzJDk0TERsbwA5tQM9A,2008
|
95
99
|
geo_activity_playground/webui/static/favicon.ico,sha256=zAkbToeh1fq8rh6osWyEjr-cgdX-ec5viI0vPAwLn7A,15086
|
96
100
|
geo_activity_playground/webui/static/favicon.svg,sha256=gwESIDvoxOpg3tHvbiAc-wVEM4fY0pFzWnX_guQcv1c,52247
|
101
|
+
geo_activity_playground/webui/static/fullscreen.png,sha256=yDtz-dhjuAoo6q9xc00-_XNTrGwEWrN80pOneFdol4g,299
|
102
|
+
geo_activity_playground/webui/static/fullscreen@2x.png,sha256=HVi2guZO6sekf2NggilbzjUTvJDweXpSMBS81fhtnX0,420
|
103
|
+
geo_activity_playground/webui/static/leaflet.css,sha256=p4NxAoJBhIIN-hmNHrzRCf9tD_miZyoHS5obTRR9BMY,14806
|
104
|
+
geo_activity_playground/webui/static/leaflet.fullscreen.css,sha256=YTbhDGEH5amI_JfotPMN7IByFpsN9e4tCBnv5oNdvHU,994
|
105
|
+
geo_activity_playground/webui/static/leaflet.js,sha256=20nQCchB9co0qIjJZRGuk2_Z9VM-kNiyxNV1lvTlZBo,147552
|
106
|
+
geo_activity_playground/webui/static/leaflet.markercluster.js,sha256=WL6HHfYfbFEkZOFdsJQeY7lJG_E5airjvqbznghUzRw,33724
|
97
107
|
geo_activity_playground/webui/static/mstile-150x150.png,sha256=j1ANUQJ1Xi1DR2sGqYZztob2ypfGw04eNtGpN9SxExA,11964
|
98
108
|
geo_activity_playground/webui/static/site.webmanifest,sha256=G5wl5Ahfz6wyDt-Z7ea-ywG1WS1S7ZQ_QX9TM2ox6Lk,450
|
109
|
+
geo_activity_playground/webui/static/table-sort.min.js,sha256=sFeDrgkXTePr2ciJU9_mLh-Z8qtYhPIQMgOZtj0LwBY,8506
|
110
|
+
geo_activity_playground/webui/static/vega-embed@6,sha256=EtAqz74-xZ75o33UgiouBOKWG1u7Zxu-Zh0iIXFbmdo,60630
|
111
|
+
geo_activity_playground/webui/static/vega-lite@4,sha256=roXmcY9bUF91uB9V-eSEUHEgfwoXe6B1xoDPuIe5ou8,267999
|
112
|
+
geo_activity_playground/webui/static/vega@5,sha256=5DLHUaY2P0ph2mKSDMfX69E88J2ClJ-PSGJI-Acdw84,514536
|
99
113
|
geo_activity_playground/webui/static/web-app-manifest-192x192.png,sha256=eEImN6iWfSv-EnSNPL5WbX84PKakse_8VZMBPWWye3o,13582
|
100
114
|
geo_activity_playground/webui/static/web-app-manifest-512x512.png,sha256=vU9oQ4HnQerFDZVzcAT9twj4_Doc6_9v9wVvoRI-f_E,48318
|
101
115
|
geo_activity_playground/webui/summary/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
102
116
|
geo_activity_playground/webui/summary/blueprint.py,sha256=tfA2aPF19yKwkQOb5lPQBySoQYYhTn49Iuh0SYvsGP8,593
|
103
|
-
geo_activity_playground/webui/summary/controller.py,sha256=
|
104
|
-
geo_activity_playground/webui/summary/templates/summary/index.html.j2,sha256=
|
105
|
-
geo_activity_playground/webui/templates/home.html.j2,sha256=
|
106
|
-
geo_activity_playground/webui/templates/page.html.j2,sha256=
|
117
|
+
geo_activity_playground/webui/summary/controller.py,sha256=FyPdC98maX0P5sJ4j5Z7-ZSiirLh_jmu_PszKXqTV8A,9425
|
118
|
+
geo_activity_playground/webui/summary/templates/summary/index.html.j2,sha256=ctOx3Qjx6nRDpUtFf1DlJhK_gtU77Vwx_S6euLz9-W4,5183
|
119
|
+
geo_activity_playground/webui/templates/home.html.j2,sha256=IdCqI_LLcYrpUjjCO-tbXR4s05XYrPOateiJ4idF3bo,2202
|
120
|
+
geo_activity_playground/webui/templates/page.html.j2,sha256=kAZaE9MwS0znjLXwqpfRXo75LOR799j8RSICPIAsCkg,10669
|
121
|
+
geo_activity_playground/webui/templates/upload/index.html.j2,sha256=I1Ix8tDS3YBdi-HdaNfjkzYXVVCjfUTe5PFTnap1ydc,775
|
122
|
+
geo_activity_playground/webui/templates/upload/reload.html.j2,sha256=YZWX5eDeNyqKJdQAywDBcU8DZBm22rRBbZqFjrFrCvQ,556
|
107
123
|
geo_activity_playground/webui/tile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
108
|
-
geo_activity_playground/webui/tile/blueprint.py,sha256=
|
109
|
-
geo_activity_playground/webui/tile/controller.py,sha256=
|
110
|
-
geo_activity_playground/webui/
|
111
|
-
geo_activity_playground/
|
112
|
-
geo_activity_playground/
|
113
|
-
geo_activity_playground
|
114
|
-
geo_activity_playground/
|
115
|
-
geo_activity_playground-0.
|
116
|
-
geo_activity_playground-0.31.0.dist-info/METADATA,sha256=YTQL13ygmlqQilK_3F8ycowxmDAkxGuPbVG6mI5IJOA,1612
|
117
|
-
geo_activity_playground-0.31.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
118
|
-
geo_activity_playground-0.31.0.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
|
119
|
-
geo_activity_playground-0.31.0.dist-info/RECORD,,
|
124
|
+
geo_activity_playground/webui/tile/blueprint.py,sha256=q0sw_F8L367Df01yjZijikEIglFBgg9lN61sbTAEOKQ,1018
|
125
|
+
geo_activity_playground/webui/tile/controller.py,sha256=XjUTbyAMeQET1D3mFtT8r5-xMcMOaELPZWtQ1Xp7Cuw,1428
|
126
|
+
geo_activity_playground/webui/upload_blueprint.py,sha256=topLI9ytDUFkqCc9AlOqDkjhABUwnPJ1tX_7XrBPbxc,4412
|
127
|
+
geo_activity_playground-0.34.1.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
|
128
|
+
geo_activity_playground-0.34.1.dist-info/METADATA,sha256=LC0PRFwXYo3m0M9fCW6O13ZbiuDqpQeodnxiUxTiaWU,1573
|
129
|
+
geo_activity_playground-0.34.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
130
|
+
geo_activity_playground-0.34.1.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
|
131
|
+
geo_activity_playground-0.34.1.dist-info/RECORD,,
|
File without changes
|