From 7ea37b9eb96283cea64b01e2ae8bc844a63c618e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 11:13:17 +0300 Subject: [PATCH 01/38] feat(views/geomap): create empty view type --- .../client/src/services/note_list_renderer.ts | 8 +++++-- .../widgets/view_widgets/geo_view/index.ts | 23 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 apps/client/src/widgets/view_widgets/geo_view/index.ts diff --git a/apps/client/src/services/note_list_renderer.ts b/apps/client/src/services/note_list_renderer.ts index 3219d8d92..122ba9745 100644 --- a/apps/client/src/services/note_list_renderer.ts +++ b/apps/client/src/services/note_list_renderer.ts @@ -1,11 +1,12 @@ import type FNote from "../entities/fnote.js"; import CalendarView from "../widgets/view_widgets/calendar_view.js"; +import GeoView from "../widgets/view_widgets/geo_view/index.js"; import ListOrGridView from "../widgets/view_widgets/list_or_grid_view.js"; import TableView from "../widgets/view_widgets/table_view/index.js"; import type { ViewModeArgs } from "../widgets/view_widgets/view_mode.js"; import type ViewMode from "../widgets/view_widgets/view_mode.js"; -export type ViewTypeOptions = "list" | "grid" | "calendar" | "table"; +export type ViewTypeOptions = "list" | "grid" | "calendar" | "table" | "geoMap"; export default class NoteListRenderer { @@ -26,6 +27,9 @@ export default class NoteListRenderer { case "table": this.viewMode = new TableView(args); break; + case "geoMap": + this.viewMode = new GeoView(args); + break; default: this.viewMode = null; } @@ -34,7 +38,7 @@ export default class NoteListRenderer { #getViewType(parentNote: FNote): ViewTypeOptions { const viewType = parentNote.getLabelValue("viewType"); - if (!["list", "grid", "calendar", "table"].includes(viewType || "")) { + if (!["list", "grid", "calendar", "table", "geoMap"].includes(viewType || "")) { // when not explicitly set, decide based on the note type return parentNote.type === "search" ? "list" : "grid"; } else { diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts new file mode 100644 index 000000000..03f88e6fa --- /dev/null +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -0,0 +1,23 @@ +import ViewMode, { ViewModeArgs } from "../view_mode.js"; + +const TPL = /*html*/` +
+ Geo View is not implemented yet. +
`; + +export default class GeoView extends ViewMode<{}> { + + private $root: JQuery; + + constructor(args: ViewModeArgs) { + super(args, "geoMap"); + this.$root = $(TPL); + args.$parent.append(this.$root); + } + + async renderList() { + console.log("Rendered"); + return this.$root; + } + +} From 00fd1ba13760ac9bd7563f3b6a59728356d07333 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 11:15:28 +0300 Subject: [PATCH 02/38] feat(views/geomap): make full-height --- .../src/widgets/view_widgets/geo_view/index.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 03f88e6fa..cb203c004 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -2,6 +2,14 @@ import ViewMode, { ViewModeArgs } from "../view_mode.js"; const TPL = /*html*/`
+ + Geo View is not implemented yet.
`; @@ -20,4 +28,8 @@ export default class GeoView extends ViewMode<{}> { return this.$root; } + get isFullHeight(): boolean { + return true; + } + } From 7abb67e737913ba0e582c2502f6084f8d71fb903 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 11:21:25 +0300 Subject: [PATCH 03/38] feat(views/geomap): display in view type --- apps/client/src/translations/en/translation.json | 3 ++- apps/client/src/widgets/ribbon_widgets/book_properties.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 1f992175c..4470852a9 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -761,7 +761,8 @@ "book_properties": "Book Properties", "invalid_view_type": "Invalid view type '{{type}}'", "calendar": "Calendar", - "table": "Table" + "table": "Table", + "geo-map": "Geo Map" }, "edited_notes": { "no_edited_notes_found": "No edited notes on this day yet...", diff --git a/apps/client/src/widgets/ribbon_widgets/book_properties.ts b/apps/client/src/widgets/ribbon_widgets/book_properties.ts index cd9735b20..f552bc280 100644 --- a/apps/client/src/widgets/ribbon_widgets/book_properties.ts +++ b/apps/client/src/widgets/ribbon_widgets/book_properties.ts @@ -25,6 +25,7 @@ const TPL = /*html*/` + From 54063b97adea62aad6a058ea73559b4e2f9b2ac5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 11:22:49 +0300 Subject: [PATCH 04/38] feat(views/geomap): display even if empty --- apps/client/src/components/note_context.ts | 2 +- apps/client/src/widgets/type_widgets/book.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/client/src/components/note_context.ts b/apps/client/src/components/note_context.ts index 020817073..75c66b1bc 100644 --- a/apps/client/src/components/note_context.ts +++ b/apps/client/src/components/note_context.ts @@ -326,7 +326,7 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded"> } // Some book types must always display a note list, even if no children. - if (["calendar", "table"].includes(note.getLabelValue("viewType") ?? "")) { + if (["calendar", "table", "geoMap"].includes(note.getLabelValue("viewType") ?? "")) { return true; } diff --git a/apps/client/src/widgets/type_widgets/book.ts b/apps/client/src/widgets/type_widgets/book.ts index 66d476464..cc8323e1f 100644 --- a/apps/client/src/widgets/type_widgets/book.ts +++ b/apps/client/src/widgets/type_widgets/book.ts @@ -47,6 +47,7 @@ export default class BookTypeWidget extends TypeWidget { switch (this.note?.getAttributeValue("label", "viewType")) { case "calendar": case "table": + case "geoMap": return false; default: return true; From cd742a461704063d9eb3c7fcae3df3a025626116 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 11:30:24 +0300 Subject: [PATCH 05/38] chore(views/geomap): basic initialization --- apps/client/src/widgets/geo_map.ts | 20 ++------------- .../widgets/view_widgets/geo_view/index.ts | 25 +++++++++++++++++-- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/apps/client/src/widgets/geo_map.ts b/apps/client/src/widgets/geo_map.ts index 14df22e3b..2e8fc41f7 100644 --- a/apps/client/src/widgets/geo_map.ts +++ b/apps/client/src/widgets/geo_map.ts @@ -8,10 +8,7 @@ const TPL = /*html*/`\ -
`; export type Leaflet = typeof L; @@ -27,8 +23,6 @@ export type InitCallback = (L: Leaflet) => void; export default class GeoMapWidget extends NoteContextAwareWidget { - map?: Map; - $container!: JQuery; private initCallback?: InitCallback; constructor(widgetMode: "type", initCallback?: InitCallback) { @@ -39,20 +33,10 @@ export default class GeoMapWidget extends NoteContextAwareWidget { doRender() { this.$widget = $(TPL); - this.$container = this.$widget.find(".geo-map-container"); - - const map = L.map(this.$container[0], { - worldCopyJump: true - }); - - this.map = map; if (this.initCallback) { this.initCallback(L); } - L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { - attribution: '© OpenStreetMap contributors', - detectRetina: true - }).addTo(map); + } } diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index cb203c004..faf4c3814 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -1,4 +1,5 @@ import ViewMode, { ViewModeArgs } from "../view_mode.js"; +import L from "leaflet"; const TPL = /*html*/`
@@ -8,26 +9,46 @@ const TPL = /*html*/` position: relative; height: 100%; } + + .geo-map-container { + height: 100%; + overflow: hidden; + } - Geo View is not implemented yet. +
`; export default class GeoView extends ViewMode<{}> { private $root: JQuery; + private $container!: JQuery; + private map?: L.Map; constructor(args: ViewModeArgs) { super(args, "geoMap"); this.$root = $(TPL); + this.$container = this.$root.find(".geo-map-container"); args.$parent.append(this.$root); } async renderList() { - console.log("Rendered"); + this.renderMap(); return this.$root; } + async renderMap() { + const map = L.map(this.$container[0], { + worldCopyJump: true + }); + L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { + attribution: '© OpenStreetMap contributors', + detectRetina: true + }).addTo(map); + + this.map = map; + } + get isFullHeight(): boolean { return true; } From 6a5bb1f5c8c173e49ce4d2765bdb92a48dcdbd9c Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 11:36:59 +0300 Subject: [PATCH 06/38] chore(views/geomap): reintroduce map init --- .../src/widgets/type_widgets/geo_map.ts | 32 ++--------------- .../widgets/view_widgets/geo_view/index.ts | 35 +++++++++++++++++-- .../src/widgets/view_widgets/view_mode.ts | 2 +- .../widgets/view_widgets/view_mode_storage.ts | 2 +- 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/geo_map.ts b/apps/client/src/widgets/type_widgets/geo_map.ts index 7f2b3e52a..22022878f 100644 --- a/apps/client/src/widgets/type_widgets/geo_map.ts +++ b/apps/client/src/widgets/type_widgets/geo_map.ts @@ -78,15 +78,9 @@ const TPL = /*html*/`\ const LOCATION_ATTRIBUTE = "geolocation"; const CHILD_NOTE_ICON = "bx bx-pin"; -const DEFAULT_COORDINATES: [number, number] = [3.878638227135724, 446.6630455551659]; -const DEFAULT_ZOOM = 2; -interface MapData { - view?: { - center?: LatLng | [number, number]; - zoom?: number; - }; -} + + // TODO: Deduplicate interface CreateChildResponse { @@ -139,8 +133,6 @@ export default class GeoMapTypeWidget extends TypeWidget { throw new Error(t("geo-map.unable-to-load-map")); } - this.#restoreViewportAndZoom(); - // Restore markers. await this.#reloadMarkers(); @@ -165,24 +157,6 @@ export default class GeoMapTypeWidget extends TypeWidget { } } - async #restoreViewportAndZoom() { - const map = this.geoMapWidget.map; - if (!map || !this.note) { - return; - } - const blob = await this.note.getBlob(); - - let parsedContent: MapData = {}; - if (blob && blob.content) { - parsedContent = JSON.parse(blob.content); - } - - // Restore viewport position & zoom - const center = parsedContent.view?.center ?? DEFAULT_COORDINATES; - const zoom = parsedContent.view?.zoom ?? DEFAULT_ZOOM; - map.setView(center, zoom); - } - async #reloadMarkers() { if (!this.note) { return; @@ -384,7 +358,7 @@ export default class GeoMapTypeWidget extends TypeWidget { async doRefresh(note: FNote) { await this.geoMapWidget.refresh(); - this.#restoreViewportAndZoom(); + // this.#restoreViewportAndZoom(); await this.#reloadMarkers(); } diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index faf4c3814..a7c3ad77c 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -1,5 +1,6 @@ import ViewMode, { ViewModeArgs } from "../view_mode.js"; import L from "leaflet"; +import type { LatLng, Map } from "leaflet"; const TPL = /*html*/`
@@ -19,11 +20,21 @@ const TPL = /*html*/`
`; -export default class GeoView extends ViewMode<{}> { +interface MapData { + view?: { + center?: LatLng | [number, number]; + zoom?: number; + }; +} + +const DEFAULT_COORDINATES: [number, number] = [3.878638227135724, 446.6630455551659]; +const DEFAULT_ZOOM = 2; + +export default class GeoView extends ViewMode { private $root: JQuery; private $container!: JQuery; - private map?: L.Map; + private map?: Map; constructor(args: ViewModeArgs) { super(args, "geoMap"); @@ -47,6 +58,26 @@ export default class GeoView extends ViewMode<{}> { }).addTo(map); this.map = map; + + this.#onMapInitialized(); + } + + async #onMapInitialized() { + this.#restoreViewportAndZoom(); + } + + async #restoreViewportAndZoom() { + const map = this.map; + if (!map) { + return; + } + + const parsedContent = await this.viewStorage.restore(); + + // Restore viewport position & zoom + const center = parsedContent?.view?.center ?? DEFAULT_COORDINATES; + const zoom = parsedContent?.view?.zoom ?? DEFAULT_ZOOM; + map.setView(center, zoom); } get isFullHeight(): boolean { diff --git a/apps/client/src/widgets/view_widgets/view_mode.ts b/apps/client/src/widgets/view_widgets/view_mode.ts index 350b84dcb..d8c4314eb 100644 --- a/apps/client/src/widgets/view_widgets/view_mode.ts +++ b/apps/client/src/widgets/view_widgets/view_mode.ts @@ -49,7 +49,7 @@ export default abstract class ViewMode extends Component { return this._viewStorage; } - this._viewStorage = new ViewModeStorage(this.parentNote, this.viewType); + this._viewStorage = new ViewModeStorage(this.parentNote, this.viewType); return this._viewStorage; } diff --git a/apps/client/src/widgets/view_widgets/view_mode_storage.ts b/apps/client/src/widgets/view_widgets/view_mode_storage.ts index 750e9d9b0..7b11f53f4 100644 --- a/apps/client/src/widgets/view_widgets/view_mode_storage.ts +++ b/apps/client/src/widgets/view_widgets/view_mode_storage.ts @@ -38,6 +38,6 @@ export default class ViewModeStorage { } const attachmentData = await server.get<{ content: string } | null>(`attachments/${attachment.attachmentId}/blob`); - return JSON.parse(attachmentData?.content ?? "{}"); + return JSON.parse(attachmentData?.content ?? "{}") as T; } } From b8d41b3421abdcecf97b3770625b6711946571e7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 11:47:37 +0300 Subject: [PATCH 07/38] chore(views/geomap): reintroduce viewport storage --- .../src/widgets/type_widgets/geo_map.ts | 57 +++++-------------- .../widgets/view_widgets/geo_view/index.ts | 29 ++++++++++ 2 files changed, 44 insertions(+), 42 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/geo_map.ts b/apps/client/src/widgets/type_widgets/geo_map.ts index 22022878f..65abbc094 100644 --- a/apps/client/src/widgets/type_widgets/geo_map.ts +++ b/apps/client/src/widgets/type_widgets/geo_map.ts @@ -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; diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index a7c3ad77c..9684094a9 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -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*/`
@@ -35,11 +37,13 @@ export default class GeoView extends ViewMode { private $root: JQuery; private $container!: JQuery; 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 { } 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 { 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; } From 6d03304cbb4eaf77081f36832a37375cb0a73670 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 12:12:59 +0300 Subject: [PATCH 08/38] chore(views/geomap): reintroduce display of markers --- .../src/widgets/type_widgets/geo_map.ts | 218 +++--------------- .../widgets/view_widgets/geo_view/index.ts | 107 ++++++++- .../widgets/view_widgets/geo_view/markers.ts | 55 +++++ 3 files changed, 197 insertions(+), 183 deletions(-) create mode 100644 apps/client/src/widgets/view_widgets/geo_view/markers.ts diff --git a/apps/client/src/widgets/type_widgets/geo_map.ts b/apps/client/src/widgets/type_widgets/geo_map.ts index 65abbc094..ad7d98529 100644 --- a/apps/client/src/widgets/type_widgets/geo_map.ts +++ b/apps/client/src/widgets/type_widgets/geo_map.ts @@ -1,4 +1,4 @@ -import { GPX, Marker, type LatLng, type LeafletMouseEvent } from "leaflet"; +import { type LatLng, type LeafletMouseEvent } from "leaflet"; import type FNote from "../../entities/fnote.js"; import GeoMapWidget, { type InitCallback, type Leaflet } from "../geo_map.js"; import TypeWidget from "./type_widget.js"; @@ -8,80 +8,21 @@ import dialogService from "../../services/dialog.js"; import type { CommandListenerData, EventData } from "../../components/app_context.js"; import { t } from "../../services/i18n.js"; import attributes from "../../services/attributes.js"; -import openContextMenu from "./geo_map_context_menu.js"; import link from "../../services/link.js"; -import note_tooltip from "../../services/note_tooltip.js"; -import appContext from "../../components/app_context.js"; -import markerIcon from "leaflet/dist/images/marker-icon.png"; -import markerIconShadow from "leaflet/dist/images/marker-shadow.png"; + import { hasTouchBar } from "../../services/utils.js"; const TPL = /*html*/`\
`; const LOCATION_ATTRIBUTE = "geolocation"; const CHILD_NOTE_ICON = "bx bx-pin"; - - - // TODO: Deduplicate interface CreateChildResponse { note: { @@ -99,8 +40,6 @@ export default class GeoMapTypeWidget extends TypeWidget { private geoMapWidget: GeoMapWidget; private _state: State; private L!: Leaflet; - private currentMarkerData: Record; - private currentTrackData: Record; private gpxLoaded?: boolean; private ignoreNextZoomEvent?: boolean; @@ -112,8 +51,7 @@ export default class GeoMapTypeWidget extends TypeWidget { super(); this.geoMapWidget = new GeoMapWidget("type", (L: Leaflet) => this.#onMapInitialized(L)); - this.currentMarkerData = {}; - this.currentTrackData = {}; + this._state = State.Normal; this.child(this.geoMapWidget); @@ -148,125 +86,41 @@ export default class GeoMapTypeWidget extends TypeWidget { // } } - async #reloadMarkers() { - if (!this.note) { - return; - } - // Delete all existing markers - for (const marker of Object.values(this.currentMarkerData)) { - marker.remove(); - } - // Delete all existing tracks - for (const track of Object.values(this.currentTrackData)) { - track.remove(); - } + // async #processNoteWithGpxTrack(note: FNote) { + // if (!this.L || !this.geoMapWidget.map) { + // return; + // } - // Add the new markers. - this.currentMarkerData = {}; - const childNotes = await this.note.getChildNotes(); - for (const childNote of childNotes) { - if (childNote.mime === "application/gpx+xml") { - this.#processNoteWithGpxTrack(childNote); - continue; - } + // if (!this.gpxLoaded) { + // await import("leaflet-gpx"); + // this.gpxLoaded = true; + // } - const latLng = childNote.getAttributeValue("label", LOCATION_ATTRIBUTE); - if (latLng) { - this.#processNoteWithMarker(childNote, latLng); - } - } - } + // const xmlResponse = await server.get(`notes/${note.noteId}/open`, undefined, true); + // let stringResponse: string; + // if (xmlResponse instanceof Uint8Array) { + // stringResponse = new TextDecoder().decode(xmlResponse); + // } else { + // stringResponse = xmlResponse; + // } - async #processNoteWithGpxTrack(note: FNote) { - if (!this.L || !this.geoMapWidget.map) { - return; - } - - if (!this.gpxLoaded) { - await import("leaflet-gpx"); - this.gpxLoaded = true; - } - - const xmlResponse = await server.get(`notes/${note.noteId}/open`, undefined, true); - let stringResponse: string; - if (xmlResponse instanceof Uint8Array) { - stringResponse = new TextDecoder().decode(xmlResponse); - } else { - stringResponse = xmlResponse; - } - - const track = new this.L.GPX(stringResponse, { - markers: { - startIcon: this.#buildIcon(note.getIcon(), note.getColorClass(), note.title), - endIcon: this.#buildIcon("bxs-flag-checkered"), - wptIcons: { - "": this.#buildIcon("bx bx-pin") - } - }, - polyline_options: { - color: note.getLabelValue("color") ?? "blue" - } - }); - track.addTo(this.geoMapWidget.map); - this.currentTrackData[note.noteId] = track; - } - - #processNoteWithMarker(note: FNote, latLng: string) { - const map = this.geoMapWidget.map; - if (!map) { - return; - } - - const [lat, lng] = latLng.split(",", 2).map((el) => parseFloat(el)); - const L = this.L; - const icon = this.#buildIcon(note.getIcon(), note.getColorClass(), note.title); - - const marker = L.marker(L.latLng(lat, lng), { - icon, - draggable: true, - autoPan: true, - autoPanSpeed: 5 - }) - .addTo(map) - .on("moveend", (e) => { - this.moveMarker(note.noteId, (e.target as Marker).getLatLng()); - }); - marker.on("mousedown", ({ originalEvent }) => { - // Middle click to open in new tab - if (originalEvent.button === 1) { - const hoistedNoteId = this.hoistedNoteId; - //@ts-ignore, fix once tab manager is ported. - appContext.tabManager.openInNewTab(note.noteId, hoistedNoteId); - return true; - } - }); - marker.on("contextmenu", (e) => { - openContextMenu(note.noteId, e.originalEvent); - }); - - const el = marker.getElement(); - if (el) { - const $el = $(el); - $el.attr("data-href", `#${note.noteId}`); - note_tooltip.setupElementTooltip($($el)); - } - - this.currentMarkerData[note.noteId] = marker; - } - - #buildIcon(bxIconClass: string, colorClass?: string, title?: string) { - return this.L.divIcon({ - html: /*html*/`\ - - - - ${title ?? ""}`, - iconSize: [25, 41], - iconAnchor: [12, 41] - }); - } + // const track = new this.L.GPX(stringResponse, { + // markers: { + // startIcon: this.#buildIcon(note.getIcon(), note.getColorClass(), note.title), + // endIcon: this.#buildIcon("bxs-flag-checkered"), + // wptIcons: { + // "": this.#buildIcon("bx bx-pin") + // } + // }, + // polyline_options: { + // color: note.getLabelValue("color") ?? "blue" + // } + // }); + // track.addTo(this.geoMapWidget.map); + // this.currentTrackData[note.noteId] = track; + // } #changeState(newState: State) { this._state = newState; @@ -332,13 +186,13 @@ export default class GeoMapTypeWidget extends TypeWidget { async doRefresh(note: FNote) { await this.geoMapWidget.refresh(); // this.#restoreViewportAndZoom(); - await this.#reloadMarkers(); + // await this.#reloadMarkers(); } entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { // If any of the children branches are altered. if (loadResults.getBranchRows().find((branch) => branch.parentNoteId === this.noteId)) { - this.#reloadMarkers(); + // this.#reloadMarkers(); return; } @@ -346,7 +200,7 @@ export default class GeoMapTypeWidget extends TypeWidget { // TODO: Should probably filter by parent here as well. const attributeRows = loadResults.getAttributeRows(); if (attributeRows.find((at) => [LOCATION_ATTRIBUTE, "color"].includes(at.name ?? ""))) { - this.#reloadMarkers(); + // this.#reloadMarkers(); } } diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 9684094a9..6eb75c4ad 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -1,8 +1,10 @@ import ViewMode, { ViewModeArgs } from "../view_mode.js"; import L from "leaflet"; -import type { LatLng, Map } from "leaflet"; +import type { GPX, LatLng, Map, Marker } from "leaflet"; import SpacedUpdate from "../../../services/spaced_update.js"; import { t } from "../../../services/i18n.js"; +import processNoteWithMarker from "./markers.js"; +import froca from "../../../services/froca.js"; const TPL = /*html*/`
@@ -17,6 +19,60 @@ const TPL = /*html*/` height: 100%; overflow: hidden; } + + .leaflet-pane { + z-index: 1; + } + + .geo-map-container.placing-note { + cursor: crosshair; + } + + .geo-map-container .marker-pin { + position: relative; + } + + .geo-map-container .leaflet-div-icon { + position: relative; + background: transparent; + border: 0; + overflow: visible; + } + + .geo-map-container .leaflet-div-icon .icon-shadow { + position: absolute; + top: 0; + left: 0; + z-index: -1; + } + + .geo-map-container .leaflet-div-icon .bx { + position: absolute; + top: 3px; + left: 2px; + background-color: white; + color: black; + padding: 2px; + border-radius: 50%; + font-size: 17px; + } + + .geo-map-container .leaflet-div-icon .title-label { + display: block; + position: absolute; + top: 100%; + left: 50%; + transform: translateX(-50%); + font-size: 0.75rem; + height: 1rem; + color: black; + width: 100px; + text-align: center; + text-overflow: ellipsis; + text-shadow: -1px -1px 0 white, 1px -1px 0 white, -1px 1px 0 white, 1px 1px 0 white; + white-space: no-wrap; + overflow: hidden; + }
@@ -31,19 +87,30 @@ interface MapData { const DEFAULT_COORDINATES: [number, number] = [3.878638227135724, 446.6630455551659]; const DEFAULT_ZOOM = 2; +const LOCATION_ATTRIBUTE = "geolocation"; +const CHILD_NOTE_ICON = "bx bx-pin"; export default class GeoView extends ViewMode { + private args: ViewModeArgs; private $root: JQuery; private $container!: JQuery; private map?: Map; private spacedUpdate: SpacedUpdate; + private currentMarkerData: Record; + private currentTrackData: Record; + constructor(args: ViewModeArgs) { super(args, "geoMap"); + this.args = args; this.$root = $(TPL); this.$container = this.$root.find(".geo-map-container"); this.spacedUpdate = new SpacedUpdate(() => this.onSave(), 5_000); + + this.currentMarkerData = {}; + this.currentTrackData = {}; + args.$parent.append(this.$root); } @@ -78,6 +145,8 @@ export default class GeoView extends ViewMode { map.on("moveend", updateFn); map.on("zoomend", updateFn); // map.on("click", (e) => this.#onMapClicked(e)); + + this.#reloadMarkers(); } async #restoreViewportAndZoom() { @@ -109,6 +178,42 @@ export default class GeoView extends ViewMode { this.viewStorage.store(data); } + async #reloadMarkers() { + if (!this.map) { + return; + } + + // Delete all existing markers + for (const marker of Object.values(this.currentMarkerData)) { + marker.remove(); + } + + // Delete all existing tracks + for (const track of Object.values(this.currentTrackData)) { + track.remove(); + } + + // Add the new markers. + this.currentMarkerData = {}; + for (const noteId of this.args.noteIds) { + const childNote = await froca.getNote(noteId); + if (!childNote) { + continue; + } + + if (childNote.mime === "application/gpx+xml") { + // this.#processNoteWithGpxTrack(childNote); + continue; + } + + const latLng = childNote.getAttributeValue("label", LOCATION_ATTRIBUTE); + if (latLng) { + const marker = processNoteWithMarker(this.map, childNote, latLng); + this.currentMarkerData[childNote.noteId] = marker; + } + } + } + get isFullHeight(): boolean { return true; } diff --git a/apps/client/src/widgets/view_widgets/geo_view/markers.ts b/apps/client/src/widgets/view_widgets/geo_view/markers.ts new file mode 100644 index 000000000..d25234650 --- /dev/null +++ b/apps/client/src/widgets/view_widgets/geo_view/markers.ts @@ -0,0 +1,55 @@ +import markerIcon from "leaflet/dist/images/marker-icon.png"; +import markerIconShadow from "leaflet/dist/images/marker-shadow.png"; +import { marker, latLng, divIcon, Map } from "leaflet"; +import type FNote from "../../../entities/fnote.js"; +import note_tooltip from "../../../services/note_tooltip.js"; +import openContextMenu from "../../type_widgets/geo_map_context_menu.js"; + +export default function processNoteWithMarker(map: Map, note: FNote, location: string) { + const [lat, lng] = location.split(",", 2).map((el) => parseFloat(el)); + const icon = buildIcon(note.getIcon(), note.getColorClass(), note.title); + + const newMarker = marker(latLng(lat, lng), { + icon, + draggable: true, + autoPan: true, + autoPanSpeed: 5 + }) + .addTo(map) + .on("moveend", (e) => { + // this.moveMarker(note.noteId, (e.target as Marker).getLatLng()); + }); + newMarker.on("mousedown", ({ originalEvent }) => { + // Middle click to open in new tab + if (originalEvent.button === 1) { + const hoistedNoteId = this.hoistedNoteId; + //@ts-ignore, fix once tab manager is ported. + appContext.tabManager.openInNewTab(note.noteId, hoistedNoteId); + return true; + } + }); + newMarker.on("contextmenu", (e) => { + openContextMenu(note.noteId, e.originalEvent); + }); + + const el = newMarker.getElement(); + if (el) { + const $el = $(el); + $el.attr("data-href", `#${note.noteId}`); + note_tooltip.setupElementTooltip($($el)); + } + + return newMarker; +} + +function buildIcon(bxIconClass: string, colorClass?: string, title?: string) { + return divIcon({ + html: /*html*/`\ + + + + ${title ?? ""}`, + iconSize: [25, 41], + iconAnchor: [12, 41] + }); +} From 579a2616125d7e55f5cde6ffcec2079bd41053eb Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 12:19:04 +0300 Subject: [PATCH 09/38] chore(views/geomap): reintroduce display of tracks --- .../src/widgets/type_widgets/geo_map.ts | 37 ------------------- .../widgets/view_widgets/geo_view/index.ts | 5 ++- .../widgets/view_widgets/geo_view/markers.ts | 33 +++++++++++++++++ 3 files changed, 36 insertions(+), 39 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/geo_map.ts b/apps/client/src/widgets/type_widgets/geo_map.ts index ad7d98529..06056bfab 100644 --- a/apps/client/src/widgets/type_widgets/geo_map.ts +++ b/apps/client/src/widgets/type_widgets/geo_map.ts @@ -40,7 +40,6 @@ export default class GeoMapTypeWidget extends TypeWidget { private geoMapWidget: GeoMapWidget; private _state: State; private L!: Leaflet; - private gpxLoaded?: boolean; private ignoreNextZoomEvent?: boolean; static getType() { @@ -86,42 +85,6 @@ export default class GeoMapTypeWidget extends TypeWidget { // } } - - - // async #processNoteWithGpxTrack(note: FNote) { - // if (!this.L || !this.geoMapWidget.map) { - // return; - // } - - // if (!this.gpxLoaded) { - // await import("leaflet-gpx"); - // this.gpxLoaded = true; - // } - - // const xmlResponse = await server.get(`notes/${note.noteId}/open`, undefined, true); - // let stringResponse: string; - // if (xmlResponse instanceof Uint8Array) { - // stringResponse = new TextDecoder().decode(xmlResponse); - // } else { - // stringResponse = xmlResponse; - // } - - // const track = new this.L.GPX(stringResponse, { - // markers: { - // startIcon: this.#buildIcon(note.getIcon(), note.getColorClass(), note.title), - // endIcon: this.#buildIcon("bxs-flag-checkered"), - // wptIcons: { - // "": this.#buildIcon("bx bx-pin") - // } - // }, - // polyline_options: { - // color: note.getLabelValue("color") ?? "blue" - // } - // }); - // track.addTo(this.geoMapWidget.map); - // this.currentTrackData[note.noteId] = track; - // } - #changeState(newState: State) { this._state = newState; this.geoMapWidget.$container.toggleClass("placing-note", newState === State.NewNote); diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 6eb75c4ad..6df005375 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -3,7 +3,7 @@ import L from "leaflet"; import type { GPX, LatLng, Map, Marker } from "leaflet"; import SpacedUpdate from "../../../services/spaced_update.js"; import { t } from "../../../services/i18n.js"; -import processNoteWithMarker from "./markers.js"; +import processNoteWithMarker, { processNoteWithGpxTrack } from "./markers.js"; import froca from "../../../services/froca.js"; const TPL = /*html*/` @@ -202,7 +202,8 @@ export default class GeoView extends ViewMode { } if (childNote.mime === "application/gpx+xml") { - // this.#processNoteWithGpxTrack(childNote); + const track = await processNoteWithGpxTrack(this.map, childNote); + this.currentTrackData[childNote.noteId] = track; continue; } diff --git a/apps/client/src/widgets/view_widgets/geo_view/markers.ts b/apps/client/src/widgets/view_widgets/geo_view/markers.ts index d25234650..d7258610f 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/markers.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/markers.ts @@ -4,6 +4,9 @@ import { marker, latLng, divIcon, Map } from "leaflet"; import type FNote from "../../../entities/fnote.js"; import note_tooltip from "../../../services/note_tooltip.js"; import openContextMenu from "../../type_widgets/geo_map_context_menu.js"; +import server from "../../../services/server.js"; + +let gpxLoaded = false; export default function processNoteWithMarker(map: Map, note: FNote, location: string) { const [lat, lng] = location.split(",", 2).map((el) => parseFloat(el)); @@ -42,6 +45,36 @@ export default function processNoteWithMarker(map: Map, note: FNote, location: s return newMarker; } +export async function processNoteWithGpxTrack(map: Map, note: FNote) { + if (!gpxLoaded) { + await import("leaflet-gpx"); + gpxLoaded = true; + } + + const xmlResponse = await server.get(`notes/${note.noteId}/open`, undefined, true); + let stringResponse: string; + if (xmlResponse instanceof Uint8Array) { + stringResponse = new TextDecoder().decode(xmlResponse); + } else { + stringResponse = xmlResponse; + } + + const track = new L.GPX(stringResponse, { + markers: { + startIcon: buildIcon(note.getIcon(), note.getColorClass(), note.title), + endIcon: buildIcon("bxs-flag-checkered"), + wptIcons: { + "": buildIcon("bx bx-pin") + } + }, + polyline_options: { + color: note.getLabelValue("color") ?? "blue" + } + }); + track.addTo(map); + return track; +} + function buildIcon(bxIconClass: string, colorClass?: string, title?: string) { return divIcon({ html: /*html*/`\ From 939e99637f7bbd83ed8e37ab314886c3ec190dad Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 12:22:51 +0300 Subject: [PATCH 10/38] chore(views/geomap): reintroduce moving markers --- apps/client/src/widgets/type_widgets/geo_map.ts | 9 ++------- apps/client/src/widgets/view_widgets/geo_view/editing.ts | 8 ++++++++ apps/client/src/widgets/view_widgets/geo_view/index.ts | 2 +- apps/client/src/widgets/view_widgets/geo_view/markers.ts | 5 +++-- 4 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 apps/client/src/widgets/view_widgets/geo_view/editing.ts diff --git a/apps/client/src/widgets/type_widgets/geo_map.ts b/apps/client/src/widgets/type_widgets/geo_map.ts index 06056bfab..20397089e 100644 --- a/apps/client/src/widgets/type_widgets/geo_map.ts +++ b/apps/client/src/widgets/type_widgets/geo_map.ts @@ -108,17 +108,12 @@ export default class GeoMapTypeWidget extends TypeWidget { type: "text" }); attributes.setLabel(note.noteId, "iconClass", CHILD_NOTE_ICON); - this.moveMarker(note.noteId, e.latlng); + // this.moveMarker(note.noteId, e.latlng); } this.#changeState(State.Normal); } - async moveMarker(noteId: string, latLng: LatLng | null) { - const value = latLng ? [latLng.lat, latLng.lng].join(",") : ""; - await attributes.setLabel(noteId, LOCATION_ATTRIBUTE, value); - } - async geoMapCreateChildNoteEvent({ ntxId }: EventData<"geoMapCreateChildNote">) { if (!this.isNoteContext(ntxId)) { return; @@ -179,7 +174,7 @@ export default class GeoMapTypeWidget extends TypeWidget { } deleteFromMapEvent({ noteId }: EventData<"deleteFromMap">) { - this.moveMarker(noteId, null); + // this.moveMarker(noteId, null); } buildTouchBarCommand({ TouchBar }: CommandListenerData<"buildTouchBar">) { diff --git a/apps/client/src/widgets/view_widgets/geo_view/editing.ts b/apps/client/src/widgets/view_widgets/geo_view/editing.ts new file mode 100644 index 000000000..863305ebc --- /dev/null +++ b/apps/client/src/widgets/view_widgets/geo_view/editing.ts @@ -0,0 +1,8 @@ +import { LatLng } from "leaflet"; +import attributes from "../../../services/attributes"; +import { LOCATION_ATTRIBUTE } from "./index.js"; + +export async function moveMarker(noteId: string, latLng: LatLng | null) { + const value = latLng ? [latLng.lat, latLng.lng].join(",") : ""; + await attributes.setLabel(noteId, LOCATION_ATTRIBUTE, value); +} diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 6df005375..fb897b60e 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -87,7 +87,7 @@ interface MapData { const DEFAULT_COORDINATES: [number, number] = [3.878638227135724, 446.6630455551659]; const DEFAULT_ZOOM = 2; -const LOCATION_ATTRIBUTE = "geolocation"; +export const LOCATION_ATTRIBUTE = "geolocation"; const CHILD_NOTE_ICON = "bx bx-pin"; export default class GeoView extends ViewMode { diff --git a/apps/client/src/widgets/view_widgets/geo_view/markers.ts b/apps/client/src/widgets/view_widgets/geo_view/markers.ts index d7258610f..97f9dbcf3 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/markers.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/markers.ts @@ -1,10 +1,11 @@ import markerIcon from "leaflet/dist/images/marker-icon.png"; import markerIconShadow from "leaflet/dist/images/marker-shadow.png"; -import { marker, latLng, divIcon, Map } from "leaflet"; +import { marker, latLng, divIcon, Map, type Marker } from "leaflet"; import type FNote from "../../../entities/fnote.js"; import note_tooltip from "../../../services/note_tooltip.js"; import openContextMenu from "../../type_widgets/geo_map_context_menu.js"; import server from "../../../services/server.js"; +import { moveMarker } from "./editing.js"; let gpxLoaded = false; @@ -20,7 +21,7 @@ export default function processNoteWithMarker(map: Map, note: FNote, location: s }) .addTo(map) .on("moveend", (e) => { - // this.moveMarker(note.noteId, (e.target as Marker).getLatLng()); + moveMarker(note.noteId, (e.target as Marker).getLatLng()); }); newMarker.on("mousedown", ({ originalEvent }) => { // Middle click to open in new tab From d5e81d77a219a4a62e4a966ff50143cb1d05c9b2 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 12:28:24 +0300 Subject: [PATCH 11/38] refactor(views/geomap): move context menu --- .../geo_view/context_menu.ts} | 10 +++++----- .../src/widgets/view_widgets/geo_view/markers.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) rename apps/client/src/widgets/{type_widgets/geo_map_context_menu.ts => view_widgets/geo_view/context_menu.ts} (76%) diff --git a/apps/client/src/widgets/type_widgets/geo_map_context_menu.ts b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts similarity index 76% rename from apps/client/src/widgets/type_widgets/geo_map_context_menu.ts rename to apps/client/src/widgets/view_widgets/geo_view/context_menu.ts index f19d655c4..1e1a4b3d7 100644 --- a/apps/client/src/widgets/type_widgets/geo_map_context_menu.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts @@ -1,8 +1,8 @@ -import appContext from "../../components/app_context.js"; -import type { ContextMenuEvent } from "../../menus/context_menu.js"; -import contextMenu from "../../menus/context_menu.js"; -import linkContextMenu from "../../menus/link_context_menu.js"; -import { t } from "../../services/i18n.js"; +import appContext from "../../../components/app_context.js"; +import type { ContextMenuEvent } from "../../../menus/context_menu.js"; +import contextMenu from "../../../menus/context_menu.js"; +import linkContextMenu from "../../../menus/link_context_menu.js"; +import { t } from "../../../services/i18n.js"; export default function openContextMenu(noteId: string, e: ContextMenuEvent) { contextMenu.show({ diff --git a/apps/client/src/widgets/view_widgets/geo_view/markers.ts b/apps/client/src/widgets/view_widgets/geo_view/markers.ts index 97f9dbcf3..ca4170f6e 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/markers.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/markers.ts @@ -3,7 +3,7 @@ import markerIconShadow from "leaflet/dist/images/marker-shadow.png"; import { marker, latLng, divIcon, Map, type Marker } from "leaflet"; import type FNote from "../../../entities/fnote.js"; import note_tooltip from "../../../services/note_tooltip.js"; -import openContextMenu from "../../type_widgets/geo_map_context_menu.js"; +import openContextMenu from "./context_menu.js"; import server from "../../../services/server.js"; import { moveMarker } from "./editing.js"; From b6d2de54b202d079b31913dea7038729d0f12a48 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 17:51:24 +0300 Subject: [PATCH 12/38] chore(views/geomap): reintroduce adding notes --- .../floating_buttons/geo_map_button.ts | 2 +- apps/client/src/widgets/note_list.ts | 13 ++- .../src/widgets/type_widgets/geo_map.ts | 86 ----------------- .../widgets/view_widgets/geo_view/index.ts | 95 ++++++++++++++++++- 4 files changed, 105 insertions(+), 91 deletions(-) diff --git a/apps/client/src/widgets/floating_buttons/geo_map_button.ts b/apps/client/src/widgets/floating_buttons/geo_map_button.ts index 32b45d66c..945be41d1 100644 --- a/apps/client/src/widgets/floating_buttons/geo_map_button.ts +++ b/apps/client/src/widgets/floating_buttons/geo_map_button.ts @@ -23,7 +23,7 @@ const TPL = /*html*/`\ export default class GeoMapButtons extends NoteContextAwareWidget { isEnabled() { - return super.isEnabled() && this.note?.type === "geoMap"; + return super.isEnabled() && this.note?.getLabelValue("viewType") === "geoMap"; } doRender() { diff --git a/apps/client/src/widgets/note_list.ts b/apps/client/src/widgets/note_list.ts index 389aa82d3..54ba1a395 100644 --- a/apps/client/src/widgets/note_list.ts +++ b/apps/client/src/widgets/note_list.ts @@ -1,7 +1,7 @@ import NoteContextAwareWidget from "./note_context_aware_widget.js"; import NoteListRenderer from "../services/note_list_renderer.js"; import type FNote from "../entities/fnote.js"; -import type { CommandListener, CommandListenerData, CommandMappings, CommandNames, EventData } from "../components/app_context.js"; +import type { CommandListener, CommandListenerData, CommandMappings, CommandNames, EventData, EventNames } from "../components/app_context.js"; import type ViewMode from "./view_widgets/view_mode.js"; import AttributeDetailWidget from "./attribute_widgets/attribute_detail.js"; import { Attribute } from "../services/attribute_parser.js"; @@ -176,4 +176,15 @@ export default class NoteListWidget extends NoteContextAwareWidget { return super.triggerCommand(name, data); } + handleEventInChildren(name: T, data: EventData): Promise | null { + super.handleEventInChildren(name, data); + + if (this.viewMode) { + const ret = this.viewMode.handleEvent(name, data); + if (ret) { + return ret; + } + } + } + } diff --git a/apps/client/src/widgets/type_widgets/geo_map.ts b/apps/client/src/widgets/type_widgets/geo_map.ts index 20397089e..7cd02825b 100644 --- a/apps/client/src/widgets/type_widgets/geo_map.ts +++ b/apps/client/src/widgets/type_widgets/geo_map.ts @@ -11,8 +11,6 @@ import attributes from "../../services/attributes.js"; import link from "../../services/link.js"; -import { hasTouchBar } from "../../services/utils.js"; - const TPL = /*html*/`\
- -
`; - -export type Leaflet = typeof L; -export type InitCallback = (L: Leaflet) => void; - -export default class GeoMapWidget extends NoteContextAwareWidget { - - private initCallback?: InitCallback; - - constructor(widgetMode: "type", initCallback?: InitCallback) { - super(); - this.initCallback = initCallback; - } - - doRender() { - this.$widget = $(TPL); - - if (this.initCallback) { - this.initCallback(L); - } - - - } -} diff --git a/apps/client/src/widgets/note_detail.ts b/apps/client/src/widgets/note_detail.ts index 2ee5a6116..334bea5fb 100644 --- a/apps/client/src/widgets/note_detail.ts +++ b/apps/client/src/widgets/note_detail.ts @@ -28,7 +28,6 @@ import ContentWidgetTypeWidget from "./type_widgets/content_widget.js"; import AttachmentListTypeWidget from "./type_widgets/attachment_list.js"; import AttachmentDetailTypeWidget from "./type_widgets/attachment_detail.js"; import MindMapWidget from "./type_widgets/mind_map.js"; -import GeoMapTypeWidget from "./type_widgets/geo_map.js"; import utils from "../services/utils.js"; import type { NoteType } from "../entities/fnote.js"; import type TypeWidget from "./type_widgets/type_widget.js"; @@ -71,7 +70,6 @@ const typeWidgetClasses = { attachmentDetail: AttachmentDetailTypeWidget, attachmentList: AttachmentListTypeWidget, mindMap: MindMapWidget, - geoMap: GeoMapTypeWidget, aiChat: AiChatTypeWidget, // Split type editors diff --git a/apps/client/src/widgets/type_widgets/geo_map.ts b/apps/client/src/widgets/type_widgets/geo_map.ts deleted file mode 100644 index 9ef2cc489..000000000 --- a/apps/client/src/widgets/type_widgets/geo_map.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { type LatLng, type LeafletMouseEvent } from "leaflet"; -import type FNote from "../../entities/fnote.js"; -import GeoMapWidget, { type InitCallback, type Leaflet } from "../geo_map.js"; -import TypeWidget from "./type_widget.js"; -import server from "../../services/server.js"; -import toastService from "../../services/toast.js"; -import dialogService from "../../services/dialog.js"; -import type { CommandListenerData, EventData } from "../../components/app_context.js"; -import { t } from "../../services/i18n.js"; -import attributes from "../../services/attributes.js"; -import link from "../../services/link.js"; - - -const TPL = /*html*/`\ -
- -
`; - -const LOCATION_ATTRIBUTE = "geolocation"; -const CHILD_NOTE_ICON = "bx bx-pin"; - -export default class GeoMapTypeWidget extends TypeWidget { - - private geoMapWidget: GeoMapWidget; - private L!: Leaflet; - - static getType() { - return "geoMap"; - } - - constructor() { - super(); - - this.geoMapWidget = new GeoMapWidget("type", (L: Leaflet) => this.#onMapInitialized(L)); - - - this.child(this.geoMapWidget); - } - - doRender() { - super.doRender(); - - this.$widget = $(TPL); - this.$widget.append(this.geoMapWidget.render()); - } - - async #onMapInitialized(L: Leaflet) { - // this.L = L; - - // 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); - - - } - - async doRefresh(note: FNote) { - await this.geoMapWidget.refresh(); - // this.#restoreViewportAndZoom(); - // await this.#reloadMarkers(); - } - -} diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 5791ecf38..a9a58645d 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -1,6 +1,7 @@ import ViewMode, { ViewModeArgs } from "../view_mode.js"; import L from "leaflet"; import type { GPX, LatLng, LeafletMouseEvent, Map, Marker } from "leaflet"; +import "leaflet/dist/leaflet.css"; import SpacedUpdate from "../../../services/spaced_update.js"; import { t } from "../../../services/i18n.js"; import processNoteWithMarker, { processNoteWithGpxTrack } from "./markers.js"; From ff6b4effbd1bfbbe47a0dd3fa5458d69329a8fe7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 21:28:55 +0300 Subject: [PATCH 21/38] fix(views/geomap): tooltip not showing --- .../widgets/view_widgets/geo_view/index.ts | 2 -- .../widgets/view_widgets/geo_view/markers.ts | 28 +++++++++---------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index a9a58645d..cd98e38c0 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -112,7 +112,6 @@ enum State { export default class GeoView extends ViewMode { - private args: ViewModeArgs; private $root: JQuery; private $container!: JQuery; private map?: Map; @@ -125,7 +124,6 @@ export default class GeoView extends ViewMode { constructor(args: ViewModeArgs) { super(args, "geoMap"); - this.args = args; this.$root = $(TPL); this.$container = this.$root.find(".geo-map-container"); this.spacedUpdate = new SpacedUpdate(() => this.onSave(), 5_000); diff --git a/apps/client/src/widgets/view_widgets/geo_view/markers.ts b/apps/client/src/widgets/view_widgets/geo_view/markers.ts index ca4170f6e..1d335cfcb 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/markers.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/markers.ts @@ -2,7 +2,6 @@ import markerIcon from "leaflet/dist/images/marker-icon.png"; import markerIconShadow from "leaflet/dist/images/marker-shadow.png"; import { marker, latLng, divIcon, Map, type Marker } from "leaflet"; import type FNote from "../../../entities/fnote.js"; -import note_tooltip from "../../../services/note_tooltip.js"; import openContextMenu from "./context_menu.js"; import server from "../../../services/server.js"; import { moveMarker } from "./editing.js"; @@ -11,7 +10,7 @@ let gpxLoaded = false; export default function processNoteWithMarker(map: Map, note: FNote, location: string) { const [lat, lng] = location.split(",", 2).map((el) => parseFloat(el)); - const icon = buildIcon(note.getIcon(), note.getColorClass(), note.title); + const icon = buildIcon(note.getIcon(), note.getColorClass(), note.title, note.noteId); const newMarker = marker(latLng(lat, lng), { icon, @@ -36,13 +35,6 @@ export default function processNoteWithMarker(map: Map, note: FNote, location: s openContextMenu(note.noteId, e.originalEvent); }); - const el = newMarker.getElement(); - if (el) { - const $el = $(el); - $el.attr("data-href", `#${note.noteId}`); - note_tooltip.setupElementTooltip($($el)); - } - return newMarker; } @@ -76,13 +68,19 @@ export async function processNoteWithGpxTrack(map: Map, note: FNote) { return track; } -function buildIcon(bxIconClass: string, colorClass?: string, title?: string) { +function buildIcon(bxIconClass: string, colorClass?: string, title?: string, noteIdLink?: string) { + let html = /*html*/`\ + + + + ${title ?? ""}`; + + if (noteIdLink) { + html = `
${html}
`; + } + return divIcon({ - html: /*html*/`\ - - - - ${title ?? ""}`, + html, iconSize: [25, 41], iconAnchor: [12, 41] }); From 1b1f1957c3c7380eac3e65c807134f81c03d74d2 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 22:11:03 +0300 Subject: [PATCH 22/38] chore(views/help): reintroduce help button --- apps/client/src/widgets/floating_buttons/help_button.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/floating_buttons/help_button.ts b/apps/client/src/widgets/floating_buttons/help_button.ts index f0403bfd7..31b031c9d 100644 --- a/apps/client/src/widgets/floating_buttons/help_button.ts +++ b/apps/client/src/widgets/floating_buttons/help_button.ts @@ -17,7 +17,6 @@ export const byNoteType: Record, string | null> = { contentWidget: null, doc: null, file: null, - geoMap: "81SGnPGMk7Xc", image: null, launcher: null, mermaid: null, @@ -35,7 +34,8 @@ export const byBookType: Record = { list: null, grid: null, calendar: "xWbu3jpNWapp", - table: "2FvYrpmOXm29" + table: "2FvYrpmOXm29", + geoMap: "81SGnPGMk7Xc" }; export default class ContextualHelpButton extends NoteContextAwareWidget { From dd188661566daa1bc5eec029e6882d4bc5a8712a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 22:22:19 +0300 Subject: [PATCH 23/38] refactor(server): convert to switch --- apps/server/src/services/import/zip.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/server/src/services/import/zip.ts b/apps/server/src/services/import/zip.ts index e7da680bb..4a7303915 100644 --- a/apps/server/src/services/import/zip.ts +++ b/apps/server/src/services/import/zip.ts @@ -656,12 +656,13 @@ export function readZipFile(buffer: Buffer, processEntryCallback: (zipfile: yauz function resolveNoteType(type: string | undefined): NoteType { // BC for ZIPs created in Trilium 0.57 and older - if (type === "relation-map") { - return "relationMap"; - } else if (type === "note-map") { - return "noteMap"; - } else if (type === "web-view") { - return "webView"; + switch (type) { + case "relation-map": + return "relationMap"; + case "note-map": + return "noteMap"; + case "web-view": + return "webView"; } if (type && (ALLOWED_NOTE_TYPES as readonly string[]).includes(type)) { From 68e258f23b8d15b9089be4c44e8db1614c5233c0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 22:32:24 +0300 Subject: [PATCH 24/38] fix(views/geomap): unable to change note type to geomap --- apps/client/src/widgets/ribbon_widgets/book_properties.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/widgets/ribbon_widgets/book_properties.ts b/apps/client/src/widgets/ribbon_widgets/book_properties.ts index f552bc280..655512f9e 100644 --- a/apps/client/src/widgets/ribbon_widgets/book_properties.ts +++ b/apps/client/src/widgets/ribbon_widgets/book_properties.ts @@ -127,7 +127,7 @@ export default class BookPropertiesWidget extends NoteContextAwareWidget { return; } - if (!["list", "grid", "calendar", "table"].includes(type)) { + if (!["list", "grid", "calendar", "table", "geoMap"].includes(type)) { throw new Error(t("book_properties.invalid_view_type", { type })); } From a58e5789bc034c6d1414096db812efb9e5240184 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 22:33:19 +0300 Subject: [PATCH 25/38] feat(import/zip): backward compatibility --- apps/server/src/services/import/zip.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/server/src/services/import/zip.ts b/apps/server/src/services/import/zip.ts index 4a7303915..67deb1056 100644 --- a/apps/server/src/services/import/zip.ts +++ b/apps/server/src/services/import/zip.ts @@ -663,6 +663,8 @@ function resolveNoteType(type: string | undefined): NoteType { return "noteMap"; case "web-view": return "webView"; + case "geoMap": + return "book"; } if (type && (ALLOWED_NOTE_TYPES as readonly string[]).includes(type)) { From a563330136e4623ffd91d4a6aeca803d7be88f8b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 23:05:15 +0300 Subject: [PATCH 26/38] feat(import/zip): improve geomap compatibility --- .../src/services/import/samples/geomap.zip | Bin 0 -> 5413 bytes apps/server/src/services/import/zip.spec.ts | 13 +++++++++++ apps/server/src/services/import/zip.ts | 22 ++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 apps/server/src/services/import/samples/geomap.zip diff --git a/apps/server/src/services/import/samples/geomap.zip b/apps/server/src/services/import/samples/geomap.zip new file mode 100644 index 0000000000000000000000000000000000000000..6443c19971d292478defb975aefe4de8d42ea1b2 GIT binary patch literal 5413 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 literal 0 HcmV?d00001 diff --git a/apps/server/src/services/import/zip.spec.ts b/apps/server/src/services/import/zip.spec.ts index 4860f7b94..db2c7ba76 100644 --- a/apps/server/src/services/import/zip.spec.ts +++ b/apps/server/src/services/import/zip.spec.ts @@ -70,6 +70,19 @@ describe("processNoteContent", () => { expect(content).toContain(` { + const { importedNote } = await testImport("geomap.zip"); + expect(importedNote.type).toBe("book"); + expect(importedNote.mime).toBe(""); + expect(importedNote.getRelationValue("template")).toBe("_template_geo_map"); + + const attachment = importedNote.getAttachmentsByRole("viewConfig")[0]; + expect(attachment.title).toBe("geoMap.json"); + expect(attachment.mime).toBe("application/json"); + const content = attachment.getContent(); + expect(content).toStrictEqual(`{"view":{"center":{"lat":49.19598332223546,"lng":-2.1414576506668808},"zoom":12}}`); + }); }); function getNoteByTitlePath(parentNote: BNote, ...titlePath: string[]) { diff --git a/apps/server/src/services/import/zip.ts b/apps/server/src/services/import/zip.ts index 67deb1056..b2d83bdc6 100644 --- a/apps/server/src/services/import/zip.ts +++ b/apps/server/src/services/import/zip.ts @@ -502,6 +502,28 @@ async function importZip(taskContext: TaskContext, fileBuffer: Buffer, importRoo firstNote = firstNote || note; } } else { + if (detectedType as string === "geoMap") { + attributes.push({ + noteId, + type: "relation", + name: "template", + value: "_template_geo_map" + }); + + const attachment = new BAttachment({ + attachmentId: getNewAttachmentId(newEntityId()), + ownerId: noteId, + title: "geoMap.json", + role: "viewConfig", + mime: "application/json", + position: 0 + }); + + attachment.setContent(content, { forceSave: true }); + content = ""; + mime = ""; + } + ({ note } = noteService.createNewNote({ parentNoteId: parentNoteId, title: noteTitle || "", From d31af2ddc2ccfa8fe55d13a0dde982812169cadf Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 23:34:07 +0300 Subject: [PATCH 27/38] feat(views/geomap): add a context menu for empty area --- .../view_widgets/geo_view/context_menu.ts | 21 +++++++++++++ .../widgets/view_widgets/geo_view/editing.ts | 28 ++++++++++++++++- .../widgets/view_widgets/geo_view/index.ts | 30 ++++--------------- 3 files changed, 53 insertions(+), 26 deletions(-) diff --git a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts index 1e1a4b3d7..410064f0f 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts @@ -1,8 +1,10 @@ +import { LeafletMouseEvent } from "leaflet"; import appContext from "../../../components/app_context.js"; import type { ContextMenuEvent } from "../../../menus/context_menu.js"; import contextMenu from "../../../menus/context_menu.js"; import linkContextMenu from "../../../menus/link_context_menu.js"; import { t } from "../../../services/i18n.js"; +import { createNewNote } from "./editing.js"; export default function openContextMenu(noteId: string, e: ContextMenuEvent) { contextMenu.show({ @@ -30,3 +32,22 @@ export default function openContextMenu(noteId: string, e: ContextMenuEvent) { } }); } + +export function openMapContextMenu(noteId: string, e: LeafletMouseEvent) { + contextMenu.show({ + x: e.originalEvent.pageX, + y: e.originalEvent.pageY, + items: [ + { title: t("geo-map-context.add-note"), command: "addNoteToMap", uiIcon: "bx bx-plus" } + ], + selectMenuItemHandler: ({ command }) => { + switch (command) { + case "addNoteToMap": + createNewNote(noteId, e); + break; + default: + appContext.triggerCommand(command); + } + } + }); +} diff --git a/apps/client/src/widgets/view_widgets/geo_view/editing.ts b/apps/client/src/widgets/view_widgets/geo_view/editing.ts index 863305ebc..7d70ba370 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/editing.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/editing.ts @@ -1,8 +1,34 @@ -import { LatLng } from "leaflet"; +import { LatLng, LeafletMouseEvent } from "leaflet"; import attributes from "../../../services/attributes"; import { LOCATION_ATTRIBUTE } from "./index.js"; +import dialog from "../../../services/dialog"; +import server from "../../../services/server"; +import { t } from "../../../services/i18n"; + +const CHILD_NOTE_ICON = "bx bx-pin"; + +// TODO: Deduplicate +interface CreateChildResponse { + note: { + noteId: string; + }; +} export async function moveMarker(noteId: string, latLng: LatLng | null) { const value = latLng ? [latLng.lat, latLng.lng].join(",") : ""; await attributes.setLabel(noteId, LOCATION_ATTRIBUTE, value); } + +export async function createNewNote(noteId: string, e: LeafletMouseEvent) { + const title = await dialog.prompt({ message: t("relation_map.enter_title_of_new_note"), defaultValue: t("relation_map.default_new_note_title") }); + + if (title?.trim()) { + const { note } = await server.post(`notes/${noteId}/children?target=into`, { + title, + content: "", + type: "text" + }); + attributes.setLabel(note.noteId, "iconClass", CHILD_NOTE_ICON); + moveMarker(note.noteId, e.latlng); + } +} diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 5791ecf38..e67768fce 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -7,18 +7,9 @@ import processNoteWithMarker, { processNoteWithGpxTrack } from "./markers.js"; import { hasTouchBar } from "../../../services/utils.js"; import toast from "../../../services/toast.js"; import { CommandListenerData, EventData } from "../../../components/app_context.js"; -import dialog from "../../../services/dialog.js"; -import server from "../../../services/server.js"; -import attributes from "../../../services/attributes.js"; -import { moveMarker } from "./editing.js"; +import { createNewNote, moveMarker } from "./editing.js"; import link from "../../../services/link.js"; - -// TODO: Deduplicate -interface CreateChildResponse { - note: { - noteId: string; - }; -} +import { openMapContextMenu } from "./context_menu.js"; const TPL = /*html*/`
@@ -102,7 +93,6 @@ interface MapData { const DEFAULT_COORDINATES: [number, number] = [3.878638227135724, 446.6630455551659]; const DEFAULT_ZOOM = 2; export const LOCATION_ATTRIBUTE = "geolocation"; -const CHILD_NOTE_ICON = "bx bx-pin"; enum State { Normal, @@ -166,7 +156,8 @@ export default class GeoView extends ViewMode { const updateFn = () => this.spacedUpdate.scheduleUpdate(); map.on("moveend", updateFn); map.on("zoomend", updateFn); - map.on("click", (e) => this.#onMapClicked(e)); + map.on("click", (e) => this.#onMapClicked(e)) + map.on("contextmenu", (e) => openMapContextMenu(this.parentNote.noteId, e)); this.#reloadMarkers(); @@ -299,18 +290,7 @@ export default class GeoView extends ViewMode { } toast.closePersistent("geo-new-note"); - const title = await dialog.prompt({ message: t("relation_map.enter_title_of_new_note"), defaultValue: t("relation_map.default_new_note_title") }); - - if (title?.trim()) { - const { note } = await server.post(`notes/${this.parentNote.noteId}/children?target=into`, { - title, - content: "", - type: "text" - }); - attributes.setLabel(note.noteId, "iconClass", CHILD_NOTE_ICON); - moveMarker(note.noteId, e.latlng); - } - + await createNewNote(this.parentNote.noteId, e); this.#changeState(State.Normal); } From a1341e6036f1b68a57c0b6e66b204b3b43e4ebac Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 23:41:55 +0300 Subject: [PATCH 28/38] feat(views/geomap): display geolocation in empty menu --- apps/client/src/translations/en/translation.json | 3 ++- .../src/widgets/view_widgets/geo_view/context_menu.ts | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 4470852a9..00cb9f227 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -1860,7 +1860,8 @@ }, "geo-map-context": { "open-location": "Open location", - "remove-from-map": "Remove from map" + "remove-from-map": "Remove from map", + "add-note": "Add a marker at this location" }, "help-button": { "title": "Open the relevant help page" diff --git a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts index 410064f0f..331beac05 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts @@ -1,10 +1,11 @@ -import { LeafletMouseEvent } from "leaflet"; +import type { LatLng, LeafletMouseEvent } from "leaflet"; import appContext from "../../../components/app_context.js"; import type { ContextMenuEvent } from "../../../menus/context_menu.js"; import contextMenu from "../../../menus/context_menu.js"; import linkContextMenu from "../../../menus/link_context_menu.js"; import { t } from "../../../services/i18n.js"; import { createNewNote } from "./editing.js"; +import { copyTextWithToast } from "../../../services/clipboard_ext.js"; export default function openContextMenu(noteId: string, e: ContextMenuEvent) { contextMenu.show({ @@ -38,6 +39,10 @@ export function openMapContextMenu(noteId: string, e: LeafletMouseEvent) { x: e.originalEvent.pageX, y: e.originalEvent.pageY, items: [ + { + title: formatGeoLocation(e.latlng), + handler: () => copyTextWithToast(formatGeoLocation(e.latlng, 15)) + }, { title: t("geo-map-context.add-note"), command: "addNoteToMap", uiIcon: "bx bx-plus" } ], selectMenuItemHandler: ({ command }) => { @@ -51,3 +56,7 @@ export function openMapContextMenu(noteId: string, e: LeafletMouseEvent) { } }); } + +function formatGeoLocation(latlng: LatLng, precision: number = 6) { + return `${latlng.lat.toFixed(precision)}, ${latlng.lng.toFixed(precision)}`; +} From 810217255794a09d0e75dbaf7b8cba0bf8064e9e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 6 Jul 2025 23:48:51 +0300 Subject: [PATCH 29/38] feat(views/geomap): display geolocation in both context menus --- .../view_widgets/geo_view/context_menu.ts | 29 ++++++++++++------- .../widgets/view_widgets/geo_view/markers.ts | 2 +- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts index 331beac05..4eec35887 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts @@ -1,17 +1,17 @@ import type { LatLng, LeafletMouseEvent } from "leaflet"; import appContext from "../../../components/app_context.js"; -import type { ContextMenuEvent } from "../../../menus/context_menu.js"; import contextMenu from "../../../menus/context_menu.js"; import linkContextMenu from "../../../menus/link_context_menu.js"; import { t } from "../../../services/i18n.js"; import { createNewNote } from "./editing.js"; import { copyTextWithToast } from "../../../services/clipboard_ext.js"; -export default function openContextMenu(noteId: string, e: ContextMenuEvent) { +export default function openContextMenu(noteId: string, e: LeafletMouseEvent) { contextMenu.show({ - x: e.pageX, - y: e.pageY, + x: e.originalEvent.pageX, + y: e.originalEvent.pageY, items: [ + ...buildGeoLocationItem(e), ...linkContextMenu.getItems(), { title: t("geo-map-context.open-location"), command: "openGeoLocation", uiIcon: "bx bx-map-alt" }, { title: "----" }, @@ -39,10 +39,7 @@ export function openMapContextMenu(noteId: string, e: LeafletMouseEvent) { x: e.originalEvent.pageX, y: e.originalEvent.pageY, items: [ - { - title: formatGeoLocation(e.latlng), - handler: () => copyTextWithToast(formatGeoLocation(e.latlng, 15)) - }, + ...buildGeoLocationItem(e), { title: t("geo-map-context.add-note"), command: "addNoteToMap", uiIcon: "bx bx-plus" } ], selectMenuItemHandler: ({ command }) => { @@ -57,6 +54,18 @@ export function openMapContextMenu(noteId: string, e: LeafletMouseEvent) { }); } -function formatGeoLocation(latlng: LatLng, precision: number = 6) { - return `${latlng.lat.toFixed(precision)}, ${latlng.lng.toFixed(precision)}`; +function buildGeoLocationItem(e: LeafletMouseEvent) { + function formatGeoLocation(latlng: LatLng, precision: number = 6) { + return `${latlng.lat.toFixed(precision)}, ${latlng.lng.toFixed(precision)}`; + } + + return [ + { + title: formatGeoLocation(e.latlng), + handler: () => copyTextWithToast(formatGeoLocation(e.latlng, 15)) + }, + { + title: "----" + } + ]; } diff --git a/apps/client/src/widgets/view_widgets/geo_view/markers.ts b/apps/client/src/widgets/view_widgets/geo_view/markers.ts index ca4170f6e..8853734ec 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/markers.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/markers.ts @@ -33,7 +33,7 @@ export default function processNoteWithMarker(map: Map, note: FNote, location: s } }); newMarker.on("contextmenu", (e) => { - openContextMenu(note.noteId, e.originalEvent); + openContextMenu(note.noteId, e); }); const el = newMarker.getElement(); From 6509acd6eeaffa82b427742592c57ab0b7b729e4 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 17:21:55 +0300 Subject: [PATCH 30/38] feat(views/geomap): add open location to blank item as well --- apps/client/src/components/app_context.ts | 1 - apps/client/src/services/link.ts | 18 +++++++++--------- .../view_widgets/geo_view/context_menu.ts | 15 ++++++++------- .../src/widgets/view_widgets/geo_view/index.ts | 11 ----------- 4 files changed, 17 insertions(+), 28 deletions(-) diff --git a/apps/client/src/components/app_context.ts b/apps/client/src/components/app_context.ts index 443014572..161846dde 100644 --- a/apps/client/src/components/app_context.ts +++ b/apps/client/src/components/app_context.ts @@ -261,7 +261,6 @@ export type CommandMappings = { // Geomap deleteFromMap: { noteId: string }; - openGeoLocation: { noteId: string; event: JQuery.MouseDownEvent }; toggleZenMode: CommandData; diff --git a/apps/client/src/services/link.ts b/apps/client/src/services/link.ts index 41533647c..107a9c9e3 100644 --- a/apps/client/src/services/link.ts +++ b/apps/client/src/services/link.ts @@ -277,13 +277,13 @@ function goToLink(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent) { return goToLinkExt(evt, hrefLink, $link); } -function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent | React.PointerEvent, hrefLink: string | undefined, $link?: JQuery | null) { +function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent | React.PointerEvent | null, hrefLink: string | undefined, $link?: JQuery | null) { if (hrefLink?.startsWith("data:")) { return true; } - evt.preventDefault(); - evt.stopPropagation(); + evt?.preventDefault(); + evt?.stopPropagation(); if (hrefLink && hrefLink.startsWith("#") && !hrefLink.startsWith("#root/") && $link) { if (handleAnchor(hrefLink, $link)) { @@ -293,14 +293,14 @@ function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent const { notePath, viewScope } = parseNavigationStateFromUrl(hrefLink); - const ctrlKey = utils.isCtrlKey(evt); - const shiftKey = evt.shiftKey; - const isLeftClick = "which" in evt && evt.which === 1; - const isMiddleClick = "which" in evt && evt.which === 2; + const ctrlKey = evt && utils.isCtrlKey(evt); + const shiftKey = evt?.shiftKey; + const isLeftClick = !evt || ("which" in evt && evt.which === 1); + const isMiddleClick = evt && "which" in evt && evt.which === 2; const targetIsBlank = ($link?.attr("target") === "_blank"); const openInNewTab = (isLeftClick && ctrlKey) || isMiddleClick || targetIsBlank; const activate = (isLeftClick && ctrlKey && shiftKey) || (isMiddleClick && shiftKey); - const openInNewWindow = isLeftClick && evt.shiftKey && !ctrlKey; + const openInNewWindow = isLeftClick && evt?.shiftKey && !ctrlKey; if (notePath) { if (openInNewWindow) { @@ -311,7 +311,7 @@ function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent viewScope }); } else if (isLeftClick) { - const ntxId = $(evt.target as any) + const ntxId = $(evt?.target as any) .closest("[data-ntx-id]") .attr("data-ntx-id"); diff --git a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts index 4eec35887..768a17d10 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts @@ -5,6 +5,7 @@ import linkContextMenu from "../../../menus/link_context_menu.js"; import { t } from "../../../services/i18n.js"; import { createNewNote } from "./editing.js"; import { copyTextWithToast } from "../../../services/clipboard_ext.js"; +import link from "../../../services/link.js"; export default function openContextMenu(noteId: string, e: LeafletMouseEvent) { contextMenu.show({ @@ -13,7 +14,6 @@ export default function openContextMenu(noteId: string, e: LeafletMouseEvent) { items: [ ...buildGeoLocationItem(e), ...linkContextMenu.getItems(), - { title: t("geo-map-context.open-location"), command: "openGeoLocation", uiIcon: "bx bx-map-alt" }, { title: "----" }, { title: t("geo-map-context.remove-from-map"), command: "deleteFromMap", uiIcon: "bx bx-trash" } ], @@ -23,11 +23,6 @@ export default function openContextMenu(noteId: string, e: LeafletMouseEvent) { return; } - if (command === "openGeoLocation") { - appContext.triggerCommand(command, { noteId, event: e }); - return; - } - // Pass the events to the link context menu linkContextMenu.handleLinkContextMenuItem(command, noteId); } @@ -48,7 +43,7 @@ export function openMapContextMenu(noteId: string, e: LeafletMouseEvent) { createNewNote(noteId, e); break; default: - appContext.triggerCommand(command); + return; } } }); @@ -62,8 +57,14 @@ function buildGeoLocationItem(e: LeafletMouseEvent) { return [ { title: formatGeoLocation(e.latlng), + uiIcon: "bx bx-current-location", handler: () => copyTextWithToast(formatGeoLocation(e.latlng, 15)) }, + { + title: t("geo-map-context.open-location"), + uiIcon: "bx bx-map-alt", + handler: () => link.goToLinkExt(null, `geo:${e.latlng.lat},${e.latlng.lng}`) + }, { title: "----" } diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index e67768fce..d68eb489a 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -294,17 +294,6 @@ export default class GeoView extends ViewMode { this.#changeState(State.Normal); } - openGeoLocationEvent({ noteId, event }: EventData<"openGeoLocation">) { - const marker = this.currentMarkerData[noteId]; - if (!marker) { - return; - } - - const latLng = this.currentMarkerData[noteId].getLatLng(); - const url = `geo:${latLng.lat},${latLng.lng}`; - link.goToLinkExt(event, url); - } - deleteFromMapEvent({ noteId }: EventData<"deleteFromMap">) { moveMarker(noteId, null); } From 2a665dffbc64437f057146c408cd7ea09d9f4a43 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 17:55:16 +0300 Subject: [PATCH 31/38] feat(views/geomap): dragging notes that are children --- apps/client/src/widgets/note_tree.ts | 6 +++ .../widgets/view_widgets/geo_view/dragging.ts | 38 +++++++++++++++++++ .../widgets/view_widgets/geo_view/index.ts | 2 + 3 files changed, 46 insertions(+) create mode 100644 apps/client/src/widgets/view_widgets/geo_view/dragging.ts diff --git a/apps/client/src/widgets/note_tree.ts b/apps/client/src/widgets/note_tree.ts index 46abe10a0..ea6e50325 100644 --- a/apps/client/src/widgets/note_tree.ts +++ b/apps/client/src/widgets/note_tree.ts @@ -186,6 +186,12 @@ interface RefreshContext { noteIdsToReload: Set; } +export interface DragData { + noteId: string; + branchId: string; + title: string; +} + export default class NoteTreeWidget extends NoteContextAwareWidget { private $tree!: JQuery; private $treeActions!: JQuery; diff --git a/apps/client/src/widgets/view_widgets/geo_view/dragging.ts b/apps/client/src/widgets/view_widgets/geo_view/dragging.ts new file mode 100644 index 000000000..df056aad5 --- /dev/null +++ b/apps/client/src/widgets/view_widgets/geo_view/dragging.ts @@ -0,0 +1,38 @@ +import type { Map } from "leaflet"; +import type { DragData } from "../../note_tree.js"; +import { moveMarker } from "./editing"; + +export default function setupDragging($container: JQuery, map: Map) { + $container.on("dragover", (e) => { + // Allow drag. + e.preventDefault(); + }); + $container.on("drop", (e) => { + if (!e.originalEvent) { + return; + } + + const data = e.originalEvent.dataTransfer?.getData('text'); + if (!data) { + return; + } + + try { + const parsedData = JSON.parse(data) as DragData[]; + if (!parsedData.length) { + return; + } + + const { noteId } = parsedData[0]; + + var offset = $container.offset(); + var x = e.originalEvent.clientX - (offset?.left ?? 0); + var y = e.originalEvent.clientY - (offset?.top ?? 0); + + const latlng = map.containerPointToLatLng([ x, y ]); + moveMarker(noteId, latlng); + } catch (e) { + console.warn(e); + } + }); +} diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index d68eb489a..ebb060693 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -10,6 +10,7 @@ import { CommandListenerData, EventData } from "../../../components/app_context. import { createNewNote, moveMarker } from "./editing.js"; import link from "../../../services/link.js"; import { openMapContextMenu } from "./context_menu.js"; +import setupDragging from "./dragging.js"; const TPL = /*html*/`
@@ -158,6 +159,7 @@ export default class GeoView extends ViewMode { map.on("zoomend", updateFn); map.on("click", (e) => this.#onMapClicked(e)) map.on("contextmenu", (e) => openMapContextMenu(this.parentNote.noteId, e)); + setupDragging(this.$container, map); this.#reloadMarkers(); From 63c408c45b6d348498532b944a3c7df6ecf6b07c Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 18:02:32 +0300 Subject: [PATCH 32/38] feat(views/geomap): dragging notes that are not children --- .../widgets/view_widgets/geo_view/dragging.ts | 16 +++++++++++++--- .../src/widgets/view_widgets/geo_view/index.ts | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/apps/client/src/widgets/view_widgets/geo_view/dragging.ts b/apps/client/src/widgets/view_widgets/geo_view/dragging.ts index df056aad5..bc1b0aa97 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/dragging.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/dragging.ts @@ -1,13 +1,15 @@ import type { Map } from "leaflet"; import type { DragData } from "../../note_tree.js"; import { moveMarker } from "./editing"; +import froca from "../../../services/froca.js"; +import branches from "../../../services/branches.js"; -export default function setupDragging($container: JQuery, map: Map) { +export default function setupDragging($container: JQuery, map: Map, mapNoteId: string) { $container.on("dragover", (e) => { // Allow drag. e.preventDefault(); }); - $container.on("drop", (e) => { + $container.on("drop", async (e) => { if (!e.originalEvent) { return; } @@ -30,7 +32,15 @@ export default function setupDragging($container: JQuery, map: Map) var y = e.originalEvent.clientY - (offset?.top ?? 0); const latlng = map.containerPointToLatLng([ x, y ]); - moveMarker(noteId, latlng); + + const note = await froca.getNote(noteId, true); + const parents = note?.getParentNoteIds(); + if (parents?.includes(mapNoteId)) { + await moveMarker(noteId, latlng); + } else { + await branches.cloneNoteToParentNote(noteId, mapNoteId); + await moveMarker(noteId, latlng); + } } catch (e) { console.warn(e); } diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index ebb060693..3181773d8 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -159,7 +159,7 @@ export default class GeoView extends ViewMode { map.on("zoomend", updateFn); map.on("click", (e) => this.#onMapClicked(e)) map.on("contextmenu", (e) => openMapContextMenu(this.parentNote.noteId, e)); - setupDragging(this.$container, map); + setupDragging(this.$container, map, this.parentNote.noteId); this.#reloadMarkers(); From 5c6bb99d78ed7864aab790072cf683a5b1b890aa Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 18:04:00 +0300 Subject: [PATCH 33/38] refactor(views/geomap): integrate drag into editing --- .../widgets/view_widgets/geo_view/dragging.ts | 48 ------------------- .../widgets/view_widgets/geo_view/editing.ts | 46 ++++++++++++++++++ .../widgets/view_widgets/geo_view/index.ts | 4 +- 3 files changed, 47 insertions(+), 51 deletions(-) delete mode 100644 apps/client/src/widgets/view_widgets/geo_view/dragging.ts diff --git a/apps/client/src/widgets/view_widgets/geo_view/dragging.ts b/apps/client/src/widgets/view_widgets/geo_view/dragging.ts deleted file mode 100644 index bc1b0aa97..000000000 --- a/apps/client/src/widgets/view_widgets/geo_view/dragging.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { Map } from "leaflet"; -import type { DragData } from "../../note_tree.js"; -import { moveMarker } from "./editing"; -import froca from "../../../services/froca.js"; -import branches from "../../../services/branches.js"; - -export default function setupDragging($container: JQuery, map: Map, mapNoteId: string) { - $container.on("dragover", (e) => { - // Allow drag. - e.preventDefault(); - }); - $container.on("drop", async (e) => { - if (!e.originalEvent) { - return; - } - - const data = e.originalEvent.dataTransfer?.getData('text'); - if (!data) { - return; - } - - try { - const parsedData = JSON.parse(data) as DragData[]; - if (!parsedData.length) { - return; - } - - const { noteId } = parsedData[0]; - - var offset = $container.offset(); - var x = e.originalEvent.clientX - (offset?.left ?? 0); - var y = e.originalEvent.clientY - (offset?.top ?? 0); - - const latlng = map.containerPointToLatLng([ x, y ]); - - const note = await froca.getNote(noteId, true); - const parents = note?.getParentNoteIds(); - if (parents?.includes(mapNoteId)) { - await moveMarker(noteId, latlng); - } else { - await branches.cloneNoteToParentNote(noteId, mapNoteId); - await moveMarker(noteId, latlng); - } - } catch (e) { - console.warn(e); - } - }); -} diff --git a/apps/client/src/widgets/view_widgets/geo_view/editing.ts b/apps/client/src/widgets/view_widgets/geo_view/editing.ts index 7d70ba370..c9dd7368c 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/editing.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/editing.ts @@ -4,6 +4,10 @@ import { LOCATION_ATTRIBUTE } from "./index.js"; import dialog from "../../../services/dialog"; import server from "../../../services/server"; import { t } from "../../../services/i18n"; +import type { Map } from "leaflet"; +import type { DragData } from "../../note_tree.js"; +import froca from "../../../services/froca.js"; +import branches from "../../../services/branches.js"; const CHILD_NOTE_ICON = "bx bx-pin"; @@ -32,3 +36,45 @@ export async function createNewNote(noteId: string, e: LeafletMouseEvent) { moveMarker(note.noteId, e.latlng); } } + +export function setupDragging($container: JQuery, map: Map, mapNoteId: string) { + $container.on("dragover", (e) => { + // Allow drag. + e.preventDefault(); + }); + $container.on("drop", async (e) => { + if (!e.originalEvent) { + return; + } + + const data = e.originalEvent.dataTransfer?.getData('text'); + if (!data) { + return; + } + + try { + const parsedData = JSON.parse(data) as DragData[]; + if (!parsedData.length) { + return; + } + + const { noteId } = parsedData[0]; + + const offset = $container.offset(); + const x = e.originalEvent.clientX - (offset?.left ?? 0); + const y = e.originalEvent.clientY - (offset?.top ?? 0); + const latlng = map.containerPointToLatLng([ x, y ]); + + const note = await froca.getNote(noteId, true); + const parents = note?.getParentNoteIds(); + if (parents?.includes(mapNoteId)) { + await moveMarker(noteId, latlng); + } else { + await branches.cloneNoteToParentNote(noteId, mapNoteId); + await moveMarker(noteId, latlng); + } + } catch (e) { + console.warn(e); + } + }); +} diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 3181773d8..4af9b47cb 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -7,10 +7,8 @@ import processNoteWithMarker, { processNoteWithGpxTrack } from "./markers.js"; import { hasTouchBar } from "../../../services/utils.js"; import toast from "../../../services/toast.js"; import { CommandListenerData, EventData } from "../../../components/app_context.js"; -import { createNewNote, moveMarker } from "./editing.js"; -import link from "../../../services/link.js"; +import { createNewNote, moveMarker, setupDragging } from "./editing.js"; import { openMapContextMenu } from "./context_menu.js"; -import setupDragging from "./dragging.js"; const TPL = /*html*/`
From c1a5808f37d10988b11e27d375916de412bb6762 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 19:04:47 +0300 Subject: [PATCH 34/38] feat(views/geomap): allow disabling editing --- .../floating_buttons/geo_map_button.ts | 4 +- .../toggle_read_only_button.ts | 18 +++++-- .../view_widgets/geo_view/context_menu.ts | 49 ++++++++++++------- .../widgets/view_widgets/geo_view/index.ts | 11 +++-- .../widgets/view_widgets/geo_view/markers.ts | 15 +++--- .../src/widgets/view_widgets/view_mode.ts | 4 ++ 6 files changed, 70 insertions(+), 31 deletions(-) diff --git a/apps/client/src/widgets/floating_buttons/geo_map_button.ts b/apps/client/src/widgets/floating_buttons/geo_map_button.ts index 945be41d1..7e59eeaf2 100644 --- a/apps/client/src/widgets/floating_buttons/geo_map_button.ts +++ b/apps/client/src/widgets/floating_buttons/geo_map_button.ts @@ -23,7 +23,9 @@ const TPL = /*html*/`\ export default class GeoMapButtons extends NoteContextAwareWidget { isEnabled() { - return super.isEnabled() && this.note?.getLabelValue("viewType") === "geoMap"; + return super.isEnabled() + && this.note?.getLabelValue("viewType") === "geoMap" + && !this.note.hasLabel("readOnly"); } doRender() { diff --git a/apps/client/src/widgets/floating_buttons/toggle_read_only_button.ts b/apps/client/src/widgets/floating_buttons/toggle_read_only_button.ts index f436c820c..571e99017 100644 --- a/apps/client/src/widgets/floating_buttons/toggle_read_only_button.ts +++ b/apps/client/src/widgets/floating_buttons/toggle_read_only_button.ts @@ -39,10 +39,20 @@ export default class ToggleReadOnlyButton extends OnClickButtonWidget { } isEnabled() { - return super.isEnabled() - && this.note?.type === "mermaid" - && this.note?.isContentAvailable() - && this.noteContext?.viewScope?.viewMode === "default"; + if (!super.isEnabled()) { + return false; + } + + if (!this?.note?.isContentAvailable()) { + return false; + } + + if (this.noteContext?.viewScope?.viewMode !== "default") { + return false; + } + + return this.note.type === "mermaid" || + (this.note.getLabelValue("viewType") === "geoMap"); } } diff --git a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts index 768a17d10..c2b405ecf 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts @@ -1,22 +1,31 @@ import type { LatLng, LeafletMouseEvent } from "leaflet"; -import appContext from "../../../components/app_context.js"; -import contextMenu from "../../../menus/context_menu.js"; +import appContext, { type CommandMappings } from "../../../components/app_context.js"; +import contextMenu, { type MenuItem } from "../../../menus/context_menu.js"; import linkContextMenu from "../../../menus/link_context_menu.js"; import { t } from "../../../services/i18n.js"; import { createNewNote } from "./editing.js"; import { copyTextWithToast } from "../../../services/clipboard_ext.js"; import link from "../../../services/link.js"; -export default function openContextMenu(noteId: string, e: LeafletMouseEvent) { +export default function openContextMenu(noteId: string, e: LeafletMouseEvent, isEditable: boolean) { + let items: MenuItem[] = [ + ...buildGeoLocationItem(e), + { title: "----" }, + ...linkContextMenu.getItems(), + ]; + + if (isEditable) { + items = [ + ...items, + { title: "----" }, + { title: t("geo-map-context.remove-from-map"), command: "deleteFromMap", uiIcon: "bx bx-trash" } + ]; + } + contextMenu.show({ x: e.originalEvent.pageX, y: e.originalEvent.pageY, - items: [ - ...buildGeoLocationItem(e), - ...linkContextMenu.getItems(), - { title: "----" }, - { title: t("geo-map-context.remove-from-map"), command: "deleteFromMap", uiIcon: "bx bx-trash" } - ], + items, selectMenuItemHandler: ({ command }, e) => { if (command === "deleteFromMap") { appContext.triggerCommand(command, { noteId }); @@ -29,14 +38,23 @@ export default function openContextMenu(noteId: string, e: LeafletMouseEvent) { }); } -export function openMapContextMenu(noteId: string, e: LeafletMouseEvent) { +export function openMapContextMenu(noteId: string, e: LeafletMouseEvent, isEditable: boolean) { + let items: MenuItem[] = [ + ...buildGeoLocationItem(e) + ]; + + if (isEditable) { + items = [ + ...items, + { title: "----" }, + { title: t("geo-map-context.add-note"), command: "addNoteToMap", uiIcon: "bx bx-plus" } + ] + } + contextMenu.show({ x: e.originalEvent.pageX, y: e.originalEvent.pageY, - items: [ - ...buildGeoLocationItem(e), - { title: t("geo-map-context.add-note"), command: "addNoteToMap", uiIcon: "bx bx-plus" } - ], + items, selectMenuItemHandler: ({ command }) => { switch (command) { case "addNoteToMap": @@ -64,9 +82,6 @@ function buildGeoLocationItem(e: LeafletMouseEvent) { title: t("geo-map-context.open-location"), uiIcon: "bx bx-map-alt", handler: () => link.goToLinkExt(null, `geo:${e.latlng.lat},${e.latlng.lng}`) - }, - { - title: "----" } ]; } diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 4af9b47cb..00db8be25 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -152,12 +152,16 @@ export default class GeoView extends ViewMode { this.#restoreViewportAndZoom(); + const isEditable = !this.isReadOnly; const updateFn = () => this.spacedUpdate.scheduleUpdate(); map.on("moveend", updateFn); map.on("zoomend", updateFn); map.on("click", (e) => this.#onMapClicked(e)) - map.on("contextmenu", (e) => openMapContextMenu(this.parentNote.noteId, e)); - setupDragging(this.$container, map, this.parentNote.noteId); + map.on("contextmenu", (e) => openMapContextMenu(this.parentNote.noteId, e, isEditable)); + + if (isEditable) { + setupDragging(this.$container, map, this.parentNote.noteId); + } this.#reloadMarkers(); @@ -219,6 +223,7 @@ export default class GeoView extends ViewMode { // Add the new markers. this.currentMarkerData = {}; const notes = await this.parentNote.getChildNotes(); + const draggable = !this.isReadOnly; for (const childNote of notes) { if (childNote.mime === "application/gpx+xml") { const track = await processNoteWithGpxTrack(this.map, childNote); @@ -228,7 +233,7 @@ export default class GeoView extends ViewMode { const latLng = childNote.getAttributeValue("label", LOCATION_ATTRIBUTE); if (latLng) { - const marker = processNoteWithMarker(this.map, childNote, latLng); + const marker = processNoteWithMarker(this.map, childNote, latLng, draggable); this.currentMarkerData[childNote.noteId] = marker; } } diff --git a/apps/client/src/widgets/view_widgets/geo_view/markers.ts b/apps/client/src/widgets/view_widgets/geo_view/markers.ts index 8853734ec..10a7fae65 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/markers.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/markers.ts @@ -9,20 +9,23 @@ import { moveMarker } from "./editing.js"; let gpxLoaded = false; -export default function processNoteWithMarker(map: Map, note: FNote, location: string) { +export default function processNoteWithMarker(map: Map, note: FNote, location: string, isEditable: boolean) { const [lat, lng] = location.split(",", 2).map((el) => parseFloat(el)); const icon = buildIcon(note.getIcon(), note.getColorClass(), note.title); const newMarker = marker(latLng(lat, lng), { icon, - draggable: true, + draggable: isEditable, autoPan: true, autoPanSpeed: 5 - }) - .addTo(map) - .on("moveend", (e) => { + }).addTo(map); + + if (isEditable) { + newMarker.on("moveend", (e) => { moveMarker(note.noteId, (e.target as Marker).getLatLng()); }); + } + newMarker.on("mousedown", ({ originalEvent }) => { // Middle click to open in new tab if (originalEvent.button === 1) { @@ -33,7 +36,7 @@ export default function processNoteWithMarker(map: Map, note: FNote, location: s } }); newMarker.on("contextmenu", (e) => { - openContextMenu(note.noteId, e); + openContextMenu(note.noteId, e, isEditable); }); const el = newMarker.getElement(); diff --git a/apps/client/src/widgets/view_widgets/view_mode.ts b/apps/client/src/widgets/view_widgets/view_mode.ts index d8c4314eb..f3706da4a 100644 --- a/apps/client/src/widgets/view_widgets/view_mode.ts +++ b/apps/client/src/widgets/view_widgets/view_mode.ts @@ -44,6 +44,10 @@ export default abstract class ViewMode extends Component { return false; } + get isReadOnly() { + return this.parentNote.hasLabel("readOnly"); + } + get viewStorage() { if (this._viewStorage) { return this._viewStorage; From 242a5765485abb30e947c6cd1bb644cabbfb0b0f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 19:15:38 +0300 Subject: [PATCH 35/38] refactor(views/geomap): solve type errors --- .../view_widgets/geo_view/context_menu.ts | 16 +++++++--------- .../src/widgets/view_widgets/geo_view/markers.ts | 6 ++++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts index c2b405ecf..26d91df27 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/context_menu.ts @@ -47,7 +47,11 @@ export function openMapContextMenu(noteId: string, e: LeafletMouseEvent, isEdita items = [ ...items, { title: "----" }, - { title: t("geo-map-context.add-note"), command: "addNoteToMap", uiIcon: "bx bx-plus" } + { + title: t("geo-map-context.add-note"), + handler: () => createNewNote(noteId, e), + uiIcon: "bx bx-plus" + } ] } @@ -55,14 +59,8 @@ export function openMapContextMenu(noteId: string, e: LeafletMouseEvent, isEdita x: e.originalEvent.pageX, y: e.originalEvent.pageY, items, - selectMenuItemHandler: ({ command }) => { - switch (command) { - case "addNoteToMap": - createNewNote(noteId, e); - break; - default: - return; - } + selectMenuItemHandler: () => { + // Nothing to do, as the commands handle themselves. } }); } diff --git a/apps/client/src/widgets/view_widgets/geo_view/markers.ts b/apps/client/src/widgets/view_widgets/geo_view/markers.ts index 10a7fae65..71737df49 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/markers.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/markers.ts @@ -6,6 +6,8 @@ import note_tooltip from "../../../services/note_tooltip.js"; import openContextMenu from "./context_menu.js"; import server from "../../../services/server.js"; import { moveMarker } from "./editing.js"; +import appContext from "../../../components/app_context.js"; +import L from "leaflet"; let gpxLoaded = false; @@ -29,7 +31,7 @@ export default function processNoteWithMarker(map: Map, note: FNote, location: s newMarker.on("mousedown", ({ originalEvent }) => { // Middle click to open in new tab if (originalEvent.button === 1) { - const hoistedNoteId = this.hoistedNoteId; + const hoistedNoteId = appContext.tabManager.getActiveContext()?.hoistedNoteId; //@ts-ignore, fix once tab manager is ported. appContext.tabManager.openInNewTab(note.noteId, hoistedNoteId); return true; @@ -51,7 +53,7 @@ export default function processNoteWithMarker(map: Map, note: FNote, location: s export async function processNoteWithGpxTrack(map: Map, note: FNote) { if (!gpxLoaded) { - await import("leaflet-gpx"); + const GPX = await import("leaflet-gpx"); gpxLoaded = true; } From 994e9fa8522ded8f593cbcfd61f553621d22c872 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 19:54:06 +0300 Subject: [PATCH 36/38] docs(views/geomap): update user manual to reflect newly added features --- .../doc_notes/en/User Guide/!!!meta.json | 2 +- .../Note List/10_Geo Map View_image.png} | Bin .../Note List/11_Geo Map View_image.png} | Bin .../Note List/12_Geo Map View_image.png} | Bin .../Note List/13_Geo Map View_image.png} | Bin .../Note List/14_Geo Map View_image.png} | Bin .../Notes/Note List/15_Geo Map View_image.png | Bin 0 -> 44769 bytes .../Note List/16_Geo Map View_image.png} | Bin .../Note List/17_Geo Map View_image.png} | Bin .../Note List/18_Geo Map View_image.png} | Bin .../Notes/Note List/1_Geo Map View_image.png} | Bin .../Notes/Note List/2_Geo Map View_image.png} | Bin .../Notes/Note List/3_Geo Map View_image.png} | Bin .../Notes/Note List/4_Geo Map View_image.png} | Bin .../Notes/Note List/5_Geo Map View_image.png} | Bin .../Notes/Note List/6_Geo Map View_image.png} | Bin .../Notes/Note List/7_Geo Map View_image.png} | Bin .../Notes/Note List/8_Geo Map View_image.png} | Bin .../Notes/Note List/9_Geo Map View_image.png} | Bin .../Notes/Note List/Geo Map View.html} | 127 +++-- .../Notes/Note List/Geo Map View_image.jpg} | Bin .../Notes/Note List/Geo Map View_image.png} | Bin .../Note List/{Table.html => Table View.html} | 33 +- .../{Table_image.png => Table View_image.png} | Bin .../Notes/Read-Only Notes.html | 3 + .../User Guide/Note Types/7_Geo Map_image.png | Bin 124923 -> 0 bytes docs/User Guide/!!!meta.json | 467 ++++++++++-------- .../Advanced Usage/Attributes/Labels.md | 2 +- .../User Guide/Advanced Usage/Note source.md | 2 +- .../User Guide/Advanced Usage/Sharing.md | 2 +- .../Technologies used/Leaflet.md | 2 +- .../Note List/10_Geo Map View_image.png} | Bin .../Note List/11_Geo Map View_image.png} | Bin .../Note List/12_Geo Map View_image.png} | Bin .../Note List/13_Geo Map View_image.png} | Bin .../Note List/14_Geo Map View_image.png} | Bin .../Notes/Note List/15_Geo Map View_image.png | Bin 0 -> 44769 bytes .../Note List/16_Geo Map View_image.png} | Bin .../Note List/17_Geo Map View_image.png} | Bin .../Note List/18_Geo Map View_image.png} | Bin .../Notes/Note List/1_Geo Map View_image.png} | Bin .../Notes/Note List/2_Geo Map View_image.png} | Bin .../Notes/Note List/3_Geo Map View_image.png} | Bin .../Notes/Note List/4_Geo Map View_image.png} | Bin .../Notes/Note List/5_Geo Map View_image.png} | Bin .../Notes/Note List/6_Geo Map View_image.png} | Bin .../Notes/Note List/7_Geo Map View_image.png} | Bin .../Notes/Note List/8_Geo Map View_image.png} | Bin .../Notes/Note List/9_Geo Map View_image.png} | Bin .../Notes/Note List/Geo Map View.md | 133 +++++ .../Notes/Note List/Geo Map View_image.jpg} | Bin .../Notes/Note List/Geo Map View_image.png} | Bin .../Note List/{Table.md => Table View.md} | 4 +- .../{Table_image.png => Table View_image.png} | Bin .../Notes/Read-Only Notes.md | 3 +- docs/User Guide/User Guide/Note Types.md | 2 +- .../User Guide/Note Types/7_Geo Map_image.png | Bin 124923 -> 0 bytes .../User Guide/Note Types/Geo Map.md | 88 ---- 58 files changed, 514 insertions(+), 356 deletions(-) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/11_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/10_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/12_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/11_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/13_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/12_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/14_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/13_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/15_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/14_Geo Map View_image.png} (100%) create mode 100644 apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/15_Geo Map View_image.png rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/16_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/16_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/17_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/17_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/18_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/18_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/1_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/1_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/2_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/2_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/3_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/3_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/4_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/4_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/5_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/5_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/6_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/6_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/8_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/7_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/9_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/8_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/10_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/9_Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/Geo Map.html => Basic Concepts and Features/Notes/Note List/Geo Map View.html} (68%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/Geo Map_image.jpg => Basic Concepts and Features/Notes/Note List/Geo Map View_image.jpg} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/{Note Types/Geo Map_image.png => Basic Concepts and Features/Notes/Note List/Geo Map View_image.png} (100%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/{Table.html => Table View.html} (70%) rename apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/{Table_image.png => Table View_image.png} (100%) delete mode 100644 apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/7_Geo Map_image.png rename docs/User Guide/User Guide/{Note Types/11_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/10_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/12_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/11_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/13_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/12_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/14_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/13_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/15_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/14_Geo Map View_image.png} (100%) create mode 100644 docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/15_Geo Map View_image.png rename docs/User Guide/User Guide/{Note Types/16_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/16_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/17_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/17_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/18_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/18_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/1_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/1_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/2_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/2_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/3_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/3_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/4_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/4_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/5_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/5_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/6_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/6_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/8_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/7_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/9_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/8_Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/{Note Types/10_Geo Map_image.png => Basic Concepts and Features/Notes/Note List/9_Geo Map View_image.png} (100%) create mode 100644 docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View.md rename docs/User Guide/User Guide/{Note Types/Geo Map_image.jpg => Basic Concepts and Features/Notes/Note List/Geo Map View_image.jpg} (100%) rename docs/User Guide/User Guide/{Note Types/Geo Map_image.png => Basic Concepts and Features/Notes/Note List/Geo Map View_image.png} (100%) rename docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/{Table.md => Table View.md} (98%) rename docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/{Table_image.png => Table View_image.png} (100%) delete mode 100644 docs/User Guide/User Guide/Note Types/7_Geo Map_image.png delete mode 100644 docs/User Guide/User Guide/Note Types/Geo Map.md diff --git a/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json b/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json index 019816cef..404832e1d 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json +++ b/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json @@ -1 +1 @@ -[{"id":"_help_Otzi9La2YAUX","title":"Installation & Setup","type":"book","attributes":[{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_poXkQfguuA0U","title":"Desktop Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_WOcw2SLH6tbX","title":"Server Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_Dgg7bR3b6K9j","title":"1. Installing the server","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_3tW6mORuTHnB","title":"Packaged version for Linux","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_rWX5eY045zbE","title":"Using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker"},{"name":"iconClass","value":"bx bxl-docker","type":"label"}]},{"id":"_help_moVgBcoxE3EK","title":"On NixOS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/On NixOS"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_J1Bb6lVlwU5T","title":"Manually","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]},{"id":"_help_DCmT6e7clMoP","title":"Using Kubernetes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Kubernetes"},{"name":"iconClass","value":"bx bxl-kubernetes","type":"label"}]},{"id":"_help_klCWNks3ReaQ","title":"Multiple server instances","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Multiple server instances"},{"name":"iconClass","value":"bx bxs-user-account","type":"label"}]}]},{"id":"_help_vcjrb3VVYPZI","title":"2. Reverse proxy","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_ud6MShXL4WpO","title":"Nginx","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_fDLvzOx29Pfg","title":"Apache","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_l2VkvOwUNfZj","title":"TLS Configuration","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/TLS Configuration"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_0hzsNCP31IAB","title":"Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Authentication"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_7DAiwaf8Z7Rz","title":"Multi-Factor Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication"},{"name":"iconClass","value":"bx bx-stopwatch","type":"label"}]}]},{"id":"_help_cbkrhQjrkKrh","title":"Synchronization","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Synchronization"},{"name":"iconClass","value":"bx bx-sync","type":"label"}]},{"id":"_help_RDslemsQ6gCp","title":"Mobile Frontend","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Mobile Frontend"},{"name":"iconClass","value":"bx bx-mobile-alt","type":"label"}]},{"id":"_help_MtPxeAWVAzMg","title":"Web Clipper","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Web Clipper"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_n1lujUxCwipy","title":"Upgrading TriliumNext","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Upgrading TriliumNext"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_ODY7qQn5m2FT","title":"Backup","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Backup"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_tAassRL4RSQL","title":"Data directory","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Data directory"},{"name":"iconClass","value":"bx bx-folder-open","type":"label"}]}]},{"id":"_help_gh7bpGYxajRS","title":"Basic Concepts and Features","type":"book","attributes":[{"name":"iconClass","value":"bx bx-help-circle","type":"label"}],"children":[{"id":"_help_Vc8PjrjAGuOp","title":"UI Elements","type":"book","attributes":[{"name":"iconClass","value":"bx bx-window-alt","type":"label"}],"children":[{"id":"_help_x0JgW8UqGXvq","title":"Vertical and horizontal layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout"},{"name":"iconClass","value":"bx bxs-layout","type":"label"}]},{"id":"_help_x3i7MxGccDuM","title":"Global menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Global menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_oPVyFC7WL2Lp","title":"Note Tree","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree"},{"name":"iconClass","value":"bx bxs-tree-alt","type":"label"}],"children":[{"id":"_help_YtSN43OrfzaA","title":"Note tree contextual menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_yTjUdsOi4CIE","title":"Multiple selection","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]}]},{"id":"_help_BlN9DFI679QC","title":"Ribbon","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon"},{"name":"iconClass","value":"bx bx-dots-horizontal","type":"label"}]},{"id":"_help_3seOhtN8uLIY","title":"Tabs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs"},{"name":"iconClass","value":"bx bx-dock-top","type":"label"}]},{"id":"_help_xYmIYSP6wE3F","title":"Launch Bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar"},{"name":"iconClass","value":"bx bx-sidebar","type":"label"}]},{"id":"_help_8YBEPzcpUgxw","title":"Note buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note buttons"},{"name":"iconClass","value":"bx bx-dots-vertical-rounded","type":"label"}]},{"id":"_help_4TIF1oA4VQRO","title":"Options","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Options"},{"name":"iconClass","value":"bx bx-cog","type":"label"}]},{"id":"_help_luNhaphA37EO","title":"Split View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View"},{"name":"iconClass","value":"bx bx-dock-right","type":"label"}]},{"id":"_help_XpOYSgsLkTJy","title":"Floating buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons"},{"name":"iconClass","value":"bx bx-rectangle","type":"label"}]},{"id":"_help_RnaPdbciOfeq","title":"Right Sidebar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar"},{"name":"iconClass","value":"bx bxs-dock-right","type":"label"}]},{"id":"_help_r5JGHN99bVKn","title":"Recent Changes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_ny318J39E5Z0","title":"Zoom","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom"},{"name":"iconClass","value":"bx bx-zoom-in","type":"label"}]}]},{"id":"_help_BFs8mudNFgCS","title":"Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes"},{"name":"iconClass","value":"bx bx-notepad","type":"label"}],"children":[{"id":"_help_p9kXRFAkwN4o","title":"Note Icons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_0vhv7lsOLy82","title":"Attachments","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Attachments"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_IakOLONlIfGI","title":"Cloning Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes"},{"name":"iconClass","value":"bx bx-duplicate","type":"label"}],"children":[{"id":"_help_TBwsyfadTA18","title":"Branch prefix","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix"},{"name":"iconClass","value":"bx bx-rename","type":"label"}]}]},{"id":"_help_bwg0e8ewQMak","title":"Protected Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_MKmLg5x6xkor","title":"Archived Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes"},{"name":"iconClass","value":"bx bx-box","type":"label"}]},{"id":"_help_vZWERwf8U3nx","title":"Note Revisions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_aGlEvb9hyDhS","title":"Sorting Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes"},{"name":"iconClass","value":"bx bx-sort-up","type":"label"}]},{"id":"_help_NRnIZmSMc5sj","title":"Export as PDF","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Export as PDF"},{"name":"iconClass","value":"bx bxs-file-pdf","type":"label"}]},{"id":"_help_CoFPLs3dRlXc","title":"Read-Only Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_0ESUbbAxVnoK","title":"Note List","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}],"children":[{"id":"_help_xWbu3jpNWapp","title":"Calendar View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Calendar View"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_2FvYrpmOXm29","title":"Table","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]}]},{"id":"_help_wArbEsdSae6g","title":"Navigation","type":"book","attributes":[{"name":"iconClass","value":"bx bx-navigation","type":"label"}],"children":[{"id":"_help_kBrnXNG3Hplm","title":"Tree Concepts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Tree Concepts"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}]},{"id":"_help_MMiBEQljMQh2","title":"Note Navigation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation"},{"name":"iconClass","value":"bx bxs-navigation","type":"label"}]},{"id":"_help_Ms1nauBra7gq","title":"Quick search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_F1r9QtzQLZqm","title":"Jump to Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note"},{"name":"iconClass","value":"bx bx-send","type":"label"}]},{"id":"_help_eIg8jdvaoNNd","title":"Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_u3YFHC9tQlpm","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmarks","type":"label"}]},{"id":"_help_OR8WJ7Iz9K4U","title":"Note Hoisting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting"},{"name":"iconClass","value":"bx bxs-chevrons-up","type":"label"}]},{"id":"_help_9sRHySam5fXb","title":"Workspaces","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces"},{"name":"iconClass","value":"bx bx-door-open","type":"label"}]},{"id":"_help_xWtq5NUHOwql","title":"Similar Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes"},{"name":"iconClass","value":"bx bx-bar-chart","type":"label"}]},{"id":"_help_McngOG2jbUWX","title":"Search in note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]}]},{"id":"_help_A9Oc6YKKc65v","title":"Keyboard Shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_Wy267RK4M69c","title":"Themes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes"},{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_VbjZvtUek0Ln","title":"Theme Gallery","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]}]},{"id":"_help_mHbBMPDPkVV5","title":"Import & Export","type":"book","attributes":[{"name":"iconClass","value":"bx bx-import","type":"label"}],"children":[{"id":"_help_Oau6X9rCuegd","title":"Markdown","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}],"children":[{"id":"_help_rJ9grSgoExl9","title":"Supported syntax","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown/Supported syntax"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]}]},{"id":"_help_syuSEKf2rUGr","title":"Evernote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GnhlmrATVqcH","title":"OneNote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/OneNote"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_rC3pL2aptaRE","title":"Zen mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Zen mode"},{"name":"iconClass","value":"bx bxs-yin-yang","type":"label"}]}]},{"id":"_help_s3YCWHBfmYuM","title":"Quick Start","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Quick Start"},{"name":"iconClass","value":"bx bx-run","type":"label"}]},{"id":"_help_i6dbnitykE5D","title":"FAQ","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/FAQ"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_KSZ04uQ2D1St","title":"Note Types","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types"},{"name":"iconClass","value":"bx bx-edit","type":"label"}],"children":[{"id":"_help_iPIMuisry3hd","title":"Text","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text"},{"name":"iconClass","value":"bx bx-note","type":"label"}],"children":[{"id":"_help_NwBbFdNZ9h7O","title":"Block quotes & admonitions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Block quotes & admonitions"},{"name":"iconClass","value":"bx bx-info-circle","type":"label"}]},{"id":"_help_oSuaNgyyKnhu","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmark","type":"label"}]},{"id":"_help_veGu4faJErEM","title":"Content language & Right-to-left support","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Content language & Right-to-le"},{"name":"iconClass","value":"bx bx-align-right","type":"label"}]},{"id":"_help_2x0ZAX9ePtzV","title":"Cut to subnote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Cut to subnote"},{"name":"iconClass","value":"bx bx-cut","type":"label"}]},{"id":"_help_UYuUB1ZekNQU","title":"Developer-specific formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_QxEyIjRBizuC","title":"Code blocks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting/Code blocks"},{"name":"iconClass","value":"bx bx-code","type":"label"}]}]},{"id":"_help_AgjCISero73a","title":"Footnotes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Footnotes"},{"name":"iconClass","value":"bx bx-bracket","type":"label"}]},{"id":"_help_nRhnJkTT8cPs","title":"Formatting toolbar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Formatting toolbar"},{"name":"iconClass","value":"bx bx-text","type":"label"}]},{"id":"_help_Gr6xFaF6ioJ5","title":"General formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/General formatting"},{"name":"iconClass","value":"bx bx-bold","type":"label"}]},{"id":"_help_AxshuNRegLAv","title":"Highlights list","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Highlights list"},{"name":"iconClass","value":"bx bx-highlight","type":"label"}]},{"id":"_help_mT0HEkOsz6i1","title":"Images","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images"},{"name":"iconClass","value":"bx bx-image-alt","type":"label"}],"children":[{"id":"_help_0Ofbk1aSuVRu","title":"Image references","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images/Image references"},{"name":"iconClass","value":"bx bxs-file-image","type":"label"}]}]},{"id":"_help_nBAXQFj20hS1","title":"Include Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Include Note"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_CohkqWQC1iBv","title":"Insert buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Insert buttons"},{"name":"iconClass","value":"bx bx-plus","type":"label"}]},{"id":"_help_oiVPnW8QfnvS","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_QEAPj01N5f7w","title":"Links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links"},{"name":"iconClass","value":"bx bx-link-alt","type":"label"}]},{"id":"_help_S6Xx8QIWTV66","title":"Lists","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Lists"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]},{"id":"_help_QrtTYPmdd1qq","title":"Markdown-like formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Markdown-like formatting"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}]},{"id":"_help_YfYAtQBcfo5V","title":"Math Equations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Math Equations"},{"name":"iconClass","value":"bx bx-math","type":"label"}]},{"id":"_help_dEHYtoWWi8ct","title":"Other features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Other features"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_gLt3vA97tMcp","title":"Premium features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features"},{"name":"iconClass","value":"bx bx-star","type":"label"}],"children":[{"id":"_help_ZlN4nump6EbW","title":"Slash Commands","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Slash Commands"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_pwc194wlRzcH","title":"Text Snippets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Text Snippets"},{"name":"iconClass","value":"bx bx-align-left","type":"label"}]}]},{"id":"_help_BFvAtE74rbP6","title":"Table of contents","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Table of contents"},{"name":"iconClass","value":"bx bx-heading","type":"label"}]},{"id":"_help_NdowYOC1GFKS","title":"Tables","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Tables"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_6f9hih2hXXZk","title":"Code","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Code"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_m523cpzocqaD","title":"Saved Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Saved Search"},{"name":"iconClass","value":"bx bx-file-find","type":"label"}]},{"id":"_help_iRwzGnHPzonm","title":"Relation Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Relation Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_bdUJEHsAPYQR","title":"Note Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Note Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_HcABDtFCkbFN","title":"Render Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Render Note"},{"name":"iconClass","value":"bx bx-extension","type":"label"}]},{"id":"_help_GTwFsgaA0lCt","title":"Book","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Book"},{"name":"iconClass","value":"bx bx-book","type":"label"}]},{"id":"_help_s1aBHPd79XYj","title":"Mermaid Diagrams","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams"},{"name":"iconClass","value":"bx bx-selection","type":"label"}],"children":[{"id":"_help_RH6yLjjWJHof","title":"ELK layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]}]},{"id":"_help_grjYqerjn243","title":"Canvas","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Canvas"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_1vHRoWCEjj0L","title":"Web View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Web View"},{"name":"iconClass","value":"bx bx-globe-alt","type":"label"}]},{"id":"_help_gBbsAeiuUxI5","title":"Mind Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mind Map"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_81SGnPGMk7Xc","title":"Geo Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Geo Map"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]},{"id":"_help_W8vYD3Q1zjCR","title":"File","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/File"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_BgmBlOIl72jZ","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting"},{"name":"iconClass","value":"bx bx-bug","type":"label"}],"children":[{"id":"_help_wy8So3yZZlH9","title":"Reporting issues","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Reporting issues"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_x59R8J8KV5Bp","title":"Anonymized Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Anonymized Database"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_qzNzp9LYQyPT","title":"Error logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_vdlYGAcpXAgc","title":"Synchronization fails with 504 Gateway Timeout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Synchronization fails with 504"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_s8alTXmpFR61","title":"Refreshing the application","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Refreshing the application"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_pKK96zzmvBGf","title":"Theme development","type":"book","attributes":[{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_7NfNr5pZpVKV","title":"Creating a custom theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating a custom theme"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_WFGzWeUK6arS","title":"Customize the Next theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Customize the Next theme"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_WN5z4M8ASACJ","title":"Reference","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Reference"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_AlhDUqhENtH7","title":"Custom app-wide CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Custom app-wide CSS"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_tC7s2alapj8V","title":"Advanced Usage","type":"book","attributes":[{"name":"iconClass","value":"bx bx-rocket","type":"label"}],"children":[{"id":"_help_zEY4DaJG4YT5","title":"Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes"},{"name":"iconClass","value":"bx bx-list-check","type":"label"}],"children":[{"id":"_help_HI6GBBIduIgv","title":"Labels","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Labels"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_Cq5X6iKQop6R","title":"Relations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Relations"},{"name":"iconClass","value":"bx bx-transfer","type":"label"}]},{"id":"_help_bwZpz2ajCEwO","title":"Attribute Inheritance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_OFXdgB2nNk1F","title":"Promoted Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_KC1HB96bqqHX","title":"Templates","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Templates"},{"name":"iconClass","value":"bx bx-copy","type":"label"}]},{"id":"_help_BCkXAVs63Ttv","title":"Note Map (Link map, Tree map)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map)"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_R9pX4DGra2Vt","title":"Sharing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing"},{"name":"iconClass","value":"bx bx-share-alt","type":"label"}],"children":[{"id":"_help_Qjt68inQ2bRj","title":"Serving directly the content of a note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_5668rwcirq1t","title":"Advanced Showcases","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_l0tKav7yLHGF","title":"Day Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_R7abl2fc6Mxi","title":"Weight Tracker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_xYjQUYhpbUEW","title":"Task Manager","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager"},{"name":"iconClass","value":"bx bx-calendar-check","type":"label"}]}]},{"id":"_help_J5Ex1ZrMbyJ6","title":"Custom Request Handler","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Request Handler"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_d3fAXQ2diepH","title":"Custom Resource Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Resource Providers"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_pgxEVkzLl1OP","title":"ETAPI (REST API)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/ETAPI (REST API)"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_9qPsTWBorUhQ","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"/etapi/docs"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_47ZrP6FNuoG8","title":"Default Note Title","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Default Note Title"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_wX4HbRucYSDD","title":"Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database"},{"name":"iconClass","value":"bx bx-data","type":"label"}],"children":[{"id":"_help_oyIAJ9PvvwHX","title":"Manually altering the database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_YKWqdJhzi2VY","title":"SQL Console","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console"},{"name":"iconClass","value":"bx bx-data","type":"label"}]}]},{"id":"_help_6tZeKvSHEUiB","title":"Demo Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Demo Notes"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_Gzjqa934BdH4","title":"Configuration (config.ini or environment variables)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or e"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_c5xB8m4g2IY6","title":"Trilium instance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_LWtBjFej3wX3","title":"Cross-Origin Resource Sharing (CORS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Cross-Origin Resource Sharing "},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_ivYnonVFBxbQ","title":"Bulk Actions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Bulk Actions"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_4FahAwuGTAwC","title":"Note source","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note source"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_1YeN2MzFUluU","title":"Technologies used","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_MI26XDLSAlCD","title":"CKEditor","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/CKEditor"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_N4IDkixaDG9C","title":"MindElixir","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/MindElixir"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_H0mM1lTxF9JI","title":"Excalidraw","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_MQHyy2dIFgxS","title":"Leaflet","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Leaflet"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_m1lbrzyKDaRB","title":"Note ID","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note ID"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_0vTSyvhPTAOz","title":"Internal API","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_z8O2VG4ZZJD7","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"/api/docs"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_2mUhVmZK8RF3","title":"Hidden Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Hidden Notes"},{"name":"iconClass","value":"bx bx-hide","type":"label"}]},{"id":"_help_uYF7pmepw27K","title":"Metrics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Metrics"},{"name":"iconClass","value":"bx bxs-data","type":"label"}],"children":[{"id":"_help_bOP3TB56fL1V","title":"grafana-dashboard.json","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]},{"id":"_help_LMAv4Uy3Wk6J","title":"AI","type":"book","attributes":[{"name":"iconClass","value":"bx bx-bot","type":"label"}],"children":[{"id":"_help_GBBMSlVSOIGP","title":"Introduction","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Introduction"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_WkM7gsEUyCXs","title":"AI Provider Information","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/AI Provider Information"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_7EdTxPADv95W","title":"Ollama","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_vvUCN7FDkq7G","title":"Installing Ollama","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/AI Provider Information/Ollama/Installing Ollama"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_ZavFigBX9AwP","title":"OpenAI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/AI Provider Information/OpenAI"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_e0lkirXEiSNc","title":"Anthropic","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/AI Provider Information/Anthropic"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]},{"id":"_help_CdNpE2pqjmI6","title":"Scripting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting"},{"name":"iconClass","value":"bx bxs-file-js","type":"label"}],"children":[{"id":"_help_yIhgI5H7A2Sm","title":"Frontend Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_es8OU2GuguFU","title":"Examples","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_TjLYAo3JMO8X","title":"\"New Task\" launcher button","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Examples/New Task launcher button"},{"name":"iconClass","value":"bx bx-task","type":"label"}]},{"id":"_help_7kZPMD0uFwkH","title":"Downloading responses from Google Forms","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Examples/Downloading responses from Goo"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_DL92EjAaXT26","title":"Using promoted attributes to configure scripts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Examples/Using promoted attributes to c"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_GPERMystNGTB","title":"Events","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Events"},{"name":"iconClass","value":"bx bx-rss","type":"label"}]},{"id":"_help_MgibgPcfeuGz","title":"Custom Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Custom Widgets"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_YNxAqkI5Kg1M","title":"Word count widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Custom Widgets/Word count widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_SynTBQiBsdYJ","title":"Widget Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Custom Widgets/Widget Basics"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_GLks18SNjxmC","title":"Script API","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_Q2z6av6JZVWm","title":"Frontend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://triliumnext.github.io/Notes/Script%20API/interfaces/Frontend_Script_API.Api.html"},{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_habiZ3HU8Kw8","title":"FNote","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://triliumnext.github.io/Notes/Script%20API/classes/Frontend_Script_API.FNote.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_MEtfsqa5VwNi","title":"Backend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://triliumnext.github.io/Notes/Script%20API/interfaces/Backend_Script_API.Api.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]}] \ No newline at end of file +[{"id":"_help_Otzi9La2YAUX","title":"Installation & Setup","type":"book","attributes":[{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_poXkQfguuA0U","title":"Desktop Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_WOcw2SLH6tbX","title":"Server Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_Dgg7bR3b6K9j","title":"1. Installing the server","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_3tW6mORuTHnB","title":"Packaged version for Linux","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_rWX5eY045zbE","title":"Using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker"},{"name":"iconClass","value":"bx bxl-docker","type":"label"}]},{"id":"_help_moVgBcoxE3EK","title":"On NixOS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/On NixOS"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_J1Bb6lVlwU5T","title":"Manually","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]},{"id":"_help_DCmT6e7clMoP","title":"Using Kubernetes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Kubernetes"},{"name":"iconClass","value":"bx bxl-kubernetes","type":"label"}]},{"id":"_help_klCWNks3ReaQ","title":"Multiple server instances","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Multiple server instances"},{"name":"iconClass","value":"bx bxs-user-account","type":"label"}]}]},{"id":"_help_vcjrb3VVYPZI","title":"2. Reverse proxy","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_ud6MShXL4WpO","title":"Nginx","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_fDLvzOx29Pfg","title":"Apache","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_l2VkvOwUNfZj","title":"TLS Configuration","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/TLS Configuration"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_0hzsNCP31IAB","title":"Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Authentication"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_7DAiwaf8Z7Rz","title":"Multi-Factor Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication"},{"name":"iconClass","value":"bx bx-stopwatch","type":"label"}]}]},{"id":"_help_cbkrhQjrkKrh","title":"Synchronization","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Synchronization"},{"name":"iconClass","value":"bx bx-sync","type":"label"}]},{"id":"_help_RDslemsQ6gCp","title":"Mobile Frontend","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Mobile Frontend"},{"name":"iconClass","value":"bx bx-mobile-alt","type":"label"}]},{"id":"_help_MtPxeAWVAzMg","title":"Web Clipper","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Web Clipper"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_n1lujUxCwipy","title":"Upgrading TriliumNext","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Upgrading TriliumNext"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_ODY7qQn5m2FT","title":"Backup","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Backup"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_tAassRL4RSQL","title":"Data directory","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Data directory"},{"name":"iconClass","value":"bx bx-folder-open","type":"label"}]}]},{"id":"_help_gh7bpGYxajRS","title":"Basic Concepts and Features","type":"book","attributes":[{"name":"iconClass","value":"bx bx-help-circle","type":"label"}],"children":[{"id":"_help_Vc8PjrjAGuOp","title":"UI Elements","type":"book","attributes":[{"name":"iconClass","value":"bx bx-window-alt","type":"label"}],"children":[{"id":"_help_x0JgW8UqGXvq","title":"Vertical and horizontal layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout"},{"name":"iconClass","value":"bx bxs-layout","type":"label"}]},{"id":"_help_x3i7MxGccDuM","title":"Global menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Global menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_oPVyFC7WL2Lp","title":"Note Tree","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree"},{"name":"iconClass","value":"bx bxs-tree-alt","type":"label"}],"children":[{"id":"_help_YtSN43OrfzaA","title":"Note tree contextual menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_yTjUdsOi4CIE","title":"Multiple selection","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]}]},{"id":"_help_BlN9DFI679QC","title":"Ribbon","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon"},{"name":"iconClass","value":"bx bx-dots-horizontal","type":"label"}]},{"id":"_help_3seOhtN8uLIY","title":"Tabs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs"},{"name":"iconClass","value":"bx bx-dock-top","type":"label"}]},{"id":"_help_xYmIYSP6wE3F","title":"Launch Bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar"},{"name":"iconClass","value":"bx bx-sidebar","type":"label"}]},{"id":"_help_8YBEPzcpUgxw","title":"Note buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note buttons"},{"name":"iconClass","value":"bx bx-dots-vertical-rounded","type":"label"}]},{"id":"_help_4TIF1oA4VQRO","title":"Options","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Options"},{"name":"iconClass","value":"bx bx-cog","type":"label"}]},{"id":"_help_luNhaphA37EO","title":"Split View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View"},{"name":"iconClass","value":"bx bx-dock-right","type":"label"}]},{"id":"_help_XpOYSgsLkTJy","title":"Floating buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons"},{"name":"iconClass","value":"bx bx-rectangle","type":"label"}]},{"id":"_help_RnaPdbciOfeq","title":"Right Sidebar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar"},{"name":"iconClass","value":"bx bxs-dock-right","type":"label"}]},{"id":"_help_r5JGHN99bVKn","title":"Recent Changes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_ny318J39E5Z0","title":"Zoom","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom"},{"name":"iconClass","value":"bx bx-zoom-in","type":"label"}]}]},{"id":"_help_BFs8mudNFgCS","title":"Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes"},{"name":"iconClass","value":"bx bx-notepad","type":"label"}],"children":[{"id":"_help_p9kXRFAkwN4o","title":"Note Icons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_0vhv7lsOLy82","title":"Attachments","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Attachments"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_IakOLONlIfGI","title":"Cloning Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes"},{"name":"iconClass","value":"bx bx-duplicate","type":"label"}],"children":[{"id":"_help_TBwsyfadTA18","title":"Branch prefix","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix"},{"name":"iconClass","value":"bx bx-rename","type":"label"}]}]},{"id":"_help_bwg0e8ewQMak","title":"Protected Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_MKmLg5x6xkor","title":"Archived Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes"},{"name":"iconClass","value":"bx bx-box","type":"label"}]},{"id":"_help_vZWERwf8U3nx","title":"Note Revisions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_aGlEvb9hyDhS","title":"Sorting Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes"},{"name":"iconClass","value":"bx bx-sort-up","type":"label"}]},{"id":"_help_NRnIZmSMc5sj","title":"Export as PDF","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Export as PDF"},{"name":"iconClass","value":"bx bxs-file-pdf","type":"label"}]},{"id":"_help_CoFPLs3dRlXc","title":"Read-Only Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_0ESUbbAxVnoK","title":"Note List","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}],"children":[{"id":"_help_xWbu3jpNWapp","title":"Calendar View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Calendar View"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_2FvYrpmOXm29","title":"Table View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View"},{"name":"iconClass","value":"bx bx-table","type":"label"}]},{"id":"_help_81SGnPGMk7Xc","title":"Geo Map View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]}]}]},{"id":"_help_wArbEsdSae6g","title":"Navigation","type":"book","attributes":[{"name":"iconClass","value":"bx bx-navigation","type":"label"}],"children":[{"id":"_help_kBrnXNG3Hplm","title":"Tree Concepts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Tree Concepts"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}]},{"id":"_help_MMiBEQljMQh2","title":"Note Navigation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation"},{"name":"iconClass","value":"bx bxs-navigation","type":"label"}]},{"id":"_help_Ms1nauBra7gq","title":"Quick search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_F1r9QtzQLZqm","title":"Jump to Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note"},{"name":"iconClass","value":"bx bx-send","type":"label"}]},{"id":"_help_eIg8jdvaoNNd","title":"Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_u3YFHC9tQlpm","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmarks","type":"label"}]},{"id":"_help_OR8WJ7Iz9K4U","title":"Note Hoisting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting"},{"name":"iconClass","value":"bx bxs-chevrons-up","type":"label"}]},{"id":"_help_9sRHySam5fXb","title":"Workspaces","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces"},{"name":"iconClass","value":"bx bx-door-open","type":"label"}]},{"id":"_help_xWtq5NUHOwql","title":"Similar Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes"},{"name":"iconClass","value":"bx bx-bar-chart","type":"label"}]},{"id":"_help_McngOG2jbUWX","title":"Search in note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]}]},{"id":"_help_A9Oc6YKKc65v","title":"Keyboard Shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_Wy267RK4M69c","title":"Themes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes"},{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_VbjZvtUek0Ln","title":"Theme Gallery","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]}]},{"id":"_help_mHbBMPDPkVV5","title":"Import & Export","type":"book","attributes":[{"name":"iconClass","value":"bx bx-import","type":"label"}],"children":[{"id":"_help_Oau6X9rCuegd","title":"Markdown","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}],"children":[{"id":"_help_rJ9grSgoExl9","title":"Supported syntax","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown/Supported syntax"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]}]},{"id":"_help_syuSEKf2rUGr","title":"Evernote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GnhlmrATVqcH","title":"OneNote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/OneNote"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_rC3pL2aptaRE","title":"Zen mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Zen mode"},{"name":"iconClass","value":"bx bxs-yin-yang","type":"label"}]}]},{"id":"_help_s3YCWHBfmYuM","title":"Quick Start","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Quick Start"},{"name":"iconClass","value":"bx bx-run","type":"label"}]},{"id":"_help_i6dbnitykE5D","title":"FAQ","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/FAQ"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_KSZ04uQ2D1St","title":"Note Types","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types"},{"name":"iconClass","value":"bx bx-edit","type":"label"}],"children":[{"id":"_help_iPIMuisry3hd","title":"Text","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text"},{"name":"iconClass","value":"bx bx-note","type":"label"}],"children":[{"id":"_help_NwBbFdNZ9h7O","title":"Block quotes & admonitions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Block quotes & admonitions"},{"name":"iconClass","value":"bx bx-info-circle","type":"label"}]},{"id":"_help_oSuaNgyyKnhu","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmark","type":"label"}]},{"id":"_help_veGu4faJErEM","title":"Content language & Right-to-left support","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Content language & Right-to-le"},{"name":"iconClass","value":"bx bx-align-right","type":"label"}]},{"id":"_help_2x0ZAX9ePtzV","title":"Cut to subnote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Cut to subnote"},{"name":"iconClass","value":"bx bx-cut","type":"label"}]},{"id":"_help_UYuUB1ZekNQU","title":"Developer-specific formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_QxEyIjRBizuC","title":"Code blocks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting/Code blocks"},{"name":"iconClass","value":"bx bx-code","type":"label"}]}]},{"id":"_help_AgjCISero73a","title":"Footnotes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Footnotes"},{"name":"iconClass","value":"bx bx-bracket","type":"label"}]},{"id":"_help_nRhnJkTT8cPs","title":"Formatting toolbar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Formatting toolbar"},{"name":"iconClass","value":"bx bx-text","type":"label"}]},{"id":"_help_Gr6xFaF6ioJ5","title":"General formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/General formatting"},{"name":"iconClass","value":"bx bx-bold","type":"label"}]},{"id":"_help_AxshuNRegLAv","title":"Highlights list","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Highlights list"},{"name":"iconClass","value":"bx bx-highlight","type":"label"}]},{"id":"_help_mT0HEkOsz6i1","title":"Images","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images"},{"name":"iconClass","value":"bx bx-image-alt","type":"label"}],"children":[{"id":"_help_0Ofbk1aSuVRu","title":"Image references","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images/Image references"},{"name":"iconClass","value":"bx bxs-file-image","type":"label"}]}]},{"id":"_help_nBAXQFj20hS1","title":"Include Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Include Note"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_CohkqWQC1iBv","title":"Insert buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Insert buttons"},{"name":"iconClass","value":"bx bx-plus","type":"label"}]},{"id":"_help_oiVPnW8QfnvS","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_QEAPj01N5f7w","title":"Links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links"},{"name":"iconClass","value":"bx bx-link-alt","type":"label"}]},{"id":"_help_S6Xx8QIWTV66","title":"Lists","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Lists"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]},{"id":"_help_QrtTYPmdd1qq","title":"Markdown-like formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Markdown-like formatting"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}]},{"id":"_help_YfYAtQBcfo5V","title":"Math Equations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Math Equations"},{"name":"iconClass","value":"bx bx-math","type":"label"}]},{"id":"_help_dEHYtoWWi8ct","title":"Other features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Other features"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_gLt3vA97tMcp","title":"Premium features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features"},{"name":"iconClass","value":"bx bx-star","type":"label"}],"children":[{"id":"_help_ZlN4nump6EbW","title":"Slash Commands","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Slash Commands"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_pwc194wlRzcH","title":"Text Snippets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Text Snippets"},{"name":"iconClass","value":"bx bx-align-left","type":"label"}]}]},{"id":"_help_BFvAtE74rbP6","title":"Table of contents","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Table of contents"},{"name":"iconClass","value":"bx bx-heading","type":"label"}]},{"id":"_help_NdowYOC1GFKS","title":"Tables","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Tables"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_6f9hih2hXXZk","title":"Code","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Code"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_m523cpzocqaD","title":"Saved Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Saved Search"},{"name":"iconClass","value":"bx bx-file-find","type":"label"}]},{"id":"_help_iRwzGnHPzonm","title":"Relation Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Relation Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_bdUJEHsAPYQR","title":"Note Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Note Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_HcABDtFCkbFN","title":"Render Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Render Note"},{"name":"iconClass","value":"bx bx-extension","type":"label"}]},{"id":"_help_GTwFsgaA0lCt","title":"Book","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Book"},{"name":"iconClass","value":"bx bx-book","type":"label"}]},{"id":"_help_s1aBHPd79XYj","title":"Mermaid Diagrams","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams"},{"name":"iconClass","value":"bx bx-selection","type":"label"}],"children":[{"id":"_help_RH6yLjjWJHof","title":"ELK layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]}]},{"id":"_help_grjYqerjn243","title":"Canvas","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Canvas"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_1vHRoWCEjj0L","title":"Web View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Web View"},{"name":"iconClass","value":"bx bx-globe-alt","type":"label"}]},{"id":"_help_gBbsAeiuUxI5","title":"Mind Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mind Map"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_W8vYD3Q1zjCR","title":"File","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/File"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_BgmBlOIl72jZ","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting"},{"name":"iconClass","value":"bx bx-bug","type":"label"}],"children":[{"id":"_help_wy8So3yZZlH9","title":"Reporting issues","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Reporting issues"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_x59R8J8KV5Bp","title":"Anonymized Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Anonymized Database"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_qzNzp9LYQyPT","title":"Error logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_vdlYGAcpXAgc","title":"Synchronization fails with 504 Gateway Timeout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Synchronization fails with 504"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_s8alTXmpFR61","title":"Refreshing the application","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Refreshing the application"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_pKK96zzmvBGf","title":"Theme development","type":"book","attributes":[{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_7NfNr5pZpVKV","title":"Creating a custom theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating a custom theme"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_WFGzWeUK6arS","title":"Customize the Next theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Customize the Next theme"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_WN5z4M8ASACJ","title":"Reference","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Reference"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_AlhDUqhENtH7","title":"Custom app-wide CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Custom app-wide CSS"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_tC7s2alapj8V","title":"Advanced Usage","type":"book","attributes":[{"name":"iconClass","value":"bx bx-rocket","type":"label"}],"children":[{"id":"_help_zEY4DaJG4YT5","title":"Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes"},{"name":"iconClass","value":"bx bx-list-check","type":"label"}],"children":[{"id":"_help_HI6GBBIduIgv","title":"Labels","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Labels"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_Cq5X6iKQop6R","title":"Relations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Relations"},{"name":"iconClass","value":"bx bx-transfer","type":"label"}]},{"id":"_help_bwZpz2ajCEwO","title":"Attribute Inheritance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_OFXdgB2nNk1F","title":"Promoted Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_KC1HB96bqqHX","title":"Templates","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Templates"},{"name":"iconClass","value":"bx bx-copy","type":"label"}]},{"id":"_help_BCkXAVs63Ttv","title":"Note Map (Link map, Tree map)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map)"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_R9pX4DGra2Vt","title":"Sharing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing"},{"name":"iconClass","value":"bx bx-share-alt","type":"label"}],"children":[{"id":"_help_Qjt68inQ2bRj","title":"Serving directly the content of a note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_5668rwcirq1t","title":"Advanced Showcases","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_l0tKav7yLHGF","title":"Day Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_R7abl2fc6Mxi","title":"Weight Tracker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_xYjQUYhpbUEW","title":"Task Manager","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager"},{"name":"iconClass","value":"bx bx-calendar-check","type":"label"}]}]},{"id":"_help_J5Ex1ZrMbyJ6","title":"Custom Request Handler","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Request Handler"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_d3fAXQ2diepH","title":"Custom Resource Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Resource Providers"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_pgxEVkzLl1OP","title":"ETAPI (REST API)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/ETAPI (REST API)"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_9qPsTWBorUhQ","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"/etapi/docs"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_47ZrP6FNuoG8","title":"Default Note Title","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Default Note Title"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_wX4HbRucYSDD","title":"Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database"},{"name":"iconClass","value":"bx bx-data","type":"label"}],"children":[{"id":"_help_oyIAJ9PvvwHX","title":"Manually altering the database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_YKWqdJhzi2VY","title":"SQL Console","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console"},{"name":"iconClass","value":"bx bx-data","type":"label"}]}]},{"id":"_help_6tZeKvSHEUiB","title":"Demo Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Demo Notes"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_Gzjqa934BdH4","title":"Configuration (config.ini or environment variables)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or e"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_c5xB8m4g2IY6","title":"Trilium instance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_LWtBjFej3wX3","title":"Cross-Origin Resource Sharing (CORS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Cross-Origin Resource Sharing "},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_ivYnonVFBxbQ","title":"Bulk Actions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Bulk Actions"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_4FahAwuGTAwC","title":"Note source","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note source"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_1YeN2MzFUluU","title":"Technologies used","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_MI26XDLSAlCD","title":"CKEditor","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/CKEditor"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_N4IDkixaDG9C","title":"MindElixir","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/MindElixir"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_H0mM1lTxF9JI","title":"Excalidraw","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_MQHyy2dIFgxS","title":"Leaflet","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Leaflet"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_m1lbrzyKDaRB","title":"Note ID","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note ID"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_0vTSyvhPTAOz","title":"Internal API","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_z8O2VG4ZZJD7","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"/api/docs"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_2mUhVmZK8RF3","title":"Hidden Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Hidden Notes"},{"name":"iconClass","value":"bx bx-hide","type":"label"}]},{"id":"_help_uYF7pmepw27K","title":"Metrics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Metrics"},{"name":"iconClass","value":"bx bxs-data","type":"label"}],"children":[{"id":"_help_bOP3TB56fL1V","title":"grafana-dashboard.json","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]},{"id":"_help_LMAv4Uy3Wk6J","title":"AI","type":"book","attributes":[{"name":"iconClass","value":"bx bx-bot","type":"label"}],"children":[{"id":"_help_GBBMSlVSOIGP","title":"Introduction","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Introduction"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_WkM7gsEUyCXs","title":"AI Provider Information","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/AI Provider Information"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_7EdTxPADv95W","title":"Ollama","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_vvUCN7FDkq7G","title":"Installing Ollama","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/AI Provider Information/Ollama/Installing Ollama"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_ZavFigBX9AwP","title":"OpenAI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/AI Provider Information/OpenAI"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_e0lkirXEiSNc","title":"Anthropic","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/AI Provider Information/Anthropic"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]},{"id":"_help_CdNpE2pqjmI6","title":"Scripting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting"},{"name":"iconClass","value":"bx bxs-file-js","type":"label"}],"children":[{"id":"_help_yIhgI5H7A2Sm","title":"Frontend Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_es8OU2GuguFU","title":"Examples","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_TjLYAo3JMO8X","title":"\"New Task\" launcher button","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Examples/New Task launcher button"},{"name":"iconClass","value":"bx bx-task","type":"label"}]},{"id":"_help_7kZPMD0uFwkH","title":"Downloading responses from Google Forms","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Examples/Downloading responses from Goo"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_DL92EjAaXT26","title":"Using promoted attributes to configure scripts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Examples/Using promoted attributes to c"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_GPERMystNGTB","title":"Events","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Events"},{"name":"iconClass","value":"bx bx-rss","type":"label"}]},{"id":"_help_MgibgPcfeuGz","title":"Custom Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Custom Widgets"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_YNxAqkI5Kg1M","title":"Word count widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Custom Widgets/Word count widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_SynTBQiBsdYJ","title":"Widget Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Custom Widgets/Widget Basics"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_GLks18SNjxmC","title":"Script API","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"children":[{"id":"_help_Q2z6av6JZVWm","title":"Frontend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://triliumnext.github.io/Notes/Script%20API/interfaces/Frontend_Script_API.Api.html"},{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_habiZ3HU8Kw8","title":"FNote","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://triliumnext.github.io/Notes/Script%20API/classes/Frontend_Script_API.FNote.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_MEtfsqa5VwNi","title":"Backend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://triliumnext.github.io/Notes/Script%20API/interfaces/Backend_Script_API.Api.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]}] \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/11_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/10_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/11_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/10_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/12_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/11_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/12_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/11_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/13_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/12_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/13_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/12_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/14_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/13_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/14_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/13_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/15_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/14_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/15_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/14_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/15_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/15_Geo Map View_image.png new file mode 100644 index 0000000000000000000000000000000000000000..72dbb9861764372f6d6afd5feea9d9345f136938 GIT binary patch literal 44769 zcmYJbbyQT{|27OrcQbT1lF}szNQ%TQARyf>-Q6G!(v6@A$Jx z7mbtE%!WYL&N1vV^H}%64CKD?ec66~@jbQMeOS6Wx)w7#b-Z@Zx)d3^dGh$Zn<0AYo%LtN%)9NddFE%W!)EWx zF7DaOvtHivyORHYecI7}zP-uaRoGm)ppM@4r`we~Oq2P`xadjAsN6koc6YIT()N7V zwnV6Hjg#uecr~Sr{iq%=6r!RwPjg9}F3F?(IhBLOQR9t;c#HugMCDSJt=G?fD}9pA zt#z%Ig@!;*PWFubr;8mnXY=r+w9%wwIfi(bDkuCMep>$SfRPOO1}p7C$m~ z%G#biZpwY1SgU)O@L7^IgE{{Ei`Q;;`Q4H&m!mr9Aos$kvpc0M?i@+@I{vZ3=jnbp z`N-?(YWAdhOl*jao^hnJhtm?(Vk=$Vj_3Nf)MN+->C)ar{_?|VTlPGyScfCMQhD2R zQ}apFVZj>uB1Q7X#na7dv+Z(IBbN9hXElSU*z>KC>#Fxn zp1&WmU+%JpDP&apHBVbEzj+>%{3tMNbl8-+S+FW^WX$$bg(rDFkMV8Lsy1!3YrT_6 z?po88RD8KeX)~VL+UcY8by608s`0$~tFi6IQZy!V8TD}b@_brKOhN6lmm9j2A0x(c zDn(Xw{Q*V&acy z??x%P7XR3@Ek56k`I^pHZ@fIOz8tnboCq^ddw*TdR-SfduJC<2)N7WBCTRp8N9;l{ z{*jQEymXR)^;1K_2cdyl>-ot{w~g>J-DVftMVop8tEAP4)$rA<7aMGrq=JGo@y{)8 zl@FVgFMA7hHmtMT_akY%38*YL1U)W`HoKU@N1S&r;MQ%%1q^#z$w&B>(kt-3rl%jM zEP=O=I~TuQdv*7Lx^UyH?RoYk-r4i?Pdz@HL}xbyr}^<>NcYEw%q53D@?G18bwnIa zHhIfu_%L*0?rw6=qsj|EwI3gxZ&p0ZACB#OS^KU}mKSR+|H_YE4YHOuklM9OJZ%uQ zVY3!_KU|l+kD>UgmvM9I`_k-rv+TM|;d!(^D)wMq$wt7YRCbzh{AKOW&5Gk6k1Jg2 zEmwj2y?ou(R`0@(V&I7mE`|Qqu6GGU#2EDO6}!&>tDyd2#Lh>}c2zEcq0yi##N^uP zE8o24nym&Z$!q_Sm~#SwCc zZXDau48arEwuemZdfQB^rH0C1dTp)g{B~Kw2gUhI;ONEB{4_}FxoJNR&32SRm3o%O3ehYZSDM=Nfd7_J=%L}4&0$Uf&iM7H<; z_HB>mDo+}BvmCKR&iooKunFrXTtp4Kk#9C4Ihs;=%m&ZL!2R1P{UC*xvJ!|T#&i>I zPi@*j5GYwHwTxEQ(-DZ&%rh$Rjx9Y!&u8AI_V1^SujRVUb!1Z&2JcE5sJb0alym)h zrG>f>o_R!q$DNRVYmsku zH?5{jfJRar^t6uUYrmWA+bX;j`_5PwvX##HEA24exAPfE_@p7f#cIBVNxcr+hb62v zc=&1~$6biMsf}LYFINx!z_ZFj(MC~kTHYGI^3;W@vyQu%|FZIi}6#HRgq|yR8QlxVR@jVKKN3R z+?WE!kZ#>NaXU-y6JahI?(Q@G^*dR2F;pW|Yq3qlMuNk7PQFmr_($x2woGnvw=d_T z`aP3nW89q?XrporI}Hup%v3e@$cwXjr>DE+{80z;bHb-TsOIYsP)-s)r#r-_%c8Ln zEw%HQ4%;J9dR1sLN)b3>Ars8do~(Z(7nV;G_ibG?O}F8G{{t;AN*nK&OvmeR&Z!Ti zbOTS+Ee%}`7Lz`1edMnFO%3Y*>{Q6xm*uxvY(D+|On=JCZVOM$fjXp+%oca7LsW@j z6)ICxvPW~Pa%*dOeYrd>k$3T{49oU%R=Y}FEkSwOBkc3(rd|0z^8-o2y_~?ML}s<_ z`+V&&u+(X71s9I(XD32J&&>0b>LFB}_{ptkI5*tld=lak@k^_n!D!oe=AH$a4%5Xd zlQP695znuG3WY&BKDNAX$n+Mw+ro2rqA9q0EBrMSlbp_W4V(^t;LR(e`VibSDze;N zy|Cwbt!BbJMdYJ4Q5`g?a}OV{o|~)>Uu*qDkqfV0VYJSSu~k?y%|PRRQQ}|TI+*#L zuB9fj;&J#I<=_3q5J%6IJZ!`^Oik)!TSA>mJH}j_uP@FClK_%!mp&{Rl1_g^(LQR| zY4;UV4VJ(f%*_w+Cpk6>T`aj%tjbxlu0i@amWVaStxN4`r(0i|hA`4L`WImlbojpY z5C#gEawI})u~P;7H~!PVG?WeDZ?heA*__zSXqHLen8(gLI+_Qp`Ibr!dn2Ok7$iSA zH3qc|hIBtSB#wnFaw8ih(?cc30-amU0x!X$USv&`GP2r48 zi3*v%jRV_QS_J+JV!(QQ%c=U3`DYXv#aFN~>WIj2TTSpNKHvbGL=V(_FHw!Ggd;VG z6#U&2Z6%xiu&%;HocUg~VL86=Ag$Ob^!JS#r}AD^OxtVO-x#EPL3ZINk_pk0^?k6j zoWTqT|7q4!HRVf57Z)i_9@5WK!XhlC-+i2DlXix^;h14=(7RkF{hzkd#V6-2`cnI{5l5sLesrS*m-XO0wn9}UgfA0cJ2^N4O!`cRf+M)#l@AhZ z(s9iwyEr>hB1)7wu@!GFZ)Uyi`wq&nxgyAd7+EK7Yy!m(U&}E#^LZ z(X2u)5lcK5?#9egb)SVKPJQJ0Q#U=Yzixyx>K_W8-uUS=>ak*PeLTEGOIGJA_n* zw`=UIL()(AML6)UpH_EB9HwS}T7BL{<_n4!KNnvVOGI{Rl0G7q47CtCGl9q-?{IaAWDvd!V9^#va+&0?q>G%P@U%EImwwOcMz74wGFTV^E zD=CS;Bj1@2w@|GLuSIDzpkriF3-r06{jK$$rp@9-cIW+yUE34tXrSD;`bS%J*M2ia z-0mQ`meUUSj#I7IMv0mBHsaiDl>Y)k3<}=WJr*xMdf%3XODOg)qGu0OZ7X-l5?v%_ z?*_*9Tm@(}a0I2$N<3|pmMcs*)~JBKc^(>^!S$+Y>>M%1h9fCmp$DlA_D7EEa!px0~Gz`wB5}M35{< z%K@JuFI&LD(A2_lu2;-Lt^e|`I`%IOJ@5Z;+enj&Q@(f%{JGmnH=*elsEH)vNTxtm zu_rrqTGB)hdVzv7J>REVx^J1nu4Q4rvGRUWT`P;62YK$Kni*e1qtwX<~)FqI6r_Ujh+2yXf)9H(?$-#k)gSq<__KGm|;=*x@`b1{j-ZzX^1byKlvn zSxgmOEN-sDJR_;Jk@sCZ?7W&;H3%hV*e^)<5I;Z$&S3%;^QA++MQhquZuT72W@CgB z*Dtdjr_W!R&wuGX$+PV}KRq-bmNkz)?JN6!B^Ppv-6pkd$Q|D7J#BxX9`ID4$eA>R z5J+%l2X9L#xkpxVbb|vqgH+h1v;Yd+=(eHgFLZrX6JJBuIq47_i^A(ccuO5flt(0Q z%&BTk)^0;7Jo=BDPg_qC)jq_HK{-ra2O3Aq8VSEGTi;B%-s-Z?!?DRmk2^=h8k~c> zuGe{ws+;rvq_pK|RNBSk<=BvqSkz{u$vgmiuG1>-8;!mR_P*AxW2<&nTeU9pUyShv zs7{>^TYMJ0%fnVP*3G+-Y|q^cunJ1lG4uMbJz>U%8^4KOYr313I-^o$F&^DjJ;?xW z!iZ|?V+1dmi{ifu;cBN1sFjhn?2RI>8s@s(8NowK^NRgFu-k-3z28o8Cst|6 z!50djX;zT&N2Hgq%)d-Um6!ay00=5rwRnL%c-?bi6> zE{)0*j1$K6=7&-`1Mznkj#A3f7(8VWuIgFe97Bm*g+)%=F01lCpDYh85gfAtV{Ca? z3&iR!ydGf8mhBzuoi0%;V%kQLV|&81YpUWwc1=45&M zaS09X+xWgn1^###`682FWs^qvm)DD(Ygv^ag;sx&@9`i-kIy6O*NX=sRo* zcDxGsEAJ_~dM157VWnFZY1LcJXao*_iW1TXpJ(V3pMSFD3{ z6cH}UPhWHi@cPM}@CU*Py1igUg^mIgep|8F4xBHRkEp?K0@64#5&}9;v%~Fo7W>l8 zia38@YuN9rV22RMTD-{o#So!-j47_UJ@dg;Qj)(YV`;k^vFrBq*Vo^lGzmWiha0N~ z&c&++k2;(~*2CprJ#)C(hp{tKNKakO z>TxWF>->-lzcyZ)hIc2HG0Aa%&4zVfkpy!^ji39)(glwsfzY_JU)V!9-@& zHOCJ+-N=SwAK$9rXaR=LMmt=Cq&805+p#;e%l}hOfBr8N?ZY6WOCHI-5&h_YA^fje zY*bhqxp7ok8U0C0^m*n>4jJ93UEshWEie8JUsONQ}X;mEU z`{X~DX-HMh?|7mHbLd_h(QB*+*1oMkJrQ0oTLe-I0W7NALTP2!3ogeC zCf`=bO09KtkCcB4Bk!6DcUT;~%fYvquC8N0fr_Aifnk`{zH`3#`@Z z5Gidu&K;z9X^9p2Ul)F8nS*qH;M{IxYw*-8dS1mAVZS;ROp*~1*doQ1NCdiJ)4#$W zk_y&H6k*^H`N+aVg4FS%DvGJ{M+BYrb?1eadh4$%$7n7m1wIXCM%IGgZ}jrYu&L+SC#SOi4Ww+)6{btm2NZ9tcQ>Mg!H+hinj*6{B zBU)MRE`rOv2$h{EA)+C~Adx0*3}1IgP0hYBuUkN_wMN8x8a_V4!H}OfRbyhf^ma8; zT3V-z^CxaHBYOS;9&;}fU-6pdptSvq05kI)nGu8+V}w!VuID1o06#^?eQcG2xwocE zUEOqKSBSvb4(O~QD%N#xr#n@pkuGj$zbV9fV{`$TH81>^T3j+0PQDbH1|ma0RF74n zv4SC5M%a5N=PPRSu8c`B79(E(yHRdc|DGN|cCQU{_21E?{0yI}YPvZ-5QPdnFv(r> zM*WoGT;1nhPV_SoM`-5ScWn~hca_1dE>jAL6LYdLq?11$?B27x&lIVcH`{5D@8A&l zKU!j}>BAj0NUgE*OP%YQOM)+ILxQ5p%NUZRQ0Jw|ZHWF!69TS^H!dF6h*N?Oy^GV5 zgr2ciKLBXV2GevbylFzD9brQPINu$vxuSl`LoY&QqP;5njiHdXJZ)MU@i5TdxNc6G zPm`C`AWjJ_w;Pc|MOkm64iq`lgxKyTrfZYgbw7VKBxCr=P$Q$n`2DmqIZ#eoqYY_x zVz%KUmucP$6vDO4D;kj?PGyLlcjJ{wM-tk`h+g-XMu*6EF50zaYAw7G;kZeic`HTf z{Vz^Y8-V%EVUjM{lx{;E%VdYdyUg1cIqp5hK85=h&TOexwWi@?CmKhCwryh%x%0FN_xn2{J+Jlu zAqF5JxK7G3np_WN1E-)72ow!K2{W64$TZOrY{pyi@Nw~?zmuqW__t3B_XrO0rZ0ay z8o|jn{dAfAGJI570#^m(>#v7i#rBVYdmEs1R?__x4~b0pY&*e)_leY^Ljq z`?e}TJj)!ucSFMzchy%j+Gedba0-nkL&;yCp?K@+XnyKxo5Od&+WBNVMUQak9w=wd zN@;H#-i2af5Nre4{q*GES2>}=Qukaj+eKXzFbm}6sryKPT|muw1dtit>`jKC5;?W`JS_o%{D6>6lWOB> zD?!E z?E%P%_N4r_PG%VnA&FSJ_^s$Bjq)XhwI~I$1zcjoyq6f zw&!g`3=+ECmi?l1#jt33`YS#oZkY`H6uJlSc`EUFd~r4TjC#>=KEgGb3%6d53ilj5 zLB*2l0qV{{sMdOO3Ba0yJ_+2B-6~L>rNeLxsP?R9O0~YC2i}s(n5e44>PRStVdPt$ z{ngNG1RCQzcpkROXm3;l0I=~{lU)po{JQ@;u7}+m?Uhz?eZ4e#v}?C}-_RgPXl^BQ zwCcV~&TlbECpg2&68Rdtg{~wo%<=bN6F*?%)!WJ1^0D~3DFORX$nCUX@nfK!^3JcA zU8mtAn>O1Dcmx_!NqqWJiN{k#N{&!17o9~?<0nvIhyVPWRQM{=sYu7SoQG|^mgPEc zLd37%4zvGiB!@mkMT@R3idFKTq9#WE!CP^;yjY7arG!~MU)^r!Z0~EF6kbD*!{7By zU`c7w{Ib|JsfYt?MY21EZyWd@a(5kKe>`uJVc1zv7&GhxpbB*j7m~qR%!f=NIer%S zB~F&W&*D%2)GS+5y_Q6Rk;}vDR1%PPICN)D1lS(JuNqZz1AWXXbefz>G;@&+@oQFb zF_iTG`+Sz6`6omB^%u&lxMQi$5669AB;v-j|CefL4aAUh6z~c%_F#P7<&h>$;%?Gu zuJBsIB?-Z4#4DN-PjZ6M!>4kgn;wAg(E`S)K_W>>#QDqP*o$nNs7%dzf(e+XU7S@3 z^66Z84}g&<{G;`L#1y;LN7>7{d|D5sJozAUF14RS8S4A;u*w~Q8Q8`uC36Cp<|J2J z)8`&^srF(C43anYzPDYJ+*TNy;^w54c|$c%0jpmWQR}cm=@+8HH8J0fWk-8mfkT86Zxw$9&_Prw(6|oBO;`GH11Zmr)P*-@+N!R<5xLxU?`cE z8*{pVee@+gqA+Wx(aWt4I8X{QM5uug7|VQOU;u!j1&)QLj};K#`~4r2m6YcuL1b++ zkVKaa^JHfs1W{INtXwI3iQM6zg|SaxTLl zD?1_|O=-J8n+7aImR zMnAM)RnW7#GYExS`ZHv{Na1o(mEd}Jslf-3H6|1*r*xaTIG0cGOGGPlDoewu5&Z_v z6i(w38-y~q8||kBov2H%23(EIXlET&B=q5&mqQ}6JxNyN(4e0TN818xgQE>&Fl|TSwd!`WH_u!Q0vb@ z((P%Db)mC%nU_chE3S*gB$;?&s4t2*Vg55kK-J?egMh;BXM_`2);ci!QhDbGu5`k< zPh5OSRSqS}gQ1|VvH-VTTKnLG@G+fZz)ylc#-Y-fgFXmddSM1e_w(hLc#6x%cHR$* zuakwI(krbiUH4RC|8h6<3&LI*GBGd{$^K?-W|P@KS}%86g^St6z3WXf@B6B08j+&q5o6 ztzH}-En9(0gG1(|-5ZAP4G~maqi+A8w_Lo$j!C#8Z!D*o?u=8ftYgr2FU6~KAI5_Z z?hngT_WynpyEnIZPj4ULV%2W)4MP11-j&M=ed-s^SaKpy-Db)%-)d}RYJc)#Pvyf3)hjXQ- zEczD!Ev+oxqnm+i9nA+|bLM75?rz+Rdi;wui~jmTDwF&1yz4=d!@psLzNsV_TV0r(0{J0LRyk0soZ$$O`Hzw5 zTT@hVKtx4R&RIyIVR$7f7i}+>yLc8P`5cwkX5me>hRfb(*=!F(lCyjBY)=t8K-~t9 zOdy4FNq9zKv_dpZh#Y15%#mH8usCJq_GS2omV6JyN-x!`OGQ~@iEdnYL z1;mgZdt1P;#dL&(_&G_xe`h3p$hm=XgUfU*>$o?XRD&?4!*Nd&5uOEcpjI@(y3c`Q zzC}4irR0)0kPzNyP&&iAN@edH2Xk1Q&C1R$z}wl|~uh1FIt= z1d^6RBJ($BV!0w_~dKSgNNZtxzkWGVH$KFEHpY5#~mzj<1_8xqAI1$6zsn z=!(@(!!KSeep!&dob;72yv<-O@r zgdwo#j^n&g>CUIKC*@Y1X@s7St!l^fjV8Q5jfzy}FYL|hfXH9T#3N2K+;ABXKL+cC zF&%8@5hj-dnNMM(MSqgV5YPz2q(>pwH3&QuFf;Bt5LTEQA$IGf`Gz^_S@+5uV#QDx za-BIvk}eq05EWzshF-sZOKw1A->v#EFiE)KaNgrgJr9a(0j5B}RY*QV=_rZ`Z@~qF zX;i{PN_-}0zxLL(pE|T3g4mAi*^urpd$K*0GIS$ARRJ86By+n`4;sCs;>(MSsL!GF z7*bACVz!WA)m%esh|E<0pE`qyfw5pv>iQ=X7sDtgnE<2SS^(aSufJg(SA_{0_NkYm zLjr0?c7dmC)Bvh_J5(9y9iYT<{?0$5iMJb0D*#D}sjfFUG%@ z)@D1fNAkt&Dtq{5z~##c3M=tMolma}BuQxRecf<6-K&se(%oCSSxzXi_TA_1 zgaPvcfnS?t23cpm!pm|Rp2c}QrdTnV?ovwzdK_7jl++W`7Ipj|{{TGRnfgC2Q)ANJ z=t8_lz#)wVF*d?#fQbeUjsNB)f6q$d=1)K5;`l?Xv+`8FZ@I{+8TtP#0V{N-+pW;9A+NS42JHZii{ z;Ujg9g7kDLv*v>JEU`uaXH=$mBKZUD=Z?$DVHm^?WVM-U@xI`W#>Q4(o$1DaN08b{ zNW{|NcVnBV2Ei)by)an^UnKgYM)0ws9>JRu_a%wBX}YOw4BXeeehU%zX*pb|{iV4X zMLBfluIO2`(O$5HF4TU+qL|zJ&jMYx-6f<|_^`CPAg}$Oc_~uJYCf&F(KNSt2VgeL z?0TgRMS(`e;=R92h#mS+P1<j82r&gqSOZ&zbCMcCF6uVF z3+_Tkq`3-8PXQivXIQ)Yewl=dOH1iMG1}*X$U6Qcs9d+|zq{Vp;G3n!%5$${J-cf- z=?d-|tuLx2Pw%~n6bTz$a#wpNG;d%cGE3EQX%T@&;|TaxM8!HwU-Za7GgO-~WR{J9 zLr(ziOsZ=*J<+Br_NOfy+(OZbY2ZemqnfG#Bu#zBSU2$c+*@Tr_Boljo)E`S9NxLz z5BBS8@}|?=P>Og7So<*^3{tpZmwP9~F@m7o_Mvun3q<{C>L3wJo$L-Af#hBN265AI z1G;=*MhuZv#)v;R)a<^SJ8h5RrIm?_b>!S(-$c7?X?Nu6haHm=x><58B&HeUwFR_b zt7y&qz~ky*AnG+dR51tM+01;`|k1y9$;V{R9qa#U3%7 za^J9t*Rrn5ymUz0D|n1wX?OC0$)W`4Ge&Vd=v0IZvl0d7w0)vce$=))p`Jaeh1_Qk zt1n`X$>stf;R_|*oJ(uGvpTedo@C#jF|5)y-S|rNM+=jkV=Gqu*D>}>M;#p~N=<_@ zcMTs67%bm=-Tl6!tjID&hCTpsR6--EWdBK=?4181hY}@bDzjXHPdU7xL|5q-*eyz! zt0E8*@yd`Gabj_aF`$e}zN1b(hdgPpZ`pPASO~z;{dfg-oQ_SmI@-0?Ga5^W(`F!F z(0tX*RGbLWo+~#t4lLPK*MxQ0X=?4GB7MXxZ@vH7P;)iEGnUQaIC-I?jtyzitH)t& zhqUR;g3a0=6VUTLRjGo(fq*BN1fh+ArqrR_P>x#lxsGWrH$?H6%Ux(KF!nEns{TjjXs30p$G;a#FT=vrL8?rnn!fl@Lo98}jVC ztqK_;b{!_il5fO34Ar$F@Fo_*g4h|`t~ML|n>SL4o9(A>g}E+U?#F;i&Ed{2MeN$# zb{x)_6&vvl45Bzngh;M&Om`4El=sa0oQ2E<`(Nqo{^&;gv`HAhO^fDVWQ+}NgHHI$ zL368UwBw9ypZgN8z9;z}7*`hv5SDOUg^zRmwiOm%-*k#nw`(>dvq&!GNu#BDD82qv z_AZCuxF4C&)&%Z%G4>gH7-2FyyXT9J1ojl*R4M@#0^j7uEl&Rn`}o5O|EBL$@`2;H z6?J2%oi(h@b`?Yedk)?wUfo0mthxe0Zet(j+9V_m;N^b7Vr%TZ!j%9JXVcC~KO_PA z0-019g6X$TUku-7_f5BfyRgrGLSKc6ZxScRysqA z#XcVm@>OLJzA3j={a8$9)1o2RuqKe`DjopPSV*BZpK0bW00FH)J6c@JRctMw$2rP` z#ED=xpiEdZ4jIcZK!4qI1c8u#wwvZ^F($vgN%|4_7FAfBkgm+Gn_sRFK6gtDdxEaa zJ^1je-5nX4hqq5)#cGyWC(UkS!~6VOcvj^mMKRdqr~e(KTIuFlAS4&>wVMHtfs2l! zPIo?9tP%1E=~L_Vrrzj~d-1=dI&#ZIW{*lxjzpp04j>OFMPYpf5sYmh@sPcZ6-Qwz z5c-;*sTv|l?mCUpiSr$zEe>{ z9CuZ#kMBAhZA6re$LscNB+aq-Y;%77(MLzdL}Cgz>6Xd7EI-l^TSO=SeT>W059O2` zxwOA$D_o=g;zxF6m!y9K)t9CVk!`vN)r}zoA0a>`|UNSd}0|YJ{VE?nW#cKy!|z?)2tp*-OC=%_Q!JryG_Ph z>dhx;Eada#(8lnkGQ|%lN?OLNX*I*o*EL^U`(4D4#rTKjuleKE3=B(W%CaL+^50MF zSU_aB<59V6&ENxz$i=+*o$N{3=NiW019+8`F%V!4s3;88_XcvujU|1(49T#03|S$o z6p*SE=kDmWnO@Yt&Oj|l@n&YV|8WCE;>@pu%(&xnQ4y#lyENtrejg0qg&mIP^Z*50 zE(4)Lyn4n#Y;@=@K8%oEVME#eX6gs!63({fQu^XW|$y?bj zpHS;vg?m!sU=^F!Mu3=OmZ}HQ4S)V?)9phCs}MVv(CE0Ed@YM zU4j0caCuAhN%Q2N`P(DpGvgOJY+uR3;JRC??#=OUA1cUp>E9Ca3ydcqI2hAOWQ8*X z==+(UL2ql=1GqpVC>|YOGDwrFI9T?!49syQ^u

_u51#I!m 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 Nv^5OWD^+bH{|}6Cw`c$W literal 0 HcmV?d00001 diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/16_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/16_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/16_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/16_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/17_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/17_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/17_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/17_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/18_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/18_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/18_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/18_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/1_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/1_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/1_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/1_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/2_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/2_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/2_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/2_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/3_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/3_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/3_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/3_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/4_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/4_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/4_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/4_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/5_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/5_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/5_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/5_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/6_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/6_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/6_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/6_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/8_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/7_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/8_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/7_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/9_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/8_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/9_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/8_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/10_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/9_Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/10_Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/9_Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Geo Map.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View.html similarity index 68% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Geo Map.html rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View.html index b85d13a7c..0838f4a46 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Geo Map.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View.html @@ -1,5 +1,11 @@ +

-

This note type displays the children notes on a geographical map, based @@ -19,9 +25,9 @@ 1 -

- +
+
Right click on any note on the note tree and select Insert child noteGeo Map (beta). @@ -30,7 +36,7 @@ 2
-
@@ -39,7 +45,6 @@
-

Repositioning the map

  • Click and drag the map in order to move across the map.
  • @@ -49,6 +54,7 @@

    The position on the map and the zoom are saved inside the map note and restored when visiting again the note.

    Adding a marker using the map

    +

    Adding a new note using the plus button

    @@ -63,18 +69,18 @@ + ) in the top-right of the map. @@ -94,7 +100,7 @@
    1 To create a marker, first navigate to the desired point on the map. Then press the - button in the Floating buttons (top-right) + button in the Floating buttons (top-right) area. 

    If the button is not visible, make sure the button section is visible by pressing the chevron button ( - ) in the top-right of the map.
     
    2 - Once pressed, the map will enter in the insert mode, as illustrated by @@ -86,7 +92,7 @@
    3 - Enter the name of the marker/note to be created.
    4 - Once confirmed, the marker will show up on the map and it will also be @@ -103,11 +109,34 @@
    - +

    Adding a new note using the contextual menu

    +
      +
    1. Right click anywhere on the map, where to place the newly created marker + (and corresponding note).
    2. +
    3. Select Add a marker at this location.
    4. +
    5. Enter the name of the newly created note.
    6. +
    7. The map should be updated with the new marker.
    8. +
    +

    Adding an existing note on note from the note tree

    +
      +
    1. Select the desired note in the Note Tree.
    2. +
    3. Hold the mouse on the note and drag it to the map to the desired location.
    4. +
    5. The map should be updated with the new marker.
    6. +
    +

    This works for:

    +
      +
    • Notes that are not part of the geo map, case in which a clone will + be created.
    • +
    • Notes that are a child of the geo map but not yet positioned on the map.
    • +
    • Notes that are a child of the geo map and also positioned, case in which + the marker will be relocated to the new position.
    • +

    How the location of the markers is stored

    The location of a marker is stored in the #geolocation attribute of the child notes:

    - +

    + +

    This value can be added manually if needed. The value of the attribute is made up of the latitude and longitude separated by a comma.

    Repositioning markers

    @@ -129,18 +158,40 @@
  • Middle-clicking the marker will open the note in a new tab.
  • Right-clicking the marker will open a contextual menu allowing:
      -
    • Opening the note in a new tab, split or window.
    • -
    • Opening the location using an external application (if the operating system - supports it).
    • -
    • Removing the marker from the map, which will remove the #geolocation attribute - of the note. To add it back again, the coordinates have to be manually - added back in.
    • +
    •  
+

Contextual menu

+

It's possible to press the right mouse button to display a contextual + menu.

+
    +
  1. If right-clicking an empty section of the map (not on a marker), it allows + to: +
      +
    1. Displays the latitude and longitude. Clicking this option will copy them + to the clipboard.
    2. +
    3. Open the location using an external application (if the operating system + supports it).
    4. +
    5. Adding a new marker at that location.
    6. +
    +
  2. +
  3. If right-clicking on a marker, it allows to: +
      +
    1. Displays the latitude and longitude. Clicking this option will copy them + to the clipboard.
    2. +
    3. Open the location using an external application (if the operating system + supports it).
    4. +
    5. Open the note in a new tab, split or window.
    6. +
    7. Remove the marker from the map, which will remove the #geolocation attribute + of the note. To add it back again, the coordinates have to be manually + added back in.
    8. +
    +
  4. +

Icon and color of the markers

- image

The markers will have the same icon as the note.

@@ -171,7 +222,7 @@ 1
-
@@ -188,7 +239,7 @@ 2
-
@@ -198,7 +249,7 @@ 3
-
@@ -210,7 +261,6 @@ -

Adding from OpenStreetMap

Similarly to the Google Maps approach:

@@ -231,7 +281,7 @@ 1 - Go to any location on openstreetmap.org and right click to bring up the @@ -240,7 +290,7 @@ 2 - The address will be visible in the top-left of the screen, in the place @@ -251,7 +301,7 @@ 3 - Simply paste the value inside the text box into the #geolocation attribute @@ -260,7 +310,6 @@
-

Adding GPS tracks (.gpx)

Trilium has basic support for displaying GPS tracks on the geo map.

1
-
@@ -294,7 +343,7 @@ class="table" style="width:100%;"> 2
-
@@ -305,7 +354,7 @@ class="table" style="width:100%;"> 3
-
@@ -324,13 +373,23 @@ class="table" style="width:100%;">

If the GPX contains waypoints, they will also be displayed. If they have a name, it is displayed when hovering over it with the mouse.

+

Read-only mode

+

When a map is in read-only all editing features will be disabled such + as:

+
    +
  • The add button in the Floating buttons.
  • +
  • Dragging markers.
  • +
  • Editing from the contextual menu (removing locations or adding new items).
  • +
+

To enable read-only mode simply press the Lock icon from the  + Floating buttons. To disable it, press the button again.

Troubleshooting

-
- -

Grid-like artifacts on the map

+

Grid-like artifacts on the map

This occurs if the application is not at 100% zoom which causes the pixels of the map to not render correctly due to fractional scaling. The only possible solution is to set the UI zoom at 100% (default keyboard shortcut diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Geo Map_image.jpg b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View_image.jpg similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Geo Map_image.jpg rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View_image.jpg diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Geo Map_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View.html similarity index 70% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table.html rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View.html index 10d663aa8..72185c793 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View.html @@ -1,25 +1,25 @@

-

The table view displays information in a grid, where the rows are individual - notes and the columns are Promoted Attributes. + notes and the columns are Promoted Attributes. In addition, values are editable.

Interaction

Creating a new table

-

Right click the Note Tree and +

Right click the Note Tree and select Insert child note and look for the Table item.

Adding columns

-

Each column is a promoted attribute that +

Each column is a promoted attribute that is defined on the Book note. Ideally, the promoted attributes need to be inheritable in order to show up in the child notes.

-

To create a new column, simply press Add new column at the bottom +

To create a new column, simply press Add new column at the bottom of the table.

There are also a few predefined columns:

  • The current item number, identified by the # symbol. This simply counts the note and is affected by sorting.
  • -
  • Note ID, +
  • Note ID, representing the unique ID used internally by Trilium
  • The title of the note.
@@ -28,9 +28,7 @@

To create a new note, press Add new row at the bottom of the table. By default it will try to edit the title of the newly created note.

Alternatively, the note can be created from theNote Tree or - scripting.

+ href="#root/_help_oPVyFC7WL2Lp">Note Tree or scripting.

Editing data

Simply click on a cell within a row to change its value. The change will not only reflect in the table, but also as an attribute of the corresponding @@ -58,7 +56,7 @@

Reordering rows

Notes can be dragged around to change their order. This will also change - the order of the note in the Note Tree.

+ the order of the note in the Note Tree.

Currently, it's possible to reorder notes even if sorting is used, but the result might be inconsistent.

Limitations

@@ -67,7 +65,7 @@
  1. As mentioned previously, the columns of the table are defined as  Promoted Attributes. + class="reference-link" href="#root/_help_OFXdgB2nNk1F">Promoted Attributes.
    1. But only the promoted attributes that are defined at the level of the Book note are actually taken into consideration.
    2. @@ -77,22 +75,23 @@
    3. Hierarchy is not yet supported, so the table will only show the items that are direct children of the Book note.
    4. Multiple labels and relations are not supported. If a Promoted Attributes is - defined with a Multi value specificity, they will be ignored.
    5. + href="#root/_help_OFXdgB2nNk1F">Promoted Attributes is defined + with a Multi value specificity, they will be ignored.

    Use in search

    -

    The table view can be used in a Saved Search by +

    The table view can be used in a Saved Search by adding the #viewType=table attribute.

    Unlike when used in a book, saved searches are not limited to the sub-hierarchy of a note and allows for advanced queries thanks to the power of the  Search.

    + class="reference-link" href="#root/_help_eIg8jdvaoNNd">Search.

    However, there are also some limitations:

    • It's not possible to reorder notes.
    • It's not possible to add a new row.

    Columns are supported, by being defined as Promoted Attributes to - the Saved Search note.

    + href="#root/_help_OFXdgB2nNk1F">Promoted Attributes to the  + Saved Search note.

    Editing is also supported.

    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View_image.png similarity index 100% rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table_image.png rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.html index f07452571..fc684b364 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.html @@ -54,4 +54,7 @@ hide the Mermaid source code and display the diagram preview in full-size. In this case, the read-only mode can be easily toggled on or off via a dedicated button in the Floating buttons area.
  2. +
  3. Geo Map View will + disallow all interaction that would otherwise change the map (dragging + notes, adding new items).
  4. \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/7_Geo Map_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/7_Geo Map_image.png deleted file mode 100644 index 00c5e8cc368ca65d5eb7932105218e502103f5dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124923 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�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 diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index dd69e1440..d5cf0c794 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -3177,6 +3177,27 @@ "value": "bx bx-edit-alt", "isInheritable": false, "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "_optionsTextNotes", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "_optionsCodeNotes", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "81SGnPGMk7Xc", + "isInheritable": false, + "position": 100 } ], "format": "markdown", @@ -3431,7 +3452,7 @@ "0ESUbbAxVnoK", "2FvYrpmOXm29" ], - "title": "Table", + "title": "Table View", "notePosition": 20, "prefix": null, "isExpanded": false, @@ -3439,30 +3460,30 @@ "mime": "text/html", "attributes": [ { - "type": "label", - "name": "iconClass", - "value": "bx bx-table", + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "m1lbrzyKDaRB", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "eIg8jdvaoNNd", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "m1lbrzyKDaRB", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 40 }, @@ -3481,15 +3502,15 @@ "position": 60 }, { - "type": "relation", - "name": "internalLink", - "value": "eIg8jdvaoNNd", + "type": "label", + "name": "iconClass", + "value": "bx bx-table", "isInheritable": false, - "position": 70 + "position": 10 } ], "format": "markdown", - "dataFileName": "Table.md", + "dataFileName": "Table View.md", "attachments": [ { "attachmentId": "vJYUG9fLQ2Pd", @@ -3497,7 +3518,232 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "Table_image.png" + "dataFileName": "Table View_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "81SGnPGMk7Xc", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "0ESUbbAxVnoK", + "81SGnPGMk7Xc" + ], + "title": "Geo Map View", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-map-alt", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KSZ04uQ2D1St", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "0ESUbbAxVnoK", + "isInheritable": false, + "position": 50 + } + ], + "format": "markdown", + "dataFileName": "Geo Map View.md", + "attachments": [ + { + "attachmentId": "1f07O0Z25ZRr", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Geo Map View_image.png" + }, + { + "attachmentId": "3oh61qhNLu7D", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Geo Map View_image.png" + }, + { + "attachmentId": "aCSNn9QlgHFi", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Geo Map View_image.png" + }, + { + "attachmentId": "aCuXZY7WV4li", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Geo Map View_image.png" + }, + { + "attachmentId": "agH6yREFgsoU", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Geo Map View_image.png" + }, + { + "attachmentId": "AHyDUM6R5HeG", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Geo Map View_image.png" + }, + { + "attachmentId": "CcjWLhE3KKfv", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Geo Map View_image.png" + }, + { + "attachmentId": "fQy8R1vxKhwN", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "7_Geo Map View_image.png" + }, + { + "attachmentId": "gJ4Yz80jxcbn", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "8_Geo Map View_image.png" + }, + { + "attachmentId": "I39BinT2gsN9", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Geo Map View_image.png" + }, + { + "attachmentId": "IeXU8SLZU7Oz", + "title": "image.jpg", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Geo Map View_image.jpg" + }, + { + "attachmentId": "Mb9kRm63MxjE", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Geo Map View_image.png" + }, + { + "attachmentId": "Mx2xwNIk76ZS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Geo Map View_image.png" + }, + { + "attachmentId": "oaahbsMRbqd2", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "12_Geo Map View_image.png" + }, + { + "attachmentId": "pGf1p74KKGU4", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "13_Geo Map View_image.png" + }, + { + "attachmentId": "tfa1TRUatWEh", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "14_Geo Map View_image.png" + }, + { + "attachmentId": "tuNZ7Uk9WfX1", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "15_Geo Map View_image.png" + }, + { + "attachmentId": "x6yBLIsY2LSv", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "16_Geo Map View_image.png" + }, + { + "attachmentId": "yJMyBRYA3Kwi", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "17_Geo Map View_image.png" + }, + { + "attachmentId": "ZvTlu9WMd37z", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "18_Geo Map View_image.png" } ] } @@ -7937,201 +8183,6 @@ } ] }, - { - "isClone": false, - "noteId": "81SGnPGMk7Xc", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "81SGnPGMk7Xc" - ], - "title": "Geo Map", - "notePosition": 200, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "XpOYSgsLkTJy", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-map-alt", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Geo Map.md", - "attachments": [ - { - "attachmentId": "1f07O0Z25ZRr", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Geo Map_image.png" - }, - { - "attachmentId": "3oh61qhNLu7D", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Geo Map_image.png" - }, - { - "attachmentId": "aCSNn9QlgHFi", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Geo Map_image.png" - }, - { - "attachmentId": "aCuXZY7WV4li", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Geo Map_image.png" - }, - { - "attachmentId": "agH6yREFgsoU", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Geo Map_image.png" - }, - { - "attachmentId": "AHyDUM6R5HeG", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Geo Map_image.png" - }, - { - "attachmentId": "CcjWLhE3KKfv", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Geo Map_image.png" - }, - { - "attachmentId": "DapDey8gMiFc", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "7_Geo Map_image.png" - }, - { - "attachmentId": "fQy8R1vxKhwN", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "8_Geo Map_image.png" - }, - { - "attachmentId": "gJ4Yz80jxcbn", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "9_Geo Map_image.png" - }, - { - "attachmentId": "I39BinT2gsN9", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "10_Geo Map_image.png" - }, - { - "attachmentId": "IeXU8SLZU7Oz", - "title": "image.jpg", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Geo Map_image.jpg" - }, - { - "attachmentId": "Mb9kRm63MxjE", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "11_Geo Map_image.png" - }, - { - "attachmentId": "Mx2xwNIk76ZS", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "12_Geo Map_image.png" - }, - { - "attachmentId": "oaahbsMRbqd2", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "13_Geo Map_image.png" - }, - { - "attachmentId": "pGf1p74KKGU4", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "14_Geo Map_image.png" - }, - { - "attachmentId": "tfa1TRUatWEh", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "15_Geo Map_image.png" - }, - { - "attachmentId": "x6yBLIsY2LSv", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "16_Geo Map_image.png" - }, - { - "attachmentId": "yJMyBRYA3Kwi", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "17_Geo Map_image.png" - }, - { - "attachmentId": "ZvTlu9WMd37z", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "18_Geo Map_image.png" - } - ] - }, { "isClone": false, "noteId": "W8vYD3Q1zjCR", diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md b/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md index 54233914a..8182e3876 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md +++ b/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md @@ -39,4 +39,4 @@ This is a list of labels that Trilium natively supports. > [!TIP] > Some labels presented here end with a `*`. That means that there are multiple labels with the same prefix, consult the specific page linked in the description of that label for more information. -

    LabelDescription
    disableVersioningDisables automatic creation of Note Revisions for a particular note. Useful for e.g. large, but unimportant notes - e.g. large JS libraries used for scripting.
    versioningLimitLimits the maximum number of Note Revisions for a particular note, overriding the global settings.
    calendarRootMarks the note which should be used as root for Day Notes. Only one should be marked as such.
    archivedHides notes from default search results and dialogs. Archived notes can optionally be hidden in the Note Tree.
    excludeFromExportExcludes this note and its children when exporting.
    run, runOnInstance, runAtHourSee Events.
    disableInclusionScripts with this label won't be included into parent script execution.
    sorted

    Keeps child notes sorted by title alphabetically.

    When given a value, it will sort by the value of another label instead. If one of the child notes doesn't have the specified label, the title will be used for them instead.

    sortDirection

    If sorted is applied, specifies the direction of the sort:

    • ASC, ascending (default)
    • DESC, descending
    sortFoldersFirstIf sorted is applied, folders (notes with children) will be sorted as a group at the top, and the rest will be sorted.
    topIf sorted is applied to the parent note, keeps given note on top in its parent.
    hidePromotedAttributesHide Promoted Attributes on this note. Generally useful when defining inherited attributes, but the parent note doesn't need them.
    readOnlyMarks a note to be always be read-only, if it's a supported note (text, code, mermaid).
    autoReadOnlyDisabledDisables automatic read-only mode for the given note.
    appCssMarks CSS notes which are loaded into the Trilium application and can thus be used to modify Trilium's looks. See Custom app-wide CSS for more info.
    appThemeMarks CSS notes which are full Trilium themes and are thus available in Trilium options. See Theme development for more information.
    appThemeBaseSet to next, next-light, or next-dark to use the corresponding TriliumNext theme (auto, light or dark) as the base for a custom theme, instead of the legacy one. See Customize the Next theme for more information.
    cssClassValue of this label is then added as CSS class to the node representing given note in the Note Tree. This can be useful for advanced theming. Can be used in template notes.
    iconClassvalue of this label is added as a CSS class to the icon on the tree which can help visually distinguish the notes in the tree. Example might be bx bx-home - icons are taken from boxicons. Can be used in template notes.
    pageSizeSpecifies the number of items per page in Note List.
    customRequestHandlerSee Custom Request Handler.
    customResourceProviderSee Custom Resource Providers.
    widgetMarks this note as a custom widget which will be added to the Trilium component tree. See Custom Widgets for more information.
    searchHomeNew search notes will be created as children of this note (see Saved Search).
    workspace and related attributesSee Workspaces.
    inboxdefault inbox location for new notes - when you create a note using new note button in the sidebar, notes will be created as child notes in the note marked as with #inbox label.
    sqlConsoleHomeDefault location of SQL Console notes
    bookmarkedIndicates this note is a bookmark.
    bookmarkFolderNote with this label will appear in bookmarks as folder (allowing access to its children). See Bookmarks for more information.
    share*See the attribute reference in Sharing.
    displayRelations, hideRelationsComma delimited names of relations which should be displayed/hidden in a Relation Map (both the note type and the Note Map (Link map, Tree map) general functionality).
    titleTemplate

    Default title of notes created as children of this note. This value is evaluated as a JavaScript string and thus can be enriched with dynamic content via the injected now and parentNote variables.

    Examples:

    • \({parentNote.getLabel('authorName')}'s literary works
    • Log for \){now.format('YYYY-MM-DD HH:mm:ss')}
    • to mirror the parent's template.

    See Default Note Title for more info.

    templateThis note will appear in the selection of available template when creating new note. See Templates for more information.
    tocControls the display of the Table of contents for a given note. #toc or #toc=show to always display the table of contents, #toc=false to always hide it.
    colordefines color of the note in note tree, links etc. Use any valid CSS color value like 'red' or #a13d5f
    keyboardShortcutDefines a keyboard shortcut which will immediately jump to this note. Example: 'ctrl+alt+e'. Requires frontend reload for the change to take effect.
    keepCurrentHoistingOpening this link won't change hoisting even if the note is not displayable in the current hoisted subtree.
    executeButtonTitle of the button which will execute the current code note
    executeDescriptionLonger description of the current code note displayed together with the execute button
    excludeFromNoteMapNotes with this label will be hidden from the Note Map.
    newNotesOnTopNew notes will be created at the top of the parent note, not on the bottom.
    hideHighlightWidgetHides the Highlights list widget
    hideChildrenOverviewHides the Note List for that particular note.
    printLandscapeWhen exporting to PDF, changes the orientation of the page to landscape instead of portrait.
    printPageSizeWhen exporting to PDF, changes the size of the page. Supported values: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.
    geolocationIndicates the latitude and longitude of a note, to be displayed in a Geo Map.
    calendar:*Defines specific options for the Calendar View.
    viewTypeSets the view of child notes (e.g. grid or list). See Note List for more information.
    \ No newline at end of file +
    LabelDescription
    disableVersioningDisables automatic creation of Note Revisions for a particular note. Useful for e.g. large, but unimportant notes - e.g. large JS libraries used for scripting.
    versioningLimitLimits the maximum number of Note Revisions for a particular note, overriding the global settings.
    calendarRootMarks the note which should be used as root for Day Notes. Only one should be marked as such.
    archivedHides notes from default search results and dialogs. Archived notes can optionally be hidden in the Note Tree.
    excludeFromExportExcludes this note and its children when exporting.
    run, runOnInstance, runAtHourSee Events.
    disableInclusionScripts with this label won't be included into parent script execution.
    sorted

    Keeps child notes sorted by title alphabetically.

    When given a value, it will sort by the value of another label instead. If one of the child notes doesn't have the specified label, the title will be used for them instead.

    sortDirection

    If sorted is applied, specifies the direction of the sort:

    • ASC, ascending (default)
    • DESC, descending
    sortFoldersFirstIf sorted is applied, folders (notes with children) will be sorted as a group at the top, and the rest will be sorted.
    topIf sorted is applied to the parent note, keeps given note on top in its parent.
    hidePromotedAttributesHide Promoted Attributes on this note. Generally useful when defining inherited attributes, but the parent note doesn't need them.
    readOnlyMarks a note to be always be read-only, if it's a supported note (text, code, mermaid).
    autoReadOnlyDisabledDisables automatic read-only mode for the given note.
    appCssMarks CSS notes which are loaded into the Trilium application and can thus be used to modify Trilium's looks. See Custom app-wide CSS for more info.
    appThemeMarks CSS notes which are full Trilium themes and are thus available in Trilium options. See Theme development for more information.
    appThemeBaseSet to next, next-light, or next-dark to use the corresponding TriliumNext theme (auto, light or dark) as the base for a custom theme, instead of the legacy one. See Customize the Next theme for more information.
    cssClassValue of this label is then added as CSS class to the node representing given note in the Note Tree. This can be useful for advanced theming. Can be used in template notes.
    iconClassvalue of this label is added as a CSS class to the icon on the tree which can help visually distinguish the notes in the tree. Example might be bx bx-home - icons are taken from boxicons. Can be used in template notes.
    pageSizeSpecifies the number of items per page in Note List.
    customRequestHandlerSee Custom Request Handler.
    customResourceProviderSee Custom Resource Providers.
    widgetMarks this note as a custom widget which will be added to the Trilium component tree. See Custom Widgets for more information.
    searchHomeNew search notes will be created as children of this note (see Saved Search).
    workspace and related attributesSee Workspaces.
    inboxdefault inbox location for new notes - when you create a note using new note button in the sidebar, notes will be created as child notes in the note marked as with #inbox label.
    sqlConsoleHomeDefault location of SQL Console notes
    bookmarkedIndicates this note is a bookmark.
    bookmarkFolderNote with this label will appear in bookmarks as folder (allowing access to its children). See Bookmarks for more information.
    share*See the attribute reference in Sharing.
    displayRelations, hideRelationsComma delimited names of relations which should be displayed/hidden in a Relation Map (both the note type and the Note Map (Link map, Tree map) general functionality).
    titleTemplate

    Default title of notes created as children of this note. This value is evaluated as a JavaScript string and thus can be enriched with dynamic content via the injected now and parentNote variables.

    Examples:

    • \({parentNote.getLabel('authorName')}'s literary works
    • Log for \){now.format('YYYY-MM-DD HH:mm:ss')}
    • to mirror the parent's template.

    See Default Note Title for more info.

    templateThis note will appear in the selection of available template when creating new note. See Templates for more information.
    tocControls the display of the Table of contents for a given note. #toc or #toc=show to always display the table of contents, #toc=false to always hide it.
    colordefines color of the note in note tree, links etc. Use any valid CSS color value like 'red' or #a13d5f
    keyboardShortcutDefines a keyboard shortcut which will immediately jump to this note. Example: 'ctrl+alt+e'. Requires frontend reload for the change to take effect.
    keepCurrentHoistingOpening this link won't change hoisting even if the note is not displayable in the current hoisted subtree.
    executeButtonTitle of the button which will execute the current code note
    executeDescriptionLonger description of the current code note displayed together with the execute button
    excludeFromNoteMapNotes with this label will be hidden from the Note Map.
    newNotesOnTopNew notes will be created at the top of the parent note, not on the bottom.
    hideHighlightWidgetHides the Highlights list widget
    hideChildrenOverviewHides the Note List for that particular note.
    printLandscapeWhen exporting to PDF, changes the orientation of the page to landscape instead of portrait.
    printPageSizeWhen exporting to PDF, changes the size of the page. Supported values: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.
    geolocationIndicates the latitude and longitude of a note, to be displayed in a Geo Map.
    calendar:*Defines specific options for the Calendar View.
    viewTypeSets the view of child notes (e.g. grid or list). See Note List for more information.
    \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Note source.md b/docs/User Guide/User Guide/Advanced Usage/Note source.md index 26986739e..8338f3477 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Note source.md +++ b/docs/User Guide/User Guide/Advanced Usage/Note source.md @@ -7,7 +7,7 @@ For example: *
    Text notes are represented internally as HTML, using the CKEditor representation. Note that due to the custom plugins, some HTML elements are specific to Trilium only, for example the admonitions. * Code notes are plain text and are represented internally as-is. -* Geo Map notes contain only minimal information (viewport, zoom) as a JSON. +* Geo Map notes contain only minimal information (viewport, zoom) as a JSON. * Canvas notes are represented as JSON, with Trilium's own information alongside with Excalidraw's internal JSON representation format. * Mind Map notes are represented as JSON, with the internal format of MindElixir. diff --git a/docs/User Guide/User Guide/Advanced Usage/Sharing.md b/docs/User Guide/User Guide/Advanced Usage/Sharing.md index 9e03163f4..49542c9b6 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Sharing.md +++ b/docs/User Guide/User Guide/Advanced Usage/Sharing.md @@ -16,7 +16,7 @@ Trilium allows you to share selected notes as **publicly accessible** read-only ### By note type -
     Supported featuresLimitations
    Text
    • Table of contents.
    • Syntax highlight of code blocks, provided a language is selected (does not work if “Auto-detected” is enabled).
    • Rendering for math equations.
    • Including notes is not supported.
    • Inline Mermaid diagrams are not rendered.
    Code
    • Basic support (displaying the contents of the note in a monospace font).
    • No syntax highlight.
    Saved SearchNot supported.
    Relation MapNot supported.
    Note MapNot supported.
    Render NoteNot supported.
    Book
    • The child notes are displayed in a fixed format. 
    • More advanced view types such as the calendar view are not supported.
    Mermaid Diagrams
    • The diagram is displayed as a vector image.
    • No further interaction supported.
    Canvas
    • The diagram is displayed as a vector image.
    • No further interaction supported.
    Web ViewNot supported.
    Mind MapThe diagram is displayed as a vector image.
    • No further interaction supported.
    Geo MapNot supported.
    FileBasic interaction (downloading the file).
    • No further interaction supported.
    +
     Supported featuresLimitations
    Text
    • Table of contents.
    • Syntax highlight of code blocks, provided a language is selected (does not work if “Auto-detected” is enabled).
    • Rendering for math equations.
    • Including notes is not supported.
    • Inline Mermaid diagrams are not rendered.
    Code
    • Basic support (displaying the contents of the note in a monospace font).
    • No syntax highlight.
    Saved SearchNot supported.
    Relation MapNot supported.
    Note MapNot supported.
    Render NoteNot supported.
    Book
    • The child notes are displayed in a fixed format. 
    • More advanced view types such as the calendar view are not supported.
    Mermaid Diagrams
    • The diagram is displayed as a vector image.
    • No further interaction supported.
    Canvas
    • The diagram is displayed as a vector image.
    • No further interaction supported.
    Web ViewNot supported.
    Mind MapThe diagram is displayed as a vector image.
    • No further interaction supported.
    Geo MapNot supported.
    FileBasic interaction (downloading the file).
    • No further interaction supported.
    While the sharing feature is powerful, it has some limitations: diff --git a/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md b/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md index ae773acca..bcf692d0e 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md +++ b/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md @@ -1,5 +1,5 @@ # Leaflet -Leaflet is the library behind [Geo map](../../Note%20Types/Geo%20Map.md) notes. +Leaflet is the library behind [Geo map](../../Basic%20Concepts%20and%20Features/Notes/Note%20List/Geo%20Map%20View.md) notes. ## Plugins diff --git a/docs/User Guide/User Guide/Note Types/11_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/10_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/11_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/10_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/12_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/11_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/12_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/11_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/13_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/12_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/13_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/12_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/14_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/13_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/14_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/13_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/15_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/14_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/15_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/14_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/15_Geo Map View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/15_Geo Map View_image.png new file mode 100644 index 0000000000000000000000000000000000000000..72dbb9861764372f6d6afd5feea9d9345f136938 GIT binary patch literal 44769 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

    _u51#I!m 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 Nv^5OWD^+bH{|}6Cw`c$W literal 0 HcmV?d00001 diff --git a/docs/User Guide/User Guide/Note Types/16_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/16_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/16_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/16_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/17_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/17_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/17_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/17_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/18_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/18_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/18_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/18_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/1_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/1_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/1_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/1_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/2_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/2_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/2_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/2_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/3_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/3_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/3_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/3_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/4_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/4_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/4_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/4_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/5_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/5_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/5_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/5_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/6_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/6_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/6_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/6_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/8_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/7_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/8_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/7_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/9_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/8_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/9_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/8_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Note Types/10_Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/9_Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/10_Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/9_Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View.md new file mode 100644 index 000000000..05bf48662 --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View.md @@ -0,0 +1,133 @@ +# Geo Map View +> [!IMPORTANT] +> Starting with Trilium v0.97.0, the geo map has been converted from a standalone [note type](../../../Note%20Types.md) to a type of view for the Note List.  + +

    + +This note type displays the children notes on a geographical map, based on an attribute. It is also possible to add new notes at a specific location using the built-in interface. + +## Creating a new geo map + +
       
    1
    Right click on any note on the note tree and select Insert child noteGeo Map (beta).
    2
    By default the map will be empty and will show the entire world.
    + +## Repositioning the map + +* Click and drag the map in order to move across the map. +* Use the mouse wheel, two-finger gesture on a touchpad or the +/- buttons on the top-left to adjust the zoom. + +The position on the map and the zoom are saved inside the map note and restored when visiting again the note. + +## Adding a marker using the map + +### Adding a new note using the plus button + +
       
    1To create a marker, first navigate to the desired point on the map. Then press the button in the Floating buttons (top-right) area. 

    If the button is not visible, make sure the button section is visible by pressing the chevron button () in the top-right of the map.
     
    2Once pressed, the map will enter in the insert mode, as illustrated by the notification.    

    Simply click the point on the map where to place the marker, or the Escape key to cancel.
    3Enter the name of the marker/note to be created.
    4Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map.
    + +### Adding a new note using the contextual menu + +1. Right click anywhere on the map, where to place the newly created marker (and corresponding note). +2. Select _Add a marker at this location_. +3. Enter the name of the newly created note. +4. The map should be updated with the new marker. + +### Adding an existing note on note from the note tree + +1. Select the desired note in the Note Tree. +2. Hold the mouse on the note and drag it to the map to the desired location. +3. The map should be updated with the new marker. + +This works for: + +* Notes that are not part of the geo map, case in which a [clone](../Cloning%20Notes.md) will be created. +* Notes that are a child of the geo map but not yet positioned on the map. +* Notes that are a child of the geo map and also positioned, case in which the marker will be relocated to the new position. + +## How the location of the markers is stored + +The location of a marker is stored in the `#geolocation` attribute of the child notes: + + + +This value can be added manually if needed. The value of the attribute is made up of the latitude and longitude separated by a comma. + +## Repositioning markers + +It's possible to reposition existing markers by simply drag and dropping them to the new destination. + +As soon as the mouse is released, the new position is saved. + +If moved by mistake, there is currently no way to undo the change. If the mouse was not yet released, it's possible to force a refresh of the page (Ctrl+R ) to cancel it. + +## Interaction with the markers + +* Hovering over a marker will display the content of the note it belongs to. + * Clicking on the note title in the tooltip will navigate to the note in the current view. +* Middle-clicking the marker will open the note in a new tab. +* Right-clicking the marker will open a contextual menu allowing: + +## Contextual menu + +It's possible to press the right mouse button to display a contextual menu. + +1. If right-clicking an empty section of the map (not on a marker), it allows to: + 1. Displays the latitude and longitude. Clicking this option will copy them to the clipboard. + 2. Open the location using an external application (if the operating system supports it). + 3. Adding a new marker at that location. +2. If right-clicking on a marker, it allows to: + 1. Displays the latitude and longitude. Clicking this option will copy them to the clipboard. + 2. Open the location using an external application (if the operating system supports it). + 3. Open the note in a new tab, split or window. + 4. Remove the marker from the map, which will remove the `#geolocation` attribute of the note. To add it back again, the coordinates have to be manually added back in. + +## Icon and color of the markers + +
    image
    + +The markers will have the same icon as the note. + +It's possible to add a custom color to a marker by assigning them a `#color` attribute such as `#color=green`. + +## Adding the coordinates manually + +In a nutshell, create a child note and set the `#geolocation` attribute to the coordinates. + +The value of the attribute is made up of the latitude and longitude separated by a comma. + +### Adding from Google Maps + +
       
    1
    Go to Google Maps on the web and look for a desired location, right click on it and a context menu will show up.    

    Simply click on the first item displaying the coordinates and they will be copied to clipboard.    

    Then paste the value inside the text box into the #geolocation attribute of a child note of the map (don't forget to surround the value with a " character).
    2
    In Trilium, create a child note under the map.
    3
    And then go to Owned Attributes and type #geolocation=", then paste from the clipboard as-is and then add the ending " character. Press Enter to confirm and the map should now be updated to contain the new note.
    + +### Adding from OpenStreetMap + +Similarly to the Google Maps approach: + +
       
    1Go to any location on openstreetmap.org and right click to bring up the context menu. Select the “Show address” item.
    2The address will be visible in the top-left of the screen, in the place of the search bar.    

    Select the coordinates and copy them into the clipboard.
    3Simply paste the value inside the text box into the #geolocation attribute of a child note of the map and then it should be displayed on the map.
    + +## Adding GPS tracks (.gpx) + +Trilium has basic support for displaying GPS tracks on the geo map. + +
       
    1
    To add a track, simply drag & drop a .gpx file inside the geo map in the note tree.
    2
    In order for the file to be recognized as a GPS track, it needs to show up as application/gpx+xml in the File type field.
    3
    When going back to the map, the track should now be visible.    

    The start and end points of the track are indicated by the two blue markers.
    + +> [!NOTE] +> The starting point of the track will be displayed as a marker, with the name of the note underneath. The start marker will also respect the icon and the `color` of the note. The end marker is displayed with a distinct icon. +> +> If the GPX contains waypoints, they will also be displayed. If they have a name, it is displayed when hovering over it with the mouse. + +## Read-only mode + +When a map is in read-only all editing features will be disabled such as: + +* The add button in the Floating buttons. +* Dragging markers. +* Editing from the contextual menu (removing locations or adding new items). + +To enable read-only mode simply press the _Lock_ icon from the Floating buttons. To disable it, press the button again. + +## Troubleshooting + +
    + +### Grid-like artifacts on the map + +This occurs if the application is not at 100% zoom which causes the pixels of the map to not render correctly due to fractional scaling. The only possible solution is to set the UI zoom at 100% (default keyboard shortcut is Ctrl+0). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Geo Map_image.jpg b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View_image.jpg similarity index 100% rename from docs/User Guide/User Guide/Note Types/Geo Map_image.jpg rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View_image.jpg diff --git a/docs/User Guide/User Guide/Note Types/Geo Map_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Geo Map_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Geo Map View_image.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View.md similarity index 98% rename from docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table.md rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View.md index 26e33353a..3a0dc0e8f 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View.md @@ -1,5 +1,5 @@ -# Table -
    +# Table View +
    The table view displays information in a grid, where the rows are individual notes and the columns are Promoted Attributes. In addition, values are editable. diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View_image.png similarity index 100% rename from docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Table View_image.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.md index 7811c5d6c..38ab3f584 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.md @@ -39,4 +39,5 @@ When pressed, the note will become editable but will become read-only again afte Some note types have a special behavior based on whether the read-only mode is enabled: -* Mermaid Diagrams will hide the Mermaid source code and display the diagram preview in full-size. In this case, the read-only mode can be easily toggled on or off via a dedicated button in the Floating buttons area. \ No newline at end of file +* Mermaid Diagrams will hide the Mermaid source code and display the diagram preview in full-size. In this case, the read-only mode can be easily toggled on or off via a dedicated button in the Floating buttons area. +* Geo Map View will disallow all interaction that would otherwise change the map (dragging notes, adding new items). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types.md b/docs/User Guide/User Guide/Note Types.md index 71e510a11..c5870964c 100644 --- a/docs/User Guide/User Guide/Note Types.md +++ b/docs/User Guide/User Guide/Note Types.md @@ -25,4 +25,4 @@ It is possible to change the type of a note after it has been created via the _B The following note types are supported by Trilium: -
    Note TypeDescription
    TextThe default note type, which allows for rich text formatting, images, admonitions and right-to-left support.
    CodeUses a mono-space font and can be used to store larger chunks of code or plain text than a text note, and has better syntax highlighting.
    Saved SearchStores the information about a search (the search text, criteria, etc.) for later use. Can be used for quick filtering of a large amount of notes, for example. The search can easily be triggered.
    Relation MapAllows easy creation of notes and relations between them. Can be used for mainly relational data such as a family tree.
    Note MapDisplays the relationships between the notes, whether via relations or their hierarchical structure.
    Render NoteUsed in Scripting, it displays the HTML content of another note. This allows displaying any kind of content, provided there is a script behind it to generate it.
    Book

    Displays the children of the note either as a grid, a list, or for a more specialized case: a calendar.

    Generally useful for easy reading of short notes.

    Mermaid DiagramsDisplays diagrams such as bar charts, flow charts, state diagrams, etc. Requires a bit of technical knowledge since the diagrams are written in a specialized format.
    CanvasAllows easy drawing of sketches, diagrams, handwritten content. Uses the same technology behind excalidraw.com.
    Web ViewDisplays the content of an external web page, similar to a browser.
    Mind MapEasy for brainstorming ideas, by placing them in a hierarchical layout.
    Geo MapDisplays the children of the note as a geographical map, one use-case would be to plan vacations. It even has basic support for tracks. Notes can also be created from it.
    FileRepresents an uploaded file such as PDFs, images, video or audio files.
    \ No newline at end of file +
    Note TypeDescription
    TextThe default note type, which allows for rich text formatting, images, admonitions and right-to-left support.
    CodeUses a mono-space font and can be used to store larger chunks of code or plain text than a text note, and has better syntax highlighting.
    Saved SearchStores the information about a search (the search text, criteria, etc.) for later use. Can be used for quick filtering of a large amount of notes, for example. The search can easily be triggered.
    Relation MapAllows easy creation of notes and relations between them. Can be used for mainly relational data such as a family tree.
    Note MapDisplays the relationships between the notes, whether via relations or their hierarchical structure.
    Render NoteUsed in Scripting, it displays the HTML content of another note. This allows displaying any kind of content, provided there is a script behind it to generate it.
    Book

    Displays the children of the note either as a grid, a list, or for a more specialized case: a calendar.

    Generally useful for easy reading of short notes.

    Mermaid DiagramsDisplays diagrams such as bar charts, flow charts, state diagrams, etc. Requires a bit of technical knowledge since the diagrams are written in a specialized format.
    CanvasAllows easy drawing of sketches, diagrams, handwritten content. Uses the same technology behind excalidraw.com.
    Web ViewDisplays the content of an external web page, similar to a browser.
    Mind MapEasy for brainstorming ideas, by placing them in a hierarchical layout.
    Geo MapDisplays the children of the note as a geographical map, one use-case would be to plan vacations. It even has basic support for tracks. Notes can also be created from it.
    FileRepresents an uploaded file such as PDFs, images, video or audio files.
    \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/7_Geo Map_image.png b/docs/User Guide/User Guide/Note Types/7_Geo Map_image.png deleted file mode 100644 index 00c5e8cc368ca65d5eb7932105218e502103f5dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124923 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�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 diff --git a/docs/User Guide/User Guide/Note Types/Geo Map.md b/docs/User Guide/User Guide/Note Types/Geo Map.md deleted file mode 100644 index 78237cad3..000000000 --- a/docs/User Guide/User Guide/Note Types/Geo Map.md +++ /dev/null @@ -1,88 +0,0 @@ -# Geo Map -

    - -This note type displays the children notes on a geographical map, based on an attribute. It is also possible to add new notes at a specific location using the built-in interface. - -## Creating a new geo map - -
       
    1
    Right click on any note on the note tree and select Insert child noteGeo Map (beta).
    2
    By default the map will be empty and will show the entire world.
    - -## Repositioning the map - -* Click and drag the map in order to move across the map. -* Use the mouse wheel, two-finger gesture on a touchpad or the +/- buttons on the top-left to adjust the zoom. - -The position on the map and the zoom are saved inside the map note and restored when visiting again the note. - -## Adding a marker using the map - -
       
    1To create a marker, first navigate to the desired point on the map. Then press the button in the Floating buttons (top-right) area. 

    If the button is not visible, make sure the button section is visible by pressing the chevron button () in the top-right of the map.
     
    2Once pressed, the map will enter in the insert mode, as illustrated by the notification.    

    Simply click the point on the map where to place the marker, or the Escape key to cancel.
    3Enter the name of the marker/note to be created.
    4Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map.
    - -## How the location of the markers is stored - -The location of a marker is stored in the `#geolocation` attribute of the child notes: - - - -This value can be added manually if needed. The value of the attribute is made up of the latitude and longitude separated by a comma. - -## Repositioning markers - -It's possible to reposition existing markers by simply drag and dropping them to the new destination. - -As soon as the mouse is released, the new position is saved. - -If moved by mistake, there is currently no way to undo the change. If the mouse was not yet released, it's possible to force a refresh of the page (Ctrl+R ) to cancel it. - -## Interaction with the markers - -* Hovering over a marker will display the content of the note it belongs to. - * Clicking on the note title in the tooltip will navigate to the note in the current view. -* Middle-clicking the marker will open the note in a new tab. -* Right-clicking the marker will open a contextual menu allowing: - * Opening the note in a new tab, split or window. - * Opening the location using an external application (if the operating system supports it). - * Removing the marker from the map, which will remove the `#geolocation` attribute of the note. To add it back again, the coordinates have to be manually added back in. - -## Icon and color of the markers - -
    image
    - -The markers will have the same icon as the note. - -It's possible to add a custom color to a marker by assigning them a `#color` attribute such as `#color=green`. - -## Adding the coordinates manually - -In a nutshell, create a child note and set the `#geolocation` attribute to the coordinates. - -The value of the attribute is made up of the latitude and longitude separated by a comma. - -### Adding from Google Maps - -
       
    1
    Go to Google Maps on the web and look for a desired location, right click on it and a context menu will show up.    

    Simply click on the first item displaying the coordinates and they will be copied to clipboard.    

    Then paste the value inside the text box into the #geolocation attribute of a child note of the map (don't forget to surround the value with a " character).
    2
    In Trilium, create a child note under the map.
    3
    And then go to Owned Attributes and type #geolocation=", then paste from the clipboard as-is and then add the ending " character. Press Enter to confirm and the map should now be updated to contain the new note.
    - -### Adding from OpenStreetMap - -Similarly to the Google Maps approach: - -
       
    1Go to any location on openstreetmap.org and right click to bring up the context menu. Select the “Show address” item.
    2The address will be visible in the top-left of the screen, in the place of the search bar.    

    Select the coordinates and copy them into the clipboard.
    3Simply paste the value inside the text box into the #geolocation attribute of a child note of the map and then it should be displayed on the map.
    - -## Adding GPS tracks (.gpx) - -Trilium has basic support for displaying GPS tracks on the geo map. - -
       
    1
    To add a track, simply drag & drop a .gpx file inside the geo map in the note tree.
    2
    In order for the file to be recognized as a GPS track, it needs to show up as application/gpx+xml in the File type field.
    3
    When going back to the map, the track should now be visible.    

    The start and end points of the track are indicated by the two blue markers.
    - -> [!NOTE] -> The starting point of the track will be displayed as a marker, with the name of the note underneath. The start marker will also respect the icon and the `color` of the note. The end marker is displayed with a distinct icon. -> -> If the GPX contains waypoints, they will also be displayed. If they have a name, it is displayed when hovering over it with the mouse. - -## Troubleshooting - -
    - -### Grid-like artifacts on the map - -This occurs if the application is not at 100% zoom which causes the pixels of the map to not render correctly due to fractional scaling. The only possible solution is to set the UI zoom at 100% (default keyboard shortcut is Ctrl+0). \ No newline at end of file From ce9010ff13287f0e3adeb5eebd7c5f8470db8327 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 20:04:17 +0300 Subject: [PATCH 37/38] chore(client): add some documentation --- apps/client/src/services/link.ts | 8 ++++++++ apps/client/src/widgets/note_tree.ts | 3 +++ 2 files changed, 11 insertions(+) diff --git a/apps/client/src/services/link.ts b/apps/client/src/services/link.ts index 107a9c9e3..a16f0bccf 100644 --- a/apps/client/src/services/link.ts +++ b/apps/client/src/services/link.ts @@ -277,6 +277,14 @@ function goToLink(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent) { return goToLinkExt(evt, hrefLink, $link); } +/** + * Handles navigation to a link, which can be an internal note path (e.g., `#root/1234`) or an external URL (e.g., `https://example.com`). + * + * @param evt the event that triggered the link navigation, or `null` if the link was clicked programmatically. Used to determine if the link should be opened in a new tab/window, based on the button presses. + * @param hrefLink the link to navigate to, which can be a note path (e.g., `#root/1234`) or an external URL with any supported protocol (e.g., `https://example.com`). + * @param $link the jQuery element of the link that was clicked, used to determine if the link is an anchor link (e.g., `#fn1` or `#fnref1`) and to handle it accordingly. + * @returns `true` if the link was handled (i.e., the element was found and scrolled to), or a falsy value otherwise. + */ function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent | React.PointerEvent | null, hrefLink: string | undefined, $link?: JQuery | null) { if (hrefLink?.startsWith("data:")) { return true; diff --git a/apps/client/src/widgets/note_tree.ts b/apps/client/src/widgets/note_tree.ts index ea6e50325..1a9bb5ce6 100644 --- a/apps/client/src/widgets/note_tree.ts +++ b/apps/client/src/widgets/note_tree.ts @@ -186,6 +186,9 @@ interface RefreshContext { noteIdsToReload: Set; } +/** + * The information contained within a drag event. + */ export interface DragData { noteId: string; branchId: string; From ed4dc30a6eca72c7e45473964b55b6e04212afd0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 7 Jul 2025 20:07:04 +0300 Subject: [PATCH 38/38] refator(client): type error --- apps/client/src/widgets/note_list.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/client/src/widgets/note_list.ts b/apps/client/src/widgets/note_list.ts index 54ba1a395..afc31a66a 100644 --- a/apps/client/src/widgets/note_list.ts +++ b/apps/client/src/widgets/note_list.ts @@ -185,6 +185,8 @@ export default class NoteListWidget extends NoteContextAwareWidget { return ret; } } + + return null; } }