aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/DataVizBox/DataVizBox.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/DataVizBox/DataVizBox.tsx')
-rw-r--r--src/client/views/nodes/DataVizBox/DataVizBox.tsx117
1 files changed, 8 insertions, 109 deletions
diff --git a/src/client/views/nodes/DataVizBox/DataVizBox.tsx b/src/client/views/nodes/DataVizBox/DataVizBox.tsx
index d79a37181..d5e37b3b5 100644
--- a/src/client/views/nodes/DataVizBox/DataVizBox.tsx
+++ b/src/client/views/nodes/DataVizBox/DataVizBox.tsx
@@ -1,6 +1,6 @@
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { Checkbox } from '@mui/material';
-import { Colors, Toggle, ToggleType, Type } from 'browndash-components';
+import { Colors, Toggle, ToggleType, Type } from '@dash/components';
import { IReactionDisposer, ObservableMap, action, computed, makeObservable, observable, reaction, runInAction } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
@@ -32,11 +32,12 @@ import { DocumentView } from '../DocumentView';
import { FieldView, FieldViewProps } from '../FieldView';
import { FocusViewOptions } from '../FocusViewOptions';
import './DataVizBox.scss';
-import { Col, DataVizTemplateInfo, DocCreatorMenu, LayoutType, TemplateFieldSize, TemplateFieldType } from './DocCreatorMenu';
+import { Col, DataVizTemplateInfo, DocCreatorMenu, LayoutType} from './DocCreatorMenu/DocCreatorMenu';
import { Histogram } from './components/Histogram';
import { LineChart } from './components/LineChart';
import { PieChart } from './components/PieChart';
import { TableBox } from './components/TableBox';
+import { TemplateFieldSize, TemplateFieldType } from './DocCreatorMenu/TemplateBackend';
export enum DataVizView {
TABLE = 'table',
@@ -73,7 +74,7 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
return <div className="dataVizBox-annotationLayer" style={{ height: this._props.PanelHeight(), width: this._props.PanelWidth() }} ref={this._annotationLayer} />;
}
marqueeDown = (e: React.PointerEvent) => {
- if (!e.altKey && e.button === 0 && NumCast(this.Document._freeform_scale, 1) <= NumCast(this.Document.freeform_scaleMin, 1) && this._props.isContentActive() && ![InkTool.Highlighter, InkTool.Pen, InkTool.Write].includes(Doc.ActiveTool)) {
+ if (!e.altKey && e.button === 0 && NumCast(this.Document._freeform_scale, 1) <= NumCast(this.Document.freeform_scaleMin, 1) && this._props.isContentActive() && Doc.ActiveTool !== InkTool.Ink) {
setupMoveUpEvents(
this,
e,
@@ -171,7 +172,6 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
const colInfo = this.colsInfo.get(colTitle);
if (colInfo) {
colInfo.title = newTitle;
- console.log(colInfo.title);
} else {
this.colsInfo.set(colTitle, { title: newTitle, desc: '', type: TemplateFieldType.UNSET, sizes: [] });
}
@@ -453,7 +453,7 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
@action
onPointerDown = (e: React.PointerEvent): void => {
if ((this.Document._freeform_scale || 1) !== 1) return;
- if (!e.altKey && e.button === 0 && this._props.isContentActive() && ![InkTool.Highlighter, InkTool.Pen, InkTool.Write].includes(Doc.ActiveTool)) {
+ if (!e.altKey && e.button === 0 && this._props.isContentActive() && Doc.ActiveTool !== InkTool.Ink) {
this._props.select(false);
MarqueeAnnotator.clearAnnotations(this._savedAnnotations);
this._marqueeing = [e.clientX, e.clientY];
@@ -489,7 +489,7 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
}
// Changing which document to add the annotation to (the currently selected PDF)
- GPTPopup.Instance.setSidebarId('data_sidebar');
+ GPTPopup.Instance.setSidebarFieldKey('data_sidebar');
GPTPopup.Instance.addDoc = this.sidebarAddDocument;
};
@@ -510,7 +510,6 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
openDocCreatorMenu = (x: number, y: number) => {
DocCreatorMenu.Instance.toggleDisplay(x, y);
DocCreatorMenu.Instance.setDataViz(this);
- DocCreatorMenu.Instance.setTemplateDocs(this.getPossibleTemplates());
};
specificContextMenu = (e: React.MouseEvent) => {
@@ -523,7 +522,7 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
};
askGPT = action(async () => {
- GPTPopup.Instance.setSidebarId('data_sidebar');
+ GPTPopup.Instance.setSidebarFieldKey('data_sidebar');
GPTPopup.Instance.addDoc = this.sidebarAddDocument;
GPTPopup.Instance.createFilteredDoc = this.createFilteredDoc;
GPTPopup.Instance.setDataJson('');
@@ -622,107 +621,6 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
}
};
- getPossibleTemplates = (): Doc[] => {
- const linkedDocs: Doc[] = LinkManager.Instance.getAllRelatedLinks(this.Document).map(d => DocCast(LinkManager.getOppositeAnchor(d, this.Document)));
- const linkedCollections: Doc[] = linkedDocs.filter(doc => doc.type === 'config').map(doc => DocCast(doc.annotationOn));
- const isColumnTitle = (title: string): boolean => {
- const colTitles: string[] = Object.keys(this.records[0]);
- for (let i = 0; i < colTitles.length; ++i) {
- if (colTitles[i] === title) {
- return true;
- }
- }
- return false;
- };
- const isValidTemplate = (collection: Doc) => {
- const childDocs = DocListCast(collection[Doc.LayoutFieldKey(collection)]);
- for (let i = 0; i < childDocs.length; ++i) {
- if (isColumnTitle(String(childDocs[i].title))) return true;
- }
- return false;
- };
- return linkedCollections.filter(col => isValidTemplate(col));
- };
-
- ApplyTemplateTo = (templateDoc: Doc, target: Doc, targetKey: string, titleTarget: string | undefined) => {
- if (!Doc.AreProtosEqual(target[targetKey] as Doc, templateDoc)) {
- if (target.resolvedDataDoc) {
- target[targetKey] = new PrefetchProxy(templateDoc);
- } else {
- titleTarget && (Doc.GetProto(target).title = titleTarget);
- const setDoc = [AclAdmin, AclEdit, AclAugment].includes(GetEffectiveAcl(Doc.GetProto(target))) ? Doc.GetProto(target) : target;
- setDoc[targetKey] = new PrefetchProxy(templateDoc);
- }
- }
- return target;
- };
-
- applyLayout = (templateInfo: DataVizTemplateInfo, docs: Doc[]) => {
- if (templateInfo.layout.type === LayoutType.Stacked) return;
- const columns: number = templateInfo.columns;
- const xGap: number = templateInfo.layout.xMargin;
- const yGap: number = templateInfo.layout.yMargin;
- // const repeat: number = templateInfo.layout.repeat;
- const startX: number = templateInfo.referencePos.x;
- const startY: number = templateInfo.referencePos.y;
- const templWidth = Number(templateInfo.doc._width);
- const templHeight = Number(templateInfo.doc._height);
-
- let i: number = 0;
- let docsChanged: number = 0;
- let curX: number = startX;
- let curY: number = startY;
-
- while (docsChanged < docs.length) {
- while (i < columns && docsChanged < docs.length) {
- docs[docsChanged].x = curX;
- docs[docsChanged].y = curY;
- curX += templWidth + xGap;
- ++docsChanged;
- ++i;
- }
-
- i = 0;
- curX = startX;
- curY += templHeight + yGap;
- }
- };
-
- // @action addSavedLayout = (layout: DataVizTemplateLayout) => {
- // const saved = Cast(this.layoutDoc.dataViz_savedTemplates, listSpec('RefField'));
-
- // }
-
- @action
- createDocsFromTemplate = (templateInfo: DataVizTemplateInfo) => {
- if (!templateInfo.doc) return;
- const mainCollection = this.DocumentView?.().containerViewPath?.().lastElement()?.ComponentView as CollectionFreeFormView;
- const fields: string[] = Array.from(Object.keys(this.records[0]));
- const selectedRows = NumListCast(this.layoutDoc.dataViz_selectedRows);
- const docs: Doc[] = selectedRows.map(row => {
- const values: string[] = [];
- fields.forEach(col => values.push(this.records[row][col]));
-
- const proto = new Doc();
- proto.author = ClientUtils.CurrentUserEmail();
- values.forEach((val, i) => {
- proto[fields[i]] = val as FieldType;
- });
-
- const target = Doc.MakeDelegate(proto);
- const targetKey = StrCast(templateInfo.doc!.layout_fieldKey, 'layout');
- const applied = this.ApplyTemplateTo(templateInfo.doc!, target, targetKey, templateInfo.doc!.title + `${row}`);
- target.layout_fieldKey = targetKey;
-
- //this.applyImagesTo(target, fields);
- return applied;
- });
-
- docs.forEach(doc => mainCollection.addDocument(doc));
-
- this.applyLayout(templateInfo, docs);
- };
-
/**
* creates a new dataviz document filter from this one
* it appears to the right of this document, with the
@@ -832,6 +730,7 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
annotationLayerScrollTop={NumCast(this.Document._layout_scrollTop)}
scaling={returnOne}
docView={this.DocumentView}
+ screenTransform={this.DocumentView().screenToViewTransform}
addDocument={this.sidebarAddDocument}
finishMarquee={this.finishMarquee}
savedAnnotations={this.savedAnnotations}