diff --git a/.prettierrc b/.prettierrc index cf5eb531..28e2d060 100644 --- a/.prettierrc +++ b/.prettierrc @@ -2,5 +2,6 @@ "tabWidth": 2, "useTabs": true, "printWidth": 100, - "singleQuote": false + "singleQuote": false, + "plugins": ["prettier-plugin-tailwindcss"] } diff --git a/apps/dispatch/app/(app)/dispatch/page.tsx b/apps/dispatch/app/(app)/dispatch/page.tsx index af5c8045..705cb986 100644 --- a/apps/dispatch/app/(app)/dispatch/page.tsx +++ b/apps/dispatch/app/(app)/dispatch/page.tsx @@ -15,15 +15,15 @@ const DispatchPage = () => { const { isOpen } = usePannelStore(); /* return null; */ return ( -
+
{/* */} -
-
+
+
-
+
@@ -32,7 +32,7 @@ const DispatchPage = () => {
diff --git a/apps/dispatch/app/(app)/pilot/_components/mrt/MRT.png b/apps/dispatch/app/(app)/pilot/_components/mrt/MRT.png index 66f5abe0..a9c552b1 100644 Binary files a/apps/dispatch/app/(app)/pilot/_components/mrt/MRT.png and b/apps/dispatch/app/(app)/pilot/_components/mrt/MRT.png differ diff --git a/apps/dispatch/app/(app)/pilot/_components/mrt/MRT_MESSAGE.png b/apps/dispatch/app/(app)/pilot/_components/mrt/MRT_MESSAGE.png index 7bf6a2d4..a0e80ae6 100644 Binary files a/apps/dispatch/app/(app)/pilot/_components/mrt/MRT_MESSAGE.png and b/apps/dispatch/app/(app)/pilot/_components/mrt/MRT_MESSAGE.png differ diff --git a/apps/dispatch/app/(app)/pilot/page.tsx b/apps/dispatch/app/(app)/pilot/page.tsx index ca3b6cdd..af023c97 100644 --- a/apps/dispatch/app/(app)/pilot/page.tsx +++ b/apps/dispatch/app/(app)/pilot/page.tsx @@ -30,23 +30,23 @@ const PilotPage = () => { const ownAircraft = aircrafts?.find((aircraft) => aircraft.id === connectedAircraft?.id); const simulatorConnected = ownAircraft ? checkSimulatorConnected(ownAircraft) : false; return ( -
+
{/* */} -
-
+
+
-
-
-
+
+
+
-
+
{!simulatorConnected && status === "connected" && ( )} @@ -54,19 +54,19 @@ const PilotPage = () => {
-
-
+
+

MRT & DME

-
-
-
+
+
+
-
-
-
+
+
+
diff --git a/apps/dispatch/app/_components/map/MapAdditionals.tsx b/apps/dispatch/app/_components/map/MapAdditionals.tsx index fa15ea75..c23f1b86 100644 --- a/apps/dispatch/app/_components/map/MapAdditionals.tsx +++ b/apps/dispatch/app/_components/map/MapAdditionals.tsx @@ -2,19 +2,75 @@ import { usePannelStore } from "_store/pannelStore"; import { Marker } from "react-leaflet"; import L from "leaflet"; +import { useQuery } from "@tanstack/react-query"; +import { getMissionsAPI } from "_querys/missions"; +import { HPGValidationRequired } from "_helpers/hpgValidationRequired"; +import { getConnectedAircraftsAPI } from "_querys/aircrafts"; +import { useMapStore } from "_store/mapStore"; export const MapAdditionals = () => { - const missionForm = usePannelStore((state) => state.missionFormValues); + const { isOpen, missionFormValues } = usePannelStore((state) => state); + const { data: missions = [] } = useQuery({ + queryKey: ["missions"], + queryFn: () => + getMissionsAPI({ + OR: [{ state: "draft" }, { state: "running" }], + }), + refetchInterval: 10_000, + }); + const mapStore = useMapStore((state) => state); - if (!missionForm?.addressLat || !missionForm?.addressLng) return null; + const { data: aircrafts } = useQuery({ + queryKey: ["aircrafts"], + queryFn: () => getConnectedAircraftsAPI(), + refetchInterval: 10000, + }); + + const markersNeedingAttention = missions.filter( + (m) => + HPGValidationRequired(m.missionStationIds, aircrafts, m.hpgMissionString) && + m.hpgValidationState === "POSITION_AMANDED" && + m.state === "draft" && + m.hpgLocationLat && + m.hpgLocationLng, + ); return ( <> - + {missionFormValues?.addressLat && missionFormValues?.addressLng && isOpen && ( + + )} + {markersNeedingAttention.map((mission) => ( + + mapStore.setOpenMissionMarker({ + open: [ + { + id: mission.id, + tab: "home", + }, + ], + close: [], + }), + }} + /> + ))} ); }; diff --git a/apps/dispatch/app/_components/map/MissionMarkers.tsx b/apps/dispatch/app/_components/map/MissionMarkers.tsx index b7502b3e..36d2a8bc 100644 --- a/apps/dispatch/app/_components/map/MissionMarkers.tsx +++ b/apps/dispatch/app/_components/map/MissionMarkers.tsx @@ -338,22 +338,15 @@ const MissionMarker = ({ mission }: { mission: Mission }) => { return [ editingMissionId === mission.id && missionFormValues?.addressLat ? missionFormValues.addressLat - : mission.hpgValidationState !== "POSITION_AMANDED" && mission.hpgLocationLat - ? mission.hpgLocationLat - : mission.addressLat, + : mission.addressLat, editingMissionId === mission.id && missionFormValues?.addressLng ? missionFormValues.addressLng - : mission.hpgValidationState !== "POSITION_AMANDED" && mission.hpgLocationLng - ? mission.hpgLocationLng - : mission.addressLng, + : mission.addressLng, ]; }, [ editingMissionId, mission.addressLat, mission.addressLng, - mission.hpgLocationLat, - mission.hpgLocationLng, - mission.hpgValidationState, mission.id, missionFormValues?.addressLat, missionFormValues?.addressLng, diff --git a/apps/dispatch/app/_components/map/_components/MissionMarkerTabs.tsx b/apps/dispatch/app/_components/map/_components/MissionMarkerTabs.tsx index a7e99206..4f9e3b14 100644 --- a/apps/dispatch/app/_components/map/_components/MissionMarkerTabs.tsx +++ b/apps/dispatch/app/_components/map/_components/MissionMarkerTabs.tsx @@ -93,8 +93,8 @@ const Einsatzdetails = ({ const { setMissionFormValues, setOpen, setEditingMission } = usePannelStore((state) => state); const [ignoreHpg, setIgnoreHpg] = useState(false); return ( -
-
+
+

Einsatzdetails

@@ -126,7 +126,7 @@ const Einsatzdetails = ({
) : ( -
+
{
)} -
    +
      {(mission.missionLog as unknown as MissionLog[]) .slice() .reverse() @@ -712,7 +712,7 @@ const FMSStatusHistory = ({ mission }: { mission: Mission }) => { })} { })} { })} { })}
    {!mission.missionLog.length && ( -

    +

    Keine Notizen verfügbar

    )} diff --git a/package.json b/package.json index d7a654c2..f66adf1d 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "devDependencies": { "prettier": "^3.6.2", + "prettier-plugin-tailwindcss": "^0.6.14", "turbo": "^2.5.5", "typescript": "^5.8.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1edff280..db38b812 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,6 +15,9 @@ importers: prettier: specifier: ^3.6.2 version: 3.6.2 + prettier-plugin-tailwindcss: + specifier: ^0.6.14 + version: 0.6.14(prettier@3.6.2) turbo: specifier: ^2.5.5 version: 2.5.5 @@ -4416,6 +4419,67 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prettier-plugin-tailwindcss@0.6.14: + resolution: {integrity: sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-hermes': '*' + '@prettier/plugin-oxc': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-hermes': + optional: true + '@prettier/plugin-oxc': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + prettier@3.6.2: resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} @@ -10263,6 +10327,10 @@ snapshots: prelude-ls@1.2.1: {} + prettier-plugin-tailwindcss@0.6.14(prettier@3.6.2): + dependencies: + prettier: 3.6.2 + prettier@3.6.2: {} pretty-format@3.8.0: {}