Skip to content

Commit

Permalink
Merge pull request #537 from USEPA/feature/add-submission-download-fu…
Browse files Browse the repository at this point in the history
…nctionality

Feature/add submission download functionality
  • Loading branch information
courtneymyers authored Jan 23, 2025
2 parents 9de2026 + f5abb29 commit 5f4efe0
Show file tree
Hide file tree
Showing 13 changed files with 434 additions and 7 deletions.
34 changes: 33 additions & 1 deletion app/client/src/routes/crf2022.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
useContentData,
useConfigData,
useBapSamData,
useSubmissionPDFQuery,
useSubmissionsQueries,
useSubmissions,
submissionNeedsEdits,
Expand All @@ -27,7 +28,7 @@ import {
entityHasDebtSubjectToOffset,
getUserInfo,
} from "@/utilities";
import { Loading } from "@/components/loading";
import { Loading, LoadingButtonIcon } from "@/components/loading";
import { Message } from "@/components/message";
import { MarkdownContent } from "@/components/markdownContent";
import { useNotificationsActions } from "@/contexts/notifications";
Expand All @@ -40,6 +41,7 @@ function useFormioSubmissionQueryAndMutation(rebateId: string | undefined) {

useEffect(() => {
queryClient.resetQueries({ queryKey: ["formio/2022/crf-submission"] });
queryClient.resetQueries({ queryKey: ["formio/2022/crf-pdf"] });
}, [queryClient]);

const url = `${serverUrl}/api/formio/2022/crf-submission/${rebateId}`;
Expand Down Expand Up @@ -129,6 +131,12 @@ function CloseOutRequestForm(props: { email: string }) {
const { query, mutation } = useFormioSubmissionQueryAndMutation(rebateId);
const { userAccess, formSchema, submission } = query.data ?? {};

const pdfQuery = useSubmissionPDFQuery({
rebateYear: "2022",
formType: "crf",
mongoId: submission?._id || "",
});

/**
* Stores when data is being posted to the server, so a loading overlay can
* be rendered over the form, preventing the user from losing input data when
Expand Down Expand Up @@ -243,6 +251,30 @@ function CloseOutRequestForm(props: { email: string }) {
</li>
</ul>

{submission?._id && (
<p>
<button
className="usa-button font-sans-2xs margin-right-0 padding-x-105 padding-y-1"
type="button"
disabled={pdfQuery.isFetching}
onClick={(_ev) => pdfQuery.refetch()}
>
<span className="display-flex flex-align-center">
<svg
className="usa-icon"
aria-hidden="true"
focusable="false"
role="img"
>
<use href={`${icons}#arrow_downward`} />
</svg>
<span className="margin-left-1">Download PDF</span>
{pdfQuery.isFetching && <LoadingButtonIcon position="end" />}
</span>
</button>
</p>
)}

<Dialog as="div" open={dataIsPosting.current} onClose={(_value) => {}}>
<div className={clsx("tw-fixed tw-inset-0 tw-bg-black/30")} />
<div className={clsx("tw-fixed tw-inset-0 tw-z-20")}>
Expand Down
32 changes: 31 additions & 1 deletion app/client/src/routes/frf2022.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
useContentData,
useConfigData,
useBapSamData,
useSubmissionPDFQuery,
useSubmissionsQueries,
useSubmissions,
submissionNeedsEdits,
Expand All @@ -27,7 +28,7 @@ import {
entityHasDebtSubjectToOffset,
getUserInfo,
} from "@/utilities";
import { Loading } from "@/components/loading";
import { Loading, LoadingButtonIcon } from "@/components/loading";
import { Message } from "@/components/message";
import { MarkdownContent } from "@/components/markdownContent";
import { useDialogActions } from "@/contexts/dialog";
Expand All @@ -41,6 +42,7 @@ function useFormioSubmissionQueryAndMutation(mongoId: string | undefined) {

useEffect(() => {
queryClient.resetQueries({ queryKey: ["formio/2022/frf-submission"] });
queryClient.resetQueries({ queryKey: ["formio/2022/frf-pdf"] });
}, [queryClient]);

const url = `${serverUrl}/api/formio/2022/frf-submission/${mongoId}`;
Expand Down Expand Up @@ -142,6 +144,12 @@ function FundingRequestForm(props: { email: string }) {
const { query, mutation } = useFormioSubmissionQueryAndMutation(mongoId);
const { userAccess, formSchema, submission } = query.data ?? {};

const pdfQuery = useSubmissionPDFQuery({
rebateYear: "2022",
formType: "frf",
mongoId,
});

/**
* Stores when data is being posted to the server, so a loading overlay can
* be rendered over the form, preventing the user from losing input data when
Expand Down Expand Up @@ -391,6 +399,28 @@ function FundingRequestForm(props: { email: string }) {
)}
</ul>

<p>
<button
className="usa-button font-sans-2xs margin-right-0 padding-x-105 padding-y-1"
type="button"
disabled={pdfQuery.isFetching}
onClick={(_ev) => pdfQuery.refetch()}
>
<span className="display-flex flex-align-center">
<svg
className="usa-icon"
aria-hidden="true"
focusable="false"
role="img"
>
<use href={`${icons}#arrow_downward`} />
</svg>
<span className="margin-left-1">Download PDF</span>
{pdfQuery.isFetching && <LoadingButtonIcon position="end" />}
</span>
</button>
</p>

<Dialog as="div" open={dataIsPosting.current} onClose={(_value) => {}}>
<div className={clsx("tw-fixed tw-inset-0 tw-bg-black/30")} />
<div className={clsx("tw-fixed tw-inset-0 tw-z-20")}>
Expand Down
32 changes: 31 additions & 1 deletion app/client/src/routes/frf2023.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
useContentData,
useConfigData,
useBapSamData,
useSubmissionPDFQuery,
useSubmissionsQueries,
useSubmissions,
submissionNeedsEdits,
Expand All @@ -27,7 +28,7 @@ import {
entityHasDebtSubjectToOffset,
getUserInfo,
} from "@/utilities";
import { Loading } from "@/components/loading";
import { Loading, LoadingButtonIcon } from "@/components/loading";
import { Message } from "@/components/message";
import { MarkdownContent } from "@/components/markdownContent";
import { useDialogActions } from "@/contexts/dialog";
Expand All @@ -41,6 +42,7 @@ function useFormioSubmissionQueryAndMutation(mongoId: string | undefined) {

useEffect(() => {
queryClient.resetQueries({ queryKey: ["formio/2023/frf-submission"] });
queryClient.resetQueries({ queryKey: ["formio/2023/frf-pdf"] });
}, [queryClient]);

const url = `${serverUrl}/api/formio/2023/frf-submission/${mongoId}`;
Expand Down Expand Up @@ -128,6 +130,12 @@ function FundingRequestForm(props: { email: string }) {
const { query, mutation } = useFormioSubmissionQueryAndMutation(mongoId);
const { userAccess, formSchema, submission } = query.data ?? {};

const pdfQuery = useSubmissionPDFQuery({
rebateYear: "2023",
formType: "frf",
mongoId,
});

/**
* Stores when data is being posted to the server, so a loading overlay can
* be rendered over the form, preventing the user from losing input data when
Expand Down Expand Up @@ -377,6 +385,28 @@ function FundingRequestForm(props: { email: string }) {
)}
</ul>

<p>
<button
className="usa-button font-sans-2xs margin-right-0 padding-x-105 padding-y-1"
type="button"
disabled={pdfQuery.isFetching}
onClick={(_ev) => pdfQuery.refetch()}
>
<span className="display-flex flex-align-center">
<svg
className="usa-icon"
aria-hidden="true"
focusable="false"
role="img"
>
<use href={`${icons}#arrow_downward`} />
</svg>
<span className="margin-left-1">Download PDF</span>
{pdfQuery.isFetching && <LoadingButtonIcon position="end" />}
</span>
</button>
</p>

<Dialog as="div" open={dataIsPosting.current} onClose={(_value) => {}}>
<div className={clsx("tw-fixed tw-inset-0 tw-bg-black/30")} />
<div className={clsx("tw-fixed tw-inset-0 tw-z-20")}>
Expand Down
32 changes: 31 additions & 1 deletion app/client/src/routes/frf2024.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
useContentData,
useConfigData,
useBapSamData,
useSubmissionPDFQuery,
useSubmissionsQueries,
useSubmissions,
submissionNeedsEdits,
Expand All @@ -27,7 +28,7 @@ import {
entityHasDebtSubjectToOffset,
getUserInfo,
} from "@/utilities";
import { Loading } from "@/components/loading";
import { Loading, LoadingButtonIcon } from "@/components/loading";
import { Message } from "@/components/message";
import { MarkdownContent } from "@/components/markdownContent";
import { useDialogActions } from "@/contexts/dialog";
Expand All @@ -41,6 +42,7 @@ function useFormioSubmissionQueryAndMutation(mongoId: string | undefined) {

useEffect(() => {
queryClient.resetQueries({ queryKey: ["formio/2024/frf-submission"] });
queryClient.resetQueries({ queryKey: ["formio/2024/frf-pdf"] });
}, [queryClient]);

const url = `${serverUrl}/api/formio/2024/frf-submission/${mongoId}`;
Expand Down Expand Up @@ -128,6 +130,12 @@ function FundingRequestForm(props: { email: string }) {
const { query, mutation } = useFormioSubmissionQueryAndMutation(mongoId);
const { userAccess, formSchema, submission } = query.data ?? {};

const pdfQuery = useSubmissionPDFQuery({
rebateYear: "2024",
formType: "frf",
mongoId,
});

/**
* Stores when data is being posted to the server, so a loading overlay can
* be rendered over the form, preventing the user from losing input data when
Expand Down Expand Up @@ -377,6 +385,28 @@ function FundingRequestForm(props: { email: string }) {
)}
</ul>

<p>
<button
className="usa-button font-sans-2xs margin-right-0 padding-x-105 padding-y-1"
type="button"
disabled={pdfQuery.isFetching}
onClick={(_ev) => pdfQuery.refetch()}
>
<span className="display-flex flex-align-center">
<svg
className="usa-icon"
aria-hidden="true"
focusable="false"
role="img"
>
<use href={`${icons}#arrow_downward`} />
</svg>
<span className="margin-left-1">Download PDF</span>
{pdfQuery.isFetching && <LoadingButtonIcon position="end" />}
</span>
</button>
</p>

<Dialog as="div" open={dataIsPosting.current} onClose={(_value) => {}}>
<div className={clsx("tw-fixed tw-inset-0 tw-bg-black/30")} />
<div className={clsx("tw-fixed tw-inset-0 tw-z-20")}>
Expand Down
34 changes: 33 additions & 1 deletion app/client/src/routes/prf2022.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
useContentData,
useConfigData,
useBapSamData,
useSubmissionPDFQuery,
useSubmissionsQueries,
useSubmissions,
submissionNeedsEdits,
Expand All @@ -27,7 +28,7 @@ import {
entityHasDebtSubjectToOffset,
getUserInfo,
} from "@/utilities";
import { Loading } from "@/components/loading";
import { Loading, LoadingButtonIcon } from "@/components/loading";
import { Message } from "@/components/message";
import { MarkdownContent } from "@/components/markdownContent";
import { useNotificationsActions } from "@/contexts/notifications";
Expand All @@ -40,6 +41,7 @@ function useFormioSubmissionQueryAndMutation(rebateId: string | undefined) {

useEffect(() => {
queryClient.resetQueries({ queryKey: ["formio/2022/prf-submission"] });
queryClient.resetQueries({ queryKey: ["formio/2022/prf-pdf"] });
}, [queryClient]);

const url = `${serverUrl}/api/formio/2022/prf-submission/${rebateId}`;
Expand Down Expand Up @@ -129,6 +131,12 @@ function PaymentRequestForm(props: { email: string }) {
const { query, mutation } = useFormioSubmissionQueryAndMutation(rebateId);
const { userAccess, formSchema, submission } = query.data ?? {};

const pdfQuery = useSubmissionPDFQuery({
rebateYear: "2022",
formType: "prf",
mongoId: submission?._id || "",
});

/**
* Stores when data is being posted to the server, so a loading overlay can
* be rendered over the form, preventing the user from losing input data when
Expand Down Expand Up @@ -264,6 +272,30 @@ function PaymentRequestForm(props: { email: string }) {
</li>
</ul>

{submission?._id && (
<p>
<button
className="usa-button font-sans-2xs margin-right-0 padding-x-105 padding-y-1"
type="button"
disabled={pdfQuery.isFetching}
onClick={(_ev) => pdfQuery.refetch()}
>
<span className="display-flex flex-align-center">
<svg
className="usa-icon"
aria-hidden="true"
focusable="false"
role="img"
>
<use href={`${icons}#arrow_downward`} />
</svg>
<span className="margin-left-1">Download PDF</span>
{pdfQuery.isFetching && <LoadingButtonIcon position="end" />}
</span>
</button>
</p>
)}

<Dialog as="div" open={dataIsPosting.current} onClose={(_value) => {}}>
<div className={clsx("tw-fixed tw-inset-0 tw-bg-black/30")} />
<div className={clsx("tw-fixed tw-inset-0 tw-z-20")}>
Expand Down
Loading

0 comments on commit 5f4efe0

Please sign in to comment.