geo-activity-playground 0.45.0__py3-none-any.whl → 1.0.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.
@@ -14,6 +14,7 @@
14
14
  <input type="password" class="form-control" id="password" name="password" />
15
15
  </div>
16
16
 
17
+ <input type="hidden" name="redirect" value="{{ redirect }}" />
17
18
  <button type="submit" class="btn btn-primary">Log In</button>
18
19
  </form>
19
20
  {% endif %}
@@ -14,10 +14,23 @@
14
14
 
15
15
  <div class="row mb-3">
16
16
  <div class="col">
17
- <h2>Map with explored tiles</h2>
17
+ <p>You have {{ num_tiles }} explored tiles. There are {{ num_cluster_tiles }} cluster tiles in
18
+ total. Your largest cluster consists of {{ max_cluster_size }} tiles. Your largest square has size
19
+ {{ square_size }}².
20
+ </p>
21
+ <p>Open the <a
22
+ href="{{ url_for('square_planner.index', zoom=zoom, x=square_x, y=square_y, size=square_size) }}">Square
23
+ Planner</a> to plan the next extension.</p>
18
24
  </div>
19
25
  </div>
20
26
 
27
+ <div class="btn-group mb-3" role="group">
28
+ <button type="button" class="btn btn-primary" onclick="changeColor('cluster')">Cluster</button>
29
+ <button type="button" class="btn btn-primary" onclick="changeColor('first')">First Visit</button>
30
+ <button type="button" class="btn btn-primary" onclick="changeColor('last')">Last Visit</button>
31
+ <button type="button" class="btn btn-primary" onclick="changeColor('visits')">Number of Visits</button>
32
+ </div>
33
+
21
34
  <div class="row mb-3">
22
35
  <div class="col">
23
36
  <div id="explorer-map" class="mb-1" style="height: 800px;"></div>
@@ -26,47 +39,39 @@
26
39
  onclick="downloadAs('missing.geojson')">Missing as GeoJSON</a> or <a href="#"
27
40
  onclick="downloadAs('missing.gpx')"">Missing as GPX</a>.</p>
28
41
  <script>
29
- let map = L.map('explorer-map', {
30
- fullscreenControl: true,
31
- center: [{{ center.latitude }}, {{ center.longitude }}],
32
- zoom: 12
33
- });
34
- L.tileLayer('/explorer/{{ zoom }}/tile/{z}/{x}/{y}.png', {
35
- maxZoom: 19,
36
- attribution: '{{ map_tile_attribution|safe }}'
37
- }).addTo(map)
38
-
39
- let bbox = {{ center.bbox| safe }}
40
- if (bbox) {
41
- map.fitBounds(L.geoJSON(bbox).getBounds())
42
- }
42
+ const center_latitude = {{ center.latitude }};
43
+ const center_longitude = {{ center.longitude }};
44
+ const zoom = {{ zoom }};
45
+ const bbox = {{ center.bbox | safe }};
46
+ const map_tile_attribution = '{{ map_tile_attribution|safe }}';
43
47
  </script>
48
+ <script src=" /static/server-side-explorer.js"></script>
44
49
  </div>
45
50
  </div>
46
51
 
47
52
  <div class=" row mb-3">
48
- <div class="col">
49
- <h2>Tile history</h2>
50
- </div>
53
+ <div class="col">
54
+ <h2>Tile history</h2>
51
55
  </div>
56
+ </div>
52
57
 
53
- <div class="row mb-3">
54
- <div class="col-md-4">
55
- {% if plot_tile_evolution|length > 0 %}
56
- {{ vega_direct("plot_tile_evolution", plot_tile_evolution) }}
57
- {% endif %}
58
- </div>
59
- <div class="col-md-4">
60
- {% if plot_cluster_evolution|length > 0 %}
61
- {{ vega_direct("plot_cluster_evolution", plot_cluster_evolution) }}
62
- {% endif %}
63
- </div>
64
- <div class="col-md-4">
65
- {% if plot_square_evolution|length > 0 %}
66
- {{ vega_direct("plot_square_evolution", plot_square_evolution) }}
67
- {% endif %}
68
- </div>
58
+ <div class="row mb-3">
59
+ <div class="col-md-4">
60
+ {% if plot_tile_evolution|length > 0 %}
61
+ {{ vega_direct("plot_tile_evolution", plot_tile_evolution) }}
62
+ {% endif %}
63
+ </div>
64
+ <div class="col-md-4">
65
+ {% if plot_cluster_evolution|length > 0 %}
66
+ {{ vega_direct("plot_cluster_evolution", plot_cluster_evolution) }}
67
+ {% endif %}
69
68
  </div>
