Implement aircraft values in flight creation/updating

This commit is contained in:
april
2024-01-11 11:30:10 -06:00
parent d6d03c9027
commit b50d333677
7 changed files with 449 additions and 215 deletions

View File

@@ -1,6 +1,7 @@
import ErrorDisplay from "@/ui/error-display";
import AircraftForm from "@/ui/form/aircraft-form";
import { useApi } from "@/util/api";
import { useAircraft } from "@/util/hooks";
import { AircraftFormSchema, AircraftSchema } from "@/util/types";
import {
ActionIcon,
@@ -11,37 +12,19 @@ import {
Group,
Loader,
Modal,
NumberInput,
ScrollArea,
Select,
Stack,
Text,
TextInput,
Title,
Tooltip,
} from "@mantine/core";
import { useForm } from "@mantine/form";
import { randomId, useDisclosure } from "@mantine/hooks";
import { IconPencil, IconPlus, IconTrash, IconX } from "@tabler/icons-react";
import {
UseQueryResult,
useMutation,
useQuery,
useQueryClient,
} from "@tanstack/react-query";
import { AxiosError } from "axios";
import { useState } from "react";
function useAircraft() {
const client = useApi();
const aircraft = useQuery({
queryKey: ["aircraft-list"],
queryFn: async () => await client.get(`/aircraft`).then((res) => res.data),
});
return aircraft;
}
function AircraftCard({ aircraft }: { aircraft: AircraftSchema }) {
const [deleteOpened, { open: openDelete, close: closeDelete }] =

View File

@@ -1,4 +1,4 @@
import { Container, Stack, Title } from "@mantine/core";
import { Center, Container, Loader, Stack, Title } from "@mantine/core";
import {
FlightFormSchema,
flightCreateHelper,
@@ -9,6 +9,7 @@ import { useApi } from "@/util/api";
import { useNavigate, useParams } from "@remix-run/react";
import { AxiosError } from "axios";
import FlightForm from "@/ui/form/flight-form";
import ErrorDisplay from "@/ui/error-display";
export default function EditFlight() {
const params = useParams();
@@ -47,16 +48,30 @@ export default function EditFlight() {
<Stack>
<Title order={2}>Edit Flight</Title>
<FlightForm
initialValues={flightEditHelper(flight.data) ?? null}
onSubmit={editFlight.mutate}
isError={editFlight.isError}
error={editFlight.error}
submitButtonLabel="Update"
withCancelButton
cancelFunc={() => navigate(`/logbook/flights/${params.id}`)}
mah="calc(100vh - 95px - 110px)"
/>
{flight.isLoading ? (
<Center h="calc(100vh - 95px - 110px)">
<Loader />
</Center>
) : flight.isError ? (
<Center h="calc(100vh - 95px - 110px)">
<ErrorDisplay error={flight.error.message} />
</Center>
) : (
<FlightForm
initialValues={
flight.data ? flightEditHelper(flight.data) ?? null : null
}
onSubmit={editFlight.mutate}
isPending={editFlight.isPending}
isError={editFlight.isError}
error={editFlight.error}
submitButtonLabel="Update"
withCancelButton
cancelFunc={() => navigate(`/logbook/flights/${params.id}`)}
mah="calc(100vh - 95px - 110px)"
autofillHobbs={false}
/>
)}
</Stack>
</Container>
);

View File

@@ -33,9 +33,11 @@ export default function NewFlight() {
<FlightForm
onSubmit={createFlight.mutate}
isPending={createFlight.isPending}
isError={createFlight.isError}
error={createFlight.error}
mah="calc(100vh - 95px - 110px)"
autofillHobbs
/>
</Stack>
</Container>

View File

@@ -47,7 +47,7 @@ export default function Index() {
staleTime: 1000,
retry: (failureCount, error: Error) => {
return (
failureCount < 5 &&
failureCount < 3 &&
(!error ||
(error instanceof AxiosError &&
error.response?.status !== 401 &&