diff --git a/code/html/src/core.mjs b/code/html/src/core.mjs index fde4546e..056a293f 100644 --- a/code/html/src/core.mjs +++ b/code/html/src/core.mjs @@ -226,3 +226,13 @@ export function assert(value, message = "") { export function count(values, callback) { return values.filter(callback).length; } + +/** + * @param {string} value + * @returns {string} + */ +export function capitalize(value) { + return value === "" + ? value + : `${value.charAt(0).toUpperCase()}${value.slice(1)}`; +} diff --git a/code/html/src/schedule.mjs b/code/html/src/schedule.mjs index 7258b642..643e689d 100644 --- a/code/html/src/schedule.mjs +++ b/code/html/src/schedule.mjs @@ -1,6 +1,7 @@ import { addFromTemplate, addFromTemplateWithSchema } from './template.mjs'; import { addEnumerables, groupSettingsOnAddElem, variableListeners } from './settings.mjs'; import { reportValidityForInputOrSelect } from './validate.mjs'; +import { capitalize } from './core.mjs'; /** @param {function(HTMLElement): void} callback */ function withSchedules(callback) { @@ -54,7 +55,10 @@ function listeners() { onValidate(value); }, "schTypes": (_, value) => { - addEnumerables("schType", value); + const tuples = + /** @type {import('./settings.mjs').EnumerableTuple[]} */(value); + addEnumerables("schType", + tuples.map((x) => [x[0], capitalize(x[1])])); }, }; } diff --git a/code/html/src/settings.mjs b/code/html/src/settings.mjs index 63fe1120..a24cb7a1 100644 --- a/code/html/src/settings.mjs +++ b/code/html/src/settings.mjs @@ -1,6 +1,7 @@ import { notifyError } from './errors.mjs'; import { count, + capitalize, pageReloadIn, showPanelByName, } from './core.mjs'; @@ -797,9 +798,7 @@ function prepareSpanValue(span, value) { value = value.toString(); if (value) { - const capitalized = - `${value.at(0).toUpperCase()}${value.slice(1)}`; - value = span.dataset[`value${capitalized}`] ?? value; + value = span.dataset[`value${capitalize(value)}`] ?? value; } const out = [