From 508a707c6e6dffac128c27f350816be40aeb6726 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 26 Jan 2022 18:35:55 +0100 Subject: [PATCH] add steps to web input of numbers, #329 --- interface/src/project/DashboardData.tsx | 1 + interface/src/project/types.ts | 1 + src/emsdevice.cpp | 19 +++++++++++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/interface/src/project/DashboardData.tsx b/interface/src/project/DashboardData.tsx index 81d497082..f06f575d5 100644 --- a/interface/src/project/DashboardData.tsx +++ b/interface/src/project/DashboardData.tsx @@ -244,6 +244,7 @@ const DashboardData: FC = () => { sx={{ width: '30ch' }} type={deviceValue.u ? 'number' : 'text'} onChange={updateValue(setDeviceValue)} + inputProps={{ step: deviceValue.s }} InputProps={{ startAdornment: {DeviceValueUOM_s[deviceValue.u]} }} diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts index f7368caf8..1c0871691 100644 --- a/interface/src/project/types.ts +++ b/interface/src/project/types.ts @@ -132,6 +132,7 @@ export interface DeviceValue { c: string; // command l: string[]; // list h?: string; // help text + s?: string; // steps for up/down } export interface DeviceData { diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 12f4660b3..09a58c558 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -731,15 +731,26 @@ void EMSdevice::generate_values_web(JsonObject & output) { l.add(read_flash_string(dv.options[i])); } } - } - if (dv.type == DeviceValueType::BOOL) { + } else if (dv.type == DeviceValueType::BOOL) { JsonArray l = obj.createNestedArray("l"); l.add("off"); l.add("on"); } // add command help template - if ((dv.type == DeviceValueType::STRING || dv.type == DeviceValueType::CMD) && dv.options_size == 1) { - obj["h"] = dv.options[0]; + else if (dv.type == DeviceValueType::STRING || dv.type == DeviceValueType::CMD) { + if (dv.options_size == 1) { + obj["h"] = dv.options[0]; + } + } + // add steps to numeric values with divider/multiplier + else { + int8_t divider = (dv.options_size == 1) ? Helpers::atoint(read_flash_string(dv.options[0]).c_str()) : 0; + char s[10]; + if (divider > 0) { + obj["s"] = Helpers::render_value(s, (float)1 / divider, 1); + } else if (divider < 0) { + obj["s"] = Helpers::render_value(s, (-1) * divider, 0); + } } } }