From 56fb51e6b85de5c2db64410571a4018883eb06e2 Mon Sep 17 00:00:00 2001 From: nocnico Date: Thu, 22 May 2025 17:40:36 +0200 Subject: [PATCH] Fix missing Address, rename Btns, add copy coords #5 --- .../app/_components/map/ContextMenu.tsx | 166 ++++++------------ 1 file changed, 49 insertions(+), 117 deletions(-) diff --git a/apps/dispatch/app/_components/map/ContextMenu.tsx b/apps/dispatch/app/_components/map/ContextMenu.tsx index 173e3b99..287a9fd6 100644 --- a/apps/dispatch/app/_components/map/ContextMenu.tsx +++ b/apps/dispatch/app/_components/map/ContextMenu.tsx @@ -1,28 +1,25 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { OSMWay } from "@repo/db"; +import { useDispatchConnectionStore } from "_store/dispatch/connectionStore"; import { useMapStore } from "_store/mapStore"; import { usePannelStore } from "_store/pannelStore"; -import { - MapPin, - MapPinned, - Radius, - Ruler, - Search, - RulerDimensionLine, - Scan, -} from "lucide-react"; +import { MapPin, MapPinned, Radius, Ruler, Search, RulerDimensionLine, Scan } from "lucide-react"; import { useEffect, useState } from "react"; +import toast from "react-hot-toast"; import { Popup, useMap } from "react-leaflet"; export const ContextMenu = () => { const map = useMap(); - const { contextMenu, setContextMenu, setSearchElements, setSearchPopup } = - useMapStore(); - const { setMissionFormValues, setOpen } = usePannelStore((state) => state); + const { contextMenu, setContextMenu, setSearchElements, setSearchPopup } = useMapStore(); + const { missionFormValues, setMissionFormValues, setOpen, isOpen } = usePannelStore( + (state) => state, + ); const [showRulerOptions, setShowRulerOptions] = useState(false); const [rulerHover, setRulerHover] = useState(false); const [rulerOptionsHover, setRulerOptionsHover] = useState(false); + const dispatcherConnected = useDispatchConnectionStore((s) => s.status) === "connected"; + useEffect(() => { setShowRulerOptions(rulerHover || rulerOptionsHover); }, [rulerHover, rulerOptionsHover]); @@ -45,7 +42,9 @@ export const ContextMenu = () => { }; }, [map, contextMenu, setContextMenu, setSearchPopup]); - if (!contextMenu) return null; + if (!contextMenu || !dispatcherConnected) return null; + + const einsatzBtnText = missionFormValues && isOpen ? "Position übernehmen" : "Einsatz erstellen"; const addOSMobjects = async () => { const res = await fetch( @@ -67,9 +66,7 @@ export const ContextMenu = () => { return { wayID: e.id, nodes: e.nodes.map((nodeId: string) => { - const node = data.elements.find( - (element: any) => element.id === nodeId, - ); + const node = data.elements.find((element: any) => element.id === nodeId); return { lat: node.lat, lon: node.lon, @@ -100,45 +97,44 @@ export const ContextMenu = () => { {/* Top Button */}