import 'package:syncrow_web/pages/routines/models/device_functions.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; class GatewayOperationalValue { final String icon; final String description; final dynamic value; GatewayOperationalValue({ required this.icon, required this.description, required this.value, }); } abstract class GatewayFunctions extends DeviceFunction { final String type; GatewayFunctions({ required super.deviceId, required super.deviceName, required super.code, required super.operationName, required super.icon, required this.type, }); List getOperationalValues(); } final class GatewaySwitchAlarmSound extends GatewayFunctions { GatewaySwitchAlarmSound({ required super.deviceId, required super.deviceName, required super.type, super.code = 'switch_alarm_sound', super.operationName = 'Switch Alarm Sound', super.icon = Assets.activeBell, }); @override List getOperationalValues() => [ GatewayOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), GatewayOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ]; } final class GatewayMasterState extends GatewayFunctions { GatewayMasterState({ required super.deviceId, required super.deviceName, required super.type, super.code = 'master_state', super.operationName = 'Master State', super.icon = Assets.gear, }); @override List getOperationalValues() { return [ GatewayOperationalValue( icon: Assets.assetsAcPower, description: "Normal", value: 'Normal', ), GatewayOperationalValue( icon: Assets.assetsAcPowerOFF, description: "Alarm", value: 'Alarm', ), ]; } } final class GatewayFactoryReset extends GatewayFunctions { GatewayFactoryReset({ required super.deviceId, required super.deviceName, required super.type, super.code = 'factory_reset', super.operationName = 'Factory Reset', super.icon = Assets.factoryReset, }); @override List getOperationalValues() { return [ GatewayOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), GatewayOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ]; } }