Maurice
c83eb42730
feat(tours): plan a run at your own pace
...
RUN-01. Run joins the tour types in the planner, with Running as its first
profile, chosen on purpose like a bike tour's. A run is routed on foot for
runnable, mostly paved ways: tracks and ferries only where there is no other
way (use_tracks 0, use_ferry 0, measured against the public Valhalla), no
hiking limit and no via ferrata. The runner types a pace in min/km; the
running time is the distance at that pace and nothing else, shown under the
field as badges (8 km x 6:00 /km = 48 min). TREK suggests no pace: without
one the time stays unknown and Save waits, text that is no pace or a pace
outside 2:00 to 20:00 is marked. The info dot, the overview and the head say
climbs, descents and difficulty are not in the time, and the time reads as
planned everywhere, so it never passes for a recorded one; the heights are
shown as for any tour on land.
Type, profile, pace and route come back on opening, survive a draft reload,
an undo of the type, a copy and a take-over; switching to another type drops
profile and pace. Day assignment, the 3D terrain view (with topo and
satellite, no ferratas) and a routing failure keeping the last route work as
for every tour. A GPX file can be imported as a run with its profile and no
pace, and planned over as a run. Runs export to GPX as running and get their
own places along the way (water, toilets, parks, viewpoints).
The server keeps tours.run_profile (CHECK list, already holding trail for
RUN-02, since SQLite cannot widen a CHECK in place) and
tours.run_pace_seconds_per_km (120 to 1200), switches the run type on,
refuses a run without a profile and run fields on any other type, and
list_tours names both with what the planned time does not include.
2026-10-20 15:05:38 +02:00
..
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:13 +02:00
2026-10-14 13:24:27 +02:00
2026-10-20 07:09:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-18 13:21:52 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 12:32:24 +02:00
2026-10-18 13:21:50 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 22:35:33 +00:00
2026-10-19 11:29:29 +02:00
2026-10-10 21:23:37 +02:00
2026-10-20 07:09:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-16 23:24:20 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:07 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-19 21:33:40 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 23:37:19 +02:00
2026-10-19 21:33:40 +02:00
2026-10-14 13:24:27 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 23:37:19 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-08 18:46:52 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 17:06:52 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 19:56:44 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 20:02:09 +02:00
2026-10-12 14:28:06 +02:00
2026-10-18 20:02:09 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 12:32:24 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-20 07:09:57 +00:00
2026-10-20 07:09:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-12 21:13:57 +00:00
2026-10-12 21:13:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 22:53:59 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 22:53:59 +02:00
2026-10-12 13:15:17 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:06 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-14 20:21:37 +02:00
2026-10-19 21:33:40 +02:00
2026-10-19 22:03:54 +02:00
2026-10-10 21:23:37 +02:00
2026-10-14 13:24:27 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:10 +02:00
2026-10-18 13:21:53 +02:00
2026-10-10 20:16:04 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-20 07:09:56 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 20:53:08 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 20:53:08 +02:00
2026-10-10 20:16:04 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 20:53:08 +02:00
2026-10-12 21:13:58 +00:00
2026-10-10 20:16:04 +02:00
2026-10-12 21:13:58 +00:00
2026-10-20 12:16:11 +02:00
2026-10-20 07:09:56 +00:00
2026-10-12 20:53:08 +02:00
2026-10-12 21:13:58 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 15:59:33 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 22:05:44 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 17:06:58 +02:00
2026-10-12 19:56:44 +00:00
2026-10-10 22:53:59 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 17:06:52 +02:00
2026-10-20 07:09:56 +00:00
2026-10-19 22:03:54 +02:00
2026-10-10 23:37:19 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 23:37:19 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-20 10:37:29 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:10 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-12 19:56:44 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 16:05:17 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-20 15:05:38 +02:00
2026-10-20 10:37:29 +02:00
2026-10-20 12:16:11 +02:00
2026-10-19 10:22:04 +02:00
2026-10-19 23:12:30 +02:00
2026-10-20 07:09:56 +00:00
2026-10-20 07:09:57 +00:00
2026-10-20 07:09:57 +00:00
2026-10-20 07:09:57 +00:00
2026-10-20 07:09:57 +00:00
2026-10-19 10:22:04 +02:00
2026-10-20 07:09:56 +00:00
2026-10-20 15:05:38 +02:00
2026-10-17 02:07:22 +00:00
2026-10-17 02:31:01 +00:00
2026-10-20 07:09:57 +00:00
2026-10-16 23:14:52 +02:00
2026-10-20 15:05:38 +02:00
2026-10-20 15:05:38 +02:00
2026-10-20 07:09:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-20 12:16:11 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 16:39:17 +02:00
2026-10-18 20:02:09 +02:00
2026-10-18 20:02:09 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 20:02:09 +02:00
2026-10-10 20:16:06 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-20 07:09:56 +00:00
2026-10-12 21:13:57 +00:00
2026-10-18 20:02:09 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 17:06:52 +02:00
2026-10-12 14:12:36 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 19:56:44 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-15 20:15:17 +02:00
2026-10-15 20:15:17 +02:00
2026-10-16 23:44:58 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00