aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/views/SidebarAnnos.tsx5
-rw-r--r--src/client/views/nodes/MapBox/MapAnchorMenu.tsx2
-rw-r--r--src/client/views/nodes/MapBox/MapBox.tsx47
-rw-r--r--src/fields/Doc.ts4
4 files changed, 40 insertions, 18 deletions
diff --git a/src/client/views/SidebarAnnos.tsx b/src/client/views/SidebarAnnos.tsx
index cd50865fb..7635d719e 100644
--- a/src/client/views/SidebarAnnos.tsx
+++ b/src/client/views/SidebarAnnos.tsx
@@ -225,10 +225,9 @@ export class SidebarAnnos extends React.Component<FieldViewProps & ExtraProps> {
<div className="sidebarAnnos-tagList" style={{ height: this.filtersHeight() }} onWheel={e => e.stopPropagation()}>
{this.allUsers.map(renderUsers)}
{this.allHashtags.map(renderTag)}
- {Array.from(this.allMetadata.keys())
+ {/* {Array.from(this.allMetadata.keys())
.sort()
- .map(key => renderMeta(key, this.allMetadata.get(key)))}
- Hello
+ .map(key => renderMeta(key, this.allMetadata.get(key)))} */}
</div>
diff --git a/src/client/views/nodes/MapBox/MapAnchorMenu.tsx b/src/client/views/nodes/MapBox/MapAnchorMenu.tsx
index 439c1f14f..897bb90a6 100644
--- a/src/client/views/nodes/MapBox/MapAnchorMenu.tsx
+++ b/src/client/views/nodes/MapBox/MapAnchorMenu.tsx
@@ -120,7 +120,7 @@ export class MapAnchorMenu extends AntimodeMenu<AntimodeMenuProps> {
<IconButton
tooltip="Center on pin" //
onPointerDown={this.Center}
- icon={<FontAwesomeIcon icon="taxi" />}
+ icon={<FontAwesomeIcon icon="compress-arrows-alt" />}
color={StrCast(Doc.UserDoc().userColor)}
/>
)}
diff --git a/src/client/views/nodes/MapBox/MapBox.tsx b/src/client/views/nodes/MapBox/MapBox.tsx
index 654d446a2..dbb38e763 100644
--- a/src/client/views/nodes/MapBox/MapBox.tsx
+++ b/src/client/views/nodes/MapBox/MapBox.tsx
@@ -14,6 +14,7 @@ import { ScriptField } from '../../../../fields/ScriptField';
import { NumCast, StrCast } from '../../../../fields/Types';
import { emptyFunction, returnEmptyDoclist, returnEmptyFilter, returnEmptyString, returnFalse, returnOne, setupMoveUpEvents, Utils } from '../../../../Utils';
import { Docs } from '../../../documents/Documents';
+import { DocumentManager } from '../../../util/DocumentManager';
import { DragManager } from '../../../util/DragManager';
import { SnappingManager } from '../../../util/SnappingManager';
import { Transform } from '../../../util/Transform';
@@ -352,10 +353,16 @@ 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 = () => {
+ createNoteAnnotation = undoable(() => {
!this.layoutDoc.layout_showSidebar && this.toggleSidebar();
- setTimeout(() => this._sidebarRef.current?.anchorMenuClick(this.getAnchor(false))); // give time for sidebarRef to be created
- };
+ 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");
sidebarDown = (e: React.PointerEvent) => {
setupMoveUpEvents(this, e, this.sidebarMove, emptyFunction, () => setTimeout(this.toggleSidebar), true);
@@ -488,7 +495,7 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
* Creates Pushpin doc and adds it to the list of annotations
*/
@action
- createPushpin = (latitude: number, longitude: number) => {
+ createPushpin = undoable((latitude: number, longitude: number) => {
// Stores the pushpin as a MapMarkerDocument
const mapMarker = Docs.Create.PushpinDocument(
NumCast(latitude),
@@ -501,7 +508,7 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
this.addDocument(mapMarker, this.annotationKey);
// mapMarker.infoWindowOpen = true;
- };
+ },"createpin");
/*
* Pushpin dblclick
@@ -519,6 +526,10 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
@action
deselectPin = () => {
if (this.selectedPin) {
+ // Removes filter
+ Doc.setDocFilter(this.rootDoc, "latitude", this.selectedPin.latitude, "remove");
+ Doc.setDocFilter(this.rootDoc, "longitude", this.selectedPin.longitude, "remove");
+
const temp = this.selectedPin;
this._bingMap.current.entities.remove(this.map_docToPinMap.get(temp));
const newpin = new this.MicrosoftMaps.Pushpin(new this.MicrosoftMaps.Location(temp.latitude, temp.longitude));
@@ -527,10 +538,15 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
this.map_docToPinMap.set(temp, newpin);
this.selectedPin = undefined;
- // setTimeout(() => this._sidebarRef.current?.makeDocUnfiltered(this._sidebarRef.current.));
+
}
+
};
+ getView = async (doc: Doc) => {
+ if (this._sidebarRef?.current?.makeDocUnfiltered(doc) && !this.SidebarShown) this.toggleSidebar();
+ return new Promise<Opt<DocumentView>>(res => DocumentManager.Instance.AddViewRenderedCb(doc, dv => res(dv)));
+ };
/*
* Pushpin onclick
*/
@@ -539,6 +555,9 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
this.deselectPin();
this.selectedPin = pinDoc;
+ 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',
@@ -552,17 +571,16 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
MapAnchorMenu.Instance.LinkNote = this.createNoteAnnotation;
const point = this._bingMap.current.tryLocationToPixel(new this.MicrosoftMaps.Location(this.selectedPin.latitude, this.selectedPin.longitude));
- const x = point.x + this.props.PanelWidth() / 2;
+ const x = point.x + (this.props.PanelWidth() - this.sidebarWidth()) / 2;
const y = point.y + this.props.PanelHeight() / 2 + 32;
const cpt = this.props.ScreenToLocalTransform().inverse().transformPoint(x, y);
- MapAnchorMenu.Instance.jumpTo(cpt[0] - (this.sidebarWidth() / this.panelWidth()) * 200, cpt[1], true);
+ MapAnchorMenu.Instance.jumpTo(cpt[0], cpt[1], true);
+
document.addEventListener('pointerdown', this.tryHideMapAnchorMenu, true);
this.MicrosoftMaps.Events.addHandler(this._bingMap.current, 'click', this.mapOnClick);
// Filter sidebar:
- // if sidebar is open, filter.
- if (this.layoutDoc._layout_showSidebar) {
- }
+
};
/**
@@ -573,7 +591,7 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
}
/**
- * Map OnClick ~> creates a pushpin
+ * Map OnClick
*/
@action
mapOnClick = (e: { location: { latitude: any; longitude: any } }) => {
@@ -700,11 +718,16 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
this._bingMap.current.entities.remove(this.map_docToPinMap.get(pinDoc));
this.map_docToPinMap.delete(pinDoc);
this.selectedPin = undefined;
+
};
@action
deleteSelectedPin = undoable(() => {
if (this.selectedPin) {
+ // Removes filter
+ Doc.setDocFilter(this.rootDoc, "latitude", this.selectedPin.latitude, "remove");
+ Doc.setDocFilter(this.rootDoc, "longitude", this.selectedPin.longitude, "remove");
+
this.removePushpin(this.selectedPin);
}
MapAnchorMenu.Instance.fadeOut(true);
diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts
index 6d4f4180d..7ba4f0e6f 100644
--- a/src/fields/Doc.ts
+++ b/src/fields/Doc.ts
@@ -1490,8 +1490,8 @@ export namespace Doc {
runInAction(() => {
for (let i = 0; i < childFilters.length; i++) {
const fields = childFilters[i].split(FilterSep); // split key:value:modifier
- if (fields[0] === key && (fields[1] === value || modifiers === 'match' || (fields[2] === 'match' && modifiers === 'remove'))) {
- if (fields[2] === modifiers && modifiers && fields[1] === value) {
+ if (fields[0] === key && (fields[1] === value.toString() || modifiers === 'match' || (fields[2] === 'match' && modifiers === 'remove'))) {
+ if (fields[2] === modifiers && modifiers && fields[1] === value.toString()) {
if (toggle) modifiers = 'remove';
else return;
}