Progress gives a Day/Week/Month view of routines held against a weekly target, compared with the same point of the previous period, with active time and the daily streak. Targets & reminders sets routines and minutes per week and schedules a heads-up before each routine. The runner's summary now shows today's held count and streak. Finished runs are mirrored to a device run log that feeds both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KhQh614DMeYoQEH9SoMRUw
47 lines
1.4 KiB
Dart
47 lines
1.4 KiB
Dart
/// What a good week looks like, set by the user on the Targets screen.
|
|
/// Progress measures against these; reminders fire before scheduled routines.
|
|
class ProgressTargets {
|
|
/// Routines held (every step done) per week.
|
|
int routinesPerWeek;
|
|
|
|
/// Minutes spent inside routines per week, held or not.
|
|
int minutesPerWeek;
|
|
|
|
bool reminders;
|
|
|
|
/// How long before a routine's start the reminder fires.
|
|
int reminderLead;
|
|
|
|
/// False until the user has saved the Targets screen once, so Progress can
|
|
/// ask for a target instead of silently using the defaults.
|
|
bool set;
|
|
|
|
ProgressTargets({
|
|
this.routinesPerWeek = 5,
|
|
this.minutesPerWeek = 150,
|
|
this.reminders = false,
|
|
this.reminderLead = 10,
|
|
this.set = false,
|
|
});
|
|
|
|
factory ProgressTargets.fromJson(Map<String, dynamic> json) {
|
|
return ProgressTargets(
|
|
routinesPerWeek: json['routinesPerWeek'] ?? 5,
|
|
minutesPerWeek: json['minutesPerWeek'] ?? 150,
|
|
reminders: json['reminders'] ?? false,
|
|
reminderLead: json['reminderLead'] ?? 10,
|
|
set: json['set'] ?? false,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final Map<String, dynamic> data = <String, dynamic>{};
|
|
data['routinesPerWeek'] = routinesPerWeek;
|
|
data['minutesPerWeek'] = minutesPerWeek;
|
|
data['reminders'] = reminders;
|
|
data['reminderLead'] = reminderLead;
|
|
data['set'] = set;
|
|
return data;
|
|
}
|
|
}
|