From e6fe9f35b04f09f3bc04034936da5c2f4cac50c7 Mon Sep 17 00:00:00 2001 From: Rafeek-Khoudare Date: Tue, 1 Jul 2025 08:41:38 +0300 Subject: [PATCH 1/6] problem fixed should reset filters when select space or community --- .../all_devices/widgets/device_managment_body.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pages/device_managment/all_devices/widgets/device_managment_body.dart b/lib/pages/device_managment/all_devices/widgets/device_managment_body.dart index 7ca33d1d..5b709540 100644 --- a/lib/pages/device_managment/all_devices/widgets/device_managment_body.dart +++ b/lib/pages/device_managment/all_devices/widgets/device_managment_body.dart @@ -68,6 +68,7 @@ class DeviceManagementBody extends StatelessWidget with HelperResponsiveLayout { children: [ Expanded(child: SpaceTreeView( onSelect: () { + context.read().add(ResetFilters()); context.read().add(FetchDevices(context)); }, )), From c07bae5cbc89d23671ae6eba7e150b7cd25612fa Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Tue, 1 Jul 2025 09:32:00 +0300 Subject: [PATCH 2/6] align bar charts to start. --- .../modules/air_quality/widgets/aqi_distribution_chart.dart | 1 + .../analytics/modules/occupancy/widgets/occupancy_chart.dart | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/pages/analytics/modules/air_quality/widgets/aqi_distribution_chart.dart b/lib/pages/analytics/modules/air_quality/widgets/aqi_distribution_chart.dart index 4fdd8a2a..20365325 100644 --- a/lib/pages/analytics/modules/air_quality/widgets/aqi_distribution_chart.dart +++ b/lib/pages/analytics/modules/air_quality/widgets/aqi_distribution_chart.dart @@ -20,6 +20,7 @@ class AqiDistributionChart extends StatelessWidget { return BarChart( BarChartData( maxY: 100.1, + alignment: BarChartAlignment.start, gridData: EnergyManagementChartsHelper.gridData( horizontalInterval: 20, ), diff --git a/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart b/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart index 1205a66e..23cc527d 100644 --- a/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart +++ b/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart @@ -18,6 +18,7 @@ class OccupancyChart extends StatelessWidget { return BarChart( BarChartData( maxY: 100.001, + alignment: BarChartAlignment.start, gridData: EnergyManagementChartsHelper.gridData().copyWith( checkToShowHorizontalLine: (value) => true, horizontalInterval: 20, From 037895844a37c3fd7ab0fc0cc846f960982e350e Mon Sep 17 00:00:00 2001 From: mohammad Date: Tue, 1 Jul 2025 09:44:59 +0300 Subject: [PATCH 3/6] Add EnergyConsumptionPage to SmartPowerDeviceControl for enhanced energy data visualization --- .../view/smart_power_device_control.dart | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/pages/device_managment/power_clamp/view/smart_power_device_control.dart b/lib/pages/device_managment/power_clamp/view/smart_power_device_control.dart index 11d1cc8f..03202ba0 100644 --- a/lib/pages/device_managment/power_clamp/view/smart_power_device_control.dart +++ b/lib/pages/device_managment/power_clamp/view/smart_power_device_control.dart @@ -277,6 +277,32 @@ class SmartPowerDeviceControl extends StatelessWidget totalConsumption: 10000, date: blocProvider.formattedDate, ), + EnergyConsumptionPage( + formattedDate: + '${blocProvider.dateTime!.day}/${blocProvider.dateTime!.month}/${blocProvider.dateTime!.year} ${blocProvider.endChartDate}', + onTap: () { + blocProvider.add(SelectDateEvent(context: context)); + }, + widget: blocProvider.dateSwitcher(), + chartData: blocProvider.energyDataList.isNotEmpty + ? blocProvider.energyDataList + : [ + EnergyData('12:00 AM', 4.0), + EnergyData('01:00 AM', 6.5), + EnergyData('02:00 AM', 3.8), + EnergyData('03:00 AM', 3.2), + EnergyData('04:00 AM', 6.0), + EnergyData('05:00 AM', 3.4), + EnergyData('06:00 AM', 5.2), + EnergyData('07:00 AM', 3.5), + EnergyData('08:00 AM', 6.8), + EnergyData('09:00 AM', 5.6), + EnergyData('10:00 AM', 3.9), + EnergyData('11:00 AM', 4.0), + ], + totalConsumption: 10000, + date: blocProvider.formattedDate, + ), ], ), ), From 9c9b7d99dcbb9221ece7c0506190caf130606aef Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Tue, 1 Jul 2025 09:55:38 +0300 Subject: [PATCH 4/6] enhance sizing of energy management view. --- .../views/analytics_energy_management_view.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pages/analytics/modules/energy_management/views/analytics_energy_management_view.dart b/lib/pages/analytics/modules/energy_management/views/analytics_energy_management_view.dart index 09fb6155..a5af9e10 100644 --- a/lib/pages/analytics/modules/energy_management/views/analytics_energy_management_view.dart +++ b/lib/pages/analytics/modules/energy_management/views/analytics_energy_management_view.dart @@ -38,7 +38,7 @@ class AnalyticsEnergyManagementView extends StatelessWidget { return SingleChildScrollView( child: Container( padding: _padding, - height: MediaQuery.sizeOf(context).height * 1, + height: MediaQuery.sizeOf(context).height * 1.05, child: const Column( children: [ Expanded( From 9f86b8d63869ddb81927659e21b20e6c1d84f7e4 Mon Sep 17 00:00:00 2001 From: mohammad Date: Tue, 1 Jul 2025 11:14:02 +0300 Subject: [PATCH 5/6] remove countdownRemaining from ScheduleLoaded state --- .../device_managment/schedule_device/bloc/schedule_bloc.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pages/device_managment/schedule_device/bloc/schedule_bloc.dart b/lib/pages/device_managment/schedule_device/bloc/schedule_bloc.dart index 65773590..62bef920 100644 --- a/lib/pages/device_managment/schedule_device/bloc/schedule_bloc.dart +++ b/lib/pages/device_managment/schedule_device/bloc/schedule_bloc.dart @@ -232,7 +232,6 @@ class ScheduleBloc extends Bloc { selectedDays: List.filled(7, false), functionOn: false, isEditing: false, - countdownRemaining: Duration.zero, )); } else { emit(ScheduleLoaded( From 445d4facab9548b97345d3fb6401c8fef597d1f8 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Tue, 1 Jul 2025 16:28:52 +0300 Subject: [PATCH 6/6] 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(); + } +}