diff options
Diffstat (limited to 'src/client/views/nodes/MapboxMapBox/MapboxContainer.tsx')
| -rw-r--r-- | src/client/views/nodes/MapboxMapBox/MapboxContainer.tsx | 51 | 
1 files changed, 27 insertions, 24 deletions
| diff --git a/src/client/views/nodes/MapboxMapBox/MapboxContainer.tsx b/src/client/views/nodes/MapboxMapBox/MapboxContainer.tsx index e0efab576..0beefcb67 100644 --- a/src/client/views/nodes/MapboxMapBox/MapboxContainer.tsx +++ b/src/client/views/nodes/MapboxMapBox/MapboxContainer.tsx @@ -145,7 +145,7 @@ export class MapBoxContainer extends ViewBoxAnnotatableComponent<FieldViewProps>      removeMapDocument = (docsIn: Doc | Doc[], annotationKey?: string) => {          const docs = toList(docsIn);          this.allAnnotations -            .filter(anno => docs.includes(DocCast(anno.mapPin))) +            .filter(anno => docs.includes(DocCast(anno.mapPin)!))              .forEach(anno => {                  anno.mapPin = undefined;              }); @@ -224,6 +224,12 @@ export class MapBoxContainer extends ViewBoxAnnotatableComponent<FieldViewProps>      startAnchorDrag = (e: PointerEvent, ele: HTMLElement) => {          e.preventDefault();          e.stopPropagation(); +        const targetCreator = (annotationOn: Doc | undefined) => { +            const target = DocUtils.GetNewTextDoc('Note linked to ' + this.Document.title, 0, 0, 100, 100, annotationOn, 'yellow'); +            target.layout_fitWidth = true; +            DocumentView.SetSelectOnLoad(target); +            return target; +        };          const sourceAnchorCreator = action(() => {              const note = this.getAnchor(true); @@ -235,11 +241,6 @@ export class MapBoxContainer extends ViewBoxAnnotatableComponent<FieldViewProps>              return note as Doc;          }); -        const targetCreator = (annotationOn: Doc | undefined) => { -            const target = DocUtils.GetNewTextDoc('Note linked to ' + this.Document.title, 0, 0, 100, 100, annotationOn, 'yellow'); -            DocumentView.SetSelectOnLoad(target); -            return target; -        };          const docView = this.DocumentView?.();          docView &&              DragManager.StartAnchorAnnoDrag([ele], new DragManager.AnchorAnnoDragData(docView, sourceAnchorCreator, targetCreator), e.pageX, e.pageY, { @@ -362,22 +363,22 @@ export class MapBoxContainer extends ViewBoxAnnotatableComponent<FieldViewProps>      @action      deselectPin = () => { -        if (this.selectedPin) { +        const selPin = DocCast(this.selectedPin); +        if (selPin) {              // Removes filter -            Doc.setDocFilter(this.Document, 'latitude', NumCast(this.selectedPin.latitude), 'remove'); -            Doc.setDocFilter(this.Document, 'longitude', NumCast(this.selectedPin.longitude), 'remove'); -            Doc.setDocFilter(this.Document, LinkedTo, `mapPin=${Field.toScriptString(DocCast(this.selectedPin))}`, 'remove'); +            Doc.setDocFilter(this.Document, 'latitude', NumCast(selPin.latitude), 'remove'); +            Doc.setDocFilter(this.Document, 'longitude', NumCast(selPin.longitude), 'remove'); +            Doc.setDocFilter(this.Document, LinkedTo, `mapPin=${Field.toScriptString(selPin)}`, 'remove'); -            const temp = this.selectedPin;              if (!this._unmounting) { -                this._bingMap.current.entities.remove(this.map_docToPinMap.get(temp)); +                this._bingMap.current.entities.remove(this.map_docToPinMap.get(selPin));              } -            const newpin = new this.MicrosoftMaps.Pushpin(new this.MicrosoftMaps.Location(temp.latitude, temp.longitude)); -            this.MicrosoftMaps.Events.addHandler(newpin, 'click', () => this.pushpinClicked(temp as Doc)); +            const newpin = new this.MicrosoftMaps.Pushpin(new this.MicrosoftMaps.Location(selPin.latitude, selPin.longitude)); +            this.MicrosoftMaps.Events.addHandler(newpin, 'click', () => this.pushpinClicked(selPin));              if (!this._unmounting) {                  this._bingMap.current.entities.push(newpin);              } -            this.map_docToPinMap.set(temp, newpin); +            this.map_docToPinMap.set(selPin, newpin);              this.selectedPin = undefined;              this.bingSearchBarContents = this.Document.map;          } @@ -388,9 +389,7 @@ export class MapBoxContainer extends ViewBoxAnnotatableComponent<FieldViewProps>              this.toggleSidebar();              options.didMove = true;          } -        return new Promise<Opt<DocumentView>>(res => { -            DocumentView.addViewRenderedCb(doc, dv => res(dv)); -        }); +        return new Promise<Opt<DocumentView>>(res => DocumentView.addViewRenderedCb(doc, res));      };      /*       * Pushpin onclick @@ -535,13 +534,14 @@ export class MapBoxContainer extends ViewBoxAnnotatableComponent<FieldViewProps>      @action      deleteSelectedPin = undoable(() => { -        if (this.selectedPin) { +        const selPin = this.selectedPin; +        if (selPin) {              // Removes filter -            Doc.setDocFilter(this.Document, 'latitude', NumCast(this.selectedPin.latitude), 'remove'); -            Doc.setDocFilter(this.Document, 'longitude', NumCast(this.selectedPin.longitude), 'remove'); -            Doc.setDocFilter(this.Document, LinkedTo, `mapPin=${Field.toScriptString(DocCast(this.selectedPin))}`, 'remove'); +            Doc.setDocFilter(this.Document, 'latitude', NumCast(selPin.latitude), 'remove'); +            Doc.setDocFilter(this.Document, 'longitude', NumCast(selPin.longitude), 'remove'); +            Doc.setDocFilter(this.Document, LinkedTo, `mapPin=${Field.toScriptString(selPin)}`, 'remove'); -            this.removePushpin(this.selectedPin); +            this.removePushpin(selPin);          }          MapAnchorMenu.Instance.fadeOut(true);          document.removeEventListener('pointerdown', this.tryHideMapAnchorMenu, true); @@ -638,7 +638,10 @@ export class MapBoxContainer extends ViewBoxAnnotatableComponent<FieldViewProps>          this._disposers.highlight = reaction(              () => this.allAnnotations.map(doc => doc[Highlight]),              () => { -                const allConfigPins = this.allAnnotations.map(doc => ({ doc, pushpin: DocCast(doc.mapPin) })).filter(pair => pair.pushpin); +                const allConfigPins = this.allAnnotations +                    .map(doc => ({ doc, pushpin: DocCast(doc.mapPin) })) +                    .filter(pair => pair.pushpin) +                    .map(pair => ({ doc: pair.doc, pushpin: pair.pushpin! }));                  allConfigPins.forEach(({ pushpin }) => {                      if (!pushpin[Highlight] && this.map_pinHighlighted.get(pushpin)) {                          this.recolorPin(pushpin); | 
