@tomino/dynamic-form-semantic-ui
Version:
Semantic UI form renderer based on dynamic form generation
87 lines • 2.66 kB
JavaScript
;
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