From 445d4facab9548b97345d3fb6401c8fef597d1f8 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Tue, 1 Jul 2025 16:28:52 +0300 Subject: [PATCH] Refactor `TotalEnergyConsumptionBloc` to use `DividedTotalEnergyConsumptionDecorator` for adjusted energy values and update chart data handling in `TotalEnergyConsumptionChart`. --- .../analytics/views/analytics_page.dart | 5 ++++- .../total_energy_consumption_chart.dart | 12 ++++++----- ...mote_total_energy_consumption_service.dart | 20 +++++++++++++++++++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/lib/pages/analytics/modules/analytics/views/analytics_page.dart b/lib/pages/analytics/modules/analytics/views/analytics_page.dart index 82f4d853..4b04c3e9 100644 --- a/lib/pages/analytics/modules/analytics/views/analytics_page.dart +++ b/lib/pages/analytics/modules/analytics/views/analytics_page.dart @@ -62,7 +62,9 @@ class _AnalyticsPageState extends State { ), BlocProvider( create: (context) => TotalEnergyConsumptionBloc( - RemoteTotalEnergyConsumptionService(_httpService), + DividedTotalEnergyConsumptionDecorator( + RemoteTotalEnergyConsumptionService(_httpService), + ), ), ), BlocProvider( @@ -145,6 +147,7 @@ class _AnalyticsPageFormState extends State { context.read().add(InitialEvent()); super.initState(); } + @override Widget build(BuildContext context) { return WebScaffold( diff --git a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart index bba1fa14..e63cfdf0 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart @@ -9,22 +9,24 @@ class TotalEnergyConsumptionChart extends StatelessWidget { final List chartData; + static const _leftTitlesInterval = 5.0; @override Widget build(BuildContext context) { return Expanded( child: LineChart( LineChartData( - maxY: chartData.isEmpty - ? null - : chartData.map((e) => e.value).reduce((a, b) => a > b ? a : b) + 250, + maxY: chartData.isNotEmpty + ? chartData.map((e) => e.value).reduce((a, b) => a > b ? a : b) + + _leftTitlesInterval + : null, clipData: const FlClipData.vertical(), titlesData: EnergyManagementChartsHelper.titlesData( context, - leftTitlesInterval: 500, + leftTitlesInterval: _leftTitlesInterval, ), gridData: EnergyManagementChartsHelper.gridData().copyWith( checkToShowHorizontalLine: (value) => true, - horizontalInterval: 500, + horizontalInterval: _leftTitlesInterval, ), borderData: EnergyManagementChartsHelper.borderData(), lineTouchData: EnergyManagementChartsHelper.lineTouchData(), diff --git a/lib/pages/analytics/services/total_energy_consumption/remote_total_energy_consumption_service.dart b/lib/pages/analytics/services/total_energy_consumption/remote_total_energy_consumption_service.dart index 838cc5e7..81413b1c 100644 --- a/lib/pages/analytics/services/total_energy_consumption/remote_total_energy_consumption_service.dart +++ b/lib/pages/analytics/services/total_energy_consumption/remote_total_energy_consumption_service.dart @@ -59,3 +59,23 @@ abstract final class _TotalEnergyConsumptionResponseMapper { }).toList(); } } + +class DividedTotalEnergyConsumptionDecorator + implements TotalEnergyConsumptionService { + const DividedTotalEnergyConsumptionDecorator(this._decoratee); + + final TotalEnergyConsumptionService _decoratee; + @override + Future> load( + GetTotalEnergyConsumptionParam param, + ) async { + final result = await _decoratee.load(param); + final dividedResult = result.map((e) { + return EnergyDataModel( + date: e.date, + value: e.value / 100, + ); + }); + return dividedResult.toList(); + } +}