UNPKG

dbm

Version:

74 lines (55 loc) 2.6 kB
import Dbm from "../../../index.js"; export default class ItemEditor extends Dbm.core.BaseObject { _construct() { super._construct(); this.item.requireProperty("status", "none"); this.item.requireProperty("editors", []); let anyChange = Dbm.flow.updatefunctions.logic.any(); this.item.requireProperty("anyChange", anyChange); this.item.requireProperty("changed", false).connectInput(anyChange.output.properties.value); } getEditor(aField) { return this.item["editor_" + aField]; } addEditor(aName, aInitialValue, aSaveFunction, aUpdateEncoding = null) { let valueEditor = this.item["editor_" + aName]; if(!valueEditor) { valueEditor = new Dbm.graphapi.webclient.admin.ValueEditor(); valueEditor.item.editValue.setInitialValue(aInitialValue); valueEditor.item.setValue("itemEditor", this.item); valueEditor.item.setValue("name", aName); valueEditor.item.setValue("updateEncoding", aUpdateEncoding); this.item.anyChange.addCheck(valueEditor.item.properties.changed); this.item.setValue("editor_" + aName, valueEditor); this.item.editors = [].concat(this.item.editors, valueEditor); valueEditor.addSaveFunction(aSaveFunction); } return valueEditor; } addFieldEditor(aField, aInitialValue, aUpdateEncoding = null) { return this.addEditor(aField, aInitialValue, Dbm.graphapi.webclient.admin.SaveFunctions.setField, aUpdateEncoding); } addCommandsToSaveData(aSaveData) { let editedItemId = Dbm.objectPath(this.item, "editedItem.id"); let itemSaveData = aSaveData.getItemSaveData(editedItemId); let currentArray = this.item.editors; let currentArrayLength = currentArray.length; for(let i = 0; i < currentArrayLength; i++) { let currentEditor = currentArray[i]; if(currentEditor.item.changed) { currentEditor.addCommandsToSaveData(aSaveData); } } itemSaveData.addStartCommand(Dbm.commands.setProperty(this.item.properties.status, "loading")); itemSaveData.addSavedCommand(Dbm.commands.setProperty(this.item.properties.status, "none")); } getSaveData() { let saveData = new Dbm.graphapi.webclient.admin.SaveData(); this.addCommandsToSaveData(saveData); return saveData; } save() { let saveData = this.getSaveData(); saveData.save(); } }