From c635389c1a5052004822b236168008cc0b91cbbf Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 12 Dec 2018 01:11:34 -0500 Subject: [PATCH] Fix handling of semicolon delimited values in numeric field (closes #5438) --- modules/ui/fields/input.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/ui/fields/input.js b/modules/ui/fields/input.js index b6756dfa9..89b6039b3 100644 --- a/modules/ui/fields/input.js +++ b/modules/ui/fields/input.js @@ -98,7 +98,12 @@ export function uiFieldText(field, context) { .merge(buttons) .on('click', function(d) { d3_event.preventDefault(); - input.node().value = parsed(input.node().value) + d; + var vals = input.node().value.split(';'); + vals = vals.map(function(v) { + var num = parseFloat(v.trim(), 10); + return isFinite(num) ? clamped(num + d) : v.trim(); + }); + input.node().value = vals.join(';'); change()(); }); @@ -117,12 +122,6 @@ export function uiFieldText(field, context) { } - // parse as a number - function parsed(val) { - return parseFloat(val || 0, 10) || 0; - } - - // clamp number to min/max function clamped(num) { if (field.minValue !== undefined) { @@ -142,7 +141,12 @@ export function uiFieldText(field, context) { if (!onInput) { if (field.type === 'number' && val !== undefined) { - val = clamped(parsed(val)) + ''; + var vals = val.split(';'); + vals = vals.map(function(v) { + var num = parseFloat(v.trim(), 10); + return isFinite(num) ? clamped(num) : v.trim(); + }); + val = vals.join(';'); } utilGetSetValue(input, val || ''); }