mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-14 17:25:50 +00:00
Applies correct business logic of the sidebar.
This commit is contained in:
@ -20,7 +20,11 @@ class EnergyManagementDataLoadingStrategy implements AnalyticsDataLoadingStrateg
|
|||||||
spaces,
|
spaces,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
FetchEnergyManagementDataHelper.loadEnergyManagementData(context);
|
FetchEnergyManagementDataHelper.loadEnergyManagementData(
|
||||||
|
context,
|
||||||
|
communityId: community.uuid,
|
||||||
|
spaceId: spaces.isNotEmpty ? spaces.first.uuid ?? '' : '',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -36,7 +40,12 @@ class EnergyManagementDataLoadingStrategy implements AnalyticsDataLoadingStrateg
|
|||||||
space.children,
|
space.children,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
FetchEnergyManagementDataHelper.loadEnergyManagementData(context);
|
|
||||||
|
FetchEnergyManagementDataHelper.loadEnergyManagementData(
|
||||||
|
context,
|
||||||
|
communityId: community.uuid,
|
||||||
|
spaceId: space.uuid ?? '',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -45,14 +54,7 @@ class EnergyManagementDataLoadingStrategy implements AnalyticsDataLoadingStrateg
|
|||||||
CommunityModel community,
|
CommunityModel community,
|
||||||
SpaceModel child,
|
SpaceModel child,
|
||||||
) {
|
) {
|
||||||
context.read<SpaceTreeBloc>().add(
|
// Do nothing
|
||||||
OnSpaceSelected(
|
|
||||||
community,
|
|
||||||
child.uuid ?? '',
|
|
||||||
child.children,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
FetchEnergyManagementDataHelper.loadEnergyManagementData(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -17,10 +17,14 @@ class OccupancyDataLoadingStrategy implements AnalyticsDataLoadingStrategy {
|
|||||||
context.read<SpaceTreeBloc>().add(
|
context.read<SpaceTreeBloc>().add(
|
||||||
OnCommunitySelected(
|
OnCommunitySelected(
|
||||||
community.uuid,
|
community.uuid,
|
||||||
spaces,
|
spaces.isNotEmpty ? [spaces.first] : [],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
FetchOccupancyDataHelper.loadOccupancyData(context);
|
FetchOccupancyDataHelper.loadOccupancyData(
|
||||||
|
context,
|
||||||
|
communityId: community.uuid,
|
||||||
|
spaceId: spaces.isNotEmpty ? spaces.first.uuid ?? '' : '',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -29,14 +33,25 @@ class OccupancyDataLoadingStrategy implements AnalyticsDataLoadingStrategy {
|
|||||||
CommunityModel community,
|
CommunityModel community,
|
||||||
SpaceModel space,
|
SpaceModel space,
|
||||||
) {
|
) {
|
||||||
context.read<SpaceTreeBloc>().add(
|
final spaceTreeBloc = context.read<SpaceTreeBloc>();
|
||||||
OnSpaceSelected(
|
final selectedSpacesIds = spaceTreeBloc.state.selectedSpaces;
|
||||||
community,
|
final isSpaceSelected = selectedSpacesIds.contains(space.uuid);
|
||||||
space.uuid ?? '',
|
|
||||||
space.children,
|
if (selectedSpacesIds.isEmpty) {
|
||||||
),
|
spaceTreeBloc.add(OnCommunitySelected(community.uuid, [space]));
|
||||||
);
|
} else if (isSpaceSelected) {
|
||||||
FetchOccupancyDataHelper.loadOccupancyData(context);
|
spaceTreeBloc.add(const SpaceTreeClearSelectionEvent());
|
||||||
|
} else {
|
||||||
|
spaceTreeBloc
|
||||||
|
..add(const SpaceTreeClearSelectionEvent())
|
||||||
|
..add(OnSpaceSelected(community, space.uuid ?? '', []));
|
||||||
|
}
|
||||||
|
|
||||||
|
FetchOccupancyDataHelper.loadOccupancyData(
|
||||||
|
context,
|
||||||
|
communityId: community.uuid,
|
||||||
|
spaceId: space.uuid ?? '',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -45,18 +60,12 @@ class OccupancyDataLoadingStrategy implements AnalyticsDataLoadingStrategy {
|
|||||||
CommunityModel community,
|
CommunityModel community,
|
||||||
SpaceModel child,
|
SpaceModel child,
|
||||||
) {
|
) {
|
||||||
context.read<SpaceTreeBloc>().add(
|
// Do nothing
|
||||||
OnSpaceSelected(
|
|
||||||
community,
|
|
||||||
child.uuid ?? '',
|
|
||||||
child.children,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
FetchOccupancyDataHelper.loadOccupancyData(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void clearData(BuildContext context) {
|
void clearData(BuildContext context) {
|
||||||
context.read<SpaceTreeBloc>().add(const SpaceTreeClearSelectionEvent());
|
context.read<SpaceTreeBloc>().add(const SpaceTreeClearSelectionEvent());
|
||||||
|
// FetchOccupancyDataHelper.clearAllData(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,26 +9,21 @@ class AnalyticsCommunitiesSidebar extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Builder(
|
final selectedTab = context.watch<AnalyticsTabBloc>().state;
|
||||||
builder: (context) {
|
final strategy = AnalyticsDataLoadingStrategyFactory.getStrategy(selectedTab);
|
||||||
final selectedTab = context.read<AnalyticsTabBloc>().state;
|
|
||||||
final strategy =
|
|
||||||
AnalyticsDataLoadingStrategyFactory.getStrategy(selectedTab);
|
|
||||||
|
|
||||||
return Expanded(
|
return Expanded(
|
||||||
child: AnalyticsSpaceTreeView(
|
child: AnalyticsSpaceTreeView(
|
||||||
onSelectCommunity: (community, spaces) {
|
onSelectCommunity: (community, spaces) {
|
||||||
strategy.onCommunitySelected(context, community, spaces);
|
strategy.onCommunitySelected(context, community, spaces);
|
||||||
},
|
},
|
||||||
onSelectSpace: (community, space) {
|
onSelectSpace: (community, space) {
|
||||||
strategy.onSpaceSelected(context, community, space);
|
strategy.onSpaceSelected(context, community, space);
|
||||||
},
|
},
|
||||||
onSelectChildSpace: (community, child) {
|
onSelectChildSpace: (community, child) {
|
||||||
strategy.onChildSpaceSelected(context, community, child);
|
strategy.onChildSpaceSelected(context, community, child);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import 'package:syncrow_web/pages/analytics/modules/analytics/enums/analytics_pa
|
|||||||
import 'package:syncrow_web/pages/analytics/modules/analytics/widgets/analytics_date_filter_button.dart';
|
import 'package:syncrow_web/pages/analytics/modules/analytics/widgets/analytics_date_filter_button.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/analytics/widgets/analytics_page_tab_button.dart';
|
import 'package:syncrow_web/pages/analytics/modules/analytics/widgets/analytics_page_tab_button.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/fetch_energy_management_data_helper.dart';
|
import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/fetch_energy_management_data_helper.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
|
||||||
import 'package:syncrow_web/utils/style.dart';
|
import 'package:syncrow_web/utils/style.dart';
|
||||||
|
|
||||||
class AnalyticsPageTabsAndChildren extends StatelessWidget {
|
class AnalyticsPageTabsAndChildren extends StatelessWidget {
|
||||||
@ -13,6 +14,7 @@ class AnalyticsPageTabsAndChildren extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final spaceTreeState = context.read<SpaceTreeBloc>().state;
|
||||||
return BlocBuilder<AnalyticsTabBloc, AnalyticsPageTab>(
|
return BlocBuilder<AnalyticsTabBloc, AnalyticsPageTab>(
|
||||||
buildWhen: (previous, current) => previous != current,
|
buildWhen: (previous, current) => previous != current,
|
||||||
builder: (context, selectedTab) => Column(
|
builder: (context, selectedTab) => Column(
|
||||||
@ -66,10 +68,14 @@ class AnalyticsPageTabsAndChildren extends StatelessWidget {
|
|||||||
context.read<AnalyticsDatePickerBloc>().add(
|
context.read<AnalyticsDatePickerBloc>().add(
|
||||||
UpdateAnalyticsDatePickerEvent(montlyDate: value),
|
UpdateAnalyticsDatePickerEvent(montlyDate: value),
|
||||||
);
|
);
|
||||||
FetchEnergyManagementDataHelper
|
FetchEnergyManagementDataHelper.loadEnergyManagementData(
|
||||||
.fetchEnergyManagementData(
|
|
||||||
context,
|
context,
|
||||||
selectedDate: value,
|
selectedDate: value,
|
||||||
|
communityId:
|
||||||
|
spaceTreeState.selectedCommunities.firstOrNull ??
|
||||||
|
'',
|
||||||
|
spaceId:
|
||||||
|
spaceTreeState.selectedSpaces.firstOrNull ?? '',
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
selectedDate: context
|
selectedDate: context
|
||||||
|
@ -9,60 +9,38 @@ import 'package:syncrow_web/pages/analytics/modules/energy_management/blocs/tota
|
|||||||
import 'package:syncrow_web/pages/analytics/params/get_energy_consumption_by_phases_param.dart';
|
import 'package:syncrow_web/pages/analytics/params/get_energy_consumption_by_phases_param.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/params/get_energy_consumption_per_device_param.dart';
|
import 'package:syncrow_web/pages/analytics/params/get_energy_consumption_per_device_param.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/params/get_total_energy_consumption_param.dart';
|
import 'package:syncrow_web/pages/analytics/params/get_total_energy_consumption_param.dart';
|
||||||
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
|
|
||||||
|
|
||||||
abstract final class FetchEnergyManagementDataHelper {
|
abstract final class FetchEnergyManagementDataHelper {
|
||||||
const FetchEnergyManagementDataHelper._();
|
const FetchEnergyManagementDataHelper._();
|
||||||
|
|
||||||
static void fetchEnergyManagementData(
|
static const String _powerClampId = 'cb71d6ad-6e29-4eaa-ae3e-1a0d1c5f60fa';
|
||||||
|
|
||||||
|
static void loadEnergyManagementData(
|
||||||
BuildContext context, {
|
BuildContext context, {
|
||||||
|
required String communityId,
|
||||||
|
required String spaceId,
|
||||||
DateTime? selectedDate,
|
DateTime? selectedDate,
|
||||||
}) {
|
}) {
|
||||||
final (selectedCommunities, selectedSpaces) =
|
if (communityId.isEmpty && spaceId.isEmpty) {
|
||||||
getSelectedCommunitiesAndSpaces(context);
|
|
||||||
|
|
||||||
if (selectedCommunities.isEmpty && selectedSpaces.isEmpty) {
|
|
||||||
clearAllData(context);
|
clearAllData(context);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final datePickerState = context.read<AnalyticsDatePickerBloc>().state;
|
final datePickerState = context.read<AnalyticsDatePickerBloc>().state;
|
||||||
|
final selectedDate0 = selectedDate ?? datePickerState.monthlyDate;
|
||||||
|
|
||||||
loadTotalEnergyConsumption(context, selectedDate: datePickerState.monthlyDate);
|
loadTotalEnergyConsumption(
|
||||||
loadEnergyConsumptionByPhases(
|
|
||||||
context,
|
context,
|
||||||
selectedDate: datePickerState.monthlyDate,
|
selectedDate: selectedDate0,
|
||||||
|
communityId: communityId,
|
||||||
|
spaceId: spaceId,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
loadEnergyConsumptionByPhases(context, selectedDate: selectedDate);
|
||||||
|
|
||||||
loadEnergyConsumptionPerDevice(context);
|
loadEnergyConsumptionPerDevice(context);
|
||||||
return;
|
loadRealtimeDeviceChanges(context);
|
||||||
}
|
loadPowerClampInfo(context);
|
||||||
|
|
||||||
static void loadEnergyManagementData(BuildContext context) {
|
|
||||||
final (selectedCommunities, selectedSpaces) =
|
|
||||||
FetchEnergyManagementDataHelper.getSelectedCommunitiesAndSpaces(context);
|
|
||||||
if (selectedCommunities.isEmpty && selectedSpaces.isEmpty) {
|
|
||||||
clearAllData(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
FetchEnergyManagementDataHelper.fetchEnergyManagementData(context,
|
|
||||||
selectedDate: DateTime.now());
|
|
||||||
FetchEnergyManagementDataHelper.loadRealtimeDeviceChanges(context);
|
|
||||||
context.read<PowerClampInfoBloc>().add(const ClearPowerClampInfoEvent());
|
|
||||||
if (selectedCommunities.isEmpty && selectedSpaces.isEmpty) {
|
|
||||||
context.read<PowerClampInfoBloc>().add(
|
|
||||||
const ClearPowerClampInfoEvent(),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
FetchEnergyManagementDataHelper.loadPowerClampInfo(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static (List<String> selectedCommunities, List<String> selectedSpaces)
|
|
||||||
getSelectedCommunitiesAndSpaces(BuildContext context) {
|
|
||||||
final spaceTreeState = context.read<SpaceTreeBloc>().state;
|
|
||||||
final selectedCommunities = spaceTreeState.selectedCommunities;
|
|
||||||
final selectedSpaces = spaceTreeState.selectedSpaces;
|
|
||||||
|
|
||||||
return (selectedCommunities, selectedSpaces);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadEnergyConsumptionByPhases(
|
static void loadEnergyConsumptionByPhases(
|
||||||
@ -81,13 +59,12 @@ abstract final class FetchEnergyManagementDataHelper {
|
|||||||
static void loadTotalEnergyConsumption(
|
static void loadTotalEnergyConsumption(
|
||||||
BuildContext context, {
|
BuildContext context, {
|
||||||
DateTime? selectedDate,
|
DateTime? selectedDate,
|
||||||
|
required String communityId,
|
||||||
|
required String spaceId,
|
||||||
}) {
|
}) {
|
||||||
final (selectedCommunities, selectedSpaces) =
|
|
||||||
getSelectedCommunitiesAndSpaces(context);
|
|
||||||
|
|
||||||
final param = GetTotalEnergyConsumptionParam(
|
final param = GetTotalEnergyConsumptionParam(
|
||||||
spaceId: selectedCommunities.firstOrNull,
|
spaceId: spaceId,
|
||||||
communityId: selectedCommunities.firstOrNull,
|
communityId: communityId,
|
||||||
monthDate: selectedDate,
|
monthDate: selectedDate,
|
||||||
);
|
);
|
||||||
context.read<TotalEnergyConsumptionBloc>().add(
|
context.read<TotalEnergyConsumptionBloc>().add(
|
||||||
@ -104,13 +81,13 @@ abstract final class FetchEnergyManagementDataHelper {
|
|||||||
|
|
||||||
static void loadPowerClampInfo(BuildContext context) {
|
static void loadPowerClampInfo(BuildContext context) {
|
||||||
context.read<PowerClampInfoBloc>().add(
|
context.read<PowerClampInfoBloc>().add(
|
||||||
const LoadPowerClampInfoEvent('cb71d6ad-6e29-4eaa-ae3e-1a0d1c5f60fa'),
|
const LoadPowerClampInfoEvent(_powerClampId),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadRealtimeDeviceChanges(BuildContext context) {
|
static void loadRealtimeDeviceChanges(BuildContext context) {
|
||||||
context.read<RealtimeDeviceChangesBloc>().add(
|
context.read<RealtimeDeviceChangesBloc>().add(
|
||||||
const RealtimeDeviceChangesStarted('cb71d6ad-6e29-4eaa-ae3e-1a0d1c5f60fa'),
|
const RealtimeDeviceChangesStarted(_powerClampId),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,6 +99,7 @@ abstract final class FetchEnergyManagementDataHelper {
|
|||||||
context.read<PowerClampInfoBloc>().add(
|
context.read<PowerClampInfoBloc>().add(
|
||||||
const ClearPowerClampInfoEvent(),
|
const ClearPowerClampInfoEvent(),
|
||||||
);
|
);
|
||||||
|
|
||||||
context.read<EnergyConsumptionPerDeviceBloc>().add(
|
context.read<EnergyConsumptionPerDeviceBloc>().add(
|
||||||
const ClearEnergyConsumptionPerDeviceEvent(),
|
const ClearEnergyConsumptionPerDeviceEvent(),
|
||||||
);
|
);
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/fetch_energy_management_data_helper.dart';
|
import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/fetch_energy_management_data_helper.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart';
|
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_widget.dart';
|
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_widget.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart';
|
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
|
||||||
|
|
||||||
class AnalyticsEnergyManagementView extends StatefulWidget {
|
class AnalyticsEnergyManagementView extends StatefulWidget {
|
||||||
const AnalyticsEnergyManagementView({super.key});
|
const AnalyticsEnergyManagementView({super.key});
|
||||||
@ -16,7 +18,14 @@ class _AnalyticsEnergyManagementViewState
|
|||||||
extends State<AnalyticsEnergyManagementView> {
|
extends State<AnalyticsEnergyManagementView> {
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
FetchEnergyManagementDataHelper.loadEnergyManagementData(context);
|
final spaceTreeBloc = context.read<SpaceTreeBloc>();
|
||||||
|
final communityId = spaceTreeBloc.state.selectedCommunities.firstOrNull;
|
||||||
|
final spaceId = spaceTreeBloc.state.selectedSpaces.firstOrNull;
|
||||||
|
FetchEnergyManagementDataHelper.loadEnergyManagementData(
|
||||||
|
context,
|
||||||
|
communityId: communityId ?? '',
|
||||||
|
spaceId: spaceId ?? '',
|
||||||
|
);
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/analytics/blocs/analytics_date_picker_bloc/analytics_date_picker_bloc.dart';
|
import 'package:syncrow_web/pages/analytics/modules/analytics/blocs/analytics_date_picker_bloc/analytics_date_picker_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/blocs/realtime_device_changes/realtime_device_changes_bloc.dart';
|
import 'package:syncrow_web/pages/analytics/modules/energy_management/blocs/realtime_device_changes/realtime_device_changes_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/fetch_energy_management_data_helper.dart';
|
|
||||||
import 'package:syncrow_web/pages/analytics/modules/occupancy/blocs/occupancy/occupancy_bloc.dart';
|
import 'package:syncrow_web/pages/analytics/modules/occupancy/blocs/occupancy/occupancy_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/occupancy/blocs/occupancy_heat_map/occupancy_heat_map_bloc.dart';
|
import 'package:syncrow_web/pages/analytics/modules/occupancy/blocs/occupancy_heat_map/occupancy_heat_map_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/params/get_occupancy_heat_map_param.dart';
|
import 'package:syncrow_web/pages/analytics/params/get_occupancy_heat_map_param.dart';
|
||||||
@ -11,10 +10,12 @@ import 'package:syncrow_web/pages/analytics/params/get_occupancy_param.dart';
|
|||||||
abstract final class FetchOccupancyDataHelper {
|
abstract final class FetchOccupancyDataHelper {
|
||||||
const FetchOccupancyDataHelper._();
|
const FetchOccupancyDataHelper._();
|
||||||
|
|
||||||
static void loadOccupancyData(BuildContext context) {
|
static void loadOccupancyData(
|
||||||
final (selectedCommunities, selectedSpaces) =
|
BuildContext context, {
|
||||||
FetchEnergyManagementDataHelper.getSelectedCommunitiesAndSpaces(context);
|
required String communityId,
|
||||||
if (selectedCommunities.isEmpty && selectedSpaces.isEmpty) {
|
required String spaceId,
|
||||||
|
}) {
|
||||||
|
if (communityId.isEmpty && spaceId.isEmpty) {
|
||||||
clearAllData(context);
|
clearAllData(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,8 +26,8 @@ abstract final class FetchOccupancyDataHelper {
|
|||||||
GetOccupancyParam(
|
GetOccupancyParam(
|
||||||
monthDate:
|
monthDate:
|
||||||
'${datePickerState.monthlyDate.year}-${datePickerState.monthlyDate.month}',
|
'${datePickerState.monthlyDate.year}-${datePickerState.monthlyDate.month}',
|
||||||
spaceUuid: selectedSpaces.firstOrNull,
|
spaceUuid: spaceId,
|
||||||
communityUuid: selectedCommunities.firstOrNull ?? '',
|
communityUuid: communityId,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -34,9 +35,8 @@ abstract final class FetchOccupancyDataHelper {
|
|||||||
context.read<OccupancyHeatMapBloc>().add(
|
context.read<OccupancyHeatMapBloc>().add(
|
||||||
LoadOccupancyHeatMapEvent(
|
LoadOccupancyHeatMapEvent(
|
||||||
GetOccupancyHeatMapParam(
|
GetOccupancyHeatMapParam(
|
||||||
spaceId: selectedSpaces.isNotEmpty ? selectedSpaces.first : '',
|
spaceId: spaceId,
|
||||||
communityId:
|
communityId: communityId,
|
||||||
selectedCommunities.isNotEmpty ? selectedCommunities.first : '',
|
|
||||||
year: datePickerState.yearlyDate,
|
year: datePickerState.yearlyDate,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -7,6 +7,7 @@ import 'package:syncrow_web/pages/analytics/modules/occupancy/blocs/occupancy/oc
|
|||||||
import 'package:syncrow_web/pages/analytics/modules/occupancy/helpers/fetch_occupancy_data_helper.dart';
|
import 'package:syncrow_web/pages/analytics/modules/occupancy/helpers/fetch_occupancy_data_helper.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart';
|
import 'package:syncrow_web/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart';
|
import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
|
||||||
import 'package:syncrow_web/utils/style.dart';
|
import 'package:syncrow_web/utils/style.dart';
|
||||||
|
|
||||||
class OccupancyChartBox extends StatelessWidget {
|
class OccupancyChartBox extends StatelessWidget {
|
||||||
@ -14,6 +15,7 @@ class OccupancyChartBox extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final spaceTreeState = context.watch<SpaceTreeBloc>().state;
|
||||||
return BlocBuilder<OccupancyBloc, OccupancyState>(
|
return BlocBuilder<OccupancyBloc, OccupancyState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return Container(
|
return Container(
|
||||||
@ -45,7 +47,11 @@ class OccupancyChartBox extends StatelessWidget {
|
|||||||
context.read<AnalyticsDatePickerBloc>().add(
|
context.read<AnalyticsDatePickerBloc>().add(
|
||||||
UpdateAnalyticsDatePickerEvent(montlyDate: value),
|
UpdateAnalyticsDatePickerEvent(montlyDate: value),
|
||||||
);
|
);
|
||||||
FetchOccupancyDataHelper.loadOccupancyData(context);
|
FetchOccupancyDataHelper.loadOccupancyData(
|
||||||
|
context,
|
||||||
|
communityId: spaceTreeState.selectedCommunities.firstOrNull ?? '',
|
||||||
|
spaceId: spaceTreeState.selectedSpaces.firstOrNull ?? '',
|
||||||
|
);
|
||||||
},
|
},
|
||||||
selectedDate: context
|
selectedDate: context
|
||||||
.watch<AnalyticsDatePickerBloc>()
|
.watch<AnalyticsDatePickerBloc>()
|
||||||
|
@ -7,6 +7,7 @@ import 'package:syncrow_web/pages/analytics/modules/occupancy/blocs/occupancy_he
|
|||||||
import 'package:syncrow_web/pages/analytics/modules/occupancy/helpers/fetch_occupancy_data_helper.dart';
|
import 'package:syncrow_web/pages/analytics/modules/occupancy/helpers/fetch_occupancy_data_helper.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/occupancy/widgets/occupancy_heat_map.dart';
|
import 'package:syncrow_web/pages/analytics/modules/occupancy/widgets/occupancy_heat_map.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart';
|
import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
|
||||||
import 'package:syncrow_web/utils/style.dart';
|
import 'package:syncrow_web/utils/style.dart';
|
||||||
|
|
||||||
class OccupancyHeatMapBox extends StatelessWidget {
|
class OccupancyHeatMapBox extends StatelessWidget {
|
||||||
@ -14,6 +15,7 @@ class OccupancyHeatMapBox extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final spaceTreeState = context.watch<SpaceTreeBloc>().state;
|
||||||
return BlocBuilder<OccupancyHeatMapBloc, OccupancyHeatMapState>(
|
return BlocBuilder<OccupancyHeatMapBloc, OccupancyHeatMapState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return Container(
|
return Container(
|
||||||
@ -45,7 +47,12 @@ class OccupancyHeatMapBox extends StatelessWidget {
|
|||||||
context.read<AnalyticsDatePickerBloc>().add(
|
context.read<AnalyticsDatePickerBloc>().add(
|
||||||
UpdateAnalyticsDatePickerEvent(yearlyDate: value),
|
UpdateAnalyticsDatePickerEvent(yearlyDate: value),
|
||||||
);
|
);
|
||||||
FetchOccupancyDataHelper.loadOccupancyData(context);
|
FetchOccupancyDataHelper.loadOccupancyData(
|
||||||
|
context,
|
||||||
|
communityId:
|
||||||
|
spaceTreeState.selectedCommunities.firstOrNull ?? '',
|
||||||
|
spaceId: spaceTreeState.selectedSpaces.firstOrNull ?? '',
|
||||||
|
);
|
||||||
},
|
},
|
||||||
datePickerType: DatePickerType.year,
|
datePickerType: DatePickerType.year,
|
||||||
selectedDate: context
|
selectedDate: context
|
||||||
|
Reference in New Issue
Block a user