diff --git a/src/components/metric/MetricFieldControls.jsx b/src/components/metric/MetricFieldControls.jsx index 36175a1..ac693c9 100644 --- a/src/components/metric/MetricFieldControls.jsx +++ b/src/components/metric/MetricFieldControls.jsx @@ -323,12 +323,26 @@ export function MappingField({ field, control }) { /> - rhf.onChange(patchRow(rows, index, { weight: e.target.value }))} - /> + {field.decimalWeight ? ( + { + const next = e.target.value; + if (next === '' || /^\d*\.?\d*$/.test(next)) { + rhf.onChange(patchRow(rows, index, { weight: next })); + } + }} + /> + ) : ( + rhf.onChange(patchRow(rows, index, { weight: e.target.value }))} + /> + )} { @@ -141,6 +148,7 @@ const leaderboards = { title: 'Choose Metric', type: 'mapping', variant: 'grouped', + decimalWeight: true, required: true, metrics, fullwidth: true, @@ -222,6 +230,8 @@ const leaderboards = { const leaderboardType = payload.leaderboard_roles_type === 'team' ? 'team' : 'roles'; payload.leaderboard_roles_type = leaderboardType; payload.sort_order = payload.sort_order === '' || payload.sort_order == null ? 0 : Number(payload.sort_order); + payload.validity_start = toApiDate(payload.validity_start); + payload.validity_end = toApiDate(payload.validity_end); payload.visible_roles = asArray(payload.visible_roles); payload.reporting_roles = asArray(payload.reporting_roles); payload.intervals = asArray(payload.intervals); @@ -250,7 +260,12 @@ const leaderboards = { metric: row.metric, display: row.display || '', sort_order: row.sort_order === '' || row.sort_order == null ? 0 : Number(row.sort_order), - weight: row.weight === '' || row.weight == null ? '1' : String(row.weight), + weight: (() => { + const text = row.weight == null ? '' : String(row.weight).trim(); + const num = Number(text); + if (text === '' || !Number.isFinite(num) || num <= 0) return '1'; + return text.endsWith('.') ? String(num) : text; + })(), })); payload.combined_metrics = stringifyCombinedMetrics( (Array.isArray(payload.combined_metrics) ? payload.combined_metrics : []).filter((row) => row?.type),