io3fix
Version:
toolkit for interior apps
37 lines (34 loc) • 1.46 kB
JavaScript
import getDefaultsByType from './validate/get-defaults-by-type.js'
import getParamValueType from './validate/get-param-value-type.js'
import uuid from '../../utils/uuid'
export default function applyDefaults(element3d) {
if (!element3d || !element3d.type) return
var typeSpecificDefaults = getDefaultsByType()
var defaultParams = typeSpecificDefaults[element3d.type].params
Object.keys(defaultParams).forEach(function (key) {
var defaultVal = defaultParams[key].defaultValue
// check if type is valid
if (element3d[key]) {
var paramType = defaultParams[key].type
var elParamType = getParamValueType(element3d[key], paramType)
// check if type is valid
if (paramType !== elParamType) {
// try to fix integers
if (paramType === 'int' && parseInt(element3d[key])) element3d[key] = parseInt(element3d[key])
// try to fix floats
else if (paramType === 'number' && parseFloat(element3d[key])) element3d[key] = parseFloat(element3d[key])
// set default
else if (defaultVal !== undefined) element3d[key] = defaultVal
else delete element3d[key]
}
}
// apply default
if (element3d[key] === undefined) {
// id needs to be generated hence no defaultValue
if (key === 'id') element3d[key] = uuid.generate()
// apply default value
else if (defaultVal !== undefined) element3d[key] = defaultVal
}
})
return element3d
}