feat(train): a workout keeps its plan's steps as laps, shown on its page (ADR 0030, D43)
As a recording with a plan is saved, each step run becomes a lap in the workout's sealed payload: the step, its round, when it started and ended, its moving time and distance, with the highest heart rate the zones ran with. The page lists the steps with their pace, speed or split, stroke rate, watts and heart rate, marks whether each held its target, and the charts shade the work steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
d9f98449a8
commit
e1304975d6
5 changed files with 840 additions and 38 deletions
|
|
@ -83,6 +83,9 @@
|
|||
"workoutClimb": "Aufstieg",
|
||||
"workoutClimbValue": "{metres} m",
|
||||
"workoutSplits": "Abschnitte",
|
||||
"workoutSteps": "Schritte aus {plan}",
|
||||
"workoutOnTarget": "Im Ziel",
|
||||
"workoutOffTarget": "Neben dem Ziel",
|
||||
"workoutSplitKm": "km {number}",
|
||||
"workoutSplitFiveKm": "{from}–{to} km",
|
||||
"workoutPaceChart": "Tempo",
|
||||
|
|
|
|||
|
|
@ -103,6 +103,10 @@
|
|||
"workoutClimbValue": "{metres} m",
|
||||
"@workoutClimbValue": {"placeholders": {"metres": {"type": "int"}}},
|
||||
"workoutSplits": "Splits",
|
||||
"workoutSteps": "Steps of {plan}",
|
||||
"@workoutSteps": {"placeholders": {"plan": {"type": "String"}}},
|
||||
"workoutOnTarget": "On target",
|
||||
"workoutOffTarget": "Off target",
|
||||
"workoutSplitKm": "km {number}",
|
||||
"@workoutSplitKm": {"description": "A kilometre's split, its number.", "placeholders": {"number": {"type": "int"}}},
|
||||
"workoutSplitFiveKm": "{from}–{to} km",
|
||||
|
|
|
|||
|
|
@ -556,6 +556,24 @@ abstract class AppLocalizations {
|
|||
/// **'Splits'**
|
||||
String get workoutSplits;
|
||||
|
||||
/// No description provided for @workoutSteps.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Steps of {plan}'**
|
||||
String workoutSteps(String plan);
|
||||
|
||||
/// No description provided for @workoutOnTarget.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'On target'**
|
||||
String get workoutOnTarget;
|
||||
|
||||
/// No description provided for @workoutOffTarget.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Off target'**
|
||||
String get workoutOffTarget;
|
||||
|
||||
/// A kilometre's split, its number.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -294,6 +294,17 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
@override
|
||||
String get workoutSplits => 'Abschnitte';
|
||||
|
||||
@override
|
||||
String workoutSteps(String plan) {
|
||||
return 'Schritte aus $plan';
|
||||
}
|
||||
|
||||
@override
|
||||
String get workoutOnTarget => 'Im Ziel';
|
||||
|
||||
@override
|
||||
String get workoutOffTarget => 'Neben dem Ziel';
|
||||
|
||||
@override
|
||||
String workoutSplitKm(int number) {
|
||||
return 'km $number';
|
||||
|
|
|
|||
|
|
@ -292,6 +292,17 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get workoutSplits => 'Splits';
|
||||
|
||||
@override
|
||||
String workoutSteps(String plan) {
|
||||
return 'Steps of $plan';
|
||||
}
|
||||
|
||||
@override
|
||||
String get workoutOnTarget => 'On target';
|
||||
|
||||
@override
|
||||
String get workoutOffTarget => 'Off target';
|
||||
|
||||
@override
|
||||
String workoutSplitKm(int number) {
|
||||
return 'km $number';
|
||||
|
|
|
|||
Loading…
Reference in a new issue