aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/views/MainView.tsx1
-rw-r--r--src/client/views/nodes/DataVizBox/DocCreatorMenu.tsx43
2 files changed, 37 insertions, 7 deletions
diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx
index 9c350afc0..2a937d403 100644
--- a/src/client/views/MainView.tsx
+++ b/src/client/views/MainView.tsx
@@ -592,7 +592,6 @@ export class MainView extends ObservableReactComponent<{}> {
else break;
}
if (!targClass.includes('contextMenu')) {
- console.log(targClass)
ContextMenu.Instance.closeMenu();
}
!['timeline-menu-desc', 'timeline-menu-item', 'timeline-menu-input'].includes(targClass) && TimelineMenu.Instance.closeMenu();
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],