diff --git a/lib/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_dialog_slider_selector.dart b/lib/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_dialog_slider_selector.dart index 42b5a29e..2bdd1135 100644 --- a/lib/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_dialog_slider_selector.dart +++ b/lib/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_dialog_slider_selector.dart @@ -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/routine_dialogs/ceiling_sensor/cps_slider_helpers.dart'; import 'package:syncrow_web/pages/routines/widgets/slider_value_selector.dart'; class CpsDialogSliderSelector extends StatelessWidget { @@ -84,90 +85,3 @@ class CpsDialogSliderSelector extends StatelessWidget { return mappedValue.clamp(inputMin, inputMax); } } - -abstract final class CpsSliderHelpers { - static (double min, double max, double step) mappedRange(String functionCode) { - final (defaultMin, defaultMax) = sliderRange(functionCode); - final defaultDivdidend = dividendOfRange(functionCode); - return switch (functionCode) { - 'static_max_dis' => (0, 500, 50), - 'presence_reference' => (0, 255, 50), - 'moving_reference' => (0, 255, 5), - 'perceptual_boundary' => (0, 500, 50), - 'moving_boundary' => (0, 500, 50), - 'moving_rigger_time' => (0, 2000, 100), - 'moving_static_time' => (0, 6000, 100), - 'none_body_time' => (0, 300000, 500), - _ => (defaultMin, defaultMax, defaultDivdidend), - }; - } - - static (double min, double max) sliderRange(String functionCode) => - switch (functionCode) { - 'moving_speed' => (0, 32), - 'sensitivity' => (0, 10), - 'space_static_val' => (0, 255), - 'space_move_val' => (0, 255), - 'moving_max_dis' => (0, 10), - 'static_max_dis' => (0, 10), - 'moving_range' => (0, 25.5), - 'presence_range' => (0, 25.5), - 'presence_judgement_threshold' => (0, 255), - 'motion_amplitude_trigger_threshold' => (0, 255), - 'perceptual_boundary' => (0, 5), - 'moving_boundary' => (0, 5), - 'moving_rigger_time' => (0, 2), - 'moving_static_time' => (0, 50), - 'none_body_time' => (0, 300), - _ => (0, 300), - }; - - static double dividendOfRange(String functionCode) => switch (functionCode) { - 'presence_reference' => 5, - 'moving_reference' => 5, - 'moving_max_dis' => 0.5, - 'static_max_dis' => 0.5, - 'moving_range' => 0.1, - 'presence_range' => 0.1, - 'perceptual_boundary' => 0.5, - 'moving_boundary' => 0.5, - 'moving_rigger_time' => 0.1, - 'moving_static_time' => 1.0, - 'none_body_time' => 5.0, - _ => 1, - }; - - static String unit(String functionCode) => switch (functionCode) { - 'moving_max_dis' || - 'static_max_dis' || - 'moving_range' || - 'presence_range' || - 'perceptual_boundary' || - 'moving_boundary' => - 'M', - 'moving_rigger_time' || 'moving_static_time' || 'none_body_time' => 'sec', - _ => '', - }; - - static String displayText({ - required dynamic value, - required String functionCode, - }) { - final parsedValue = double.tryParse('$value'); - - return switch (functionCode) { - 'moving_max_dis' || - 'static_max_dis' || - 'moving_range' || - 'presence_range' || - 'perceptual_boundary' || - 'moving_boundary' => - parsedValue?.toStringAsFixed(1) ?? '0', - 'moving_rigger_time' => parsedValue?.toStringAsFixed(2) ?? '0', - 'moving_static_time' || - 'none_body_time' => - parsedValue?.toStringAsFixed(2) ?? '0', - _ => '${parsedValue?.toStringAsFixed(0) ?? 0}', - }; - } -} diff --git a/lib/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_slider_helpers.dart b/lib/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_slider_helpers.dart new file mode 100644 index 00000000..80192056 --- /dev/null +++ b/lib/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_slider_helpers.dart @@ -0,0 +1,86 @@ +abstract final class CpsSliderHelpers { + static (double min, double max, double step) mappedRange(String functionCode) { + final (defaultMin, defaultMax) = sliderRange(functionCode); + final defaultDivdidend = dividendOfRange(functionCode); + return switch (functionCode) { + 'static_max_dis' => (0, 500, 50), + 'presence_reference' => (0, 255, 50), + 'moving_reference' => (0, 255, 5), + 'perceptual_boundary' => (0, 500, 50), + 'moving_boundary' => (0, 500, 50), + 'moving_rigger_time' => (0, 2000, 100), + 'moving_static_time' => (0, 6000, 100), + 'none_body_time' => (0, 300000, 500), + _ => (defaultMin, defaultMax, defaultDivdidend), + }; + } + + static (double min, double max) sliderRange(String functionCode) => + switch (functionCode) { + 'moving_speed' => (0, 32), + 'sensitivity' => (0, 10), + 'space_static_val' => (0, 255), + 'space_move_val' => (0, 255), + 'moving_max_dis' => (0, 10), + 'static_max_dis' => (0, 10), + 'moving_range' => (0, 25.5), + 'presence_range' => (0, 25.5), + 'presence_judgement_threshold' => (0, 255), + 'motion_amplitude_trigger_threshold' => (0, 255), + 'perceptual_boundary' => (0, 5), + 'moving_boundary' => (0, 5), + 'moving_rigger_time' => (0, 2), + 'moving_static_time' => (0, 50), + 'none_body_time' => (0, 300), + _ => (0, 300), + }; + + static double dividendOfRange(String functionCode) => switch (functionCode) { + 'presence_reference' => 5, + 'moving_reference' => 5, + 'moving_max_dis' => 0.5, + 'static_max_dis' => 0.5, + 'moving_range' => 0.1, + 'presence_range' => 0.1, + 'perceptual_boundary' => 0.5, + 'moving_boundary' => 0.5, + 'moving_rigger_time' => 0.1, + 'moving_static_time' => 1.0, + 'none_body_time' => 5.0, + _ => 1, + }; + + static String unit(String functionCode) => switch (functionCode) { + 'moving_max_dis' || + 'static_max_dis' || + 'moving_range' || + 'presence_range' || + 'perceptual_boundary' || + 'moving_boundary' => + 'M', + 'moving_rigger_time' || 'moving_static_time' || 'none_body_time' => 'sec', + _ => '', + }; + + static String displayText({ + required dynamic value, + required String functionCode, + }) { + final parsedValue = double.tryParse('$value'); + + return switch (functionCode) { + 'moving_max_dis' || + 'static_max_dis' || + 'moving_range' || + 'presence_range' || + 'perceptual_boundary' || + 'moving_boundary' => + parsedValue?.toStringAsFixed(1) ?? '0', + 'moving_rigger_time' => parsedValue?.toStringAsFixed(2) ?? '0', + 'moving_static_time' || + 'none_body_time' => + parsedValue?.toStringAsFixed(2) ?? '0', + _ => '${parsedValue?.toStringAsFixed(0) ?? 0}', + }; + } +}