diff --git a/assets/images/autocad_occupancy_image.png b/assets/images/autocad_occupancy_image.png new file mode 100644 index 00000000..39d9625b Binary files /dev/null and b/assets/images/autocad_occupancy_image.png differ 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 f88febcc..09fb6155 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 @@ -46,7 +46,7 @@ class AnalyticsEnergyManagementView extends StatelessWidget { spacing: 32, children: [ Expanded( - flex: 2, + flex: 7, child: Column( spacing: 20, children: [ @@ -55,7 +55,7 @@ class AnalyticsEnergyManagementView extends StatelessWidget { ], ), ), - Expanded(child: PowerClampEnergyDataWidget()), + Expanded(flex: 4, child: PowerClampEnergyDataWidget()), ], ), ), diff --git a/lib/pages/analytics/modules/occupancy/views/analytics_occupancy_view.dart b/lib/pages/analytics/modules/occupancy/views/analytics_occupancy_view.dart index 679c9927..3a025254 100644 --- a/lib/pages/analytics/modules/occupancy/views/analytics_occupancy_view.dart +++ b/lib/pages/analytics/modules/occupancy/views/analytics_occupancy_view.dart @@ -31,12 +31,12 @@ class AnalyticsOccupancyView extends StatelessWidget { return SingleChildScrollView( child: Container( padding: _padding, - height: height * 0.9, + height: height * 1, child: const Row( spacing: 32, children: [ Expanded( - flex: 5, + flex: 7, child: Column( spacing: 20, children: [ @@ -45,7 +45,7 @@ class AnalyticsOccupancyView extends StatelessWidget { ], ), ), - Expanded(flex: 2, child: OccupancyEndSideBar()), + Expanded(flex: 4, child: OccupancyEndSideBar()), ], ), ), diff --git a/lib/pages/analytics/modules/occupancy/widgets/occupancy_end_side_bar.dart b/lib/pages/analytics/modules/occupancy/widgets/occupancy_end_side_bar.dart index b3f162fa..3dd01bee 100644 --- a/lib/pages/analytics/modules/occupancy/widgets/occupancy_end_side_bar.dart +++ b/lib/pages/analytics/modules/occupancy/widgets/occupancy_end_side_bar.dart @@ -24,37 +24,45 @@ class OccupancyEndSideBar extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ const AnalyticsSidebarHeader(title: 'Presnce Sensor'), - SizedBox( - height: MediaQuery.sizeOf(context).height * 0.2, - child: PowerClampEnergyStatusWidget( - status: [ - PowerClampEnergyStatus( - iconPath: Assets.presenceState, - title: 'Presence Status', - value: _valueFromCode( - 'presence_state', - state.deviceStatusList, + Expanded( + child: SizedBox( + // height: MediaQuery.sizeOf(context).height * 0.2, + child: PowerClampEnergyStatusWidget( + status: [ + PowerClampEnergyStatus( + iconPath: Assets.presenceState, + title: 'Presence Status', + value: _valueFromCode( + 'presence_state', + state.deviceStatusList, + ), + unit: '', ), - unit: '', - ), - PowerClampEnergyStatus( - iconPath: Assets.presenceTimeIcon, - title: 'Presence Time', - value: - '${_valueFromCode('none_body_time', state.deviceStatusList)} Min', - unit: '', - ), - PowerClampEnergyStatus( - iconPath: Assets.currentDistanceIcon, - title: 'Detection Distance', - value: - '${_valueFromCode('space_move_val', state.deviceStatusList)} M', - unit: '', - ), - ], + PowerClampEnergyStatus( + iconPath: Assets.presenceTimeIcon, + title: 'Presence Time', + value: + '${_valueFromCode('none_body_time', state.deviceStatusList)} Min', + unit: '', + ), + PowerClampEnergyStatus( + iconPath: Assets.currentDistanceIcon, + title: 'Detection Distance', + value: + '${_valueFromCode('space_move_val', state.deviceStatusList)} M', + unit: '', + ), + ], + ), ), ), const SizedBox(height: 20), + Expanded( + flex: 2, + child: FittedBox( + child: Image.asset(Assets.autocadOccupancyImage), + ), + ), ], ), ); diff --git a/lib/pages/device_managment/all_devices/models/devices_model.dart b/lib/pages/device_managment/all_devices/models/devices_model.dart index 808a683f..e491214d 100644 --- a/lib/pages/device_managment/all_devices/models/devices_model.dart +++ b/lib/pages/device_managment/all_devices/models/devices_model.dart @@ -6,6 +6,7 @@ import 'package:syncrow_web/pages/device_managment/all_devices/models/device_tag import 'package:syncrow_web/pages/device_managment/all_devices/models/room.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/unit.dart'; import 'package:syncrow_web/pages/routines/models/ac/ac_function.dart'; +import 'package:syncrow_web/pages/routines/models/curtain/curtain_function.dart'; import 'package:syncrow_web/pages/routines/models/device_functions.dart'; import 'package:syncrow_web/pages/routines/models/flush/flush_functions.dart'; import 'package:syncrow_web/pages/routines/models/gang_switches/one_gang_switch/one_gang_switch.dart'; @@ -359,6 +360,14 @@ SOS uuid: uuid ?? '', name: name ?? '', ); + case 'CUR': + return [ + ControlCurtainFunction( + deviceId: uuid ?? '', + deviceName: name ?? '', + type: 'BOTH', + ) + ]; case 'NCPS': return [ FlushPresenceDelayFunction( @@ -441,15 +450,10 @@ SOS VoltageCStatusFunction( deviceId: uuid ?? '', deviceName: name ?? '', type: 'IF'), CurrentCStatusFunction( - deviceId: uuid ?? '', - deviceName: name ?? '', - type: 'IF'), + deviceId: uuid ?? '', deviceName: name ?? '', type: 'IF'), PowerFactorCStatusFunction( - deviceId: uuid ?? '', - deviceName: name ?? '', - type: 'IF'), + deviceId: uuid ?? '', deviceName: name ?? '', type: 'IF'), ]; - default: return []; } diff --git a/lib/pages/routines/helper/dialog_helper/device_dialog_helper.dart b/lib/pages/routines/helper/dialog_helper/device_dialog_helper.dart index 013626d8..5e313d86 100644 --- a/lib/pages/routines/helper/dialog_helper/device_dialog_helper.dart +++ b/lib/pages/routines/helper/dialog_helper/device_dialog_helper.dart @@ -4,6 +4,7 @@ import 'package:syncrow_web/pages/routines/bloc/routine_bloc/routine_bloc.dart'; import 'package:syncrow_web/pages/routines/models/device_functions.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/ac_dialog.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/ceiling_sensor/ceiling_sensor_helper.dart'; +import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/curtain_dialog.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/flush_presence_sensor/flush_presence_sensor.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/gateway/gateway_helper.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/one_gang_switch_dialog.dart'; @@ -26,7 +27,7 @@ class DeviceDialogHelper { final result = await _getDialogForDeviceType( dialogType: dialogType, context: context, - productType: data['productType'], + productType: data['productType'] as String, data: data, functions: functions, removeComparetors: removeComparetors, @@ -65,7 +66,14 @@ class DeviceDialogHelper { removeComparetors: removeComparetors, dialogType: dialogType, ); - + case 'CUR': + return CurtainHelper.showControlDialog( + dialogType: dialogType, + context: context, + functions: functions, + uniqueCustomId: data['uniqueCustomId'], + device: data['device'], + ); case '1G': return OneGangSwitchHelper.showSwitchFunctionsDialog( dialogType: dialogType, diff --git a/lib/pages/routines/models/curtain/curtain_function.dart b/lib/pages/routines/models/curtain/curtain_function.dart new file mode 100644 index 00000000..e0689e5e --- /dev/null +++ b/lib/pages/routines/models/curtain/curtain_function.dart @@ -0,0 +1,49 @@ +import 'package:syncrow_web/pages/device_managment/curtain/model/curtain_model.dart'; +import 'package:syncrow_web/pages/routines/models/curtain/curtain_opertion_value.dart'; +import 'package:syncrow_web/pages/routines/models/device_functions.dart' + show DeviceFunction; +import 'package:syncrow_web/utils/constants/app_enum.dart'; +import 'package:syncrow_web/utils/constants/assets.dart'; + +abstract class CurtainFunction extends DeviceFunction { + final String type; + CurtainFunction({ + required super.deviceId, + required super.deviceName, + required this.type, + required super.code, + required super.operationName, + required super.icon, + }); + List getOperationalValues(); +} + +class ControlCurtainFunction extends CurtainFunction { + ControlCurtainFunction({ + required super.deviceId, + required super.deviceName, + required super.type, + super.code = 'control', + super.operationName = 'Control', + super.icon = Assets.curtain, + }); + + @override + List getOperationalValues() => [ + CurtainOperationalValue( + icon: Assets.curtain, + description: 'OPEN', + value: 'open', + ), + CurtainOperationalValue( + icon: Assets.curtain, + description: 'STOP', + value: 'stop', + ), + CurtainOperationalValue( + icon: Assets.curtain, + description: 'CLOSE', + value: 'close', + ) + ]; +} diff --git a/lib/pages/routines/models/curtain/curtain_opertion_value.dart b/lib/pages/routines/models/curtain/curtain_opertion_value.dart new file mode 100644 index 00000000..faa81cfd --- /dev/null +++ b/lib/pages/routines/models/curtain/curtain_opertion_value.dart @@ -0,0 +1,11 @@ +class CurtainOperationalValue { + final String icon; + final String description; + final String value; + + CurtainOperationalValue({ + required this.icon, + required this.description, + required this.value, + }); +} diff --git a/lib/pages/routines/widgets/if_container.dart b/lib/pages/routines/widgets/if_container.dart index da77c7c2..a85e25bc 100644 --- a/lib/pages/routines/widgets/if_container.dart +++ b/lib/pages/routines/widgets/if_container.dart @@ -148,6 +148,7 @@ class IfContainer extends StatelessWidget { 'NCPS', 'WH', 'PC', + 'CUR', ].contains(mutableData['productType'])) { context .read() diff --git a/lib/pages/routines/widgets/routine_devices.dart b/lib/pages/routines/widgets/routine_devices.dart index f0b77467..f260b262 100644 --- a/lib/pages/routines/widgets/routine_devices.dart +++ b/lib/pages/routines/widgets/routine_devices.dart @@ -28,6 +28,7 @@ class _RoutineDevicesState extends State { 'NCPS', 'WH', 'PC', + 'CUR', }; @override diff --git a/lib/pages/routines/widgets/routine_dialogs/curtain_dialog.dart b/lib/pages/routines/widgets/routine_dialogs/curtain_dialog.dart new file mode 100644 index 00000000..bdf8660d --- /dev/null +++ b/lib/pages/routines/widgets/routine_dialogs/curtain_dialog.dart @@ -0,0 +1,270 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; +import 'package:syncrow_web/pages/routines/bloc/functions_bloc/functions_bloc_bloc.dart'; +import 'package:syncrow_web/pages/routines/bloc/routine_bloc/routine_bloc.dart'; +import 'package:syncrow_web/pages/routines/models/curtain/curtain_function.dart'; +import 'package:syncrow_web/pages/routines/models/curtain/curtain_opertion_value.dart'; +import 'package:syncrow_web/pages/routines/models/device_functions.dart'; +import 'package:syncrow_web/pages/routines/widgets/dialog_footer.dart'; +import 'package:syncrow_web/pages/routines/widgets/dialog_header.dart'; +import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/helpers/routine_tap_function_helper.dart'; +import 'package:syncrow_web/utils/color_manager.dart'; +import 'package:syncrow_web/utils/extension/build_context_x.dart'; + +class CurtainHelper { + static Future?> showControlDialog({ + required String dialogType, + required BuildContext context, + required List functions, + required String uniqueCustomId, + required AllDevicesModel? device, + }) async { + List curtainFunctions = + functions.whereType().where((function) { + if (dialogType == 'THEN') { + return function.type == 'THEN' || function.type == 'BOTH'; + } + return function.type == 'IF' || function.type == 'BOTH'; + }).toList(); + return showDialog?>( + context: context, + builder: (context) => BlocProvider( + create: (_) => FunctionBloc()..add(const InitializeFunctions([])), + child: AlertDialog( + contentPadding: EdgeInsets.zero, + content: BlocBuilder( + builder: (context, state) { + final selectedFunction = state.selectedFunction; + final selectedOperationName = state.selectedOperationName; + final selectedFunctionData = state.addedFunctions + .firstWhere((f) => f.functionCode == selectedFunction, + orElse: () => DeviceFunctionData( + entityId: '', + functionCode: selectedFunction ?? '', + operationName: '', + value: null, + )); + + return Container( + width: selectedFunction != null ? 600 : 360, + height: 450, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20), + ), + padding: const EdgeInsets.only(top: 20), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const DialogHeader('AC Functions'), + Expanded( + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // Function list + SizedBox( + width: selectedFunction != null ? 320 : 360, + child: _buildFunctionsList( + context: context, + curtainFunctions: curtainFunctions, + onFunctionSelected: + (functionCode, operationName) { + RoutineTapFunctionHelper.onTapFunction( + context, + functionCode: functionCode, + functionOperationName: operationName, + functionValueDescription: + selectedFunctionData.valueDescription, + deviceUuid: device?.uuid, + codesToAddIntoFunctionsWithDefaultValue: [ + 'temp_set', + 'temp_current', + ], + defaultValue: 0); + }), + ), + // Value selector + if (selectedFunction != null) + Expanded( + child: _buildValueSelector( + context: context, + selectedFunction: selectedFunction, + selectedFunctionData: selectedFunctionData, + controlFunctions: curtainFunctions, + device: device, + operationName: selectedOperationName ?? '', + ), + ), + ], + ), + ), + DialogFooter( + onCancel: () { + Navigator.pop(context); + }, + onConfirm: state.addedFunctions.isNotEmpty + ? () { + /// add the functions to the routine bloc + context.read().add( + AddFunctionToRoutine( + state.addedFunctions, + uniqueCustomId, + ), + ); + + // Return the device data to be added to the container + Navigator.pop(context, { + 'deviceId': functions.first.deviceId, + }); + } + : null, + isConfirmEnabled: selectedFunction != null, + ), + ], + ), + ); + }, + ), + ), + ), + ).then((value) { + return value; + }); + } + + static Widget _buildFunctionsList({ + required BuildContext context, + required List curtainFunctions, + required Function(String, String) onFunctionSelected, + }) { + return ListView.separated( + shrinkWrap: false, + physics: const AlwaysScrollableScrollPhysics(), + itemCount: curtainFunctions.length, + separatorBuilder: (context, index) => const Padding( + padding: EdgeInsets.symmetric(horizontal: 40.0), + child: Divider( + color: ColorsManager.dividerColor, + ), + ), + itemBuilder: (context, index) { + final function = curtainFunctions[index]; + return ListTile( + leading: SvgPicture.asset( + function.icon, + width: 24, + height: 24, + placeholderBuilder: (BuildContext context) => Container( + width: 24, + height: 24, + color: Colors.transparent, + ), + ), + title: Text( + function.operationName, + style: context.textTheme.bodyMedium, + ), + trailing: const Icon( + Icons.arrow_forward_ios, + size: 16, + color: ColorsManager.textGray, + ), + onTap: () => onFunctionSelected( + function.code, + function.operationName, + ), + ); + }, + ); + } + + static Widget _buildValueSelector({ + required BuildContext context, + required String selectedFunction, + required DeviceFunctionData? selectedFunctionData, + required List controlFunctions, + AllDevicesModel? device, + required String operationName, + }) { + final selectedFn = + controlFunctions.firstWhere((f) => f.code == selectedFunction); + + // Rest of your existing code for other value selectors + final values = selectedFn.getOperationalValues(); + return _buildOperationalValuesList( + context: context, + values: values, + selectedValue: selectedFunctionData?.value, + device: device, + operationName: operationName, + selectCode: selectedFunction, + selectedFunctionData: selectedFunctionData, + ); + } + + static Widget _buildOperationalValuesList({ + required BuildContext context, + required List values, + required dynamic selectedValue, + AllDevicesModel? device, + required String operationName, + required String selectCode, + DeviceFunctionData? selectedFunctionData, + + // required Function(dynamic) onValueChanged, + }) { + return ListView.builder( + shrinkWrap: false, + physics: const AlwaysScrollableScrollPhysics(), + itemCount: values.length, + itemBuilder: (context, index) { + final value = values[index]; + final isSelected = selectedValue == value.value; + return ListTile( + leading: SvgPicture.asset( + value.icon, + width: 24, + height: 24, + placeholderBuilder: (BuildContext context) => Container( + width: 24, + height: 24, + color: Colors.transparent, + ), + ), + title: Text( + value.description, + style: context.textTheme.bodyMedium, + ), + trailing: Icon( + isSelected + ? Icons.radio_button_checked + : Icons.radio_button_unchecked, + size: 24, + color: isSelected + ? ColorsManager.primaryColorWithOpacity + : ColorsManager.textGray, + ), + onTap: () { + if (!isSelected) { + context.read().add( + AddFunction( + functionData: DeviceFunctionData( + entityId: device?.uuid ?? '', + functionCode: selectCode, + operationName: operationName, + value: value.value, + condition: selectedFunctionData?.condition, + valueDescription: + selectedFunctionData?.valueDescription, + ), + ), + ); + } + }, + ); + }, + ); + } +} diff --git a/lib/pages/routines/widgets/then_container.dart b/lib/pages/routines/widgets/then_container.dart index d9eee4c4..d1f66733 100644 --- a/lib/pages/routines/widgets/then_container.dart +++ b/lib/pages/routines/widgets/then_container.dart @@ -30,123 +30,121 @@ class ThenContainer extends StatelessWidget { style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold)), const SizedBox(height: 16), - state.isLoading && state.isUpdate == true - ? const Center( - child: CircularProgressIndicator(), - ) - : Wrap( - spacing: 8, - runSpacing: 8, - children: List.generate( - state.thenItems.length, - (index) => GestureDetector( - onTap: () async { - if (state.thenItems[index] - ['deviceId'] == - 'delay') { - final result = await DelayHelper - .showDelayPickerDialog(context, - state.thenItems[index]); - - if (result != null) { - context - .read() - .add(AddToThenContainer({ - ...state.thenItems[index], - 'imagePath': Assets.delay, - 'title': 'Delay', - })); - } - return; - } - - if (state.thenItems[index]['type'] == - 'automation') { - final result = await showDialog( - context: context, - builder: (BuildContext context) => - AutomationDialog( - automationName: - state.thenItems[index] - ['name'] ?? - 'Automation', - automationId: - state.thenItems[index] - ['deviceId'] ?? - '', - uniqueCustomId: - state.thenItems[index] - ['uniqueCustomId'], - ), - ); - - if (result != null) { - context - .read() - .add(AddToThenContainer({ - ...state.thenItems[index], - 'imagePath': - Assets.automation, - 'title': - state.thenItems[index] - ['name'] ?? - state.thenItems[index] - ['title'], - })); - } - return; - } - - final result = await DeviceDialogHelper - .showDeviceDialog( - context: context, - data: state.thenItems[index], - removeComparetors: true, - dialogType: "THEN"); + if (state.isLoading && state.isUpdate == true) + const Center( + child: CircularProgressIndicator(), + ) + else + Wrap( + spacing: 8, + runSpacing: 8, + children: List.generate( + state.thenItems.length, + (index) => GestureDetector( + onTap: () async { + if (state.thenItems[index]['deviceId'] == + 'delay') { + final result = await DelayHelper + .showDelayPickerDialog(context, + state.thenItems[index]); if (result != null) { - context.read().add( - AddToThenContainer( - state.thenItems[index])); - } else if (![ - 'AC', - '1G', - '2G', - '3G', - 'WPS', - 'CPS', - "GW", - "NCPS", - 'WH', - ].contains(state.thenItems[index] - ['productType'])) { - context.read().add( - AddToThenContainer( - state.thenItems[index])); + context + .read() + .add(AddToThenContainer({ + ...state.thenItems[index], + 'imagePath': Assets.delay, + 'title': 'Delay', + })); } + return; + } + + if (state.thenItems[index]['type'] == + 'automation') { + final result = await showDialog( + context: context, + builder: (BuildContext context) => + AutomationDialog( + automationName: + state.thenItems[index]['name'] + as String? ?? + 'Automation', + automationId: state.thenItems[index] + ['deviceId'] as String? ?? + '', + uniqueCustomId: state + .thenItems[index] + ['uniqueCustomId'] as String, + ), + ); + + if (result != null) { + context + .read() + .add(AddToThenContainer({ + ...state.thenItems[index], + 'imagePath': Assets.automation, + 'title': state.thenItems[index] + ['name'] ?? + state.thenItems[index] + ['title'], + })); + } + return; + } + + final result = await DeviceDialogHelper + .showDeviceDialog( + context: context, + data: state.thenItems[index], + removeComparetors: true, + dialogType: 'THEN'); + if (result != null) { + context.read().add( + AddToThenContainer( + state.thenItems[index])); + } else if (![ + 'AC', + '1G', + '2G', + '3G', + 'WPS', + 'CPS', + 'GW', + 'NCPS', + 'WH', + 'CUR', + ].contains(state.thenItems[index] + ['productType'])) { + context.read().add( + AddToThenContainer( + state.thenItems[index])); + } + }, + child: DraggableCard( + imagePath: state.thenItems[index] + ['imagePath'] as String? ?? + '', + title: state.thenItems[index]['title'] + as String? ?? + '', + deviceData: state.thenItems[index], + padding: const EdgeInsets.symmetric( + horizontal: 4, vertical: 8), + isFromThen: true, + isFromIf: false, + onRemove: () { + context.read().add( + RemoveDragCard( + index: index, + isFromThen: true, + key: state.thenItems[index] + ['uniqueCustomId'] + as String)); }, - child: DraggableCard( - imagePath: state.thenItems[index] - ['imagePath'] ?? - '', - title: state.thenItems[index] - ['title'] ?? - '', - deviceData: state.thenItems[index], - padding: const EdgeInsets.symmetric( - horizontal: 4, vertical: 8), - isFromThen: true, - isFromIf: false, - onRemove: () { - context.read().add( - RemoveDragCard( - index: index, - isFromThen: true, - key: state.thenItems[index] - ['uniqueCustomId'])); - }, - ), - ))), + ), + ))), ], ), ), @@ -230,7 +228,7 @@ class ThenContainer extends StatelessWidget { context: context, data: mutableData, removeComparetors: true, - dialogType: "THEN"); + dialogType: 'THEN'); if (result != null) { context.read().add(AddToThenContainer(mutableData)); } else if (![ @@ -241,9 +239,10 @@ class ThenContainer extends StatelessWidget { 'WPS', 'GW', 'CPS', - "NCPS", - "WH", + 'NCPS', + 'WH', 'PC', + 'CUR', ].contains(mutableData['productType'])) { context.read().add(AddToThenContainer(mutableData)); } diff --git a/lib/pages/spaces_management/all_spaces/widgets/community_structure_header_action_button.dart b/lib/pages/spaces_management/all_spaces/widgets/community_structure_header_action_button.dart index f5188c1e..3fb73adf 100644 --- a/lib/pages/spaces_management/all_spaces/widgets/community_structure_header_action_button.dart +++ b/lib/pages/spaces_management/all_spaces/widgets/community_structure_header_action_button.dart @@ -49,12 +49,12 @@ class CommunityStructureHeaderActionButtons extends StatelessWidget { onPressed: onEdit, theme: theme, ), - CommunityStructureHeaderButton( - label: "Duplicate", - svgAsset: Assets.duplicate, - onPressed: onDuplicate, - theme: theme, - ), + // CommunityStructureHeaderButton( + // label: "Duplicate", + // svgAsset: Assets.duplicate, + // onPressed: onDuplicate, + // theme: theme, + // ), CommunityStructureHeaderButton( label: "Delete", svgAsset: Assets.spaceDelete, diff --git a/lib/utils/constants/assets.dart b/lib/utils/constants/assets.dart index dfc0b394..6a0ef799 100644 --- a/lib/utils/constants/assets.dart +++ b/lib/utils/constants/assets.dart @@ -1,138 +1,138 @@ class Assets { Assets._(); - static const String background = "assets/images/Background.png"; - static const String webBackground = "assets/images/web_Background.svg"; - static const String webBackgroundPng = "assets/images/web_Background.png"; - static const String blackLogo = "assets/images/black-logo.png"; - static const String logo = "assets/images/Logo.svg"; - static const String logoHorizontal = "assets/images/logo_horizontal.png"; - static const String vector = "assets/images/Vector.png"; - static const String loginLogo = "assets/images/login_logo.svg"; - static const String whiteLogo = "assets/images/white-logo.png"; - static const String window = "assets/images/Window.png"; - static const String liftLine = "assets/images/lift_line.png"; - static const String rightLine = "assets/images/right_line.png"; - static const String google = "assets/images/google.svg"; - static const String facebook = "assets/images/facebook.svg"; + static const String background = 'assets/images/Background.png'; + static const String webBackground = 'assets/images/web_Background.svg'; + static const String webBackgroundPng = 'assets/images/web_Background.png'; + static const String blackLogo = 'assets/images/black-logo.png'; + static const String logo = 'assets/images/Logo.svg'; + static const String logoHorizontal = 'assets/images/logo_horizontal.png'; + static const String vector = 'assets/images/Vector.png'; + static const String loginLogo = 'assets/images/login_logo.svg'; + static const String whiteLogo = 'assets/images/white-logo.png'; + static const String window = 'assets/images/Window.png'; + static const String liftLine = 'assets/images/lift_line.png'; + static const String rightLine = 'assets/images/right_line.png'; + static const String google = 'assets/images/google.svg'; + static const String facebook = 'assets/images/facebook.svg'; static const String invisiblePassword = - "assets/images/Password_invisible.svg"; - static const String visiblePassword = "assets/images/password_visible.svg"; - static const String accessIcon = "assets/images/access_icon.svg"; + 'assets/images/Password_invisible.svg'; + static const String visiblePassword = 'assets/images/password_visible.svg'; + static const String accessIcon = 'assets/images/access_icon.svg'; static const String spaseManagementIcon = - "assets/images/spase_management_icon.svg"; - static const String devicesIcon = "assets/images/devices_icon.svg"; - static const String analyticsIcon = "assets/icons/landing_analytics.svg"; + 'assets/images/spase_management_icon.svg'; + static const String devicesIcon = 'assets/images/devices_icon.svg'; + static const String analyticsIcon = 'assets/icons/landing_analytics.svg'; - static const String moveinIcon = "assets/images/movein_icon.svg"; - static const String constructionIcon = "assets/images/construction_icon.svg"; - static const String energyIcon = "assets/images/energy_icon.svg"; - static const String integrationsIcon = "assets/images/Integrations_icon.svg"; - static const String assetIcon = "assets/images/asset_icon.svg"; - static const String calendarIcon = "assets/images/calendar_icon.svg"; - static const String deviceNoteIcon = "assets/images/device_note.svg"; - static const String timeIcon = "assets/images/time_icon.svg"; - static const String emptyTable = "assets/images/empty_table.svg"; + static const String moveinIcon = 'assets/images/movein_icon.svg'; + static const String constructionIcon = 'assets/images/construction_icon.svg'; + static const String energyIcon = 'assets/images/energy_icon.svg'; + static const String integrationsIcon = 'assets/images/Integrations_icon.svg'; + static const String assetIcon = 'assets/images/asset_icon.svg'; + static const String calendarIcon = 'assets/images/calendar_icon.svg'; + static const String deviceNoteIcon = 'assets/images/device_note.svg'; + static const String timeIcon = 'assets/images/time_icon.svg'; + static const String emptyTable = 'assets/images/empty_table.svg'; // General assets static const String motionlessDetection = - "assets/icons/motionless_detection.svg"; - static const String acHeating = "assets/icons/ac_heating.svg"; - static const String acPowerOff = "assets/icons/ac_power_off.svg"; - static const String acFanMiddle = "assets/icons/ac_fan_middle.svg"; - static const String switchAlarmSound = "assets/icons/switch_alarm_sound.svg"; - static const String resetOff = "assets/icons/reset_off.svg"; + 'assets/icons/motionless_detection.svg'; + static const String acHeating = 'assets/icons/ac_heating.svg'; + static const String acPowerOff = 'assets/icons/ac_power_off.svg'; + static const String acFanMiddle = 'assets/icons/ac_fan_middle.svg'; + static const String switchAlarmSound = 'assets/icons/switch_alarm_sound.svg'; + static const String resetOff = 'assets/icons/reset_off.svg'; static const String sensitivityOperationIcon = - "assets/icons/sesitivity_operation_icon.svg"; - static const String motionDetection = "assets/icons/motion_detection.svg"; - static const String freezing = "assets/icons/freezing.svg"; - static const String indicator = "assets/icons/indicator.svg"; - static const String sceneRefresh = "assets/icons/scene_refresh.svg"; - static const String temperature = "assets/icons/tempreture.svg"; - static const String acFanHigh = "assets/icons/ac_fan_high.svg"; - static const String fanSpeed = "assets/icons/fan_speed.svg"; - static const String acFanLow = "assets/icons/ac_fan_low.svg"; - static const String sensitivity = "assets/icons/sensitivity.svg"; - static const String lightCountdown = "assets/icons/light_countdown.svg"; - static const String farDetection = "assets/icons/far_detection.svg"; - static const String sceneChildUnlock = "assets/icons/scene_child_unlock.svg"; - static const String acFanAuto = "assets/icons/ac_fan_auto.svg"; - static const String childLock = "assets/icons/child_lock.svg"; - static const String factoryReset = "assets/icons/factory_reset.svg"; - static const String acCooling = "assets/icons/ac_cooling.svg"; - static const String sceneChildLock = "assets/icons/scene_child_lock.svg"; - static const String celsiusDegrees = "assets/icons/celsius_degrees.svg"; - static const String masterState = "assets/icons/master_state.svg"; - static const String acPower = "assets/icons/ac_power.svg"; + 'assets/icons/sesitivity_operation_icon.svg'; + static const String motionDetection = 'assets/icons/motion_detection.svg'; + static const String freezing = 'assets/icons/freezing.svg'; + static const String indicator = 'assets/icons/indicator.svg'; + static const String sceneRefresh = 'assets/icons/scene_refresh.svg'; + static const String temperature = 'assets/icons/tempreture.svg'; + static const String acFanHigh = 'assets/icons/ac_fan_high.svg'; + static const String fanSpeed = 'assets/icons/fan_speed.svg'; + static const String acFanLow = 'assets/icons/ac_fan_low.svg'; + static const String sensitivity = 'assets/icons/sensitivity.svg'; + static const String lightCountdown = 'assets/icons/light_countdown.svg'; + static const String farDetection = 'assets/icons/far_detection.svg'; + static const String sceneChildUnlock = 'assets/icons/scene_child_unlock.svg'; + static const String acFanAuto = 'assets/icons/ac_fan_auto.svg'; + static const String childLock = 'assets/icons/child_lock.svg'; + static const String factoryReset = 'assets/icons/factory_reset.svg'; + static const String acCooling = 'assets/icons/ac_cooling.svg'; + static const String sceneChildLock = 'assets/icons/scene_child_lock.svg'; + static const String celsiusDegrees = 'assets/icons/celsius_degrees.svg'; + static const String masterState = 'assets/icons/master_state.svg'; + static const String acPower = 'assets/icons/ac_power.svg'; static const String farDetectionFunction = - "assets/icons/far_detection_function.svg"; - static const String nobodyTime = "assets/icons/nobody_time.svg"; + 'assets/icons/far_detection_function.svg'; + static const String nobodyTime = 'assets/icons/nobody_time.svg'; // Automation functions static const String tempPasswordUnlock = - "assets/icons/automation_functions/temp_password_unlock.svg"; + 'assets/icons/automation_functions/temp_password_unlock.svg'; static const String doorlockNormalOpen = - "assets/icons/automation_functions/doorlock_normal_open.svg"; + 'assets/icons/automation_functions/doorlock_normal_open.svg'; static const String doorbell = - "assets/icons/automation_functions/doorbell.svg"; + 'assets/icons/automation_functions/doorbell.svg'; static const String remoteUnlockViaApp = - "assets/icons/automation_functions/remote_unlock_via_app.svg"; + 'assets/icons/automation_functions/remote_unlock_via_app.svg'; static const String doubleLock = - "assets/icons/automation_functions/double_lock.svg"; + 'assets/icons/automation_functions/double_lock.svg'; static const String selfTestResult = - "assets/icons/automation_functions/self_test_result.svg"; + 'assets/icons/automation_functions/self_test_result.svg'; static const String lockAlarm = - "assets/icons/automation_functions/lock_alarm.svg"; + 'assets/icons/automation_functions/lock_alarm.svg'; static const String presenceState = - "assets/icons/automation_functions/presence_state.svg"; + 'assets/icons/automation_functions/presence_state.svg'; static const String currentTemp = - "assets/icons/automation_functions/current_temp.svg"; + 'assets/icons/automation_functions/current_temp.svg'; static const String presence = - "assets/icons/automation_functions/presence.svg"; + 'assets/icons/automation_functions/presence.svg'; static const String residualElectricity = - "assets/icons/automation_functions/residual_electricity.svg"; + 'assets/icons/automation_functions/residual_electricity.svg'; static const String hijackAlarm = - "assets/icons/automation_functions/hijack_alarm.svg"; + 'assets/icons/automation_functions/hijack_alarm.svg'; static const String passwordUnlock = - "assets/icons/automation_functions/password_unlock.svg"; + 'assets/icons/automation_functions/password_unlock.svg'; static const String remoteUnlockRequest = - "assets/icons/automation_functions/remote_unlock_req.svg"; + 'assets/icons/automation_functions/remote_unlock_req.svg'; static const String cardUnlock = - "assets/icons/automation_functions/card_unlock.svg"; - static const String motion = "assets/icons/automation_functions/motion.svg"; + 'assets/icons/automation_functions/card_unlock.svg'; + static const String motion = 'assets/icons/automation_functions/motion.svg'; static const String fingerprintUnlock = - "assets/icons/automation_functions/fingerprint_unlock.svg"; + 'assets/icons/automation_functions/fingerprint_unlock.svg'; // Presence Sensor Assets - static const String sensorMotionIcon = "assets/icons/sensor_motion_ic.svg"; + static const String sensorMotionIcon = 'assets/icons/sensor_motion_ic.svg'; static const String sensorPresenceIcon = - "assets/icons/sensor_presence_ic.svg"; - static const String sensorVacantIcon = "assets/icons/sensor_vacant_ic.svg"; + 'assets/icons/sensor_presence_ic.svg'; + static const String sensorVacantIcon = 'assets/icons/sensor_vacant_ic.svg'; static const String illuminanceRecordIcon = - "assets/icons/illuminance_record_ic.svg"; + 'assets/icons/illuminance_record_ic.svg'; static const String presenceRecordIcon = - "assets/icons/presence_record_ic.svg"; + 'assets/icons/presence_record_ic.svg'; static const String helpDescriptionIcon = - "assets/icons/help_description_ic.svg"; + 'assets/icons/help_description_ic.svg'; - static const String lightPulp = "assets/icons/light_pulb.svg"; - static const String acDevice = "assets/icons/ac_device.svg"; - static const String acAirConditioner = "assets/icons/ac_air.svg"; - static const String acSun = "assets/icons/ac_sun.svg"; + static const String lightPulp = 'assets/icons/light_pulb.svg'; + static const String acDevice = 'assets/icons/ac_device.svg'; + static const String acAirConditioner = 'assets/icons/ac_air.svg'; + static const String acSun = 'assets/icons/ac_sun.svg'; //assets/icons/3GangSwitch.svg - static const String gangSwitch = "assets/icons/3GangSwitch.svg"; + static const String gangSwitch = 'assets/icons/3GangSwitch.svg'; //assets/icons/AC.svg - static const String ac = "assets/icons/AC.svg"; + static const String ac = 'assets/icons/AC.svg'; //assets/icons/Curtain.svg - static const String curtain = "assets/icons/Curtain.svg"; + static const String curtain = 'assets/icons/Curtain.svg'; //assets/icons/doorLock.svg - static const String doorLock = "assets/icons/doorLock.svg"; + static const String doorLock = 'assets/icons/doorLock.svg'; //assets/icons/Gateway.svg - static const String gateway = "assets/icons/Gateway.svg"; + static const String gateway = 'assets/icons/Gateway.svg'; //assets/icons/Light.svg - static const String lightBulb = "assets/icons/Light.svg"; + static const String lightBulb = 'assets/icons/Light.svg'; //assets/icons/sensors.svg - static const String sensors = "assets/icons/sensors.svg"; + static const String sensors = 'assets/icons/sensors.svg'; //assets/icons/door_un_look_ic.svg static const String doorUnlock = 'assets/icons/door_un_look_ic.svg'; @@ -175,7 +175,7 @@ class Assets { static const String Gang1SwitchIcon = 'assets/icons/1_Gang_switch_icon.svg'; static const String DoorLockIcon = 'assets/icons/door_lock.svg'; static const String SmartGatewayIcon = 'assets/icons/smart_gateway_icon.svg'; - static const String curtainIcon = "assets/images/curtain.svg"; + static const String curtainIcon = 'assets/images/curtain.svg'; static const String unlock = 'assets/icons/unlock_ic.svg'; static const String firmware = 'assets/icons/firmware.svg'; //assets/images/scheduling.svg @@ -227,12 +227,12 @@ class Assets { //assets/icons/2gang.svg static const String twoGang = 'assets/icons/2gang.svg'; - static const String frequencyIcon = "assets/icons/frequency_icon.svg"; - static const String voltMeterIcon = "assets/icons/volt_meter_icon.svg"; - static const String powerActiveIcon = "assets/icons/power_active_icon.svg"; - static const String searchIcon = "assets/icons/search_icon.svg"; - static const String voltageIcon = "assets/icons/voltage_icon.svg"; - static const String speedoMeter = "assets/icons/speedo_meter.svg"; + static const String frequencyIcon = 'assets/icons/frequency_icon.svg'; + static const String voltMeterIcon = 'assets/icons/volt_meter_icon.svg'; + static const String powerActiveIcon = 'assets/icons/power_active_icon.svg'; + static const String searchIcon = 'assets/icons/search_icon.svg'; + static const String voltageIcon = 'assets/icons/voltage_icon.svg'; + static const String speedoMeter = 'assets/icons/speedo_meter.svg'; //assets/icons/account_setting.svg static const String accountSetting = 'assets/icons/account_setting.svg'; @@ -284,99 +284,99 @@ class Assets { // Assets for functions_icons static const String assetsSensitivityFunction = - "assets/icons/functions_icons/sensitivity.svg"; + 'assets/icons/functions_icons/sensitivity.svg'; static const String assetsSensitivityOperationIcon = - "assets/icons/functions_icons/sesitivity_operation_icon.svg"; + 'assets/icons/functions_icons/sesitivity_operation_icon.svg'; static const String assetsAcPower = - "assets/icons/functions_icons/ac_power.svg"; + 'assets/icons/functions_icons/ac_power.svg'; static const String assetsAcPowerOFF = - "assets/icons/functions_icons/ac_power_off.svg"; + 'assets/icons/functions_icons/ac_power_off.svg'; static const String assetsChildLock = - "assets/icons/functions_icons/child_lock.svg"; + 'assets/icons/functions_icons/child_lock.svg'; static const String assetsFreezing = - "assets/icons/functions_icons/freezing.svg"; + 'assets/icons/functions_icons/freezing.svg'; static const String assetsFanSpeed = - "assets/icons/functions_icons/fan_speed.svg"; + 'assets/icons/functions_icons/fan_speed.svg'; static const String assetsAcCooling = - "assets/icons/functions_icons/ac_cooling.svg"; + 'assets/icons/functions_icons/ac_cooling.svg'; static const String assetsAcHeating = - "assets/icons/functions_icons/ac_heating.svg"; + 'assets/icons/functions_icons/ac_heating.svg'; static const String assetsCelsiusDegrees = - "assets/icons/functions_icons/celsius_degrees.svg"; + 'assets/icons/functions_icons/celsius_degrees.svg'; static const String assetsTempreture = - "assets/icons/functions_icons/tempreture.svg"; + 'assets/icons/functions_icons/tempreture.svg'; static const String assetsAcFanLow = - "assets/icons/functions_icons/ac_fan_low.svg"; + 'assets/icons/functions_icons/ac_fan_low.svg'; static const String assetsAcFanMiddle = - "assets/icons/functions_icons/ac_fan_middle.svg"; + 'assets/icons/functions_icons/ac_fan_middle.svg'; static const String assetsAcFanHigh = - "assets/icons/functions_icons/ac_fan_high.svg"; + 'assets/icons/functions_icons/ac_fan_high.svg'; static const String assetsAcFanAuto = - "assets/icons/functions_icons/ac_fan_auto.svg"; + 'assets/icons/functions_icons/ac_fan_auto.svg'; static const String assetsSceneChildLock = - "assets/icons/functions_icons/scene_child_lock.svg"; + 'assets/icons/functions_icons/scene_child_lock.svg'; static const String assetsSceneChildUnlock = - "assets/icons/functions_icons/scene_child_unlock.svg"; + 'assets/icons/functions_icons/scene_child_unlock.svg'; static const String assetsSceneRefresh = - "assets/icons/functions_icons/scene_refresh.svg"; + 'assets/icons/functions_icons/scene_refresh.svg'; static const String assetsLightCountdown = - "assets/icons/functions_icons/light_countdown.svg"; + 'assets/icons/functions_icons/light_countdown.svg'; static const String assetsFarDetection = - "assets/icons/functions_icons/far_detection.svg"; + 'assets/icons/functions_icons/far_detection.svg'; static const String assetsFarDetectionFunction = - "assets/icons/functions_icons/far_detection_function.svg"; + 'assets/icons/functions_icons/far_detection_function.svg'; static const String assetsIndicator = - "assets/icons/functions_icons/indicator.svg"; + 'assets/icons/functions_icons/indicator.svg'; static const String assetsMotionDetection = - "assets/icons/functions_icons/motion_detection.svg"; + 'assets/icons/functions_icons/motion_detection.svg'; static const String assetsMotionlessDetection = - "assets/icons/functions_icons/motionless_detection.svg"; + 'assets/icons/functions_icons/motionless_detection.svg'; static const String assetsNobodyTime = - "assets/icons/functions_icons/nobody_time.svg"; + 'assets/icons/functions_icons/nobody_time.svg'; static const String assetsFactoryReset = - "assets/icons/functions_icons/factory_reset.svg"; + 'assets/icons/functions_icons/factory_reset.svg'; static const String assetsMasterState = - "assets/icons/functions_icons/master_state.svg"; + 'assets/icons/functions_icons/master_state.svg'; static const String assetsSwitchAlarmSound = - "assets/icons/functions_icons/switch_alarm_sound.svg"; + 'assets/icons/functions_icons/switch_alarm_sound.svg'; static const String assetsResetOff = - "assets/icons/functions_icons/reset_off.svg"; + 'assets/icons/functions_icons/reset_off.svg'; // Assets for automation_functions static const String assetsCardUnlock = - "assets/icons/functions_icons/automation_functions/card_unlock.svg"; + 'assets/icons/functions_icons/automation_functions/card_unlock.svg'; static const String assetsDoorbell = - "assets/icons/functions_icons/automation_functions/doorbell.svg"; + 'assets/icons/functions_icons/automation_functions/doorbell.svg'; static const String assetsDoorlockNormalOpen = - "assets/icons/functions_icons/automation_functions/doorlock_normal_open.svg"; + 'assets/icons/functions_icons/automation_functions/doorlock_normal_open.svg'; static const String assetsDoubleLock = - "assets/icons/functions_icons/automation_functions/double_lock.svg"; + 'assets/icons/functions_icons/automation_functions/double_lock.svg'; static const String assetsFingerprintUnlock = - "assets/icons/functions_icons/automation_functions/fingerprint_unlock.svg"; + 'assets/icons/functions_icons/automation_functions/fingerprint_unlock.svg'; static const String assetsHijackAlarm = - "assets/icons/functions_icons/automation_functions/hijack_alarm.svg"; + 'assets/icons/functions_icons/automation_functions/hijack_alarm.svg'; static const String assetsLockAlarm = - "assets/icons/functions_icons/automation_functions/lock_alarm.svg"; + 'assets/icons/functions_icons/automation_functions/lock_alarm.svg'; static const String assetsPasswordUnlock = - "assets/icons/functions_icons/automation_functions/password_unlock.svg"; + 'assets/icons/functions_icons/automation_functions/password_unlock.svg'; static const String assetsRemoteUnlockReq = - "assets/icons/functions_icons/automation_functions/remote_unlock_req.svg"; + 'assets/icons/functions_icons/automation_functions/remote_unlock_req.svg'; static const String assetsRemoteUnlockViaApp = - "assets/icons/functions_icons/automation_functions/remote_unlock_via_app.svg"; + 'assets/icons/functions_icons/automation_functions/remote_unlock_via_app.svg'; static const String assetsResidualElectricity = - "assets/icons/functions_icons/automation_functions/residual_electricity.svg"; + 'assets/icons/functions_icons/automation_functions/residual_electricity.svg'; static const String assetsTempPasswordUnlock = - "assets/icons/functions_icons/automation_functions/temp_password_unlock.svg"; + 'assets/icons/functions_icons/automation_functions/temp_password_unlock.svg'; static const String assetsSelfTestResult = - "assets/icons/functions_icons/automation_functions/self_test_result.svg"; + 'assets/icons/functions_icons/automation_functions/self_test_result.svg'; static const String assetsPresence = - "assets/icons/functions_icons/automation_functions/presence.svg"; + 'assets/icons/functions_icons/automation_functions/presence.svg'; static const String assetsMotion = - "assets/icons/functions_icons/automation_functions/motion.svg"; + 'assets/icons/functions_icons/automation_functions/motion.svg'; static const String assetsCurrentTemp = - "assets/icons/functions_icons/automation_functions/current_temp.svg"; + 'assets/icons/functions_icons/automation_functions/current_temp.svg'; static const String assetsPresenceState = - "assets/icons/functions_icons/automation_functions/presence_state.svg"; + 'assets/icons/functions_icons/automation_functions/presence_state.svg'; //assets/icons/routine/automation.svg static const String automation = 'assets/icons/routine/automation.svg'; static const String searchIconUser = 'assets/icons/search_icon_user.svg'; @@ -501,4 +501,5 @@ class Assets { static const String aqiAirQuality = 'assets/icons/aqi_air_quality.svg'; static const String temperatureAqiSidebar = 'assets/icons/thermometer.svg'; static const String humidityAqiSidebar = 'assets/icons/humidity.svg'; + static const String autocadOccupancyImage = 'assets/images/autocad_occupancy_image.png'; }