aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/util/DocumentManager.ts2
-rw-r--r--src/client/views/SidebarAnnos.tsx1
-rw-r--r--src/client/views/nodes/MapBox/MapBox.tsx77
-rw-r--r--src/client/views/nodes/trails/PresBox.tsx4
4 files changed, 70 insertions, 14 deletions
diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts
index 7c3b5be05..5b627c2f3 100644
--- a/src/client/util/DocumentManager.ts
+++ b/src/client/util/DocumentManager.ts
@@ -310,7 +310,7 @@ export class DocumentManager {
if (viewSpec && docView) {
if (docView.ComponentView instanceof FormattedTextBox) docView.ComponentView?.focus(viewSpec, options);
PresBox.restoreTargetDocView(docView, viewSpec, options.zoomTime ?? 500);
- Doc.linkFollowHighlight(docView.rootDoc, undefined, options.effect);
+ Doc.linkFollowHighlight(viewSpec ? [docView.rootDoc, viewSpec]: docView.rootDoc, undefined, options.effect);
if (options.playAudio) DocumentManager.playAudioAnno(docView.rootDoc);
if (options.toggleTarget && (!options.didMove || docView.rootDoc.hidden)) docView.rootDoc.hidden = !docView.rootDoc.hidden;
if (options.effect) docView.rootDoc[Animation] = options.effect;
diff --git a/src/client/views/SidebarAnnos.tsx b/src/client/views/SidebarAnnos.tsx
index 7635d719e..520485a71 100644
--- a/src/client/views/SidebarAnnos.tsx
+++ b/src/client/views/SidebarAnnos.tsx
@@ -87,6 +87,7 @@ export class SidebarAnnos extends React.Component<FieldViewProps & ExtraProps> {
const taggedContent = this.childFilters()
.filter(data => data.split(':')[0])
+ .filter(data => data.split(':')[0] !== 'latitude' && data.split(':')[0] !== 'longitude')
.map(data => {
const key = data.split(':')[0];
const val = Field.Copy(this.allMetadata.get(key));
diff --git a/src/client/views/nodes/MapBox/MapBox.tsx b/src/client/views/nodes/MapBox/MapBox.tsx
index dbb38e763..93020354d 100644
--- a/src/client/views/nodes/MapBox/MapBox.tsx
+++ b/src/client/views/nodes/MapBox/MapBox.tsx
@@ -7,7 +7,7 @@ import { observer } from 'mobx-react';
import * as React from 'react';
import { TbHeartMinus } from 'react-icons/tb';
import { Doc, DocListCast, Opt } from '../../../../fields/Doc';
-import { Width } from '../../../../fields/DocSymbols';
+import { Highlight, Width } from '../../../../fields/DocSymbols';
import { Id } from '../../../../fields/FieldSymbols';
import { InkTool } from '../../../../fields/InkField';
import { ScriptField } from '../../../../fields/ScriptField';
@@ -133,6 +133,7 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
}
componentWillUnmount(): void {
+ this.deselectPin();
Object.keys(this._disposer).forEach(key => this._disposer[key]?.());
}
// iterate allMarkers to size, center, and zoom map to contain all markers
@@ -353,17 +354,18 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
this.layoutDoc._width = this.layoutDoc._layout_showSidebar ? NumCast(this.layoutDoc._width) * 1.2 : Math.max(20, NumCast(this.layoutDoc._width) - prevWidth);
};
- createNoteAnnotation = undoable(() => {
+ createNoteAnnotation = () => {
!this.layoutDoc.layout_showSidebar && this.toggleSidebar();
- setTimeout(() =>{
- const note = this._sidebarRef.current?.anchorMenuClick(this.getAnchor(false));
- if (note && this.selectedPin) {
- note.latitude = this.selectedPin.latitude;
- note.longitude = this.selectedPin.latitude;
- }
- }); // give time for sidebarRef to be created
- }, "create linked note");
+ setTimeout(undoable(() => {
+ const note = this._sidebarRef.current?.anchorMenuClick(this.getAnchor(false));
+ if (note && this.selectedPin) {
+ note.latitude = this.selectedPin.latitude;
+ note.longitude = this.selectedPin.latitude;
+ }
+ },"create note annotation"))
+
+ }
sidebarDown = (e: React.PointerEvent) => {
setupMoveUpEvents(this, e, this.sidebarMove, emptyFunction, () => setTimeout(this.toggleSidebar), true);
};
@@ -818,7 +820,60 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
}
this.MicrosoftMaps.Events.addHandler(this._bingMap.current, 'viewchangeend', undoable(this.updateLayout, 'Map Layout Change'));
this.MicrosoftMaps.Events.addHandler(this._bingMap.current, 'maptypechanged', undoable(this.updateMapType, 'Map ViewType Change'));
- // this.updateLayout();
+ this.updateLayout();
+ this._disposer.highlight = reaction( () => this.allMapPushpins.map(doc => doc[Highlight]),
+ () => this.allMapPushpins.forEach(doc => {
+
+ // if(doc[Highlight]){
+ // this.deselectPin();
+ // this.selectedPin = doc;
+
+ // Doc.setDocFilter(this.rootDoc, "latitude", this.selectedPin.latitude, "match");
+ // Doc.setDocFilter(this.rootDoc, "longitude", this.selectedPin.latitude, "match");
+
+ // this._bingMap.current.entities.remove(this.map_docToPinMap.get(this.selectedPin));
+ // const newpin = new this.MicrosoftMaps.Pushpin(new this.MicrosoftMaps.Location(this.selectedPin.latitude, this.selectedPin.longitude), {
+ // color: 'green',
+ // });
+ // this.MicrosoftMaps.Events.addHandler(newpin, 'click', (e: any) => this.pushpinClicked(this.selectedPin as Doc));
+ // this._bingMap.current.entities.push(newpin);
+ // this.map_docToPinMap.set(this.selectedPin, newpin);
+
+ // MapAnchorMenu.Instance.Delete = this.deleteSelectedPin;
+ // MapAnchorMenu.Instance.Center = this.centerOnSelectedPin;
+ // MapAnchorMenu.Instance.LinkNote = this.createNoteAnnotation;
+ // }
+ // if (doc[Highlight]) {
+ // this._bingMap.current.entities.remove(this.map_docToPinMap.get(doc));
+ // const newpin = new this.MicrosoftMaps.Pushpin(new this.MicrosoftMaps.Location(doc.latitude, doc.longitude), {
+ // color: 'orange',
+ // });
+ // this.MicrosoftMaps.Events.addHandler(newpin, 'click', (e: any) => this.pushpinClicked(doc));
+ // this._bingMap.current.entities.push(newpin);
+ // this.map_docToPinMap.set(doc, newpin);
+
+ // }
+ // if (this.map_docToPinMap.get(doc).getColor() == 'orange' && !doc[Highlight]) {
+ // this._bingMap.current.entities.remove(this.map_docToPinMap.get(doc));
+ // const newpin = new this.MicrosoftMaps.Pushpin(new this.MicrosoftMaps.Location(doc.latitude, doc.longitude), {});
+ // this.MicrosoftMaps.Events.addHandler(newpin, 'click', (e: any) => this.pushpinClicked(doc));
+ // this._bingMap.current.entities.push(newpin);
+ // this.map_docToPinMap.set(doc, newpin);
+
+ // }
+ // else if (this.map_docToPinMap.get(doc).getColor() != 'orange' && doc[Highlight]) {
+ // this._bingMap.current.entities.remove(this.map_docToPinMap.get(doc));
+ // const newpin = new this.MicrosoftMaps.Pushpin(new this.MicrosoftMaps.Location(doc.latitude, doc.longitude), {
+ // color: 'orange',
+ // });
+ // this.MicrosoftMaps.Events.addHandler(newpin, 'click', (e: any) => this.pushpinClicked(doc));
+ // this._bingMap.current.entities.push(newpin);
+ // this.map_docToPinMap.set(doc, newpin);
+ // }
+
+
+ })
+ , {fireImmediately: true})
// this.updateMapType();
this._disposer.location = reaction(
() => ({ lat: this.rootDoc.latitude, lng: this.rootDoc.longitude, zoom: this.rootDoc.mapZoom, mapType: this.rootDoc.mapType }),
diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx
index a94f1f04b..afd9bccab 100644
--- a/src/client/views/nodes/trails/PresBox.tsx
+++ b/src/client/views/nodes/trails/PresBox.tsx
@@ -661,8 +661,8 @@ export class PresBox extends ViewBoxBaseComponent<FieldViewProps>() {
pinDoc.config_yRange = undefined; //targetDoc?.yrange;
}
if (pinProps.pinData.map) {
- pinDoc.config_latitude = targetDoc?.latitude;
- pinDoc.config_longitude = targetDoc?.longitude;
+ // pinDoc.config_latitude = targetDoc?.latitude;
+ // pinDoc.config_longitude = targetDoc?.longitude;
pinDoc.config_mapZoom = targetDoc?.mapZoom;
pinDoc.config_mapType = targetDoc?.mapType;
//...