aboutsummaryrefslogtreecommitdiff
path: root/src/views/collections
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/collections')
-rw-r--r--src/views/collections/CollectionDockingView.tsx37
-rw-r--r--src/views/collections/CollectionFreeFormView.tsx37
-rw-r--r--src/views/collections/CollectionSchemaView.tsx19
-rw-r--r--src/views/collections/CollectionViewBase.tsx53
4 files changed, 67 insertions, 79 deletions
diff --git a/src/views/collections/CollectionDockingView.tsx b/src/views/collections/CollectionDockingView.tsx
index 8c8238ee0..177e3510a 100644
--- a/src/views/collections/CollectionDockingView.tsx
+++ b/src/views/collections/CollectionDockingView.tsx
@@ -4,21 +4,20 @@ import React = require("react");
import FlexLayout from "flexlayout-react";
import { action, observable, computed } from "mobx";
import { Document } from "../../fields/Document";
-import { DocumentView, CollectionViewProps, COLLECTION_BORDER_WIDTH } from "../nodes/DocumentView";
+import { DocumentView } from "../nodes/DocumentView";
import { ListField } from "../../fields/ListField";
import { NumberField } from "../../fields/NumberField";
import { SSL_OP_SINGLE_DH_USE } from "constants";
-import { SelectionManager } from "../../util/SelectionManager";
-import { ContextMenu } from "../ContextMenu";
import "./CollectionDockingView.scss"
import 'golden-layout/src/css/goldenlayout-base.css';
import 'golden-layout/src/css/goldenlayout-dark-theme.css';
import * as GoldenLayout from "golden-layout";
import * as ReactDOM from 'react-dom';
import { DragManager } from "../../util/DragManager";
+import { CollectionViewBase, CollectionViewProps, COLLECTION_BORDER_WIDTH } from "./CollectionViewBase";
@observer
-export class CollectionDockingView extends React.Component<CollectionViewProps> {
+export class CollectionDockingView extends CollectionViewBase {
private static UseGoldenLayout = true;
public static LayoutString() { return '<CollectionDockingView Document={Document} fieldKey={DataKey} ContainingDocumentView={ContainingDocumentView}/>'; }
@@ -56,14 +55,6 @@ export class CollectionDockingView extends React.Component<CollectionViewProps>
super(props);
}
- @computed
- public get active(): boolean {
- var isSelected = (this.props.ContainingDocumentView != undefined && SelectionManager.IsSelected(this.props.ContainingDocumentView));
- var childSelected = SelectionManager.SelectedDocuments().some(view => view.props.ContainingCollectionView == this);
- var topMost = this.props.ContainingDocumentView != undefined && this.props.ContainingDocumentView.props.ContainingCollectionView == undefined;
- return isSelected || childSelected || topMost;
- }
-
componentDidMount: () => void = () => {
if (this._containerRef.current && CollectionDockingView.UseGoldenLayout) {
this.goldenLayoutFactory();
@@ -75,24 +66,6 @@ export class CollectionDockingView extends React.Component<CollectionViewProps>
}
private nextId = (function () { var _next_id = 0; return function () { return _next_id++; } })();
- @action
- addDocument = (doc: Document): void => {
- //TODO This won't create the field if it doesn't already exist
- const value = this.props.Document.GetFieldValue(this.props.fieldKey, ListField, new Array<Document>())
- value.push(doc);
- }
-
- @action
- removeDocument = (doc: Document): void => {
- //TODO This won't create the field if it doesn't already exist
- const value = this.props.Document.GetFieldValue(this.props.fieldKey, ListField, new Array<Document>())
- if (value.indexOf(doc) !== -1) {
- value.splice(value.indexOf(doc), 1)
-
- SelectionManager.DeselectAll()
- ContextMenu.Instance.clearItems()
- }
- }
@action
onResize = (event: any) => {
@@ -167,11 +140,11 @@ export class CollectionDockingView extends React.Component<CollectionViewProps>
_makeFullScreen: boolean = false;
_maximizedStack: any = null;
- public static OpenFullScreen(dv: DocumentView) {
+ public static OpenFullScreen(document: Document) {
var newItemConfig = {
type: 'component',
componentName: 'documentViewComponent',
- componentState: { doc: dv.props.Document }
+ componentState: { doc: document }
};
CollectionDockingView.myLayout._makeFullScreen = true;
CollectionDockingView.myLayout.root.contentItems[0].addChild(newItemConfig);
diff --git a/src/views/collections/CollectionFreeFormView.tsx b/src/views/collections/CollectionFreeFormView.tsx
index 403dbf503..ab2aeee64 100644
--- a/src/views/collections/CollectionFreeFormView.tsx
+++ b/src/views/collections/CollectionFreeFormView.tsx
@@ -3,20 +3,18 @@ import { Key, KeyStore } from "../../fields/Key";
import React = require("react");
import { action, observable, computed } from "mobx";
import { Document } from "../../fields/Document";
-import { DocumentView, CollectionViewProps, COLLECTION_BORDER_WIDTH } from "../nodes/DocumentView";
+import { DocumentView } from "../nodes/DocumentView";
import { ListField } from "../../fields/ListField";
import { NumberField } from "../../fields/NumberField";
import { SSL_OP_SINGLE_DH_USE } from "constants";
-import { SelectionManager } from "../../util/SelectionManager";
import { Documents } from "../../documents/Documents";
-import { ContextMenu } from "../ContextMenu";
import { DragManager } from "../../util/DragManager";
import "./CollectionFreeFormView.scss";
import { Utils } from "../../Utils";
-import { CollectionDockingView } from "./CollectionDockingView";
+import { CollectionViewBase, CollectionViewProps, COLLECTION_BORDER_WIDTH } from "./CollectionViewBase";
@observer
-export class CollectionFreeFormView extends React.Component<CollectionViewProps> {
+export class CollectionFreeFormView extends CollectionViewBase {
private _containerRef = React.createRef<HTMLDivElement>();
private _canvasRef = React.createRef<HTMLDivElement>();
private _nodeContainerRef = React.createRef<HTMLDivElement>();
@@ -27,16 +25,6 @@ export class CollectionFreeFormView extends React.Component<CollectionViewProps>
super(props);
}
- @computed
- public get active(): boolean {
- var isSelected = (this.props.ContainingDocumentView != undefined && SelectionManager.IsSelected(this.props.ContainingDocumentView));
- var childSelected = SelectionManager.SelectedDocuments().some(view => view.props.ContainingCollectionView == this);
- var topMost = this.props.ContainingDocumentView != undefined && (
- this.props.ContainingDocumentView.props.ContainingCollectionView == undefined ||
- this.props.ContainingDocumentView.props.ContainingCollectionView instanceof CollectionDockingView);
- return isSelected || childSelected || topMost;
- }
-
@action
drop = (e: Event, de: DragManager.DropEvent) => {
const doc = de.data["document"];
@@ -159,25 +147,6 @@ export class CollectionFreeFormView extends React.Component<CollectionViewProps>
}
@action
- addDocument = (doc: Document): void => {
- //TODO This won't create the field if it doesn't already exist
- const value = this.props.Document.GetFieldValue(this.props.fieldKey, ListField, new Array<Document>())
- value.push(doc);
- }
-
- @action
- removeDocument = (doc: Document): void => {
- //TODO This won't create the field if it doesn't already exist
- const value = this.props.Document.GetFieldValue(this.props.fieldKey, ListField, new Array<Document>())
- if (value.indexOf(doc) !== -1) {
- value.splice(value.indexOf(doc), 1)
-
- SelectionManager.DeselectAll()
- ContextMenu.Instance.clearItems()
- }
- }
-
- @action
bringToFront(doc: DocumentView) {
const { fieldKey, Document: Document } = this.props;
diff --git a/src/views/collections/CollectionSchemaView.tsx b/src/views/collections/CollectionSchemaView.tsx
index dd33958dc..420a68cc9 100644
--- a/src/views/collections/CollectionSchemaView.tsx
+++ b/src/views/collections/CollectionSchemaView.tsx
@@ -1,19 +1,19 @@
-import { CollectionViewProps, DocumentFieldViewProps, DocumentView, DocumentContents } from "../nodes/DocumentView";
+import { DocumentContents } from "../nodes/DocumentView";
import React = require("react")
import ReactTable, { ReactTableDefaults, CellInfo, ComponentPropsGetterRC, ComponentPropsGetterR } from "react-table";
import { observer } from "mobx-react";
import { KeyStore as KS, Key } from "../../fields/Key";
import { Document } from "../../fields/Document";
-import { FieldView } from "../nodes/FieldView";
+import { FieldView, FieldViewProps } from "../nodes/FieldView";
import "react-table/react-table.css"
import { observable, action, computed } from "mobx";
import SplitPane from "react-split-pane"
import "./CollectionSchemaView.scss"
import { ScrollBox } from "../../util/ScrollBox";
-import { SelectionManager } from "../../util/SelectionManager";
+import { CollectionViewBase } from "./CollectionViewBase";
@observer
-export class CollectionSchemaView extends React.Component<CollectionViewProps> {
+export class CollectionSchemaView extends CollectionViewBase {
public static LayoutString() { return '<CollectionSchemaView Document={Document} fieldKey={DataKey} ContainingDocumentView={ContainingDocumentView}/>'; }
@observable
@@ -23,10 +23,10 @@ export class CollectionSchemaView extends React.Component<CollectionViewProps> {
if (!this.props.ContainingDocumentView) {
return <div></div>
}
- let props: DocumentFieldViewProps = {
+ let props: FieldViewProps = {
doc: rowProps.value[0],
fieldKey: rowProps.value[1],
- containingDocumentView: this.props.ContainingDocumentView
+ documentViewContainer: this.props.ContainingDocumentView
}
return (
<FieldView {...props} />
@@ -55,13 +55,6 @@ export class CollectionSchemaView extends React.Component<CollectionViewProps> {
};
}
- @computed
- public get active(): boolean {
- var isSelected = (this.props.ContainingDocumentView != undefined && SelectionManager.IsSelected(this.props.ContainingDocumentView));
- var childSelected = false; // SelectionManager.SelectedDocuments().some(view => view.props.ContainingCollectionView == this);
- var topMost = this.props.ContainingDocumentView != undefined && this.props.ContainingDocumentView.props.ContainingCollectionView == undefined;
- return isSelected || childSelected || topMost;
- }
onPointerDown = (e: React.PointerEvent) => {
let target = e.target as HTMLElement;
if (target.tagName == "SPAN" && target.className.includes("Resizer")) {
diff --git a/src/views/collections/CollectionViewBase.tsx b/src/views/collections/CollectionViewBase.tsx
new file mode 100644
index 000000000..bfded71d9
--- /dev/null
+++ b/src/views/collections/CollectionViewBase.tsx
@@ -0,0 +1,53 @@
+import { action, computed } from "mobx";
+import { observer } from "mobx-react";
+import { Document } from "../../fields/Document";
+import { Opt } from "../../fields/Field";
+import { Key, KeyStore } from "../../fields/Key";
+import { ListField } from "../../fields/ListField";
+import { SelectionManager } from "../../util/SelectionManager";
+import { ContextMenu } from "../ContextMenu";
+import React = require("react");
+import { DocumentView } from "../nodes/DocumentView";
+import { CollectionDockingView } from "./CollectionDockingView";
+
+
+export interface CollectionViewProps {
+ fieldKey: Key;
+ Document: Document;
+ ContainingDocumentView: Opt<DocumentView>;
+}
+
+export const COLLECTION_BORDER_WIDTH = 2;
+
+@observer
+export class CollectionViewBase extends React.Component<CollectionViewProps> {
+
+ @computed
+ public get active(): boolean {
+ var isSelected = (this.props.ContainingDocumentView != undefined && SelectionManager.IsSelected(this.props.ContainingDocumentView));
+ var childSelected = SelectionManager.SelectedDocuments().some(view => view.props.ContainingCollectionView == this);
+ var topMost = this.props.ContainingDocumentView != undefined && (
+ this.props.ContainingDocumentView.props.ContainingCollectionView == undefined ||
+ this.props.ContainingDocumentView.props.ContainingCollectionView instanceof CollectionDockingView);
+ return isSelected || childSelected || topMost;
+ }
+ @action
+ addDocument = (doc: Document): void => {
+ //TODO This won't create the field if it doesn't already exist
+ const value = this.props.Document.GetFieldValue(this.props.fieldKey, ListField, new Array<Document>())
+ value.push(doc);
+ }
+
+ @action
+ removeDocument = (doc: Document): void => {
+ //TODO This won't create the field if it doesn't already exist
+ const value = this.props.Document.GetFieldValue(this.props.fieldKey, ListField, new Array<Document>())
+ if (value.indexOf(doc) !== -1) {
+ value.splice(value.indexOf(doc), 1)
+
+ SelectionManager.DeselectAll()
+ ContextMenu.Instance.clearItems()
+ }
+ }
+
+} \ No newline at end of file