From 792c4d5cb535a8f40c5e7526835a1bb824f459c8 Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Thu, 24 Jul 2025 14:31:34 -0700 Subject: [PATCH] resolves #91 --- apps/dispatch/app/_components/SmartPopup.tsx | 7 ++-- .../app/_components/map/AircraftMarker.tsx | 4 +- .../app/_components/map/ContextMenu.tsx | 41 +++++++++++-------- .../app/_components/map/MissionMarkers.tsx | 31 ++++++++++++-- .../map/_components/MarkerCluster.tsx | 18 ++++---- 5 files changed, 68 insertions(+), 33 deletions(-) diff --git a/apps/dispatch/app/_components/SmartPopup.tsx b/apps/dispatch/app/_components/SmartPopup.tsx index 25075986..1aff1840 100644 --- a/apps/dispatch/app/_components/SmartPopup.tsx +++ b/apps/dispatch/app/_components/SmartPopup.tsx @@ -113,6 +113,7 @@ export const SmartPopup = ( ); const handleConflict = useCallback(() => { + console.log("handleConflict in smartMarker", id, options); const newAnchor = calculateAnchor(id, "popup", options); setAnchor(newAnchor); }, [id, options]); @@ -139,10 +140,10 @@ export const SmartPopup = (
@@ -150,7 +151,7 @@ export const SmartPopup = ( data-id={id} id={`popup-domain-${id}`} className={cn( - "map-collision absolute w-[200%] h-[200%] top-0 left-0 transform pointer-events-none", + "map-collision pointer-events-none absolute left-0 top-0 h-[200%] w-[200%] transform", anchor.includes("left") && "-translate-x-1/2", anchor.includes("top") && "-translate-y-1/2", )} diff --git a/apps/dispatch/app/_components/map/AircraftMarker.tsx b/apps/dispatch/app/_components/map/AircraftMarker.tsx index 3876e8e4..33d64867 100644 --- a/apps/dispatch/app/_components/map/AircraftMarker.tsx +++ b/apps/dispatch/app/_components/map/AircraftMarker.tsx @@ -272,7 +272,9 @@ const AircraftMarker = ({ aircraft }: { aircraft: ConnectedAircraft & { Station: ); const handleConflict = useCallback(() => { - const newAnchor = calculateAnchor(`aircraft-${aircraft.id}`, "marker"); + const newAnchor = calculateAnchor(`aircraft-${aircraft.id}`, "marker", { + ignoreCluster: true, + }); setAnchor(newAnchor); }, [aircraft.id]); diff --git a/apps/dispatch/app/_components/map/ContextMenu.tsx b/apps/dispatch/app/_components/map/ContextMenu.tsx index fa76c88f..962286cc 100644 --- a/apps/dispatch/app/_components/map/ContextMenu.tsx +++ b/apps/dispatch/app/_components/map/ContextMenu.tsx @@ -20,9 +20,12 @@ export const ContextMenu = () => { setSearchPopup, toggleSearchElementSelection, } = useMapStore(); - const { missionFormValues, setMissionFormValues, setOpen, isOpen } = usePannelStore( - (state) => state, - ); + const { + missionFormValues, + setMissionFormValues, + setOpen, + isOpen: isPannelOpen, + } = usePannelStore((state) => state); const [showRulerOptions, setShowRulerOptions] = useState(false); const [rulerHover, setRulerHover] = useState(false); const [rulerOptionsHover, setRulerOptionsHover] = useState(false); @@ -53,7 +56,8 @@ export const ContextMenu = () => { if (!contextMenu || !dispatcherConnected) return null; - const missionBtnText = missionFormValues && isOpen ? "Position übernehmen" : "Einsatz erstellen"; + const missionBtnText = + missionFormValues && isPannelOpen ? "Position übernehmen" : "Einsatz erstellen"; const addOSMobjects = async (ignorePreviosSelected?: boolean) => { const res = await fetch( @@ -101,13 +105,13 @@ export const ContextMenu = () => { autoPan={false} >
-
+
{/* Top Button */} {/* Left Button */} {/* Bottom Button */} {/* Right Button (original Search button) */}
- ${mission.missionKeywordAbbreviation} ${mission.missionKeywordName} + ${mission.missionKeywordAbbreviation} ${options.hideDetailedKeyword ? "" : mission.missionKeywordName}
{ selectedStation, } = usePilotConnectionStore((state) => state); + const { data: aircrafts = [] } = useQuery({ + queryKey: ["aircrafts"], + queryFn: () => getConnectedAircraftsAPI(), + refetchInterval: 10_000, + }); const { data: missions = [] } = useQuery({ queryKey: ["missions"], queryFn: () => @@ -426,7 +441,15 @@ export const MissionLayer = () => { return ( <> {filteredMissions.map((mission) => { - return ; + return ( + 10, + }} + /> + ); })} ); diff --git a/apps/dispatch/app/_components/map/_components/MarkerCluster.tsx b/apps/dispatch/app/_components/map/_components/MarkerCluster.tsx index a8a342a1..6b7ce508 100644 --- a/apps/dispatch/app/_components/map/_components/MarkerCluster.tsx +++ b/apps/dispatch/app/_components/map/_components/MarkerCluster.tsx @@ -42,10 +42,10 @@ const PopupContent = ({ return ( <> -
+
(
{aircraft.fmsStatus} - {aircraft.Station.bosCallsign} + + {aircraft.Station.bosCallsign.length > 15 + ? aircraft.Station.locationStateShort + : aircraft.Station.bosCallsign} +
))}
@@ -299,7 +303,7 @@ export const MarkerCluster = () => { position={[c.lat, c.lng]} autoPan={false} autoClose={false} - className="w-[202px]" + className="min-w-fit" >