aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateManager.ts
blob: 0978444e39e9708221dc17e338cfbc750952e442 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { makeAutoObservable } from 'mobx';
import { Col } from './DocCreatorMenu';
import { FieldSettings } from './TemplateFieldTypes/TemplateField';
import { Template } from './Template';

export class TemplateManager {
    templates: Template[] = [];

    constructor(templateSettings: FieldSettings[]) {
        makeAutoObservable(this);
        this.templates = this.initializeTemplates(templateSettings);
    }

    initializeTemplates = (templateSettings: FieldSettings[]) => templateSettings.map(settings => new Template(settings));

    getValidTemplates = (cols: Col[]) => this.templates.filter(template => template.isValidTemplate(cols));

    addTemplate = (newTemplate: Template) => this.templates.push(newTemplate);

    removeTemplate = (template: Template) => {
        this.templates.splice(this.templates.indexOf(template), 1);
        template.cleanup();
    };
}