Commit ebf173591f2c41d632beca120e3ed220d894b7c2

Authored by 刘宏哲
1 parent 6057916c

feat(app): bug fixed

... ... @@ -43,7 +43,7 @@ class _YearTrendCard extends StatelessWidget {
Text(
HealthReportSubjectScope.titleOf(
context,
context.l10n.hrvDailyStressTrend,
context.l10n.hrvMonthlyStressTrend,
),
style: _titleStyle,
),
... ... @@ -449,6 +449,7 @@ class _DailyDistributionCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
final extremeDays = _dailyStressExtremeDays(report);
return _Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
... ... @@ -479,28 +480,73 @@ class _DailyDistributionCard extends StatelessWidget {
),
const Divider(height: 25, color: _grid),
_DateExtreme(
label: context.l10n.hrvMostStressed,
days: _extremeDays(report, maximum: true)),
label: context.l10n.hrvMostStressed,
days: extremeDays.mostStressed,
),
const SizedBox(height: 18),
_DateExtreme(
label: context.l10n.hrvMostRelaxed,
days: _extremeDays(report, maximum: false)),
label: context.l10n.hrvMostRelaxed,
days: extremeDays.mostRelaxed,
),
],
),
);
}
List<HrvDayReport> _extremeDays(YearlyHrvReport report,
{required bool maximum}) {
final days = report.days.where((day) => day.level != null).toList();
days.sort((a, b) {
final aValue = _stressRank(a.level!);
final bValue = _stressRank(b.level!);
final valueComparison =
maximum ? bValue.compareTo(aValue) : aValue.compareTo(bValue);
return valueComparison == 0 ? a.date.compareTo(b.date) : valueComparison;
});
return days.take(2).toList();
({List<HrvDayReport> mostStressed, List<HrvDayReport> mostRelaxed})
_dailyStressExtremeDays(YearlyHrvReport report) {
final days = report.days.where((day) => day.level != null).toList()
..sort(_compareByStressDescending);
final mostStressed = <HrvDayReport>[];
final mostRelaxed = <HrvDayReport>[];
if (days.isEmpty) {
return (mostStressed: mostStressed, mostRelaxed: mostRelaxed);
}
if (days.length == 1) {
final day = days.single;
if (_isStressedLevel(day.level!)) {
mostStressed.add(day);
} else {
mostRelaxed.add(day);
}
return (mostStressed: mostStressed, mostRelaxed: mostRelaxed);
}
mostStressed.add(days.first);
mostRelaxed.add(days.last);
if (days.length == 3) {
final middle = days[1];
if (_isStressedLevel(middle.level!)) {
mostStressed.add(middle);
} else {
mostRelaxed.add(middle);
}
} else if (days.length >= 4) {
mostStressed.add(days[1]);
mostRelaxed.add(days[days.length - 2]);
}
mostStressed.sort(_compareByDate);
mostRelaxed.sort(_compareByDate);
return (mostStressed: mostStressed, mostRelaxed: mostRelaxed);
}
int _compareByStressDescending(HrvDayReport a, HrvDayReport b) {
final valueComparison =
_stressRank(b.level!).compareTo(_stressRank(a.level!));
return valueComparison == 0 ? a.date.compareTo(b.date) : valueComparison;
}
int _compareByDate(HrvDayReport a, HrvDayReport b) {
return a.date.compareTo(b.date);
}
bool _isStressedLevel(HrvStressLevel level) {
return level == HrvStressLevel.attention ||
level == HrvStressLevel.overload;
}
int _stressRank(HrvStressLevel level) {
... ...
... ... @@ -326,6 +326,7 @@
"sleepQualityNormal": "Normal",
"sleepQualityAttention": "Needs attention",
"hrvDailyStressTrend": "Daily Stress Trend",
"hrvMonthlyStressTrend": "Monthly Stress Trend",
"hrvMoreRelaxed": "More relaxed",
"hrvMoreStressed": "More stressed",
"hrvStressDistribution": "Stress Distribution",
... ...
... ... @@ -498,6 +498,7 @@
"sleepQualityNormal": "正常",
"sleepQualityAttention": "注意",
"hrvDailyStressTrend": "每日压力趋势",
"hrvMonthlyStressTrend": "每月压力趋势",
"hrvMoreRelaxed": "较轻松",
"hrvMoreStressed": "压力较大",
"hrvStressDistribution": "压力分布",
... ...
... ... @@ -2055,6 +2055,12 @@ abstract class AppLocalizations {
/// **'每日压力趋势'**
String get hrvDailyStressTrend;
/// No description provided for @hrvMonthlyStressTrend.
///
/// In zh, this message translates to:
/// **'每月压力趋势'**
String get hrvMonthlyStressTrend;
/// No description provided for @hrvMoreRelaxed.
///
/// In zh, this message translates to:
... ...
... ... @@ -1135,6 +1135,9 @@ class AppLocalizationsEn extends AppLocalizations {
String get hrvDailyStressTrend => 'Daily Stress Trend';
@override
String get hrvMonthlyStressTrend => 'Monthly Stress Trend';
@override
String get hrvMoreRelaxed => 'More relaxed';
@override
... ...
... ... @@ -1071,6 +1071,9 @@ class AppLocalizationsZh extends AppLocalizations {
String get hrvDailyStressTrend => '每日压力趋势';
@override
String get hrvMonthlyStressTrend => '每月压力趋势';
@override
String get hrvMoreRelaxed => '较轻松';
@override
... ...