28 lines
816 B
JavaScript
28 lines
816 B
JavaScript
// Rôle : normalise et compacte les compteurs toolbox.
|
|
import { uid } from "./shared.js";
|
|
|
|
function normalizeCounterValue(value) {
|
|
const parsed = Number.parseInt(value, 10);
|
|
return Number.isFinite(parsed) ? parsed : 0;
|
|
}
|
|
|
|
export function normalizeCountersData(data) {
|
|
return {
|
|
counters: (data?.counters || [])
|
|
.map((counter) => ({
|
|
id: counter?.id || uid("counter"),
|
|
label: String(counter?.label || "").trim(),
|
|
value: normalizeCounterValue(counter?.value)
|
|
}))
|
|
.filter((counter) => counter.label)
|
|
};
|
|
}
|
|
|
|
export function compactCountersDataForStorage(value) {
|
|
const counters = normalizeCountersData(value).counters.map((counter) => ({
|
|
id: counter.id,
|
|
label: counter.label,
|
|
value: counter.value
|
|
}));
|
|
return counters.length ? { counters } : null;
|
|
}
|