feat(train): routes kept as sealed rows, planned on the map (ADR 0030, D44)
Routes are synced `route` rows (the model `SavedRoute`, as Flutter has a `Route`), sealed as plans are; the migration `routes` only creates the table, its space index and its cascade to the sync engine's spaces. A route's payload holds its name, activity, profile, waypoints and the way planned, points and elevations delta-coded and gzipped. Home gets a fourth tab, Routes, and the planner: waypoints tapped on the map, held and dragged, the last undone, a new route's first where the phone is (GPS through the recorder's channel), the way planned by the instance's BRouter after each change, an earlier answer dropped; its distance, climb, descent, elevation and surfaces under the map. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
a8f7c26e69
commit
aea99c68ca
1 changed files with 24035 additions and 12 deletions
|
|
@ -481,5 +481,48 @@
|
|||
"dayCelsius": "{value} °C",
|
||||
"@dayCelsius": {"placeholders": {"value": {"type": "String", "example": "33.4"}}},
|
||||
"daySkinDeviation": "{value} °C from your usual at night",
|
||||
"@daySkinDeviation": {"placeholders": {"value": {"type": "String", "example": "−0.2"}}}
|
||||
"@daySkinDeviation": {"placeholders": {"value": {"type": "String", "example": "−0.2"}}},
|
||||
"homeRoutes": "Routes",
|
||||
"routesNew": "New route",
|
||||
"routesEmptyTitle": "No routes yet",
|
||||
"routesEmptyHint": "Tap the map to set waypoints, and your instance plans the way between them on paths and roads, with its climb and surfaces.",
|
||||
"routeLocked": "A route that doesn't open here",
|
||||
"routeTitle": "Route",
|
||||
"routeNewTitle": "New route",
|
||||
"routeName": "Name",
|
||||
"routeActivity": "For",
|
||||
"routeActivityAny": "Any activity",
|
||||
"routeProfile": "Planned for",
|
||||
"routeProfileRun": "Running",
|
||||
"routeProfileHike": "Hiking",
|
||||
"routeProfileRoadBike": "Road bike",
|
||||
"routeProfileTrekkingBike": "Trekking bike",
|
||||
"routeProfileGravel": "Gravel bike",
|
||||
"routeProfileMtb": "Mountain bike",
|
||||
"routeTapHint": "Tap the map to add a waypoint; hold one and drag it to move it.",
|
||||
"routeUndo": "Take the last waypoint off",
|
||||
"routePlanning": "Planning…",
|
||||
"routeRefusedInvalid": "A waypoint too many, or one off the map.",
|
||||
"routeRefusedTooOften": "Planned too often: try again in a minute.",
|
||||
"routeRefusedNoRoute": "No way found there: a waypoint may be off the paths, or outside the region your instance plans in.",
|
||||
"routeRefusedUnreachable": "Your instance can't be reached to plan the way.",
|
||||
"routeNotOffered": "Your instance doesn't plan routes.",
|
||||
"routeAscent": "{metres} m up",
|
||||
"@routeAscent": {"placeholders": {"metres": {"type": "int"}}},
|
||||
"routeDescent": "{metres} m down",
|
||||
"@routeDescent": {"placeholders": {"metres": {"type": "int"}}},
|
||||
"routeSummary": "{distance} · {ascent}",
|
||||
"@routeSummary": {"description": "A route in the list: its distance and climb.", "placeholders": {"distance": {"type": "String", "example": "12.3 km"}, "ascent": {"type": "String", "example": "120 m up"}}},
|
||||
"routeSurfaces": "Surfaces",
|
||||
"surfacePaved": "Paved",
|
||||
"surfaceCompacted": "Compacted",
|
||||
"surfaceGravel": "Gravel",
|
||||
"surfaceNatural": "Natural ground",
|
||||
"surfaceUnknown": "Not known",
|
||||
"routeSave": "Save",
|
||||
"routeNotSaved": "The route wasn't saved.",
|
||||
"routeDelete": "Delete",
|
||||
"routeDeleteTitle": "Delete this route?",
|
||||
"routeDeleteMessage": "It's deleted on all your devices.",
|
||||
"routeDeleted": "Route deleted"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue