Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Page] Resolve Errors & Warnings #423

Merged
merged 118 commits into from May 6, 2024
Merged
Show file tree
Hide file tree
Changes from 115 commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
8688b34
fix: [axiosService] Add missing POST parameter
meissadia Apr 2, 2024
6822d26
[Filing Routing] Phase 1 - Mock Filing progress
meissadia Apr 5, 2024
9849158
[Filing Routing] Phase 1 - Separate routes per step
meissadia Apr 5, 2024
fea91e3
fix: axiosService.request - remove unneeded `data` param in favor of …
meissadia Apr 9, 2024
46971d5
fix: useMemo to avoid duplicate placeholder objects being generated
meissadia Apr 9, 2024
2c2de5f
fix: FilingStepWrapper.helpers - remove unused eslint rule disables
meissadia Apr 9, 2024
bc14e84
[Filing Routing] Phase 1 - Mock Filing progress
meissadia Apr 5, 2024
2cbd121
[Filing Routing] Phase 1 - Separate routes per step
meissadia Apr 5, 2024
e7d28d1
fix: useMemo to avoid duplicate placeholder objects being generated
meissadia Apr 9, 2024
9c52113
fix: FilingStepWrapper.helpers - remove unused eslint rule disables
meissadia Apr 9, 2024
d912fc7
Update imports after rebase
meissadia Apr 9, 2024
9257eb7
Update imports after rebase part 2
meissadia Apr 9, 2024
c60e6e6
Add "tasks" to our mock filing
meissadia Apr 9, 2024
2867e7b
Sync axiosService file
meissadia Apr 9, 2024
cd9a385
Filing step - Display "current" highlight even if step is incomplete
meissadia Apr 9, 2024
b937bc4
Filing - Placeholder for "is step complete?" status
meissadia Apr 9, 2024
5b6c4f3
Filing step - Improve spacing between step indicators
meissadia Apr 10, 2024
c0be487
Filing steps - Remove custom hook that contained routes, which helps …
meissadia Apr 10, 2024
f66f7b3
Merge branch 'main' into 331-filing-routing_phase1-mock-data
meissadia Apr 10, 2024
0c0d989
Filing steps - Revamp flex alignment of page elements
meissadia Apr 10, 2024
cd69c7b
[ScreenReaderOnly] Component: Extract from Filing step indicator code…
meissadia Apr 10, 2024
e64c41c
Filing steps - More dynamic routes (year and lei from the url)
meissadia Apr 10, 2024
a0dcab9
Filing steps - Add TODO to check on StepIndicator widths
meissadia Apr 10, 2024
74506f3
Merge branch 'main' into 331-filing-routing_phase1-mock-data
meissadia Apr 11, 2024
f8f1bdc
fix: [axiosService] Always include "body" for post/put/patch requests
meissadia Apr 18, 2024
502c82c
feat: [API]
meissadia Apr 18, 2024
152ceb6
feat: [FilingOverview] Determine and link to next incomplete step
meissadia Apr 19, 2024
4ebc759
feat: [Filing] Display current Institution's progress within the subm…
meissadia Apr 19, 2024
a0fa68b
feat: [Filing] Placeholder pages for Filing steps
meissadia Apr 19, 2024
77c7ea0
fix: [Institution card] Routing logic for a Submissio n with a previo…
meissadia Apr 19, 2024
e2ca8d2
feat: [FileSubmission] Integrate Filing step indicator and navigation…
meissadia Apr 19, 2024
3b1f9a7
Merge branch 'main' into 331-filing-routing_phase2-live-data
meissadia Apr 22, 2024
45c787c
feat: [Filing Steps] Split out the FilingSteps and FilingNavButtons i…
meissadia Apr 25, 2024
d6a0aa8
fix: [Filing Steps] Adjust font color/weight based on step status
meissadia Apr 25, 2024
26799d8
Merge branch 'main' into 331-filing-routing_phase2-live-data
meissadia Apr 25, 2024
fe318e5
start wip
shindigira Apr 26, 2024
19fbbaf
added Alert
shindigira Apr 26, 2024
beb8475
single errors count
shindigira Apr 26, 2024
2d34bcf
added TODOs
shindigira Apr 26, 2024
1625732
resolved merge conflicts -- after upload adjustments PR
shindigira Apr 26, 2024
be097dd
Merge main
meissadia Apr 26, 2024
dc1e91f
task: More compact error/loading checks
meissadia Apr 26, 2024
9baf597
fix(Upload - Infinite Loading): adjusted the useGetLatestSubmission s…
shindigira Apr 26, 2024
c355edf
resolved merge conflict
shindigira Apr 26, 2024
a7caaf4
alternative solution to react-query settings changes on useGetSubmiss…
shindigira Apr 27, 2024
3b0e54f
removed unnecessary variable
shindigira Apr 27, 2024
91970e5
Merge branch '331-filing-routing_phase2-live-data' of github.com:cfpb…
shindigira Apr 27, 2024
1d1bf6e
removed unusued
shindigira Apr 27, 2024
1964c52
Merge branch '331-filing-routing_phase2-live-data' of github.com:cfpb…
shindigira Apr 27, 2024
d70c852
best solution for initial check
shindigira Apr 27, 2024
34c6444
Merge branch '331-filing-routing_phase2-live-data' of github.com:cfpb…
shindigira Apr 27, 2024
33cf044
chore(errors_warnings): Created helper functions to sort between erro…
shindigira Apr 27, 2024
513e2d2
chore(errors_warnings): Updated errors and warnings helper functions
shindigira Apr 27, 2024
a546911
chore(errors_warnings): Added Alert links
shindigira Apr 27, 2024
f8b9e32
fix phantom space
shindigira Apr 27, 2024
f6450bc
remove refetches on window focus by default
shindigira Apr 27, 2024
47b360a
disabled refetch on window focus
shindigira Apr 27, 2024
997da1b
resolve comment conflict
shindigira Apr 27, 2024
e372b60
style(FilingNavButtons): 18px between buttons (according to figma), m…
shindigira Apr 29, 2024
527bbf1
task: [useFilingAndSubmissionInfo] Simplify fetching logic
meissadia Apr 29, 2024
211a45f
fix: [FileSubmission] New Filers get stuck in "Loading" state on init…
meissadia Apr 29, 2024
95f6108
task: [useFilingAndSubmissionInfo] Set staletime to 0
meissadia Apr 29, 2024
8438199
task: [useFilingAndSubmissionInfo] Utilize useGetSubmissionLatest hook
meissadia Apr 29, 2024
614ca43
task: [fetchSubmissionLatest] Delete
meissadia Apr 29, 2024
4612751
Merge branch 'main' into 331-filing-routing_phase2-live-data
meissadia Apr 29, 2024
17b71eb
task: Utilize some of the Design System colors that have been integra…
meissadia Apr 29, 2024
d661744
fix: [useFilingAndSubmissionInfo] Ensure Filing is created before fet…
meissadia Apr 29, 2024
b856cda
added a check for register errors
shindigira Apr 29, 2024
963a7ca
task: Use fetchFilingSubmissionLatest
meissadia Apr 29, 2024
53a1793
fixed one typescript item
shindigira Apr 29, 2024
158b8e1
Merge branch '331-filing-routing_phase2-live-data' of github.com:cfpb…
shindigira Apr 30, 2024
1d3a68d
chore(single-field-error): subfolder start
shindigira Apr 30, 2024
7a4bc32
enhancement(single-field-errors): Started table implementation
shindigira Apr 30, 2024
74a921e
enhancement(single-field-errors): Table - rows
shindigira Apr 30, 2024
273834e
resolved merge conflict
shindigira Apr 30, 2024
fa28321
Removed unused file
shindigira Apr 30, 2024
0a47c45
chore(single-field-errors): set tables to be horizontal scrollable
shindigira Apr 30, 2024
7603d16
chore(resolve-errors-warnings): updated function to separate singles/…
shindigira May 1, 2024
4c51b9f
formatting start
shindigira May 1, 2024
be6704d
feat(errors): multifield start
shindigira May 1, 2024
8486616
chore(errors): Updated Step2 with MultiErrors
shindigira May 1, 2024
0a82a76
feat(errors): Alerts properly toggle depending on errors
shindigira May 1, 2024
c050a3a
feat(errors): Multifield errors rendering
shindigira May 1, 2024
0d79dcd
refactor(errors): Used a common component between single and multi
shindigira May 1, 2024
63007c3
feat(errors): Added Register level errors
shindigira May 1, 2024
cd8738a
refactor(errors): swapped out hook for useGetSubmissionLatest
shindigira May 1, 2024
dbbf77a
Merge branch 'main' of github.com:cfpb/sbl-frontend into 333-resolve-…
shindigira May 1, 2024
18d3262
chore(Resolve Errors): added commented out td shrink for demo
shindigira May 2, 2024
17f2f68
refactor(get submission latest): refactored the hook and axios reques…
shindigira May 2, 2024
3aae0fc
feat(Resolve Errors): Buttons that toggle between state or transition…
shindigira May 2, 2024
574b2e9
style(Resolve Errors): 18px between buttons
shindigira May 2, 2024
51f695b
feat(Upload): added an enableLongPolling boolean to useGetSubmissionL…
shindigira May 2, 2024
4bf9507
enhancement(Resolve Errors): Implemented 'react-markdown' in Resolve …
shindigira May 2, 2024
05d64b1
fix(Resolve Errors): updated Link with the proper component
shindigira May 2, 2024
67be125
ts error
shindigira May 2, 2024
bbef90c
update(Resolve Errors): due to sbl-filing data schema change -- valid…
shindigira May 2, 2024
7d98720
typescript update
shindigira May 2, 2024
ef61955
more TS handling
shindigira May 2, 2024
d380708
enhancement(Upload): Hide FilingNavButtons if still loading
shindigira May 2, 2024
acb452f
feat(Resolve Errors): if a get submission latest fails, there is an a…
shindigira May 2, 2024
2b16c0d
pathing updates
shindigira May 2, 2024
cfe5e33
warnings skeleton complete
shindigira May 2, 2024
50d0061
refactor(Errors/Warnings): Made FieldErrorsSummary more flexible
shindigira May 3, 2024
f7338b1
renamed components handling both errors and warnings to be more appro…
shindigira May 3, 2024
f8f44d5
TypeScript handling -- FieldEntry
shindigira May 3, 2024
b49a472
Merge branch 'main' of github.com:cfpb/sbl-frontend into 333-resolve-…
shindigira May 3, 2024
7f7a324
column ref
shindigira May 6, 2024
74a5f0f
resolve merge conflicts
shindigira May 6, 2024
759c2f6
added error incorrect file type based on status 415
shindigira May 6, 2024
e78eabd
removed unused check due to backend data schema change
shindigira May 6, 2024
bb8675a
pulled in errors and warnings; resolved merge conflicts
shindigira May 6, 2024
142e82a
Merge branch 'main' of github.com:cfpb/sbl-frontend into 333-resolve-…
shindigira May 6, 2024
0254a14
Merge branch 'design-review-upload' of github.com:cfpb/sbl-frontend i…
shindigira May 6, 2024
3e3e31d
Merge branch 'main' of github.com:cfpb/sbl-frontend into 333-resolve-…
shindigira May 6, 2024
6335396
step2 message fixed
shindigira May 6, 2024
3e20323
fixed isstep2 subheading on errors
shindigira May 6, 2024
931fd71
final isstep2 fix
shindigira May 6, 2024
372ace6
Merge branch 'main' into 333-resolve-errors-warnings-skeleton-phase1
shindigira May 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
31 changes: 22 additions & 9 deletions src/api/requests/fetchFilingSubmissionLatest.ts
Expand Up @@ -112,7 +112,7 @@ const interceptor = apiClient.interceptors.response.use(
apiClient.defaults.handleStartInterceptorCallback(response);
}
// Retry if validation still in-progress
if (shouldRetry(response)) {
if (apiClient.defaults.enableLongPolling && shouldRetry(response)) {
return retryRequestWithDelay(apiClient, response);
}
apiClient.defaults.retryCount = Zero;
Expand All @@ -124,16 +124,29 @@ const interceptor = apiClient.interceptors.response.use(
},
);

