|
...
|
...
|
@@ -77,6 +77,8 @@ class WeeklyHrvReport implements HrvPeriodReport { |
|
|
|
required this.days,
|
|
|
|
this.previousRelaxedDays,
|
|
|
|
this.previousStressedDays,
|
|
|
|
this.relaxedDaysOverride,
|
|
|
|
this.stressedDaysOverride,
|
|
|
|
this.distributionCounts,
|
|
|
|
this.minDayOverride,
|
|
|
|
this.maxDayOverride,
|
|
...
|
...
|
@@ -89,6 +91,8 @@ class WeeklyHrvReport implements HrvPeriodReport { |
|
|
|
final int? previousRelaxedDays;
|
|
|
|
@override
|
|
|
|
final int? previousStressedDays;
|
|
|
|
final int? relaxedDaysOverride;
|
|
|
|
final int? stressedDaysOverride;
|
|
|
|
final Map<HrvStressLevel, int>? distributionCounts;
|
|
|
|
final HrvDayReport? minDayOverride;
|
|
|
|
final HrvDayReport? maxDayOverride;
|
|
...
|
...
|
@@ -114,10 +118,12 @@ class WeeklyHrvReport implements HrvPeriodReport { |
|
|
|
|
|
|
|
@override
|
|
|
|
int get relaxedDays =>
|
|
|
|
relaxedDaysOverride ??
|
|
|
|
countFor(HrvStressLevel.excellent) + countFor(HrvStressLevel.normal);
|
|
|
|
|
|
|
|
@override
|
|
|
|
int get stressedDays =>
|
|
|
|
stressedDaysOverride ??
|
|
|
|
countFor(HrvStressLevel.attention) + countFor(HrvStressLevel.overload);
|
|
|
|
|
|
|
|
@override
|
|
...
|
...
|
@@ -144,6 +150,71 @@ class WeeklyHrvReport implements HrvPeriodReport { |
|
|
|
HrvDayReport(date: weekStart.add(Duration(days: i))),
|
|
|
|
],
|
|
|
|
);
|
|
|
|
|
|
|
|
factory WeeklyHrvReport.premiumPreview(DateTime weekStart) {
|
|
|
|
final start = DateTime(weekStart.year, weekStart.month, weekStart.day);
|
|
|
|
final minDay = HrvDayReport(
|
|
|
|
date: start.add(const Duration(days: 6)),
|
|
|
|
averageHrv: 15,
|
|
|
|
averageHeartRate: 71,
|
|
|
|
level: HrvStressLevel.overload,
|
|
|
|
);
|
|
|
|
final maxDay = HrvDayReport(
|
|
|
|
date: start.add(const Duration(days: 1)),
|
|
|
|
averageHrv: 90,
|
|
|
|
averageHeartRate: 84,
|
|
|
|
level: HrvStressLevel.excellent,
|
|
|
|
);
|
|
|
|
return WeeklyHrvReport(
|
|
|
|
weekStart: start,
|
|
|
|
previousRelaxedDays: 5,
|
|
|
|
previousStressedDays: 2,
|
|
|
|
relaxedDaysOverride: 4,
|
|
|
|
stressedDaysOverride: 1,
|
|
|
|
distributionCounts: const {
|
|
|
|
HrvStressLevel.excellent: 4,
|
|
|
|
HrvStressLevel.normal: 1,
|
|
|
|
HrvStressLevel.attention: 1,
|
|
|
|
HrvStressLevel.overload: 1,
|
|
|
|
},
|
|
|
|
minDayOverride: minDay,
|
|
|
|
maxDayOverride: maxDay,
|
|
|
|
days: [
|
|
|
|
HrvDayReport(
|
|
|
|
date: start,
|
|
|
|
averageHrv: 62,
|
|
|
|
averageHeartRate: 86,
|
|
|
|
level: HrvStressLevel.normal,
|
|
|
|
),
|
|
|
|
maxDay,
|
|
|
|
HrvDayReport(
|
|
|
|
date: start.add(const Duration(days: 2)),
|
|
|
|
averageHrv: 68,
|
|
|
|
averageHeartRate: 88,
|
|
|
|
level: HrvStressLevel.excellent,
|
|
|
|
),
|
|
|
|
HrvDayReport(
|
|
|
|
date: start.add(const Duration(days: 3)),
|
|
|
|
averageHrv: 85,
|
|
|
|
averageHeartRate: 85,
|
|
|
|
level: HrvStressLevel.excellent,
|
|
|
|
),
|
|
|
|
HrvDayReport(
|
|
|
|
date: start.add(const Duration(days: 4)),
|
|
|
|
averageHrv: 86,
|
|
|
|
averageHeartRate: 87,
|
|
|
|
level: HrvStressLevel.excellent,
|
|
|
|
),
|
|
|
|
HrvDayReport(
|
|
|
|
date: start.add(const Duration(days: 5)),
|
|
|
|
averageHrv: 45,
|
|
|
|
averageHeartRate: 70,
|
|
|
|
level: HrvStressLevel.attention,
|
|
|
|
),
|
|
|
|
minDay,
|
|
|
|
],
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class MonthlyHrvReport implements HrvPeriodReport {
|
...
|
...
|
|