add step parameter in onTapFunction.

Add dialogType parameter in WaterHeaterPresenceSensor and CeilingSensorDialog.
Update step parameter in FlushValueSelectorWidget.
Update step parameter in FunctionBloc and WaterHeaterFunctions.
Update step, unit, min, and max parameters in ACFunction subclasses.
This commit is contained in:
mohammad
2025-05-19 11:22:15 +03:00
parent 7f9d044f7e
commit 0d45a155e3
22 changed files with 938 additions and 728 deletions

View File

@ -41,7 +41,8 @@ class _CeilingSensorDialogState extends State<CeilingSensorDialog> {
void initState() {
super.initState();
_cpsFunctions = widget.functions.whereType<CpsFunctions>().where((function) {
_cpsFunctions =
widget.functions.whereType<CpsFunctions>().where((function) {
if (widget.dialogType == 'THEN') {
return function.type == 'THEN' || function.type == 'BOTH';
}
@ -149,6 +150,7 @@ class _CeilingSensorDialogState extends State<CeilingSensorDialog> {
device: widget.device,
)
: CpsDialogSliderSelector(
step: selectedCpsFunctions.step!,
operations: operations,
selectedFunction: selectedFunction ?? '',
selectedFunctionData: selectedFunctionData,

View File

@ -4,6 +4,7 @@ import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_mo
import 'package:syncrow_web/pages/routines/bloc/functions_bloc/functions_bloc_bloc.dart';
import 'package:syncrow_web/pages/routines/models/ceiling_presence_sensor_functions.dart';
import 'package:syncrow_web/pages/routines/models/device_functions.dart';
import 'package:syncrow_web/pages/routines/widgets/custom_routines_textbox.dart';
import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_slider_helpers.dart';
import 'package:syncrow_web/pages/routines/widgets/slider_value_selector.dart';
@ -16,6 +17,7 @@ class CpsDialogSliderSelector extends StatelessWidget {
required this.device,
required this.operationName,
required this.dialogType,
required this.step,
super.key,
});
@ -26,13 +28,16 @@ class CpsDialogSliderSelector extends StatelessWidget {
final AllDevicesModel? device;
final String operationName;
final String dialogType;
final double step;
@override
Widget build(BuildContext context) {
return SliderValueSelector(
return CustomRoutinesTextbox(
withSpecialChar: false,
currentCondition: selectedFunctionData.condition,
dialogType: dialogType,
sliderRange: CpsSliderHelpers.sliderRange(selectedFunctionData.functionCode),
sliderRange:
CpsSliderHelpers.sliderRange(selectedFunctionData.functionCode),
displayedValue: CpsSliderHelpers.displayText(
value: selectedFunctionData.value,
functionCode: selectedFunctionData.functionCode,
@ -50,7 +55,7 @@ class CpsDialogSliderSelector extends StatelessWidget {
),
),
),
onSliderChanged: (value) => context.read<FunctionBloc>().add(
onTextChanged: (value) => context.read<FunctionBloc>().add(
AddFunction(
functionData: DeviceFunctionData(
entityId: device?.uuid ?? '',
@ -64,6 +69,7 @@ class CpsDialogSliderSelector extends StatelessWidget {
dividendOfRange: CpsSliderHelpers.dividendOfRange(
selectedFunctionData.functionCode,
),
stepIncreaseAmount: step,
);
}
}

View File

@ -34,30 +34,33 @@ class CpsFunctionsList extends StatelessWidget {
itemBuilder: (context, index) {
final function = cpsFunctions[index];
return RoutineDialogFunctionListTile(
iconPath: function.icon,
operationName: function.operationName,
onTap: () => RoutineTapFunctionHelper.onTapFunction(
context,
functionCode: function.code,
functionOperationName: function.operationName,
functionValueDescription: selectedFunctionData?.valueDescription,
deviceUuid: device?.uuid,
codesToAddIntoFunctionsWithDefaultValue: [
'static_max_dis',
'presence_reference',
'moving_reference',
'perceptual_boundary',
'moving_boundary',
'moving_rigger_time',
'moving_static_time',
'none_body_time',
'moving_max_dis',
'moving_range',
'presence_range',
if (dialogType == "IF") 'sensitivity',
],
),
);
iconPath: function.icon,
operationName: function.operationName,
onTap: () {
RoutineTapFunctionHelper.onTapFunction(
context,
step: function.step,
functionCode: function.code,
functionOperationName: function.operationName,
functionValueDescription:
selectedFunctionData?.valueDescription,
deviceUuid: device?.uuid,
codesToAddIntoFunctionsWithDefaultValue: [
'static_max_dis',
'presence_reference',
'moving_reference',
'perceptual_boundary',
'moving_boundary',
'moving_rigger_time',
'moving_static_time',
'none_body_time',
'moving_max_dis',
'moving_range',
'presence_range',
if (dialogType == "IF") 'sensitivity',
],
);
});
},
),
);