diff --git a/web/app/cad/craft/intializeBySchema.js b/web/app/cad/craft/intializeBySchema.js index 9a5acfe5..2014e860 100644 --- a/web/app/cad/craft/intializeBySchema.js +++ b/web/app/cad/craft/intializeBySchema.js @@ -26,7 +26,7 @@ export default function initializeBySchema(schema, context) { } else if (md.type === 'object') { val = initializeBySchema(md.schema, context); } else if (md.type === 'number') { - val = md.defaultValue + ''; + val = md.defaultValue; } else { val = md.defaultValue; } diff --git a/web/app/cad/craft/materializeParams.js b/web/app/cad/craft/materializeParams.js index 0d4c053c..967af637 100644 --- a/web/app/cad/craft/materializeParams.js +++ b/web/app/cad/craft/materializeParams.js @@ -10,14 +10,19 @@ export default function materializeParams(services, params, schema, result, erro continue; } let value = params[field]; - if (value === undefined) { + if (value === undefined || value === null || value === '') { if (!md.optional) { errors.push({path: [...parentPath, field], message: 'required'}); } } else { if (md.type === 'number') { try { - value = services.expressions.evaluateExpression(value); + const valueType = typeof value; + if (valueType === 'string') { + value = services.expressions.evaluateExpression(value); + } else if (valueType !== 'number') { + errors.push({path: [...parentPath, field], message: 'invalid value'}); + } } catch (e) { errors.push({path: [...parentPath, field], message: 'unable to evaluate expression'}); }