mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	feat(geo_map): add option to open location
This commit is contained in:
		@@ -23,6 +23,7 @@ import type LoadResults from "../services/load_results.js";
 | 
				
			|||||||
import type { Attribute } from "../services/attribute_parser.js";
 | 
					import type { Attribute } from "../services/attribute_parser.js";
 | 
				
			||||||
import type NoteTreeWidget from "../widgets/note_tree.js";
 | 
					import type NoteTreeWidget from "../widgets/note_tree.js";
 | 
				
			||||||
import type { default as NoteContext, GetTextEditorCallback } from "./note_context.js";
 | 
					import type { default as NoteContext, GetTextEditorCallback } from "./note_context.js";
 | 
				
			||||||
 | 
					import type { ContextMenuEvent } from "../menus/context_menu.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface Layout {
 | 
					interface Layout {
 | 
				
			||||||
    getRootWidget: (appContext: AppContext) => RootWidget;
 | 
					    getRootWidget: (appContext: AppContext) => RootWidget;
 | 
				
			||||||
@@ -195,9 +196,8 @@ export type CommandMappings = {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Geomap
 | 
					    // Geomap
 | 
				
			||||||
    deleteFromMap: {
 | 
					    deleteFromMap: { noteId: string },
 | 
				
			||||||
        noteId: string;
 | 
					    openGeoLocation: { noteId: string, event: JQuery.MouseDownEvent }
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type EventMappings = {
 | 
					type EventMappings = {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ function openContextMenu(notePath: string, e: ContextMenuEvent, viewScope: ViewS
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function getItems(): MenuItem<any>[] {
 | 
					function getItems(): MenuItem<CommandNames>[] {
 | 
				
			||||||
    return [
 | 
					    return [
 | 
				
			||||||
        { title: t("link_context_menu.open_note_in_new_tab"), command: "openNoteInNewTab", uiIcon: "bx bx-link-external" },
 | 
					        { title: t("link_context_menu.open_note_in_new_tab"), command: "openNoteInNewTab", uiIcon: "bx bx-link-external" },
 | 
				
			||||||
        { title: t("link_context_menu.open_note_in_new_split"), command: "openNoteInNewSplit", uiIcon: "bx bx-dock-right" },
 | 
					        { title: t("link_context_menu.open_note_in_new_split"), command: "openNoteInNewSplit", uiIcon: "bx bx-dock-right" },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -234,7 +234,7 @@ function goToLink(evt: MouseEvent | JQuery.ClickEvent) {
 | 
				
			|||||||
    return goToLinkExt(evt, hrefLink, $link);
 | 
					    return goToLinkExt(evt, hrefLink, $link);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | React.PointerEvent<HTMLCanvasElement>, hrefLink: string | undefined, $link: JQuery<HTMLElement> | null) {
 | 
					function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent | React.PointerEvent<HTMLCanvasElement>, hrefLink: string | undefined, $link?: JQuery<HTMLElement> | null) {
 | 
				
			||||||
    if (hrefLink?.startsWith("data:")) {
 | 
					    if (hrefLink?.startsWith("data:")) {
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,7 @@ import { t } from "../../services/i18n.js";
 | 
				
			|||||||
import attributes from "../../services/attributes.js";
 | 
					import attributes from "../../services/attributes.js";
 | 
				
			||||||
import asset_path from "../../../../services/asset_path.js";
 | 
					import asset_path from "../../../../services/asset_path.js";
 | 
				
			||||||
import openContextMenu from "./geo_map_context_menu.js";
 | 
					import openContextMenu from "./geo_map_context_menu.js";
 | 
				
			||||||
 | 
					import link from "../../services/link.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const TPL = `\
 | 
					const TPL = `\
 | 
				
			||||||
<div class="note-detail-geo-map note-detail-printable">
 | 
					<div class="note-detail-geo-map note-detail-printable">
 | 
				
			||||||
@@ -294,6 +295,17 @@ export default class GeoMapTypeWidget extends TypeWidget {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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">) {
 | 
					    deleteFromMapEvent({ noteId }: EventData<"deleteFromMap">) {
 | 
				
			||||||
        this.moveMarker(noteId, null);
 | 
					        this.moveMarker(noteId, null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,15 +9,21 @@ export default function openContextMenu(noteId: string, e: ContextMenuEvent) {
 | 
				
			|||||||
        y: e.pageY,
 | 
					        y: e.pageY,
 | 
				
			||||||
        items: [
 | 
					        items: [
 | 
				
			||||||
            ...linkContextMenu.getItems(),
 | 
					            ...linkContextMenu.getItems(),
 | 
				
			||||||
 | 
					            { title: "Open location", command: "openGeoLocation", uiIcon: "bx bx-map-alt" },
 | 
				
			||||||
            { title: "----" },
 | 
					            { title: "----" },
 | 
				
			||||||
            { title: "Remove from map", command: "deleteFromMap", uiIcon: "bx bx-trash" }
 | 
					            { title: "Remove from map", command: "deleteFromMap", uiIcon: "bx bx-trash" }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        selectMenuItemHandler: ({ command }) => {
 | 
					        selectMenuItemHandler: ({ command }, e) => {
 | 
				
			||||||
            if (command === "deleteFromMap") {
 | 
					            if (command === "deleteFromMap") {
 | 
				
			||||||
                appContext.triggerCommand(command, { noteId });
 | 
					                appContext.triggerCommand(command, { noteId });
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (command === "openGeoLocation") {
 | 
				
			||||||
 | 
					                appContext.triggerCommand(command, { noteId, event: e });
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Pass the events to the link context menu
 | 
					            // Pass the events to the link context menu
 | 
				
			||||||
            linkContextMenu.handleLinkContextMenuItem(command, noteId);
 | 
					            linkContextMenu.handleLinkContextMenuItem(command, noteId);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user