diff options
Diffstat (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu.tsx')
-rw-r--r-- | src/client/views/nodes/DataVizBox/DocCreatorMenu.tsx | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu.tsx index ffc4dd0b1..449d61a65 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu.tsx @@ -39,7 +39,7 @@ export enum LayoutType { } @observer -export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps & CollectionFreeFormView> { +export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> { static Instance: DocCreatorMenu; @@ -812,8 +812,19 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps & Co this.forceUpdate(); } - findMatches = () => { + matchesForTemplate = (template: TemplateDocInfos, cols: Col[]): number[][] => { + const colMatchesField = (col: Col, field : Field) => { return field.sizes?.includes(col.size) && field.types.includes(col.type) }; + const matches: number[][] = Array(template.fields.length); + template.fields.forEach((field, i) => { + cols.forEach((col, v) => { + if (colMatchesField(col, field)) { + matches[i].push(v); + } + }); + }); + + return matches; } maxMatches = (fieldsCt: number, matches: number[][]) => { @@ -833,18 +844,29 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps & Co } for (let v = 0; v < fieldsCt; ++v) { - console.log(v) used.fill(false); augmentingPath(v); } - let numMatches: number = 0; + let count: number = 0; for (let i = 0; i < fieldsCt; ++i) { - if (mt[i] !== -1) ++numMatches; + if (mt[i] !== -1) ++count; } - return numMatches; + return count; + } + + + findValidTemplates = (cols: Col[], templates: TemplateDocInfos[]) => { + const validTemplates: TemplateDocInfos[] = []; + templates.forEach(template => { + const numFields = template.fields.length; + const matches = this.matchesForTemplate(template, cols); + if (this.maxMatches(numFields, matches) === numFields) { + validTemplates.push(template); + } + }) } get dashboardContents(){ @@ -1022,6 +1044,15 @@ enum FieldSize { HUGE = 'huge' } + +type Col = { + size: FieldSize; + content: string; + desc: string; + title: string; + type: FieldType; +} + type Field = { tl: [number, number], br: [number, number], |