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),
|