From 38d62770f619bbf410e047033fb0dfe2912bfa39 Mon Sep 17 00:00:00 2001 From: april Date: Thu, 11 Jan 2024 13:21:55 -0600 Subject: [PATCH] Implement filtering flights by aircraft --- .../routes/logbook.flights._index/route.tsx | 4 +- .../routes/logbook.flights/flights-list.tsx | 132 +++++++++++++----- web/app/ui/form/flight-form.tsx | 1 + web/app/util/hooks.ts | 20 +++ 4 files changed, 121 insertions(+), 36 deletions(-) diff --git a/web/app/routes/logbook.flights._index/route.tsx b/web/app/routes/logbook.flights._index/route.tsx index a8ee48c..3833850 100644 --- a/web/app/routes/logbook.flights._index/route.tsx +++ b/web/app/routes/logbook.flights._index/route.tsx @@ -5,13 +5,13 @@ import { IconFeather } from "@tabler/icons-react"; export default function Flights() { return ( <> - +
Select a flight
- + diff --git a/web/app/routes/logbook.flights/flights-list.tsx b/web/app/routes/logbook.flights/flights-list.tsx index 14dabe5..98dac82 100644 --- a/web/app/routes/logbook.flights/flights-list.tsx +++ b/web/app/routes/logbook.flights/flights-list.tsx @@ -1,6 +1,7 @@ import ErrorDisplay from "@/ui/error-display"; import { useApi } from "@/util/api"; -import { FlightConciseSchema } from "@/util/types"; +import { useAircraft, useFlights } from "@/util/hooks"; +import { AircraftSchema, FlightConciseSchema } from "@/util/types"; import { NavLink, Text, @@ -12,8 +13,10 @@ import { Badge, Group, Divider, + Modal, + Select, } from "@mantine/core"; -import { randomId } from "@mantine/hooks"; +import { randomId, useDisclosure } from "@mantine/hooks"; import { Link, useLocation, useNavigate } from "@remix-run/react"; import { IconArrowRightTail, @@ -21,19 +24,12 @@ import { IconPlus, IconX, } from "@tabler/icons-react"; -import { UseQueryResult, useQuery } from "@tanstack/react-query"; - -function useFlights() { - const client = useApi(); - - const flights = useQuery({ - queryKey: ["flights-list"], - queryFn: async () => - await client.get(`/flights/by-date?order=1`).then((res) => res.data), - }); - - return flights; -} +import { + UseQueryResult, + useQuery, + useQueryClient, +} from "@tanstack/react-query"; +import { useState } from "react"; function FlightsListDisplay({ flights, @@ -202,24 +198,76 @@ function FlightsListDisplay({ ); } +function AircraftFilter({ + aircraft, + setAircraft, + query = "flights-list", +}: { + aircraft: string; + setAircraft: (aircraft: string) => void; + query?: string; +}) { + const getAircraft = useAircraft(); + const queryClient = useQueryClient(); + + return ( +