diff --git a/lib/pages/analytics/modules/analytics/widgets/analytics_page_tabs_and_children.dart b/lib/pages/analytics/modules/analytics/widgets/analytics_page_tabs_and_children.dart index 2a063599..77871134 100644 --- a/lib/pages/analytics/modules/analytics/widgets/analytics_page_tabs_and_children.dart +++ b/lib/pages/analytics/modules/analytics/widgets/analytics_page_tabs_and_children.dart @@ -14,7 +14,6 @@ class AnalyticsPageTabsAndChildren extends StatelessWidget { @override Widget build(BuildContext context) { - final spaceTreeState = context.read().state; return BlocBuilder( buildWhen: (previous, current) => previous != current, builder: (context, selectedTab) => Column( @@ -68,15 +67,21 @@ class AnalyticsPageTabsAndChildren extends StatelessWidget { context.read().add( UpdateAnalyticsDatePickerEvent(montlyDate: value), ); - FetchEnergyManagementDataHelper.loadEnergyManagementData( - context, - selectedDate: value, - communityId: - spaceTreeState.selectedCommunities.firstOrNull ?? - '', - spaceId: - spaceTreeState.selectedSpaces.firstOrNull ?? '', - ); + + final spaceTreeState = + context.read().state; + if (spaceTreeState.selectedSpaces.isNotEmpty) { + FetchEnergyManagementDataHelper + .loadEnergyManagementData( + context, + selectedDate: value, + communityId: + spaceTreeState.selectedCommunities.firstOrNull ?? + '', + spaceId: + spaceTreeState.selectedSpaces.firstOrNull ?? '', + ); + } }, selectedDate: context .watch() diff --git a/lib/pages/analytics/modules/occupancy/helpers/fetch_occupancy_data_helper.dart b/lib/pages/analytics/modules/occupancy/helpers/fetch_occupancy_data_helper.dart index be21027b..5882ada5 100644 --- a/lib/pages/analytics/modules/occupancy/helpers/fetch_occupancy_data_helper.dart +++ b/lib/pages/analytics/modules/occupancy/helpers/fetch_occupancy_data_helper.dart @@ -28,25 +28,13 @@ abstract final class FetchOccupancyDataHelper { loadAnalyticsDevices(context, communityUuid: communityId, spaceUuid: spaceId); final selectedDevice = context.read().state.selectedDevice; - context.read().add( - LoadOccupancyEvent( - GetOccupancyParam( - monthDate: - '${datePickerState.monthlyDate.year}-${datePickerState.monthlyDate.month}', - spaceUuid: spaceId, - communityUuid: communityId, - ), - ), - ); - - context.read().add( - LoadOccupancyHeatMapEvent( - GetOccupancyHeatMapParam( - spaceUuid: spaceId, - year: datePickerState.yearlyDate, - ), - ), - ); + loadOccupancyChartData( + context, + communityUuid: communityId, + spaceUuid: spaceId, + date: datePickerState.monthlyDate, + ); + loadHeatMapData(context, spaceUuid: spaceId, year: datePickerState.yearlyDate); if (selectedDevice case final AnalyticsDevice device) { context.read() @@ -57,6 +45,35 @@ abstract final class FetchOccupancyDataHelper { } } + static void loadHeatMapData( + BuildContext context, { + required String spaceUuid, + required DateTime year, + }) { + context.read().add( + LoadOccupancyHeatMapEvent( + GetOccupancyHeatMapParam(spaceUuid: spaceUuid, year: year), + ), + ); + } + + static void loadOccupancyChartData( + BuildContext context, { + required String communityUuid, + required String spaceUuid, + required DateTime date, + }) { + context.read().add( + LoadOccupancyEvent( + GetOccupancyParam( + monthDate: '${date.year}-${date.month}', + spaceUuid: spaceUuid, + communityUuid: communityUuid, + ), + ), + ); + } + static void loadAnalyticsDevices( BuildContext context, { required String communityUuid, diff --git a/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart_box.dart b/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart_box.dart index 464a05dd..8c41da48 100644 --- a/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart_box.dart +++ b/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart_box.dart @@ -47,11 +47,17 @@ class OccupancyChartBox extends StatelessWidget { context.read().add( UpdateAnalyticsDatePickerEvent(montlyDate: value), ); - FetchOccupancyDataHelper.loadOccupancyData( - context, - communityId: spaceTreeState.selectedCommunities.firstOrNull ?? '', - spaceId: spaceTreeState.selectedSpaces.firstOrNull ?? '', - ); + if (spaceTreeState.selectedSpaces.isNotEmpty) { + FetchOccupancyDataHelper.loadOccupancyChartData( + context, + communityUuid: + spaceTreeState.selectedCommunities.firstOrNull ?? + '', + spaceUuid: + spaceTreeState.selectedSpaces.firstOrNull ?? '', + date: value, + ); + } }, selectedDate: context .watch() diff --git a/lib/pages/analytics/modules/occupancy/widgets/occupancy_heat_map_box.dart b/lib/pages/analytics/modules/occupancy/widgets/occupancy_heat_map_box.dart index d52604bf..cab9eab4 100644 --- a/lib/pages/analytics/modules/occupancy/widgets/occupancy_heat_map_box.dart +++ b/lib/pages/analytics/modules/occupancy/widgets/occupancy_heat_map_box.dart @@ -47,12 +47,14 @@ class OccupancyHeatMapBox extends StatelessWidget { context.read().add( UpdateAnalyticsDatePickerEvent(yearlyDate: value), ); - FetchOccupancyDataHelper.loadOccupancyData( - context, - communityId: - spaceTreeState.selectedCommunities.firstOrNull ?? '', - spaceId: spaceTreeState.selectedSpaces.firstOrNull ?? '', - ); + if (spaceTreeState.selectedSpaces.isNotEmpty) { + FetchOccupancyDataHelper.loadHeatMapData( + context, + spaceUuid: + spaceTreeState.selectedSpaces.firstOrNull ?? '', + year: value, + ); + } }, datePickerType: DatePickerType.year, selectedDate: context diff --git a/lib/pages/analytics/services/analytics_devices/remote_occupancy_analytics_devices_service.dart b/lib/pages/analytics/services/analytics_devices/remote_occupancy_analytics_devices_service.dart index 95a4aacf..91bbe1f4 100644 --- a/lib/pages/analytics/services/analytics_devices/remote_occupancy_analytics_devices_service.dart +++ b/lib/pages/analytics/services/analytics_devices/remote_occupancy_analytics_devices_service.dart @@ -39,7 +39,6 @@ class RemoteOccupancyAnalyticsDevicesService implements AnalyticsDevicesService path: '/projects/$projectUuid/communities/${param.communityUuid}/spaces/${param.spaceUuid}/devices', queryParameters: { - 'requestType': param.requestType.name, 'communityUuid': param.communityUuid, 'spaceUuid': param.spaceUuid, 'productType': param.deviceTypes.first,