From a2bec39bc152f7493e4171b6446040fa381e6463 Mon Sep 17 00:00:00 2001
From: Sam Wilkins <abdullah_ahmed@brown.edu>
Date: Sun, 17 Mar 2019 20:57:20 -0400
Subject: added tuple field, beginnig remote cursor display

---
 .../views/collections/CollectionViewBase.tsx       | 34 +++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

(limited to 'src/client/views/collections/CollectionViewBase.tsx')

diff --git a/src/client/views/collections/CollectionViewBase.tsx b/src/client/views/collections/CollectionViewBase.tsx
index 4a2761139..81d7f4077 100644
--- a/src/client/views/collections/CollectionViewBase.tsx
+++ b/src/client/views/collections/CollectionViewBase.tsx
@@ -1,4 +1,4 @@
-import { action, runInAction } from "mobx";
+import { action, runInAction, observable, computed } from "mobx";
 import { Document } from "../../../fields/Document";
 import { ListField } from "../../../fields/ListField";
 import React = require("react");
@@ -12,6 +12,9 @@ import { Key } from "../../../fields/Key";
 import { Transform } from "../../util/Transform";
 import { CollectionView } from "./CollectionView";
 import { RouteStore } from "../../../server/RouteStore";
+import { TupleField } from "../../../fields/TupleField";
+import { Server } from "mongodb";
+import { DashUserModel } from "../../../server/authentication/models/user_model";
 
 export interface CollectionViewProps {
     fieldKey: Key;
@@ -25,13 +28,17 @@ export interface CollectionViewProps {
     panelHeight: () => number;
     focus: (doc: Document) => void;
 }
+
 export interface SubCollectionViewProps extends CollectionViewProps {
     active: () => boolean;
     addDocument: (doc: Document) => void;
     removeDocument: (doc: Document) => boolean;
     CollectionView: CollectionView;
+    currentUser?: DashUserModel;
 }
 
+export type CursorEntry = TupleField<DashUserModel, [number, number]>;
+
 export class CollectionViewBase extends React.Component<SubCollectionViewProps> {
     private dropDisposer?: DragManager.DragDropDisposer;
     protected createDropTarget = (ele: HTMLDivElement) => {
@@ -43,6 +50,31 @@ export class CollectionViewBase extends React.Component<SubCollectionViewProps>
         }
     }
 
+    protected setCursorPosition(position: [number, number]) {
+        let user = this.props.currentUser;
+        if (user && user.id) {
+            let ind;
+            let doc = this.props.Document;
+            let cursors = doc.GetOrCreate<ListField<CursorEntry>>(KeyStore.Cursors, ListField, false).Data;
+            let entry = new TupleField<DashUserModel, [number, number]>([user.id, position]);
+            // if ((ind = cursors.findIndex(entry => entry.Data[0] === user.id)) > -1) {
+            //     cursors[ind] = entry;
+            // } else {
+            //     cursors.push(entry);
+            // }
+        }
+    }
+
+    protected getCursors(): CursorEntry[] {
+        let user = this.props.currentUser;
+        if (user && user.id) {
+            let doc = this.props.Document;
+            // return doc.GetList<CursorEntry>(KeyStore.Cursors, []).filter(entry => entry.Data[0] !== user.id);
+        }
+        return [];
+    }
+
+
     @undoBatch
     @action
     protected drop(e: Event, de: DragManager.DropEvent) {
-- 
cgit v1.2.3-70-g09d2

