UNPKG

@tomino/dynamic-form-semantic-ui

Version:

Semantic UI form renderer based on dynamic form generation

87 lines 2.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const editor_common_1 = require("./editor_common"); const common_1 = require("../common"); const helpers_1 = require("../helpers"); class ProjectManager { constructor(storage, builder) { this.storage = storage; this.buildProject = builder; } listProjects() { return this.storage.listProjects(); } loadLastProject() { let last = localStorage.getItem(ProjectManager.LAST); if (last) { return this.loadById(last); } return null; } async loadById(id) { let project = await this.storage.loadProject(id); return this.load(project); } load(project, saveLast = true) { this.project = project; if (saveLast) { localStorage.setItem(ProjectManager.LAST, project.id); } return this.buildProject(project.form || {}, project.schema || {}); } duplicateProject(project, name) { let newProject = this.saveProject(project, editor_common_1.generateUid(), name); return this.load(newProject); } saveProject(project, id, name) { const form = common_1.toJS(project.form); if (name) { form.name = name; } return this.save({ form: helpers_1.formDatasetToJS(form), schema: helpers_1.schemaDatasetToJS(project.schema, false), style: {}, id: id || this.project.id, created: this.project.created, modified: Date.now() }); } save(project) { this.storage.saveProject(project); this.project = project; localStorage.setItem(ProjectManager.LAST, this.project.id); return project; } deleteProject(id) { this.storage.deleteProject(id); if (this.project.id === id) { this.project = null; localStorage.removeItem(ProjectManager.LAST); } } createProject(name) { const id = editor_common_1.generateUid(); return this.load({ form: { control: 'Form', props: { label: name, control: 'Form' }, elements: [] }, schema: { type: 'object', properties: {} }, style: {}, id, created: Date.now(), modified: null }); } } ProjectManager.LAST = 'CORPIX_LAST_PROJECT'; exports.ProjectManager = ProjectManager; //# sourceMappingURL=project_manager.js.map