mirror of
https://github.com/xoseperez/espurna.git
synced 2026-03-03 23:14:15 +01:00
de-hardcode sch and led enumeration types from .html publish raw type & pretty-string from .cpp indexed settings de-fpstr string view references, use the object directly publish 'faulty' schedule specs indexes, focus & report elems ref. #2626 should fix faulty enum<->number references in selects ref. #2628 - schedule types were numeric, while websocket delivered strings
58 lines
1.2 KiB
JavaScript
58 lines
1.2 KiB
JavaScript
import {
|
|
addSimpleEnumerables,
|
|
groupSettingsOnAddElem,
|
|
variableListeners,
|
|
addEnumerables,
|
|
} from './settings.mjs';
|
|
|
|
import { addFromTemplate, addFromTemplateWithSchema } from './template.mjs';
|
|
|
|
/** @param {function(HTMLElement): void} callback */
|
|
function withLeds(callback) {
|
|
callback(/** @type {!HTMLElement} */
|
|
(document.getElementById("leds")));
|
|
}
|
|
|
|
/**
|
|
* @param {HTMLElement} elem
|
|
*/
|
|
function addLed(elem) {
|
|
addFromTemplate(elem, "led-config", {});
|
|
}
|
|
|
|
/**
|
|
* @param {any} value
|
|
*/
|
|
function onConfig(value) {
|
|
withLeds((elem) => {
|
|
addFromTemplateWithSchema(
|
|
elem, "led-config",
|
|
value.leds, value.schema,
|
|
value.max ?? 0);
|
|
});
|
|
addSimpleEnumerables("led", "LED", value.leds.length);
|
|
}
|
|
|
|
/**
|
|
* @returns {import('./settings.mjs').KeyValueListeners}
|
|
*/
|
|
function listeners() {
|
|
return {
|
|
"ledConfig": (_, value) => {
|
|
onConfig(value);
|
|
},
|
|
"ledModes": (_, value) => {
|
|
addEnumerables("ledMode", value);
|
|
},
|
|
};
|
|
};
|
|
|
|
export function init() {
|
|
withLeds((elem) => {
|
|
variableListeners(listeners());
|
|
groupSettingsOnAddElem(elem, () => {
|
|
addLed(elem);
|
|
});
|
|
});
|
|
}
|