Add Progress over time and a targets and reminders setup
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
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
/// 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user