export const fetchFilingSubmissionLatest = async (
auth: SblAuthProperties,
lei: InstitutionDetailsApiType['lei'],
filingPeriod: FilingPeriodType,
interface FetchFilingSubmissionLatestProperties {
auth: SblAuthProperties;
lei: InstitutionDetailsApiType['lei'];
filingPeriod: FilingPeriodType;
handleStartInterceptorCallback?: (
response: AxiosResponse<SubmissionResponse>,
) => void,
signal?: AbortSignal,
// eslint-disable-next-line @typescript-eslint/max-params
): Promise<SubmissionResponse> => {
) => void;
signal?: AbortSignal;
enableLongPolling?: boolean;
}

export const fetchFilingSubmissionLatest = async ({
auth,
lei,
filingPeriod,
handleStartInterceptorCallback,
signal,
enableLongPolling,
}: FetchFilingSubmissionLatestProperties): Promise<SubmissionResponse> => {
if (enableLongPolling) {
apiClient.defaults.enableLongPolling = enableLongPolling;
}

if (handleStartInterceptorCallback) {
apiClient.defaults.handleStartInterceptorCallback =
handleStartInterceptorCallback;
Expand Down
17 changes: 15 additions & 2 deletions src/components/FormButtonGroup.tsx
Expand Up @@ -2,10 +2,23 @@ import type { ReactNode } from 'react';

interface Properties {
children: ReactNode;
isFilingStep?: boolean;
}

function FormButtonGroup({ children }: Properties): JSX.Element {
return <div className='mt-[1.875rem] flex gap-[0.625rem]'>{children}</div>;
function FormButtonGroup({ isFilingStep, children }: Properties): JSX.Element {
return (
<div
className={`mt-[1.875rem] flex ${
isFilingStep ? 'gap-[1.125rem]' : 'gap-[0.625rem]'
}`}
>
{children}
</div>
);
}

FormButtonGroup.defaultProps = {
isFilingStep: false,
};

export default FormButtonGroup;
7 changes: 6 additions & 1 deletion src/components/FormMain.tsx
@@ -1,3 +1,4 @@
import classnames from 'classnames';
import type { ReactNode } from 'react';

interface FormProperties {
Expand All @@ -12,7 +13,11 @@ function FormMain({
children,
className = '',
}: FormProperties & React.ComponentPropsWithoutRef<'form'>): JSX.Element {
return <form className={`mb-[3.75rem] w-full ${className}`}>{children}</form>;
return (
<form className={classnames('w-full', 'mb-[3.75rem]', className)}>
{children}
</form>
);
}

export default FormMain;
9 changes: 7 additions & 2 deletions src/components/SectionIntro.tsx
Expand Up @@ -13,9 +13,14 @@ export interface SectionIntroProperties {
function SectionIntro({
heading = null,
children = '',
}: SectionIntroProperties): JSX.Element {
className,
...other
}: JSX.IntrinsicElements['div'] & SectionIntroProperties): JSX.Element {
return (
<div className='mb-[1.875rem] box-border max-w-[41.875rem]'>
<div
className={`mb-[1.875rem] box-border max-w-[41.875rem] ${className}`}
{...other}
>
{heading ? <Heading type='2'>{heading}</Heading> : null}
<FormParagraph>{children}</FormParagraph>
</div>
Expand Down
27 changes: 26 additions & 1 deletion src/index.css
Expand Up @@ -26,4 +26,29 @@ https://v1.tailwindcss.com/docs/adding-base-styles#using-css */
/* Fixes the issue where too much white space below the footer while zoomed out or when swiping on mobile */
body {
background-color: #f7f8f9;
}
}

/* Uncomment to use ellipsis trick on Review Errors and Warnings tables */

/* td
{
max-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} */


/* Uncomment to make cells width the smallest possible */

/* td:not(:last-child){
white-space: nowrap;
}

td:last-child{
width: 100%;
} */

/* td {
word-break: break-all;
shindigira marked this conversation as resolved.
Show resolved Hide resolved
} */
4 changes: 2 additions & 2 deletions src/main.tsx
Expand Up @@ -20,9 +20,9 @@ const MAX_RETRIES = 1;
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: Number.POSITIVE_INFINITY,
// staleTime: Number.POSITIVE_INFINITY,
retry: MAX_RETRIES,
refetchOnWindowFocus: false,
refetchOnWindowFocus: false, // default: true
},
},
});
Expand Down
74 changes: 74 additions & 0 deletions src/pages/Filing/FilingApp/FieldEntry.tsx
@@ -0,0 +1,74 @@
import { Link } from 'components/Link';
import { Heading, Table } from 'design-system-react';
import Markdown from 'react-markdown';
import type { Detail, Field } from 'types/filingTypes';

interface FieldEntryProperties {
fieldObject: Detail;
}

function FieldEntry({ fieldObject }: FieldEntryProperties): JSX.Element {
const validationId = fieldObject.validation.id;
const validationLink = fieldObject.validation.fig_link;
const validationName = fieldObject.validation.name;
const validationDescription = fieldObject.validation.description;
// eslint-disable-next-line unicorn/no-array-reduce
const additionalColumnHeaders = fieldObject.records[0].fields.reduce(
(accumulator: Field['name'][], fieldsObject) => [
...accumulator,
fieldsObject.name,
],
[],
);
const columns = [
'Row',
'Unique identifier (uid)',
...additionalColumnHeaders,
];
const rows = fieldObject.records.map(object => {
// eslint-disable-next-line unicorn/no-array-reduce
const fieldValues = object.fields.reduce(
(accumulator: Field['name'][], fieldsObject) => [
...accumulator,
fieldsObject.value,
],
[],
);
return [object.record_no, object.uid, ...fieldValues];
});

return (
<div className='mb-[2.8125rem]'>
<div className='validation-info-section mb-[1.875rem] max-w-[41.875rem]'>
<Link target='_blank' href={validationLink}>
<Heading type='3'>{validationId}</Heading>
</Link>
<Heading type='4'>{validationName}</Heading>
<Markdown>{validationDescription}</Markdown>
</div>
<Table
className='w-full max-w-full table-auto'
columns={columns}
// rows={[...Array.from({ length: 100 }).keys()].map((item, index) => [
// index + 10_000,
// '4234000O91BZ2SUPERCALIFRAGILISTICEXPIALI45CHARS',
// '4234000O91BZ2SUPERCALIFRAGILISTICEXPIALI45CHARS',
// ])}
// rows={[
// [
// 'Row 1, Column 1',
// 'Row 1, Column 123456789TESTBANK123C2 123456789TESTBANK123C2 123456789TESTBANK123C2 123456789TESTBANK123C2 123456789TESTBANK123C2 123456789TESTBANK123C2',
// 'Row 1, Column 3 123456789TESTBANK123C2123456789TESTBANK123C2123456789TESTBANK123C2123456789TESTBANK123C2',
// ],
// ['Row 2, Column 1', 'Row 2, Column 2', 'Row 2, Column 3'],
// ['Row 3, Column 1', 'Row 3, Column 2', 'Row 3, Column 3'],
// ]}
shindigira marked this conversation as resolved.
Show resolved Hide resolved
// @ts-expect-error TypeScript error needs to be resolved within DSR
rows={rows}
isScrollableHorizontal
/>
</div>
);
}

export default FieldEntry;
35 changes: 35 additions & 0 deletions src/pages/Filing/FilingApp/FieldSummary.tsx
@@ -0,0 +1,35 @@
import SectionIntro from 'components/SectionIntro';
import FieldEntry from 'pages/Filing/FilingApp/FieldEntry';
import type { ReactNode } from 'react';
import type { Detail } from 'types/filingTypes';

interface FieldProperties {
fieldArray: Detail[];
heading: string;
bottomMargin?: boolean;
children: ReactNode;
id: string;
}

function FieldSummary({
heading,
fieldArray,
bottomMargin,
children,
id,
}: FieldProperties): JSX.Element {
return (
<div id={id} className={bottomMargin ? 'mb-[3.75rem]' : ''}>
<SectionIntro heading={heading}>{children}</SectionIntro>
{fieldArray.map(fieldObject => (
<FieldEntry key={fieldObject.validation.id} fieldObject={fieldObject} />
))}
</div>
);
}

FieldSummary.defaultProps = {
bottomMargin: false,
};

export default FieldSummary;
2 changes: 2 additions & 0 deletions src/pages/Filing/FilingApp/FileSubmission.data.tsx
Expand Up @@ -83,6 +83,7 @@ export function IncorrectFileTypeAlert(): JSX.Element {
export const fileSubmissionStateAlert: Record<
Exclude<
FileSubmissionState,
| FileSubmissionState.SUBMISSION_STARTED
| FileSubmissionState.SUBMISSION_UPLOADED
| FileSubmissionState.VALIDATION_IN_PROGRESS
>,
Expand Down Expand Up @@ -122,6 +123,7 @@ export const fileSubmissionStateAlert: Record<
export const fileSubmissionValidationStatus: Record<
Exclude<
FileSubmissionState,
| FileSubmissionState.SUBMISSION_STARTED
| FileSubmissionState.SUBMISSION_UPLOADED
| FileSubmissionState.UPLOAD_FAILED
| FileSubmissionState.VALIDATION_IN_PROGRESS
Expand Down