jsketcher/web/app/cad/craft/intializeBySchema.js
2018-11-28 01:10:44 -08:00

36 lines
1.1 KiB
JavaScript

import {ENTITIES} from '../scene/entites';
export default function initializeBySchema(schema, context) {
let fields = Object.keys(schema);
let obj = {};
for (let field of fields ) {
let val;
let md = schema[field];
if (md.type === 'array') {
if (md.defaultValue) {
if (md.defaultValue.type === 'selection') {
let {itemField, entity} = md.defaultValue;
val = context.streams.selection[entity].value.map(s => {
let item = initializeBySchema(md.schema, context);
item[itemField] = s;
return item;
});
} else {
val = md.defaultValue;
}
} else {
val = [];
}
} else if (ENTITIES.indexOf(md.type) !== -1 && md.defaultValue && md.defaultValue.type === 'selection') {
val = context.streams.selection[md.type].value[0];
} else if (md.type === 'object') {
val = initializeBySchema(md.schema, context);
} else if (md.type === 'number') {
val = md.defaultValue;
} else {
val = md.defaultValue;
}
obj[field] = val;
}
return obj;
}