diff options
| author | bobzel <zzzman@gmail.com> | 2021-09-03 13:16:48 -0400 | 
|---|---|---|
| committer | bobzel <zzzman@gmail.com> | 2021-09-03 13:16:48 -0400 | 
| commit | 64ff849d21273f7440917ef15a4b1c7f1909687c (patch) | |
| tree | 12404a303ba20345ccefca8e836f80406ef30c11 /src/client/util | |
| parent | 80baae4dcf49f818dca4dbfe340013e0e9d197bb (diff) | |
fixed warnings.  cleaned up link lines a bit more - simplified, and allowed multiple aliases to share a link.  fixed link lines to text anchors from flapping around wildly when camera pans
Diffstat (limited to 'src/client/util')
| -rw-r--r-- | src/client/util/CurrentUserUtils.ts | 12 | ||||
| -rw-r--r-- | src/client/util/DocumentManager.ts | 38 | 
2 files changed, 29 insertions, 21 deletions
| diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 56807c63b..f9c55da29 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -832,7 +832,7 @@ export class CurrentUserUtils {          await doc.myTrails;          if (doc.myTrails === undefined) {              const newTrail = ScriptField.MakeScript(`createNewPresentation()`); -            const newTrailButton:Doc = Docs.Create.FontIconDocument({ onClick: newTrail, _forceActive: true, toolTip: "New trail", _stayInCollection: true, _hideContextMenu: true, title: "New trail", btnType: ButtonType.ClickButton, _width: 30, _height: 30, buttonText: "New trail", icon: "plus", system: true }); +            const newTrailButton: Doc = Docs.Create.FontIconDocument({ onClick: newTrail, _forceActive: true, toolTip: "New trail", _stayInCollection: true, _hideContextMenu: true, title: "New trail", btnType: ButtonType.ClickButton, _width: 30, _height: 30, buttonText: "New trail", icon: "plus", system: true });              doc.myTrails = new PrefetchProxy(Docs.Create.TreeDocument([], {                  title: "My Trails", _showTitle: "title", _height: 100,                  treeViewHideTitle: true, _xMargin: 5, _yMargin: 5, _fitWidth: true, _gridGap: 5, _forceActive: true, childDropAction: "alias", @@ -852,16 +852,16 @@ export class CurrentUserUtils {              doc.myFileOrphans = Docs.Create.TreeDocument([], { title: "Unfiled", _stayInCollection: true, system: true, isFolder: true });              // doc.myFileRoot = Docs.Create.TreeDocument([], { title: "file root", _stayInCollection: true, system: true, isFolder: true });              const newFolder = ScriptField.MakeFunction(`doc.makeFolder()`, { doc: doc.myFilesystem })!; -            const newFolderButton:Doc = Docs.Create.FontIconDocument({ onClick: newFolder, _forceActive: true, toolTip: "New folder", _stayInCollection: true, _hideContextMenu: true, title: "New folder", btnType: ButtonType.ClickButton, _width: 30, _height: 30, buttonText: "New folder", icon: "folder-plus", system: true }); +            const newFolderButton: Doc = Docs.Create.FontIconDocument({ onClick: newFolder, _forceActive: true, toolTip: "New folder", _stayInCollection: true, _hideContextMenu: true, title: "New folder", btnType: ButtonType.ClickButton, _width: 30, _height: 30, buttonText: "New folder", icon: "folder-plus", system: true });              doc.myFilesystem = new PrefetchProxy(Docs.Create.TreeDocument([doc.myFileOrphans as Doc], { -                title: "My Documents", _showTitle: "title",  buttonMenu: true, buttonMenuDoc: newFolderButton, _height: 100, +                title: "My Documents", _showTitle: "title", buttonMenu: true, buttonMenuDoc: newFolderButton, _height: 100,                  treeViewHideTitle: true, _xMargin: 5, _yMargin: 5, _gridGap: 5, _forceActive: true, childDropAction: "alias",                  treeViewTruncateTitleWidth: 150, ignoreClick: true,                  isFolder: true, treeViewType: "fileSystem", childHideLinkButton: true,                  _lockedPosition: true, boxShadow: "0 0", childDontRegisterViews: true, targetDropAction: "proto", system: true,                  explainer: "This is your file manager where you can create folders to keep track of documents independently of your dashboard."              })); -            (doc.myTrails as any as Doc).contextMenuScripts = new List<ScriptField>([newFolder!]); +            (doc.myTrails as any as Doc).contextMenuScripts = new List<ScriptField>([newFolder]);              (doc.myTrails as any as Doc).contextMenuLabels = new List<string>(["Create new folder"]);          }          return doc.myFilesystem as any as Doc; @@ -870,7 +870,7 @@ export class CurrentUserUtils {      static setupRecentlyClosedDocs(doc: Doc) {          if (doc.myRecentlyClosedDocs === undefined) {              const clearAll = ScriptField.MakeScript(`getProto(self).data = new List([])`); -            const clearDocsButton:Doc = Docs.Create.FontIconDocument({ onClick: clearAll, _forceActive: true, toolTip: "Empty recently closed", _stayInCollection: true, _hideContextMenu: true, title: "Empty", btnType: ButtonType.ClickButton, _width: 30, _height: 30, buttonText: "Empty", icon: "trash", system: true }); +            const clearDocsButton: Doc = Docs.Create.FontIconDocument({ onClick: clearAll, _forceActive: true, toolTip: "Empty recently closed", _stayInCollection: true, _hideContextMenu: true, title: "Empty", btnType: ButtonType.ClickButton, _width: 30, _height: 30, buttonText: "Empty", icon: "trash", system: true });              doc.myRecentlyClosedDocs = new PrefetchProxy(Docs.Create.TreeDocument([], {                  title: "My Recently Closed", _showTitle: "title", buttonMenu: true, buttonMenuDoc: clearDocsButton, childHideLinkButton: true,                  treeViewHideTitle: true, _xMargin: 5, _yMargin: 5, _gridGap: 5, _forceActive: true, childDropAction: "alias", @@ -1215,7 +1215,7 @@ export class CurrentUserUtils {      // Import sidebar is where shared documents are contained      static setupUploadSidebar(doc: Doc) {          if (doc.myUploadDocs === undefined) { -            const newUploadButton:Doc = Docs.Create.FontIconDocument({ onClick: ScriptField.MakeScript("importDocument()"), _forceActive: true, toolTip: "Upload from computer", _width: 30, _height: 30, _stayInCollection: true, _hideContextMenu: true, title: "Upload", btnType: ButtonType.ClickButton, buttonText: "Upload", icon: "upload", system: true }); +            const newUploadButton: Doc = Docs.Create.FontIconDocument({ onClick: ScriptField.MakeScript("importDocument()"), _forceActive: true, toolTip: "Upload from computer", _width: 30, _height: 30, _stayInCollection: true, _hideContextMenu: true, title: "Upload", btnType: ButtonType.ClickButton, buttonText: "Upload", icon: "upload", system: true });              doc.myUploadDocs = new PrefetchProxy(Docs.Create.StackingDocument([], {                  title: "My Uploads", _forceActive: true, buttonMenu: true, buttonMenuDoc: newUploadButton, ignoreClick: true, _showTitle: "title", _stayInCollection: true, _hideContextMenu: true, childLimitHeight: 0,                  childDropAction: "copy", _autoHeight: true, _yMargin: 50, _gridGap: 15, boxShadow: "0 0", _lockedPosition: true, system: true, _chromeHidden: true, diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts index b72a3189d..9e190ad02 100644 --- a/src/client/util/DocumentManager.ts +++ b/src/client/util/DocumentManager.ts @@ -1,19 +1,21 @@  import { action, observable, runInAction } from 'mobx';  import { Doc, DocListCast, DocListCastAsync, Opt } from '../../fields/Doc';  import { Id } from '../../fields/FieldSymbols'; -import { Cast, NumCast, StrCast } from '../../fields/Types'; +import { Cast } from '../../fields/Types';  import { returnFalse } from '../../Utils';  import { DocumentType } from '../documents/DocumentTypes';  import { CollectionDockingView } from '../views/collections/CollectionDockingView';  import { CollectionView } from '../views/collections/CollectionView';  import { LightboxView } from '../views/LightboxView';  import { DocumentView, ViewAdjustment } from '../views/nodes/DocumentView'; +import { LinkAnchorBox } from '../views/nodes/LinkAnchorBox';  import { Scripting } from './Scripting';  export class DocumentManager {      //global holds all of the nodes (regardless of which collection they're in)      @observable public DocumentViews: DocumentView[] = []; +    @observable public LinkAnchorBoxViews: DocumentView[] = [];      @observable public RecordingEvent = 0;      @observable public LinkedDocumentViews: { a: DocumentView, b: DocumentView, l: Doc }[] = []; @@ -26,23 +28,24 @@ export class DocumentManager {      @action      public AddView = (view: DocumentView) => {          //console.log("MOUNT " + view.props.Document.title + "/" + view.props.LayoutTemplateString); -        if (view.props.LayoutTemplateString?.includes("LinkAnchorBox")) { +        if (view.props.LayoutTemplateString?.includes(LinkAnchorBox.name)) {              const viewAnchorIndex = view.props.LayoutTemplateString.includes("anchor2") ? "anchor2" : "anchor1"; -            view.props.LayoutTemplateString && DocListCast(view.rootDoc.links).forEach(link => { -                DocumentManager.Instance.DocumentViews?.filter(dv => Doc.AreProtosEqual(dv.rootDoc, link) && !dv.props.LayoutTemplateString?.includes(viewAnchorIndex)). -                    forEach(otherView => { -                        this.LinkedDocumentViews.push( -                            { -                                a: viewAnchorIndex === "anchor2" ? otherView : view, -                                b: viewAnchorIndex === "anchor2" ? view : otherView, -                                l: link -                            }); -                    }); +            DocListCast(view.rootDoc.links).forEach(link => { +                this.LinkAnchorBoxViews?.filter(dv => Doc.AreProtosEqual(dv.rootDoc, link) && !dv.props.LayoutTemplateString?.includes(viewAnchorIndex)). +                    forEach(otherView => this.LinkedDocumentViews.push( +                        { +                            a: viewAnchorIndex === "anchor2" ? otherView : view, +                            b: viewAnchorIndex === "anchor2" ? view : otherView, +                            l: link +                        }) +                    );              }); +            this.LinkAnchorBoxViews.push(view);              // this.LinkedDocumentViews.forEach(view => console.log("  LV = " + view.a.props.Document.title + "/" + view.a.props.LayoutTemplateString + " --> " +              //     view.b.props.Document.title + "/" + view.b.props.LayoutTemplateString)); +        } else { +            this.DocumentViews.push(view);          } -        this.DocumentViews.push(view);      }      public RemoveView = action((view: DocumentView) => {          this.LinkedDocumentViews.slice().forEach(action(pair => { @@ -52,8 +55,13 @@ export class DocumentManager {              }          })); -        const index = this.DocumentViews.indexOf(view); -        index !== -1 && this.DocumentViews.splice(index, 1); +        if (view.props.LayoutTemplateString?.includes(LinkAnchorBox.name)) { +            const index = this.LinkAnchorBoxViews.indexOf(view); +            this.LinkAnchorBoxViews.splice(index, 1); +        } else { +            const index = this.DocumentViews.indexOf(view); +            index !== -1 && this.DocumentViews.splice(index, 1); +        }      });      //gets all views | 
