diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js index 910e581b39796acfa693b60d9d8926a5da94fc28..798b625e242d795b0d7071fb9c3a8529ed6ecdae 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/js/datatypeCleanupJS.js @@ -1978,7 +1978,7 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() { function replaceDefaultValues(o) { for (const k in o) { const v = o[k]; - if (v === "no default setting" || v === undefined) { + if (v === "no default setting" || v === "no default change" || Number.isNaN(v) || v === undefined) { o[k] = null; } else if (typeof v === 'object') { replaceDefaultValues(v); @@ -2018,7 +2018,7 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() { function ensureProps(obj, props) { props.forEach(prop => { - if (!obj.hasOwnProperty(prop) || obj[prop] === undefined) { + if (obj[prop] === undefined) { obj[prop] = null; } }); @@ -2036,16 +2036,21 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() { function ensureNumTarget(val) { switch (typeof val) { case 'number': - return App.RA.makeTarget('==', val); + return Number.isNaN(val) ? null : App.RA.makeTarget('==', val); case 'string': return App.RA.makeTarget('==', parseInt(val)); + case 'object': + if (val.hasOwnProperty('val') && Number.isNaN(val.val)) { + return null; + } + return val; default: return val; } } ensureProps(set, [ - 'haircuts', 'label', 'removeLabel', 'skinColor', + 'haircuts', 'label', 'removeLabel', 'skinColor', 'markings', 'earwear', 'toyHole', 'pornFeed', 'legAccessory', 'hyper_drugs' ]);