mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
add WallPresenceSensor and add new icons for presence state and selected value
This commit is contained in:
@ -8,6 +8,7 @@ import 'package:syncrow_web/pages/routines/models/device_functions.dart';
|
||||
import 'package:syncrow_web/pages/routines/models/gang_switches/one_gang_switch/one_gang_switch.dart';
|
||||
import 'package:syncrow_web/pages/routines/models/gang_switches/three_gang_switch/three_gang_switch.dart';
|
||||
import 'package:syncrow_web/pages/routines/models/gang_switches/two_gang_switch/two_gang_switch.dart';
|
||||
import 'package:syncrow_web/pages/routines/models/wps/wps_functions.dart';
|
||||
import 'package:syncrow_web/utils/constants/assets.dart';
|
||||
import 'package:syncrow_web/utils/enum/device_types.dart';
|
||||
|
||||
@ -148,7 +149,9 @@ class AllDevicesModel {
|
||||
|
||||
productName = json['productName']?.toString();
|
||||
if (json['spaces'] != null && json['spaces'] is List) {
|
||||
spaces = (json['spaces'] as List).map((space) => DeviceSpaceModel.fromJson(space)).toList();
|
||||
spaces = (json['spaces'] as List)
|
||||
.map((space) => DeviceSpaceModel.fromJson(space))
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
|
||||
@ -196,7 +199,8 @@ SOS
|
||||
String tempIcon = '';
|
||||
if (type == DeviceType.LightBulb) {
|
||||
tempIcon = Assets.lightBulb;
|
||||
} else if (type == DeviceType.CeilingSensor || type == DeviceType.WallSensor) {
|
||||
} else if (type == DeviceType.CeilingSensor ||
|
||||
type == DeviceType.WallSensor) {
|
||||
tempIcon = Assets.sensors;
|
||||
} else if (type == DeviceType.AC) {
|
||||
tempIcon = Assets.ac;
|
||||
@ -226,6 +230,8 @@ SOS
|
||||
// tempIcon = Assets.gang3touch;
|
||||
} else if (type == DeviceType.WaterLeak) {
|
||||
tempIcon = Assets.waterLeakNormal;
|
||||
} else if (type == DeviceType.WaterLeak) {
|
||||
tempIcon = Assets.waterLeakNormal;
|
||||
} else {
|
||||
tempIcon = Assets.logoHorizontal;
|
||||
}
|
||||
@ -252,27 +258,62 @@ SOS
|
||||
case '1G':
|
||||
return [
|
||||
OneGangSwitchFunction(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
OneGangCountdownFunction(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
OneGangCountdownFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
];
|
||||
|
||||
case '2G':
|
||||
return [
|
||||
TwoGangSwitch1Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
TwoGangSwitch2Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
TwoGangCountdown1Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
TwoGangCountdown2Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
TwoGangCountdown1Function(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
TwoGangCountdown2Function(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
];
|
||||
|
||||
case '3G':
|
||||
return [
|
||||
ThreeGangSwitch1Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangSwitch2Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangSwitch3Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangCountdown1Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangCountdown2Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangCountdown3Function(deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangSwitch1Function(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangSwitch2Function(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangSwitch3Function(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangCountdown1Function(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangCountdown2Function(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
ThreeGangCountdown3Function(
|
||||
deviceId: uuid ?? '', deviceName: name ?? ''),
|
||||
];
|
||||
case 'WPS':
|
||||
return [
|
||||
//IF Functions
|
||||
PresenceStateFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'THEN'),
|
||||
CurrentDistanceFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'THEN'),
|
||||
IlluminanceValueFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'THEN'),
|
||||
PresenceTimeFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'THEN'),
|
||||
|
||||
//THEN Functions
|
||||
FarDetectionFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'IF'),
|
||||
MotionSensitivityFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'IF'),
|
||||
MotionLessSensitivityFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'IF'),
|
||||
IndicatorFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'BOTH'),
|
||||
NoOneTimeFunction(
|
||||
deviceId: uuid ?? '', deviceName: name ?? '', type: 'IF'),
|
||||
|
||||
// FarDetectionSliderFunction(
|
||||
// deviceId: uuid ?? '', deviceName: name ?? '', type: 'THEN')
|
||||
];
|
||||
default:
|
||||
return [];
|
||||
}
|
||||
|
@ -95,6 +95,77 @@ class CountdownInchingView extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
Row _hourMinutesSecondWheel(
|
||||
BuildContext context, WaterHeaterDeviceStatusLoaded state) {
|
||||
final isCountDown =
|
||||
state.scheduleMode?.name == ScheduleModes.countdown.name;
|
||||
late bool isActive;
|
||||
if (isCountDown &&
|
||||
state.countdownRemaining != null &&
|
||||
state.isCountdownActive == true) {
|
||||
isActive = true;
|
||||
} else if (!isCountDown &&
|
||||
state.countdownRemaining != null &&
|
||||
state.isInchingActive == true) {
|
||||
isActive = true;
|
||||
} else {
|
||||
isActive = false;
|
||||
}
|
||||
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
_buildPickerColumn(
|
||||
context,
|
||||
'h',
|
||||
isCountDown
|
||||
? (state.countdownHours ?? 0)
|
||||
: (state.inchingHours ?? 0),
|
||||
24, (value) {
|
||||
context.read<WaterHeaterBloc>().add(UpdateScheduleEvent(
|
||||
scheduleMode: state.scheduleMode ?? ScheduleModes.countdown,
|
||||
hours: value,
|
||||
minutes: isCountDown
|
||||
? (state.countdownMinutes ?? 0)
|
||||
: (state.inchingMinutes ?? 0),
|
||||
));
|
||||
}, isActive: isActive),
|
||||
const SizedBox(width: 10),
|
||||
_buildPickerColumn(
|
||||
context,
|
||||
'm',
|
||||
isCountDown
|
||||
? (state.countdownMinutes ?? 0)
|
||||
: (state.inchingMinutes ?? 0),
|
||||
60, (value) {
|
||||
context.read<WaterHeaterBloc>().add(UpdateScheduleEvent(
|
||||
scheduleMode: state.scheduleMode ?? ScheduleModes.countdown,
|
||||
hours: isCountDown
|
||||
? (state.countdownHours ?? 0)
|
||||
: (state.inchingHours ?? 0),
|
||||
minutes: value,
|
||||
));
|
||||
}, isActive: isActive),
|
||||
const SizedBox(width: 10),
|
||||
_buildPickerColumn(
|
||||
context,
|
||||
'S',
|
||||
isCountDown
|
||||
? (state.countdownMinutes ?? 0)
|
||||
: (state.inchingMinutes ?? 0),
|
||||
60, (value) {
|
||||
context.read<WaterHeaterBloc>().add(UpdateScheduleEvent(
|
||||
scheduleMode: state.scheduleMode ?? ScheduleModes.countdown,
|
||||
hours: isCountDown
|
||||
? (state.countdownHours ?? 0)
|
||||
: (state.inchingHours ?? 0),
|
||||
minutes: value,
|
||||
));
|
||||
}, isActive: isActive),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildPickerColumn(
|
||||
BuildContext context,
|
||||
String label,
|
||||
|
Reference in New Issue
Block a user