aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/CollectionViewBase.tsx
diff options
context:
space:
mode:
authorBob Zeleznik <zzzman@gmail.com>2019-03-21 22:22:25 -0400
committerBob Zeleznik <zzzman@gmail.com>2019-03-21 22:22:25 -0400
commitbc59ea805f32568f0835bd55d39575236c24a066 (patch)
treefecdc5314866c41908ca3a5fa4b56ee0d5b6981a /src/client/views/collections/CollectionViewBase.tsx
parent1cf618563838f4ce7d8a98c8a0c8d94670bc4e18 (diff)
added very basic cycle detection when adding to collections
Diffstat (limited to 'src/client/views/collections/CollectionViewBase.tsx')
-rw-r--r--src/client/views/collections/CollectionViewBase.tsx12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/client/views/collections/CollectionViewBase.tsx b/src/client/views/collections/CollectionViewBase.tsx
index f33007196..535a8a8d2 100644
--- a/src/client/views/collections/CollectionViewBase.tsx
+++ b/src/client/views/collections/CollectionViewBase.tsx
@@ -17,6 +17,7 @@ import { NumberField } from "../../../fields/NumberField";
import { DocumentManager } from "../../util/DocumentManager";
import request = require("request");
import { ServerUtils } from "../../../server/ServerUtil";
+import { addHiddenFinalProp } from "mobx/lib/internal";
export interface CollectionViewProps {
fieldKey: Key;
@@ -33,7 +34,7 @@ export interface CollectionViewProps {
export interface SubCollectionViewProps extends CollectionViewProps {
active: () => boolean;
- addDocument: (doc: Document, allowDuplicates: boolean) => void;
+ addDocument: (doc: Document, allowDuplicates: boolean) => boolean;
removeDocument: (doc: Document) => boolean;
CollectionView: CollectionView;
}
@@ -83,17 +84,20 @@ export class CollectionViewBase extends React.Component<SubCollectionViewProps>
@undoBatch
@action
- protected drop(e: Event, de: DragManager.DropEvent) {
+ protected drop(e: Event, de: DragManager.DropEvent): boolean {
if (de.data instanceof DragManager.DocumentDragData) {
if (de.data.aliasOnDrop) {
[KeyStore.Width, KeyStore.Height, KeyStore.CurPage].map(key =>
de.data.draggedDocument.GetTAsync(key, NumberField, (f: Opt<NumberField>) => f ? de.data.droppedDocument.SetNumber(key, f.Data) : null));
- } else if (de.data.removeDocument) {
+ }
+ let added = this.props.addDocument(de.data.droppedDocument, false);
+ if (added && de.data.removeDocument && !de.data.aliasOnDrop) {
de.data.removeDocument(this.props.CollectionView);
}
- this.props.addDocument(de.data.droppedDocument, false);
e.stopPropagation();
+ return added;
}
+ return false;
}
protected getDocumentFromType(type: string, path: string, options: DocumentOptions): Opt<Document> {