refactor: improve handling of multi-fields

This commit is contained in:
Carlos Valente
2025-06-17 07:26:44 +02:00
committed by Carlos Valente
parent b2b115c329
commit 5c86914cda
23 changed files with 491 additions and 244 deletions
@@ -1,61 +1,6 @@
import { CustomFields } from 'ontime-types';
import type { MultiselectOptions, ParamField } from './types';
export const makeOptionsFromCustomFields = (
customFields: CustomFields,
additionalOptions: Readonly<Record<string, string>> = {},
filterImageType = true,
) => {
const options = { ...additionalOptions };
for (const [key, value] of Object.entries(customFields)) {
if (filterImageType && value.type === 'image') {
continue;
}
options[`custom-${key}`] = `Custom: ${value.label}`;
}
return options;
};
export function makeCustomFieldSelectOptions(customFields: CustomFields, filterImageType = true): MultiselectOptions {
const options: MultiselectOptions = {};
for (const [key, value] of Object.entries(customFields)) {
if (filterImageType && value.type === 'image') {
continue;
}
options[key] = { value: key, label: value.label, colour: value.colour };
}
return options;
}
export const getTimeOption = (timeFormat: string): ParamField => {
const placeholder = `${timeFormat} (default)`;
return {
id: 'timeformat',
title: 'Time format string, taken from the Application Settings',
description: 'Format for auxiliar time fields (not the running), eg. HH:mm:ss or hh:mm:ss a, see docs for help',
type: 'string',
placeholder,
};
};
export const hideTimerSeconds: ParamField = {
id: 'hideTimerSeconds',
title: 'Hide seconds in timer',
description: 'Whether to hide seconds in the running timer',
type: 'boolean',
defaultValue: false,
};
export const showLeadingZeros: ParamField = {
id: 'showLeadingZeros',
title: 'Show leading zeros in timer',
description: 'Whether to show leading zeros in the running timer',
type: 'boolean',
defaultValue: false,
};
/**
* Gathers possible titles for view options
*/
export enum OptionTitle {
ClockOptions = 'Clock Options',
TimerOptions = 'Timer Options',
@@ -65,4 +10,7 @@ export enum OptionTitle {
StyleOverride = 'View style override',
Animation = 'View animation',
Schedule = 'Schedule options',
/** rendered as hidden inputs */
Hidden = 'Hidden options',
}