Implement aircraft values in flight creation/updating
This commit is contained in:
@@ -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 }] =
|
||||
|
@@ -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>
|
||||
);
|
||||
|
@@ -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>
|
||||
|
@@ -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 &&
|
||||
|
Reference in New Issue
Block a user