aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/CollectionViewBase.tsx
diff options
context:
space:
mode:
authoryipstanley <stanley_yip@brown.edu>2019-03-09 18:37:47 -0500
committeryipstanley <stanley_yip@brown.edu>2019-03-09 18:37:47 -0500
commitc739d5ae0f7d78bbd65134606c727df5a71defec (patch)
tree27c05f13a244a04717eeaa8aeb537b60b0ca985c /src/client/views/collections/CollectionViewBase.tsx
parent1135a989b154aae084e07e09195e2d1c59e06180 (diff)
parent96eede5f7d1706a3f7ac6ee02a85bb3da217f467 (diff)
finally merged
Diffstat (limited to 'src/client/views/collections/CollectionViewBase.tsx')
-rw-r--r--src/client/views/collections/CollectionViewBase.tsx43
1 files changed, 21 insertions, 22 deletions
diff --git a/src/client/views/collections/CollectionViewBase.tsx b/src/client/views/collections/CollectionViewBase.tsx
index be3cb0d5f..f3770056d 100644
--- a/src/client/views/collections/CollectionViewBase.tsx
+++ b/src/client/views/collections/CollectionViewBase.tsx
@@ -1,16 +1,16 @@
-import { action, computed } from "mobx";
+import { action } from "mobx";
import { Document } from "../../../fields/Document";
import { ListField } from "../../../fields/ListField";
import React = require("react");
import { KeyStore } from "../../../fields/KeyStore";
-import { Opt, FieldWaiting } from "../../../fields/Field";
+import { FieldWaiting } from "../../../fields/Field";
import { undoBatch } from "../../util/UndoManager";
import { DragManager } from "../../util/DragManager";
import { DocumentView } from "../nodes/DocumentView";
import { Documents, DocumentOptions } from "../../documents/Documents";
import { Key } from "../../../fields/Key";
import { Transform } from "../../util/Transform";
-
+import { CollectionView } from "./CollectionView";
export interface CollectionViewProps {
fieldKey: Key;
@@ -20,12 +20,15 @@ export interface CollectionViewProps {
isTopMost: boolean;
select: (ctrlPressed: boolean) => void;
bindings: any;
+ panelWidth: () => number;
+ panelHeight: () => number;
+ focus: (doc: Document) => void;
}
export interface SubCollectionViewProps extends CollectionViewProps {
active: () => boolean;
addDocument: (doc: Document) => void;
removeDocument: (doc: Document) => boolean;
- CollectionView: any;
+ CollectionView: CollectionView;
}
export class CollectionViewBase extends React.Component<SubCollectionViewProps> {
@@ -42,22 +45,18 @@ export class CollectionViewBase extends React.Component<SubCollectionViewProps>
@undoBatch
@action
protected drop(e: Event, de: DragManager.DropEvent) {
- const doc: DocumentView = de.data["document"];
- if (de.data["alias"]) {
- let newDoc = doc.props.Document.CreateAlias()
- const xOffset = de.data["xOffset"] as number || 0
- const yOffset = de.data["yOffset"] as number || 0
- newDoc.SetNumber(KeyStore.X, de.x - xOffset)
- newDoc.SetNumber(KeyStore.Y, de.y - yOffset)
- newDoc.SetNumber(KeyStore.Width, doc.props.Document.GetNumber(KeyStore.Width, 100))
- newDoc.SetNumber(KeyStore.Height, doc.props.Document.GetNumber(KeyStore.Height, 100))
- this.props.addDocument(newDoc)
- }
- if (doc.props.ContainingCollectionView && doc.props.ContainingCollectionView !== this.props.CollectionView) {
- if (!de.data["alias"] && doc.props.RemoveDocument) {
- doc.props.RemoveDocument(doc.props.Document);
+ const docView: DocumentView = de.data["documentView"];
+ const doc: Document = de.data["document"]
+ if (docView && docView.props.ContainingCollectionView && docView.props.ContainingCollectionView !== this.props.CollectionView) {
+ if (docView.props.RemoveDocument && !de.data["alias"]) {
+ docView.props.RemoveDocument(docView.props.Document)
+ }
+ this.props.addDocument(de.data["alias"] ? docView.props.Document.CreateAlias() : docView.props.Document)
+ } else if (doc) {
+ if (!de.data["alias"]) {
+ this.props.removeDocument(doc)
}
- this.props.addDocument(de.data["alias"] ? doc.props.Document.CreateAlias() : doc.props.Document);
+ this.props.addDocument(doc)
}
e.stopPropagation();
}
@@ -70,8 +69,8 @@ export class CollectionViewBase extends React.Component<SubCollectionViewProps>
let html = e.dataTransfer.getData("text/html");
let text = e.dataTransfer.getData("text/plain");
- if (html) {
- let htmlDoc = Documents.HtmlDocument(html, { ...options });
+ if (html && html.indexOf("<img") != 0) {
+ let htmlDoc = Documents.HtmlDocument(html, { ...options, width: 300, height: 300 });
htmlDoc.SetText(KeyStore.DocumentText, text);
this.props.addDocument(htmlDoc);
return;
@@ -82,7 +81,7 @@ export class CollectionViewBase extends React.Component<SubCollectionViewProps>
if (item.kind === "string" && item.type.indexOf("uri") != -1) {
e.dataTransfer.items[i].getAsString(function (s) {
action(() => {
- var img = Documents.ImageDocument(s, { ...options, nativeWidth: 300, nativeHeight: 300, width: 300, height: 300 })
+ var img = Documents.ImageDocument(s, { ...options, nativeWidth: 300, width: 300, })
let docs = that.props.Document.GetT(KeyStore.Data, ListField);
if (docs != FieldWaiting) {