Refactor TotalEnergyConsumptionBloc to use DividedTotalEnergyConsumptionDecorator for adjusted energy values and update chart data handling in TotalEnergyConsumptionChart.

This commit is contained in:
Faris Armoush
2025-07-01 16:28:52 +03:00
parent 0a022d8a8d
commit 445d4facab
3 changed files with 31 additions and 6 deletions

View File

@ -62,9 +62,11 @@ class _AnalyticsPageState extends State<AnalyticsPage> {
), ),
BlocProvider( BlocProvider(
create: (context) => TotalEnergyConsumptionBloc( create: (context) => TotalEnergyConsumptionBloc(
DividedTotalEnergyConsumptionDecorator(
RemoteTotalEnergyConsumptionService(_httpService), RemoteTotalEnergyConsumptionService(_httpService),
), ),
), ),
),
BlocProvider( BlocProvider(
create: (context) => EnergyConsumptionByPhasesBloc( create: (context) => EnergyConsumptionByPhasesBloc(
RemoteEnergyConsumptionByPhasesService(_httpService), RemoteEnergyConsumptionByPhasesService(_httpService),
@ -145,6 +147,7 @@ class _AnalyticsPageFormState extends State<AnalyticsPageForm> {
context.read<SpaceTreeBloc>().add(InitialEvent()); context.read<SpaceTreeBloc>().add(InitialEvent());
super.initState(); super.initState();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return WebScaffold( return WebScaffold(

View File

@ -9,22 +9,24 @@ class TotalEnergyConsumptionChart extends StatelessWidget {
final List<EnergyDataModel> chartData; final List<EnergyDataModel> chartData;
static const _leftTitlesInterval = 5.0;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Expanded( return Expanded(
child: LineChart( child: LineChart(
LineChartData( LineChartData(
maxY: chartData.isEmpty maxY: chartData.isNotEmpty
? null ? chartData.map((e) => e.value).reduce((a, b) => a > b ? a : b) +
: chartData.map((e) => e.value).reduce((a, b) => a > b ? a : b) + 250, _leftTitlesInterval
: null,
clipData: const FlClipData.vertical(), clipData: const FlClipData.vertical(),
titlesData: EnergyManagementChartsHelper.titlesData( titlesData: EnergyManagementChartsHelper.titlesData(
context, context,
leftTitlesInterval: 500, leftTitlesInterval: _leftTitlesInterval,
), ),
gridData: EnergyManagementChartsHelper.gridData().copyWith( gridData: EnergyManagementChartsHelper.gridData().copyWith(
checkToShowHorizontalLine: (value) => true, checkToShowHorizontalLine: (value) => true,
horizontalInterval: 500, horizontalInterval: _leftTitlesInterval,
), ),
borderData: EnergyManagementChartsHelper.borderData(), borderData: EnergyManagementChartsHelper.borderData(),
lineTouchData: EnergyManagementChartsHelper.lineTouchData(), lineTouchData: EnergyManagementChartsHelper.lineTouchData(),

View File

@ -59,3 +59,23 @@ abstract final class _TotalEnergyConsumptionResponseMapper {
}).toList(); }).toList();
} }
} }
class DividedTotalEnergyConsumptionDecorator
implements TotalEnergyConsumptionService {
const DividedTotalEnergyConsumptionDecorator(this._decoratee);
final TotalEnergyConsumptionService _decoratee;
@override
Future<List<EnergyDataModel>> 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();
}
}