feat(mindmap): save view center coordinates

This commit is contained in:
Elian Doran 2025-01-20 21:27:06 +02:00
parent 2b8ee31be3
commit 5cefd4f50a
No known key found for this signature in database
2 changed files with 33 additions and 2 deletions

View File

@ -1,3 +1,4 @@
import type { Map } from "leaflet";
import library_loader from "../services/library_loader.js"; import library_loader from "../services/library_loader.js";
import NoteContextAwareWidget from "./note_context_aware_widget.js"; import NoteContextAwareWidget from "./note_context_aware_widget.js";
@ -17,8 +18,12 @@ const TPL = `\
export default class GeoMapWidget extends NoteContextAwareWidget { export default class GeoMapWidget extends NoteContextAwareWidget {
constructor(widgetMode: "type") { map?: Map;
private initCallback?: () => void;
constructor(widgetMode: "type", initCallback?: () => void) {
super(); super();
this.initCallback = initCallback;
} }
doRender() { doRender() {
@ -35,6 +40,10 @@ export default class GeoMapWidget extends NoteContextAwareWidget {
}); });
map.setView([51.505, -0.09], 13); map.setView([51.505, -0.09], 13);
this.map = map;
if (this.initCallback) {
this.initCallback();
}
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'

View File

@ -15,7 +15,8 @@ export default class GeoMapTypeWidget extends TypeWidget {
constructor() { constructor() {
super(); super();
this.geoMapWidget = new GeoMapWidget("type"); this.geoMapWidget = new GeoMapWidget("type", () => this.#onMapInitialized());
this.child(this.geoMapWidget); this.child(this.geoMapWidget);
} }
@ -26,6 +27,27 @@ export default class GeoMapTypeWidget extends TypeWidget {
super.doRender(); super.doRender();
} }
#onMapInitialized() {
this.geoMapWidget.map?.on("moveend", () => this.spacedUpdate.scheduleUpdate());
}
getData(): any {
const map = this.geoMapWidget.map;
if (!map) {
return;
}
const data = {
view: {
center: map.getBounds().getCenter()
}
};
return {
content: JSON.stringify(data)
};
}
async doRefresh(note: FNote) { async doRefresh(note: FNote) {
await this.geoMapWidget.refresh(); await this.geoMapWidget.refresh();
} }