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
|
|
@ -2283,6 +2283,246 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'{value} °C from your usual at night'**
|
||||
String daySkinDeviation(String value);
|
||||
|
||||
/// No description provided for @homeRoutes.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Routes'**
|
||||
String get homeRoutes;
|
||||
|
||||
/// No description provided for @routesNew.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'New route'**
|
||||
String get routesNew;
|
||||
|
||||
/// No description provided for @routesEmptyTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No routes yet'**
|
||||
String get routesEmptyTitle;
|
||||
|
||||
/// No description provided for @routesEmptyHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tap the map to set waypoints, and your instance plans the way between them on paths and roads, with its climb and surfaces.'**
|
||||
String get routesEmptyHint;
|
||||
|
||||
/// No description provided for @routeLocked.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A route that doesn\'t open here'**
|
||||
String get routeLocked;
|
||||
|
||||
/// No description provided for @routeTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Route'**
|
||||
String get routeTitle;
|
||||
|
||||
/// No description provided for @routeNewTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'New route'**
|
||||
String get routeNewTitle;
|
||||
|
||||
/// No description provided for @routeName.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Name'**
|
||||
String get routeName;
|
||||
|
||||
/// No description provided for @routeActivity.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'For'**
|
||||
String get routeActivity;
|
||||
|
||||
/// No description provided for @routeActivityAny.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Any activity'**
|
||||
String get routeActivityAny;
|
||||
|
||||
/// No description provided for @routeProfile.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Planned for'**
|
||||
String get routeProfile;
|
||||
|
||||
/// No description provided for @routeProfileRun.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Running'**
|
||||
String get routeProfileRun;
|
||||
|
||||
/// No description provided for @routeProfileHike.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hiking'**
|
||||
String get routeProfileHike;
|
||||
|
||||
/// No description provided for @routeProfileRoadBike.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Road bike'**
|
||||
String get routeProfileRoadBike;
|
||||
|
||||
/// No description provided for @routeProfileTrekkingBike.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Trekking bike'**
|
||||
String get routeProfileTrekkingBike;
|
||||
|
||||
/// No description provided for @routeProfileGravel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Gravel bike'**
|
||||
String get routeProfileGravel;
|
||||
|
||||
/// No description provided for @routeProfileMtb.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Mountain bike'**
|
||||
String get routeProfileMtb;
|
||||
|
||||
/// No description provided for @routeTapHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tap the map to add a waypoint; hold one and drag it to move it.'**
|
||||
String get routeTapHint;
|
||||
|
||||
/// No description provided for @routeUndo.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Take the last waypoint off'**
|
||||
String get routeUndo;
|
||||
|
||||
/// No description provided for @routePlanning.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Planning…'**
|
||||
String get routePlanning;
|
||||
|
||||
/// No description provided for @routeRefusedInvalid.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A waypoint too many, or one off the map.'**
|
||||
String get routeRefusedInvalid;
|
||||
|
||||
/// No description provided for @routeRefusedTooOften.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Planned too often: try again in a minute.'**
|
||||
String get routeRefusedTooOften;
|
||||
|
||||
/// No description provided for @routeRefusedNoRoute.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No way found there: a waypoint may be off the paths, or outside the region your instance plans in.'**
|
||||
String get routeRefusedNoRoute;
|
||||
|
||||
/// No description provided for @routeRefusedUnreachable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your instance can\'t be reached to plan the way.'**
|
||||
String get routeRefusedUnreachable;
|
||||
|
||||
/// No description provided for @routeNotOffered.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your instance doesn\'t plan routes.'**
|
||||
String get routeNotOffered;
|
||||
|
||||
/// No description provided for @routeAscent.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{metres} m up'**
|
||||
String routeAscent(int metres);
|
||||
|
||||
/// No description provided for @routeDescent.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{metres} m down'**
|
||||
String routeDescent(int metres);
|
||||
|
||||
/// A route in the list: its distance and climb.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{distance} · {ascent}'**
|
||||
String routeSummary(String distance, String ascent);
|
||||
|
||||
/// No description provided for @routeSurfaces.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Surfaces'**
|
||||
String get routeSurfaces;
|
||||
|
||||
/// No description provided for @surfacePaved.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Paved'**
|
||||
String get surfacePaved;
|
||||
|
||||
/// No description provided for @surfaceCompacted.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Compacted'**
|
||||
String get surfaceCompacted;
|
||||
|
||||
/// No description provided for @surfaceGravel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Gravel'**
|
||||
String get surfaceGravel;
|
||||
|
||||
/// No description provided for @surfaceNatural.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Natural ground'**
|
||||
String get surfaceNatural;
|
||||
|
||||
/// No description provided for @surfaceUnknown.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Not known'**
|
||||
String get surfaceUnknown;
|
||||
|
||||
/// No description provided for @routeSave.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Save'**
|
||||
String get routeSave;
|
||||
|
||||
/// No description provided for @routeNotSaved.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The route wasn\'t saved.'**
|
||||
String get routeNotSaved;
|
||||
|
||||
/// No description provided for @routeDelete.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete'**
|
||||
String get routeDelete;
|
||||
|
||||
/// No description provided for @routeDeleteTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete this route?'**
|
||||
String get routeDeleteTitle;
|
||||
|
||||
/// No description provided for @routeDeleteMessage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'It\'s deleted on all your devices.'**
|
||||
String get routeDeleteMessage;
|
||||
|
||||
/// No description provided for @routeDeleted.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Route deleted'**
|
||||
String get routeDeleted;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Reference in a new issue