send step as string to avoid js-rounding issue for 0.1

This commit is contained in:
MichaelDvP
2023-11-29 12:06:56 +01:00
parent 03b6ebd861
commit f83f22a6fb
2 changed files with 4 additions and 8 deletions

View File

@@ -130,7 +130,7 @@ export interface DeviceValue {
c?: string; // command, optional
l?: string[]; // list, optional
h?: string; // help text, optional
s?: number; // steps for up/down, optional
s?: string; // steps for up/down, optional
m?: number; // min, optional
x?: number; // max, optional
}

View File

@@ -969,19 +969,15 @@ void EMSdevice::generate_values_web(JsonObject & output) {
}
// handle INTs
else {
// add step if it's not 1
if (dv.numeric_operator > 0) {
obj["s"] = (float)1 / dv.numeric_operator;
} else if (dv.numeric_operator < 0) {
obj["s"] = (float)(-1) * dv.numeric_operator;
}
// add min and max values, if available
int16_t dv_set_min;
uint32_t dv_set_max;
if (dv.get_min_max(dv_set_min, dv_set_max)) {
obj["m"] = dv_set_min;
obj["x"] = dv_set_max;
// add steps to numeric values as rendered string to avoid rounding floats in js
char s[10];
obj["s"] = Helpers::render_value(s, (uint32_t)1, dv.numeric_operator);
}
}
}