69
+ <div class="col-md-4">
70
+ {% if plot_square_evolution|length > 0 %}
71
+ {{ vega_direct("plot_square_evolution", plot_square_evolution) }}
72
+ {% endif %}
73
+ </div>
74
+ </div>
70
75
 
71
- {% endif %}
72
- {% endblock %}
76
+ {% endif %}
77
+ {% endblock %}
@@ -0,0 +1,39 @@
1
+ {% extends "page.html.j2" %}
2
+
3
+ {% block container %}
4
+
5
+ <h1>Export metadata and activities</h1>
6
+
7
+ <p>Here you can export all metadata and activities as a ZIP file. Depending on the file format chosen, exporting an
8
+ activity can take around one second. You can observe a progress bar in the terminal.</p>
9
+
10
+ <form method="get" enctype="multipart/form-data" action="{{ url_for('.export') }}">
11
+ <div class="mb-3">
12
+ <label for="meta_format" class="form-label">Metadata format</label>
13
+ <select name="meta_format" id="meta_format" class="form-select" aria-label="Metadata format">
14
+ <option value="parquet">Parquet</option>
15
+ {# <option value="json">JSON</option> #}
16
+ <option value="csv">CSV</option>
17
+ <option value="xlsx">Excel</option>
18
+ <option value="ods">OpenDocument Spreadsheet (LibreOffice)</option>
19
+ </select>
20
+ </div>
21
+
22
+ <div class="mb-3">
23
+ <label for="activity_format" class="form-label">Activity time series format</label>
24
+ <select name="activity_format" id="activity_format" class="form-select"
25
+ aria-label="Activity time series format">
26
+ <option value="">No export of activities</option>
27
+ <option value="parquet">Parquet</option>
28
+ <option value="csv">CSV</option>
29
+ <option value="geojson">GeoJSON</option>
30
+ <option value="gpx">GPX</option>
31
+ <option value="xlsx">Excel</option>
32
+ <option value="ods">OpenDocument Spreadsheet (LibreOffice)</option>
33
+ </select>
34
+ </div>
35
+ <button type="submit" class="btn btn-primary">Export</button>
36
+ </form>
37
+
38
+
39
+ {% endblock %}
@@ -94,14 +94,10 @@
94
94
  Explorer
95
95
  </a>
96
96
  <ul class="dropdown-menu">
97
- <li><a class="dropdown-item" href="{{ url_for('explorer.map', zoom=14) }}">Explorer
98
- Tiles (Zoom 14)</a></li>
99
- <li><a class="dropdown-item" href="{{ url_for('explorer.map', zoom=17) }}">Squadratinhos
100
- (Zoom 17)</a></li>
101
- <li><a class="dropdown-item" href="{{ url_for('explorer.server_side', zoom=14) }}">Fast
97
+ <li><a class="dropdown-item" href="{{ url_for('explorer.server_side', zoom=14) }}">
102
98
  Explorer
103
99
  Tiles (Zoom 14)</a></li>
104
- <li><a class="dropdown-item" href="{{ url_for('explorer.server_side', zoom=17) }}">Fast
100
+ <li><a class="dropdown-item" href="{{ url_for('explorer.server_side', zoom=17) }}">
105
101
  Squadratinhos
106
102
  (Zoom 17)</a></li>
107
103
 
@@ -150,6 +146,7 @@
150
146
  <li><a class="dropdown-item" href="{{ url_for('plot_builder.index') }}">Plot Builder</a>
151
147
  </li>
152
148
  <li><a class="dropdown-item" href="{{ url_for('settings.index') }}">Settings</a></li>
149
+ <li><a class="dropdown-item" href="{{ url_for('export.index') }}">Data Export</a></li>
153
150
  </ul>
154
151
  </li>
155
152
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geo-activity-playground
3
- Version: 0.45.0
3
+ Version: 1.0.0
4
4
  Summary: Analysis of geo data activities like rides, runs or hikes.
5
5
  License: MIT
6
6
  Author: Martin Ueding
@@ -28,6 +28,7 @@ Requires-Dist: gpxpy (>=1.5.0,<2.0.0)
28
28
  Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
29
29
  Requires-Dist: matplotlib (>=3.10.1,<4.0.0)
30
30
  Requires-Dist: numpy (>=2.2.3,<3.0.0)
31
+ Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
31
32
  Requires-Dist: pandas (>=2.2.3,<3.0.0)
32
33
  Requires-Dist: pyarrow (>=19.0.1,<20.0.0)
33
34
  Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
@@ -17,10 +17,11 @@ geo_activity_playground/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
17
17
  geo_activity_playground/core/activities.py,sha256=apP_-Rg1ub3lh7RARMGXf2BOmJTiahxqpX_soEnYF3E,4681
18
18
  geo_activity_playground/core/config.py,sha256=MhNaVS04rH_1KTUE1IrCTVsKtrSqKgMT7mzgPAri3vk,5305
19
19
  geo_activity_playground/core/coordinates.py,sha256=tDfr9mlXhK6E_MMIJ0vYWVCoH0Lq8uyuaqUgaa8i0jg,966
20
- geo_activity_playground/core/datamodel.py,sha256=Bx15g0TJun1yu_deHs3idSNJDAQpvuU39_VIsWD96MY,13303
20
+ geo_activity_playground/core/datamodel.py,sha256=8JRviRgjEKwJbC6VSSimOdvIfSy5IJu41_ibQLeg0xk,13514
21
21
  geo_activity_playground/core/enrichment.py,sha256=Tju9sKI-V40CmsS9RiNeGz-Zhp_hx1xjlaWzJMrasXI,7640
22
+ geo_activity_playground/core/export.py,sha256=ayOmhWL72263oP9NLIZRYCg_Db0GLUFhgNIL_MCrV-E,4435
22
23
  geo_activity_playground/core/heart_rate.py,sha256=-S3WAhS7AOywrw_Lk5jfuo_fu6zvZQ1VtjwEKSycWpU,1542
23
- geo_activity_playground/core/meta_search.py,sha256=dFWBMnLhdQgUJz2TPYMNFW7XVpyW4QhsH3kPVIhWFJc,6662
24
+ geo_activity_playground/core/meta_search.py,sha256=nyvCuR7v0pd6KjA8W5Kr71bBafRdE_ol7uSFRJs4eAM,6662
24
25
  geo_activity_playground/core/missing_values.py,sha256=HjonaLV0PFMICnuMrbdUNnK9uy_8PBh_RxI5GuEMQK0,250
25
26
  geo_activity_playground/core/parametric_plot.py,sha256=IefPc6lwthxowvjUDA5wu23oBSw9jq399l04gSaNrOQ,3880
26
27
  geo_activity_playground/core/paths.py,sha256=GGNpqhQL7etn8-NV6hVGLT7yBZYq7AwXnWfX3l_Cj48,2670
@@ -52,17 +53,18 @@ geo_activity_playground/importers/test_csv_parser.py,sha256=nOTVTdlzIY0TDcbWp7xN
52
53
  geo_activity_playground/importers/test_directory.py,sha256=_fn_-y98ZyElbG0BRxAmGFdtGobUShPU86SdEOpuv-A,691
53
54
  geo_activity_playground/importers/test_strava_api.py,sha256=7b8bl5Rh2BctCmvTPEhCadxtUOq3mfzuadD6F5XxRio,398
54
55
  geo_activity_playground/webui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- geo_activity_playground/webui/app.py,sha256=SyRztm6P0pQuq3Vn4g7gFwg1pwyZsElVNZOeljN5jEY,8139
56
- geo_activity_playground/webui/authenticator.py,sha256=jtQqvpVHa_eLTAulmvvJgDRoCWOEege49G9zn3MfYk8,1394
56
+ geo_activity_playground/webui/app.py,sha256=BJy34kychEIzWYc1romzZIpw5ZHl_MbQA6_1TX6P6MU,8268
57
+ geo_activity_playground/webui/authenticator.py,sha256=dhREYOu_TCD_nzFNuSlHIbf5K6TmwKdXtr1wxD8fBcc,1491
57
58
  geo_activity_playground/webui/blueprints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
59
  geo_activity_playground/webui/blueprints/activity_blueprint.py,sha256=EjaTe6VFkRpO9DEkHHurt5GDzAvHHUqgQgfBdiN239Q,26457
59
- geo_activity_playground/webui/blueprints/auth_blueprint.py,sha256=_VZeP3VN626BoOOZUkNVnuw9v-cEOrkHz5lhFPmxqMY,784
60
+ geo_activity_playground/webui/blueprints/auth_blueprint.py,sha256=3DkZAnPFd0s7YN7EUkApB6hgtU46Ll8PyYuZcNSiyHI,940
60
61
  geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py,sha256=xESHzYxlbhz4oNDuxV0A70eVKpFwz84pYC3q_YVZZg8,2812
61
62
  geo_activity_playground/webui/blueprints/calendar_blueprint.py,sha256=4EIBZ8rdXEu3tbl1faVlRwHb8Qp0JuMc3eyxwMkq6g8,2848
62
63
  geo_activity_playground/webui/blueprints/eddington_blueprints.py,sha256=8ctEZWIc0hWjVr3ezNTjxwDHO5M-XzUoupA69RrovB0,8896
63
64
  geo_activity_playground/webui/blueprints/entry_views.py,sha256=Lzd-hkflmN3GY24qm6dHazIe78wxnQFdFTUsoZOUH-M,2978
64
65
  geo_activity_playground/webui/blueprints/equipment_blueprint.py,sha256=26L2BM7lZo8rDf5Ipara5zA4tfSrvE18POqAZqjzH38,5659
65
- geo_activity_playground/webui/blueprints/explorer_blueprint.py,sha256=jMjLxmUhy9ip4Jjw9ABfkdD3CfqXqcE2C0VwQUBZ3WY,15598
66
+ geo_activity_playground/webui/blueprints/explorer_blueprint.py,sha256=vsotoSS6G1HMXosVF3Ru6nNtap45OD3nTVQ-5EOZD8Y,21671
67
+ geo_activity_playground/webui/blueprints/export_blueprint.py,sha256=NO3jqRy3tmEdK0Ei5wQ1f6cRdEHJa4VvfVs1kY6AhgI,972
66
68
  geo_activity_playground/webui/blueprints/heatmap_blueprint.py,sha256=iHI5YJYhX7ZOlzTgzl2efIRDzt3UMYCx7X4-LVd0MWk,8702
67
69
  geo_activity_playground/webui/blueprints/photo_blueprint.py,sha256=sYGp2XVGodkAifGHbEqpIY-7bBH5R7G7Dwg4HqgxMSY,7269
68
70
  geo_activity_playground/webui/blueprints/plot_builder_blueprint.py,sha256=7HrjpBM-608HSOh0i31Lmt7yDNMfWlEn6G7DlYqlV9w,3031
@@ -71,7 +73,7 @@ geo_activity_playground/webui/blueprints/settings_blueprint.py,sha256=FLKQ0JTThU
71
73
  geo_activity_playground/webui/blueprints/square_planner_blueprint.py,sha256=xVaxJxmt8Dysl3UL9f2y__LVLtTH2Np1Ust4OSXKRAk,4746
72
74
  geo_activity_playground/webui/blueprints/summary_blueprint.py,sha256=rK4LGR2Rpioy4wSqNYuyRn4WxaWeBLensJ3PmAd-ouY,11469
73
75
  geo_activity_playground/webui/blueprints/tile_blueprint.py,sha256=YzZf9OrNdjhc1_j4MtO1DMcw1uCv29ueNsYd-mWqgbg,837
74
- geo_activity_playground/webui/blueprints/upload_blueprint.py,sha256=ZPeUFGQ0gHeX71zVLLrHWpPq1NzCk4GlZIxYSdR1rhA,4799
76
+ geo_activity_playground/webui/blueprints/upload_blueprint.py,sha256=3nJGGNYjB22aFXDlgCFMK8t0RRkqQi_Pr33H3DtVP5M,5177
75
77
  geo_activity_playground/webui/columns.py,sha256=hSW8bFVKRUMBlWZYAN-tZ_tfED3VDQK75e4Zzw7_jZ0,642
76
78
  geo_activity_playground/webui/flasher.py,sha256=Covc1D9cO_jjokRWnvyiXCc2tfp3aZ8XkNqFdA1AXtk,500
77
79
  geo_activity_playground/webui/plot_util.py,sha256=5Uesjj-xcMskQX2z9viDZYHSxLGrH2a5dHA1ogsJW9U,261
@@ -103,6 +105,7 @@ geo_activity_playground/webui/static/leaflet.fullscreen.css,sha256=YTbhDGEH5amI_
103
105
  geo_activity_playground/webui/static/leaflet.js,sha256=20nQCchB9co0qIjJZRGuk2_Z9VM-kNiyxNV1lvTlZBo,147552
104
106
  geo_activity_playground/webui/static/leaflet.markercluster.js,sha256=WL6HHfYfbFEkZOFdsJQeY7lJG_E5airjvqbznghUzRw,33724
105
107
  geo_activity_playground/webui/static/mstile-150x150.png,sha256=j1ANUQJ1Xi1DR2sGqYZztob2ypfGw04eNtGpN9SxExA,11964
108
+ geo_activity_playground/webui/static/server-side-explorer.js,sha256=TV8YIVgWnGt6slzneGcj4rfyst9MEkMpjbuyiIBfQRw,1643
106
109
  geo_activity_playground/webui/static/site.webmanifest,sha256=G5wl5Ahfz6wyDt-Z7ea-ywG1WS1S7ZQ_QX9TM2ox6Lk,450
107
110
  geo_activity_playground/webui/static/table-sort.min.js,sha256=sFeDrgkXTePr2ciJU9_mLh-Z8qtYhPIQMgOZtj0LwBY,8506
108
111
  geo_activity_playground/webui/static/vega-embed@6,sha256=EtAqz74-xZ75o33UgiouBOKWG1u7Zxu-Zh0iIXFbmdo,60630
@@ -116,7 +119,7 @@ geo_activity_playground/webui/templates/activity/lines.html.j2,sha256=_ZDg1ruW-9
116
119
  geo_activity_playground/webui/templates/activity/name.html.j2,sha256=7Wbh3IrVL5lMRve467H0P10Shn5FzGpaXLhV0H-X4Hk,2725
117
120
  geo_activity_playground/webui/templates/activity/show.html.j2,sha256=obKXSvRJxpeo53k7aCUrrhJSus9msuPGStIQJQQHpes,10975
118
121
  geo_activity_playground/webui/templates/activity/trim.html.j2,sha256=3oAXQab6QqWjGBC9KCvWNOVn8uRmxoDLj3hx_O63TXc,1836
119
- geo_activity_playground/webui/templates/auth/index.html.j2,sha256=ILQ5HvTEYc3OrtOAIFt1VrqWorVD70V9DC342znmP70,579
122
+ geo_activity_playground/webui/templates/auth/index.html.j2,sha256=wzA0uxpiT1ktDadgnjvFXc9iUGMFm9GhjDkavl3S1h4,646
120
123
  geo_activity_playground/webui/templates/bubble_chart/index.html.j2,sha256=yd7lWjtxxVmJZqCiXb0Y1gMEOQ7LQYJXEdpE7JB1OZY,1616
121
124
  geo_activity_playground/webui/templates/calendar/index.html.j2,sha256=8dV9yeDwfv0Mm81mhiPHN5r3hdPUWl1Yye03x0Rqbo8,1601
122
125
  geo_activity_playground/webui/templates/calendar/month.html.j2,sha256=IEhGqknL69okX5brMzTgZdnmrgUQLmGGkDE5zd7RG7s,2008
@@ -124,11 +127,11 @@ geo_activity_playground/webui/templates/eddington/distance.html.j2,sha256=TkMey-
124
127
  geo_activity_playground/webui/templates/eddington/elevation_gain.html.j2,sha256=eE-xrhtwvtAohq5VXKZmeBjab3E0R7EdmCJlNTAvFAg,4803
125
128
  geo_activity_playground/webui/templates/elevation_eddington/index.html.j2,sha256=Pgis0-yH5qtSwRnJ5H_Umjk1nxk-t-LnpHIqklezPS4,4823
126
129
  geo_activity_playground/webui/templates/equipment/index.html.j2,sha256=wwrGmfCCBn-5CzMymi80hg3lNMZ7J1fAWWl_2zHeiMc,1845
127
- geo_activity_playground/webui/templates/explorer/index.html.j2,sha256=3t9ikAF6oMvEaVlS3Kb1tj9ngomIQlatzqPnqVsEDKA,6908
128
- geo_activity_playground/webui/templates/explorer/server-side.html.j2,sha256=3eYh3mmgPDmxFjH6Ofx1iw-jptcD9ctZixYh59mka3w,2496
130
+ geo_activity_playground/webui/templates/explorer/server-side.html.j2,sha256=zuYoUpW2IdnAxp3p5dHYQ2fOp-nXJ6e0FrbTCSeeMoc,3081
131
+ geo_activity_playground/webui/templates/export/index.html.j2,sha256=vxqpAm9KnT405Qz7q0_td-HZ4mCjcPR4Lp6EnIEWisg,1652
129
132
  geo_activity_playground/webui/templates/heatmap/index.html.j2,sha256=uM-l4gmDKw6307ZH_zb8zroMTKBuOkrR0Bu4fTEJE0s,1231
130
133
  geo_activity_playground/webui/templates/home.html.j2,sha256=EBLKVNgLYgTPzdFutoSkdlbu_UCCat5ItDFlYyRqcAg,2767
131
- geo_activity_playground/webui/templates/page.html.j2,sha256=QJtRcHciEEWUUf6LHll2RUm0NRXSkNGIYn1FHOKSrM4,12534
134
+ geo_activity_playground/webui/templates/page.html.j2,sha256=B4kFT4L3J4PwN0K2UJb1DPPN8P7JPI_HzRvs9y2pusY,12284
132
135
  geo_activity_playground/webui/templates/photo/map.html.j2,sha256=MWhqt5Q8ExiRhgxndcEnwngOj1qw0E0u4hKuiuY24Gg,1437
133
136
  geo_activity_playground/webui/templates/photo/new.html.j2,sha256=GGLejO4ap6ZMe54jZP39ktSLkdw5j67bf5PTlHEK7qc,383
134
137
  geo_activity_playground/webui/templates/plot_builder/edit.html.j2,sha256=x5Ki425me3HY6CcBQ37le9g8rCpbOxFVkdr0N_L84-g,2230
@@ -153,8 +156,8 @@ geo_activity_playground/webui/templates/square_planner/index.html.j2,sha256=-OnY
153
156
  geo_activity_playground/webui/templates/summary/index.html.j2,sha256=1kTuwWvOM3McEdY8N5rKj-R4CC6uqswl7NsGVF8hsDA,9185
154
157
  geo_activity_playground/webui/templates/upload/index.html.j2,sha256=I1Ix8tDS3YBdi-HdaNfjkzYXVVCjfUTe5PFTnap1ydc,775
155
158
  geo_activity_playground/webui/templates/upload/reload.html.j2,sha256=YZWX5eDeNyqKJdQAywDBcU8DZBm22rRBbZqFjrFrCvQ,556
156
- geo_activity_playground-0.45.0.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
157
- geo_activity_playground-0.45.0.dist-info/METADATA,sha256=z-NGEoMJeCU-Zknez48tKzYt4az7GzkQalxWAEpp6JU,1850
158
- geo_activity_playground-0.45.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
159
- geo_activity_playground-0.45.0.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
160
- geo_activity_playground-0.45.0.dist-info/RECORD,,
159
+ geo_activity_playground-1.0.0.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
160
+ geo_activity_playground-1.0.0.dist-info/METADATA,sha256=goJ98tnDHWY17fpoRf_tOfxxdW38OYGKds34c86_R0c,1890
161
+ geo_activity_playground-1.0.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
162
+ geo_activity_playground-1.0.0.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
163
+ geo_activity_playground-1.0.0.dist-info/RECORD,,
@@ -1,148 +0,0 @@
1
- {% extends "page.html.j2" %}
2
-
3
- {% block container %}
4
-
5
- <h1>Explorer Tiles</h1>
6
-
7
- {% if zoom_level_not_generated %}
8
- <p>You try to access explorer tiles for a level that hasn't been generated before. That is not a problem, we just don't
9
- generate all levels to save a bit of time. If you want to have it, just enable it!</p>
10
-
11
- <a href="{{ url_for('.enable_zoom_level', zoom=zoom_level_not_generated) }}" class="btn btn-primary">Enable Zoom {{
12
- zoom_level_not_generated }}</a>
13
- {% else %}
14
-
15
- <div class="row mb-3">
16
- <div class="col">
17
- <p>You have {{ explored.num_tiles }} explored tiles. There are {{ explored.num_cluster_tiles }} cluster tiles in
18
- total. Your largest cluster consists of {{ explored.max_cluster_size }} tiles. Your largest square has size
19
- {{
20
- explored.square_size }}².
21
- </p>
22
- <p>Open the <a
23
- href="{{ url_for('square_planner.index', zoom=zoom, x=explored.square_x, y=explored.square_y, size=explored.square_size) }}">Square
24
- Planner</a> to plan the next extension.</p>
25
- </div>
26
- </div>
27
-
28
- <div class="row mb-3">
29
- <div class="col">
30
- <h2>Map with explored tiles</h2>
31
- </div>
32
- </div>
33
-
34
- <div class="row mb-3">
35
- <div class="col">
36
- <div class="btn-group mb-3" role="group">
37
- <button type="button" class="btn btn-primary" onclick="changeColor('cluster')">Cluster</button>
38
- <button type="button" class="btn btn-primary" onclick="changeColor('first')">First Visit</button>
39
- <button type="button" class="btn btn-primary" onclick="changeColor('last')">Last Visit</button>
40
- </div>
41
- <div id="explorer-map" class="mb-1" style="height: 800px;"></div>
42
- <p>Download tiles in visible area: <a href="#" onclick="downloadAs('explored.geojson')">Explored as GeoJSON</a>,
43
- <a href="#" onclick="downloadAs('explored.gpx')"">Explored as GPX</a>, <a href=" #"
44
- onclick="downloadAs('missing.geojson')">Missing as GeoJSON</a> or <a href="#"
45
- onclick="downloadAs('missing.gpx')"">Missing as GPX</a>.</p>
46
- <script>
47
- function onEachFeature(feature, layer) {
48
- if (feature.properties && feature.properties.first_visit) {
49
- let lines = [
50
- `<dt>Tile</dt>`,
51
- `<dd>${feature.properties.tile}</dd>`,
52
- `<dt>First visit</dt>`,
53
- `<dd>${feature.properties.first_visit}</br><a href=/activity/${feature.properties.first_activity_id}>${feature.properties.first_activity_name}</a></dd>`,
54
- `<dt>Last visit</dt>`,
55
- `<dd>${feature.properties.last_visit}</br><a href=/activity/${feature.properties.last_activity_id}>${feature.properties.last_activity_name}</a></dd>`,
56
- `<dt>Number of visits</dt>`,
57
- `<dd>${feature.properties.num_visits}</dd>`,
58
- ]
59
- if (feature.properties.this_cluster_size) {
60
- lines.push(`<dt>This cluster size</dt><dd>${feature.properties.this_cluster_size}</dd>`)
61
- }
62
- layer.bindPopup('<dl>' + lines.join('') + '</dl>')
63
- }
64
- }
65
-
66
- let explorer_geojson = {{ explored.explored_geojson| safe}}
67
- let square_geojson = {{ explored.square_geojson | safe }}
68
- let map = L.map('explorer-map', {
69
- fullscreenControl: true,
70
- center: [{{ center.latitude }}, {{ center.longitude }}],
71
- zoom: 10
72
- })
73
- let tile_layer = L.tileLayer('/tile/grayscale/{z}/{x}/{y}.png', {
74
- maxZoom: 19,
75
- attribution: '{{ map_tile_attribution|safe }}'
76
- });
77
- tile_layer.addTo(map)
78
- let explorer_layer_cluster_color = L.geoJSON(explorer_geojson, {
79
- style: function (feature) {
80
- return {
81
- color: feature.properties.color, fillColor: feature.properties.color,
82
- weight: 0.5
83
- }
84
- },
85
- onEachFeature: onEachFeature
86
- }).addTo(map)
87
- let explorer_layer_first_age_color = L.geoJSON(explorer_geojson, {
88
- style: function (feature) {
89
- return {
90
- color: " #440154", fillColor: feature.properties.first_age_color, weight: 0.5
91
- }
92
- },
93
- onEachFeature: onEachFeature
94
- }); let explorer_layer_last_age_color = L.geoJSON(explorer_geojson, {
95
- style:
96
- function (feature) {
97
- return {
98
- color: "#440154", fillColor: feature.properties.last_age_color, weight:
99
- 0.5
100
- }
101
- }, onEachFeature: onEachFeature
102
- }); let bbox = {{ center.bbox| safe }}; if (bbox) {
103
- map.fitBounds(L.geoJSON(bbox).getBounds())
104
- }; let explorer_square_layer = L.geoJSON(square_geojson, {
105
- style: function (feature) { return { color: "blue", fill: false, weight: 2 } }
106
- }).addTo(map)
107
- active_layer = explorer_layer_cluster_color; function changeColor(method) {
108
- map.removeLayer(active_layer)
109
- if (method == "cluster") { active_layer = explorer_layer_cluster_color } else if (method == "first") {
110
- active_layer = explorer_layer_first_age_color
111
- } else if (method == "last") {
112
- active_layer = explorer_layer_last_age_color
113
- } map.addLayer(active_layer)
114
- } function downloadAs(suffix) {
115
- bounds = map.getBounds(); zoom = "{{ zoom }}"
116
- window.location.href = `/explorer/${zoom}/${bounds.getNorth()}/${bounds.getEast()}/${bounds.getSouth()}/${bounds.getWest()}/${suffix}`
117
- } </script>
118
- <p></p><button type="button" class="btn btn-secondary btn-sm"
119
- onclick="map.removeLayer(tile_layer)">Remove map background</button>
120
- </div>
121
- </div>
122
-
123
- <div class="row mb-3">
124
- <div class="col">
125
- <h2>Tile history</h2>
126
- </div>
127
- </div>
128
-
129
- <div class="row mb-3">
130
- <div class="col-md-4">
131
- {% if plot_tile_evolution|length > 0 %}
132
- {{ vega_direct("plot_tile_evolution", plot_tile_evolution) }}
133
- {% endif %}
134
- </div>
135
- <div class="col-md-4">
136
- {% if plot_cluster_evolution|length > 0 %}
137
- {{ vega_direct("plot_cluster_evolution", plot_cluster_evolution) }}
138
- {% endif %}
139
- </div>
140
- <div class="col-md-4">
141
- {% if plot_square_evolution|length > 0 %}
142
- {{ vega_direct("plot_square_evolution", plot_square_evolution) }}
143
- {% endif %}
144
- </div>
145
- </div>
146
-
147
- {% endif %}
148
- {% endblock %}