"lib/features/personal/personal_screen.dart" did not exist on "956c501c3cd36765d0abe5fcd180d1a49a621822"
Commit 873fba2d authored by DatHV's avatar DatHV
Browse files

update chart history

parent f1723336
import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
...@@ -8,11 +10,13 @@ class MonthlyPointsChart extends StatelessWidget { ...@@ -8,11 +10,13 @@ class MonthlyPointsChart extends StatelessWidget {
super.key, super.key,
required this.items, required this.items,
required this.date, required this.date,
this.monthSummary,
this.onPrevMonth, this.onPrevMonth,
this.onNextMonth, this.onNextMonth,
this.onChangeDate, this.onChangeDate,
}); });
final MonthSummaryChartModel? monthSummary;
final List<DaySummaryChartModel> items; final List<DaySummaryChartModel> items;
final DateTime date; final DateTime date;
final VoidCallback? onPrevMonth; final VoidCallback? onPrevMonth;
...@@ -23,8 +27,8 @@ class MonthlyPointsChart extends StatelessWidget { ...@@ -23,8 +27,8 @@ class MonthlyPointsChart extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final parsed = _parseToDayMap(items, date); final parsed = _parseToDayMap(items, date);
print('items ${items.length}, parsed: $parsed');
final daysInMonth = DateUtils.getDaysInMonth(date.year, date.month); final daysInMonth = DateUtils.getDaysInMonth(date.year, date.month);
final total = parsed.values.fold<double>(0, (p, e) => p + e);
final maxVal = (parsed.values.isEmpty ? 0 : parsed.values.reduce((a, b) => a > b ? a : b)).abs(); final maxVal = (parsed.values.isEmpty ? 0 : parsed.values.reduce((a, b) => a > b ? a : b)).abs();
final yMax = _niceMax(maxVal.toDouble()); final yMax = _niceMax(maxVal.toDouble());
final yStep = _niceStep(yMax); final yStep = _niceStep(yMax);
...@@ -58,7 +62,7 @@ class MonthlyPointsChart extends StatelessWidget { ...@@ -58,7 +62,7 @@ class MonthlyPointsChart extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Text( Text(
_formatInt(total), _formatInt(_toDouble(monthSummary?.rewardMonthTotal ?? '0')),
style: const TextStyle( style: const TextStyle(
fontSize: 40, fontSize: 40,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
...@@ -190,11 +194,12 @@ class MonthlyPointsChart extends StatelessWidget { ...@@ -190,11 +194,12 @@ class MonthlyPointsChart extends StatelessWidget {
if (dt == null || dt.month != m || dt.year != y) continue; if (dt == null || dt.month != m || dt.year != y) continue;
final reward = _toDouble(e.rewardDayTotal); final reward = _toDouble(e.rewardDayTotal);
final redeem = _toDouble(e.redeemDayTotal); // final redeem = _toDouble(e.redeemDayTotal);
final adjust = _toDouble(e.adjustDayTotal); // final adjust = _toDouble(e.adjustDayTotal);
final val = reward - redeem + adjust; // final val = reward - redeem + adjust;
var val = (map[dt.day] ?? 0) + reward;
map[dt.day] = (map[dt.day] ?? 0) + val; // gộp nếu trùng ngày val = max(val, 0); // không âm
map[dt.day] = val; // gộp nếu trùng ngày
} }
return map; return map;
} }
......
...@@ -54,6 +54,7 @@ class _HistoryPointScreenState extends State<HistoryPointScreen> { ...@@ -54,6 +54,7 @@ class _HistoryPointScreenState extends State<HistoryPointScreen> {
SliverToBoxAdapter( SliverToBoxAdapter(
child: MonthlyPointsChart( child: MonthlyPointsChart(
items: _viewModel.transactionSummary.value?.days ?? [], items: _viewModel.transactionSummary.value?.days ?? [],
monthSummary: _viewModel.transactionSummary.value?.month,
date: _viewModel.selectedDate, date: _viewModel.selectedDate,
onPrevMonth: () => _viewModel.changeDate(true), onPrevMonth: () => _viewModel.changeDate(true),
onNextMonth: () => _viewModel.changeDate(false), onNextMonth: () => _viewModel.changeDate(false),
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment