diff --git a/lib/pages/analytics/modules/energy_management/blocs/total_energy_consumption/total_energy_consumption_bloc.dart b/lib/pages/analytics/modules/energy_management/blocs/total_energy_consumption/total_energy_consumption_bloc.dart index 443f60b7..42ad57e8 100644 --- a/lib/pages/analytics/modules/energy_management/blocs/total_energy_consumption/total_energy_consumption_bloc.dart +++ b/lib/pages/analytics/modules/energy_management/blocs/total_energy_consumption/total_energy_consumption_bloc.dart @@ -22,8 +22,8 @@ class TotalEnergyConsumptionBloc TotalEnergyConsumptionLoadEvent event, Emitter emit, ) async { - emit(state.copyWith(status: TotalEnergyConsumptionStatus.loading)); try { + emit(state.copyWith(status: TotalEnergyConsumptionStatus.loading)); final chartData = await _totalEnergyConsumptionService.load(event.param); emit( state.copyWith( diff --git a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_chart_box.dart b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_chart_box.dart index 2235eb3e..1766266c 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_chart_box.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_chart_box.dart @@ -22,7 +22,7 @@ class EnergyConsumptionByPhasesChartBox extends StatelessWidget { spacing: 20, children: [ AnalyticsErrorWidget(state.errorMessage), - const EnergyConsumptionByPhasesTitle(), + EnergyConsumptionByPhasesTitle(isLoading: state.status == EnergyConsumptionByPhasesStatus.loading,), Expanded( child: EnergyConsumptionByPhasesChart( energyData: state.chartData, diff --git a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_title.dart b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_title.dart index cf569be8..e05450a6 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_title.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_title.dart @@ -1,10 +1,12 @@ import 'package:flutter/material.dart'; import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/chart_title.dart'; +import 'package:syncrow_web/pages/analytics/widgets/charts_loading_widget.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; class EnergyConsumptionByPhasesTitle extends StatelessWidget { - const EnergyConsumptionByPhasesTitle({super.key}); + const EnergyConsumptionByPhasesTitle({super.key, required this.isLoading}); + final bool isLoading; @override Widget build(BuildContext context) { @@ -12,6 +14,7 @@ class EnergyConsumptionByPhasesTitle extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ + ChartsLoadingWidget(isLoading: isLoading), Expanded( flex: 4, child: FittedBox( diff --git a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart index 3dbdf489..b62ebe54 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart @@ -5,6 +5,7 @@ import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/ch import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart.dart'; import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart'; import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart'; +import 'package:syncrow_web/pages/analytics/widgets/charts_loading_widget.dart'; import 'package:syncrow_web/utils/style.dart'; class EnergyConsumptionPerDeviceChartBox extends StatelessWidget { @@ -28,6 +29,8 @@ class EnergyConsumptionPerDeviceChartBox extends StatelessWidget { Row( spacing: 32, children: [ + if (state.status == EnergyConsumptionPerDeviceStatus.loading) + const ChartsLoadingWidget(isLoading: true), const Expanded( flex: 3, child: FittedBox( diff --git a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart index 9cf94614..9e70e45e 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart @@ -4,6 +4,7 @@ import 'package:syncrow_web/pages/analytics/modules/energy_management/blocs/tota import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/chart_title.dart'; import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart'; import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart'; +import 'package:syncrow_web/pages/analytics/widgets/charts_loading_widget.dart'; import 'package:syncrow_web/utils/style.dart'; class TotalEnergyConsumptionChartBox extends StatelessWidget { @@ -22,9 +23,12 @@ class TotalEnergyConsumptionChartBox extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ AnalyticsErrorWidget(state.errorMessage), - const Row( + Row( children: [ - Expanded( + ChartsLoadingWidget( + isLoading: state.status == TotalEnergyConsumptionStatus.loading, + ), + const Expanded( flex: 3, child: FittedBox( alignment: AlignmentDirectional.centerStart, @@ -32,7 +36,7 @@ class TotalEnergyConsumptionChartBox extends StatelessWidget { child: ChartTitle(title: Text('Total Energy Consumption')), ), ), - Spacer(flex: 4), + const Spacer(flex: 4), ], ), const Divider(), diff --git a/lib/pages/analytics/widgets/charts_loading_widget.dart b/lib/pages/analytics/widgets/charts_loading_widget.dart new file mode 100644 index 00000000..00a703aa --- /dev/null +++ b/lib/pages/analytics/widgets/charts_loading_widget.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +class ChartsLoadingWidget extends StatelessWidget { + const ChartsLoadingWidget({ + required this.isLoading, + super.key, + }); + final bool isLoading; + + @override + Widget build(BuildContext context) { + return Visibility( + visible: isLoading, + child: const SizedBox.square( + dimension: 16, + child: FittedBox( + child: CircularProgressIndicator( + padding: EdgeInsetsDirectional.only(end: 8), + ), + ), + ), + ); + } +}