mirror of
https://github.com/zadam/trilium.git
synced 2025-10-20 07:08:55 +02:00
chore(views/geomap): reintroduce viewport storage
This commit is contained in:
parent
6a5bb1f5c8
commit
b8d41b3421
@ -127,34 +127,25 @@ export default class GeoMapTypeWidget extends TypeWidget {
|
||||
}
|
||||
|
||||
async #onMapInitialized(L: Leaflet) {
|
||||
this.L = L;
|
||||
const map = this.geoMapWidget.map;
|
||||
if (!map) {
|
||||
throw new Error(t("geo-map.unable-to-load-map"));
|
||||
}
|
||||
// this.L = L;
|
||||
|
||||
// Restore markers.
|
||||
await this.#reloadMarkers();
|
||||
// // Restore markers.
|
||||
// await this.#reloadMarkers();
|
||||
|
||||
// This fixes an issue with the map appearing cut off at the beginning, due to the container not being properly attached
|
||||
setTimeout(() => {
|
||||
map.invalidateSize();
|
||||
}, 100);
|
||||
// // This fixes an issue with the map appearing cut off at the beginning, due to the container not being properly attached
|
||||
// setTimeout(() => {
|
||||
// map.invalidateSize();
|
||||
// }, 100);
|
||||
|
||||
const updateFn = () => this.spacedUpdate.scheduleUpdate();
|
||||
map.on("moveend", updateFn);
|
||||
map.on("zoomend", updateFn);
|
||||
map.on("click", (e) => this.#onMapClicked(e));
|
||||
// if (hasTouchBar) {
|
||||
// map.on("zoom", () => {
|
||||
// if (!this.ignoreNextZoomEvent) {
|
||||
// this.triggerCommand("refreshTouchBar");
|
||||
// }
|
||||
|
||||
if (hasTouchBar) {
|
||||
map.on("zoom", () => {
|
||||
if (!this.ignoreNextZoomEvent) {
|
||||
this.triggerCommand("refreshTouchBar");
|
||||
}
|
||||
|
||||
this.ignoreNextZoomEvent = false;
|
||||
});
|
||||
}
|
||||
// this.ignoreNextZoomEvent = false;
|
||||
// });
|
||||
// }
|
||||
}
|
||||
|
||||
async #reloadMarkers() {
|
||||
@ -311,24 +302,6 @@ export default class GeoMapTypeWidget extends TypeWidget {
|
||||
await attributes.setLabel(noteId, LOCATION_ATTRIBUTE, value);
|
||||
}
|
||||
|
||||
getData(): any {
|
||||
const map = this.geoMapWidget.map;
|
||||
if (!map) {
|
||||
return;
|
||||
}
|
||||
|
||||
const data: MapData = {
|
||||
view: {
|
||||
center: map.getBounds().getCenter(),
|
||||
zoom: map.getZoom()
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
content: JSON.stringify(data)
|
||||
};
|
||||
}
|
||||
|
||||
async geoMapCreateChildNoteEvent({ ntxId }: EventData<"geoMapCreateChildNote">) {
|
||||
if (!this.isNoteContext(ntxId)) {
|
||||
return;
|
||||
|
@ -1,6 +1,8 @@
|
||||
import ViewMode, { ViewModeArgs } from "../view_mode.js";
|
||||
import L from "leaflet";
|
||||
import type { LatLng, Map } from "leaflet";
|
||||
import SpacedUpdate from "../../../services/spaced_update.js";
|
||||
import { t } from "../../../services/i18n.js";
|
||||
|
||||
const TPL = /*html*/`
|
||||
<div class="geo-view">
|
||||
@ -35,11 +37,13 @@ export default class GeoView extends ViewMode<MapData> {
|
||||
private $root: JQuery<HTMLElement>;
|
||||
private $container!: JQuery<HTMLElement>;
|
||||
private map?: Map;
|
||||
private spacedUpdate: SpacedUpdate;
|
||||
|
||||
constructor(args: ViewModeArgs) {
|
||||
super(args, "geoMap");
|
||||
this.$root = $(TPL);
|
||||
this.$container = this.$root.find(".geo-map-container");
|
||||
this.spacedUpdate = new SpacedUpdate(() => this.onSave(), 5_000);
|
||||
args.$parent.append(this.$root);
|
||||
}
|
||||
|
||||
@ -63,7 +67,17 @@ export default class GeoView extends ViewMode<MapData> {
|
||||
}
|
||||
|
||||
async #onMapInitialized() {
|
||||
const map = this.map;
|
||||
if (!map) {
|
||||
throw new Error(t("geo-map.unable-to-load-map"));
|
||||
}
|
||||
|
||||
this.#restoreViewportAndZoom();
|
||||
|
||||
const updateFn = () => this.spacedUpdate.scheduleUpdate();
|
||||
map.on("moveend", updateFn);
|
||||
map.on("zoomend", updateFn);
|
||||
// map.on("click", (e) => this.#onMapClicked(e));
|
||||
}
|
||||
|
||||
async #restoreViewportAndZoom() {
|
||||
@ -80,6 +94,21 @@ export default class GeoView extends ViewMode<MapData> {
|
||||
map.setView(center, zoom);
|
||||
}
|
||||
|
||||
private onSave() {
|
||||
const map = this.map;
|
||||
let data: MapData = {};
|
||||
if (map) {
|
||||
data = {
|
||||
view: {
|
||||
center: map.getBounds().getCenter(),
|
||||
zoom: map.getZoom()
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
this.viewStorage.store(data);
|
||||
}
|
||||
|
||||
get isFullHeight(): boolean {
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user