Skip to content

Commit c90b749

Browse files
committed
feat:added new entrant info page
1 parent 4089cfa commit c90b749

File tree

6 files changed

+334
-0
lines changed

6 files changed

+334
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Suspense } from "react";
2+
import Loading from "@bciers/components/loading/SkeletonForm";
3+
import NewEntrantInformation from "@reporting/src/app/components/additionalInformation/newEntrantInformation/NewEntrantInformation";
4+
interface PageProps {
5+
params: { version_id: number };
6+
}
7+
8+
export default async function Page({ params }: PageProps) {
9+
return (
10+
<Suspense fallback={<Loading />}>
11+
<NewEntrantInformation versionId={params.version_id} />
12+
</Suspense>
13+
);
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Suspense } from "react";
2+
import Loading from "@bciers/components/loading/SkeletonForm";
3+
import NewEntrantInformation from "@reporting/src/app/components/additionalInformation/newEntrantInformation/NewEntrantInformation";
4+
interface PageProps {
5+
params: { version_id: number };
6+
}
7+
8+
export default async function Page({ params }: PageProps) {
9+
return (
10+
<Suspense fallback={<Loading />}>
11+
<NewEntrantInformation versionId={params.version_id} />
12+
</Suspense>
13+
);
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { Suspense } from "react";
2+
import Loading from "@bciers/components/loading/SkeletonForm";
3+
import NewEntrantInformationForm from "@reporting/src/app/components/additionalInformation/newEntrantInformation/NewEntrantInformationForm";
4+
5+
export default async function NewEntrantInformation({
6+
versionId,
7+
}: {
8+
versionId: number;
9+
}) {
10+
return (
11+
<Suspense fallback={<Loading />}>
12+
<NewEntrantInformationForm versionId={versionId} />
13+
</Suspense>
14+
);
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
"use client";
2+
3+
import React, { useState } from "react";
4+
import MultiStepFormWithTaskList from "@bciers/components/form/MultiStepFormWithTaskList";
5+
import { TaskListElement } from "@bciers/components/navigation/reportingTaskList/types";
6+
import { useRouter } from "next/navigation";
7+
8+
import { actionHandler } from "@bciers/actions";
9+
import {
10+
newEntrantInformationSchema,
11+
newEntrantInformationUiSchema,
12+
} from "@reporting/src/data/jsonSchema/newEntrantInformation/newEntrantInformation";
13+
14+
const baseUrl = "/reports";
15+
const cancelUrl = "/reports";
16+
17+
interface AdditionalReportingDataProps {
18+
versionId: number;
19+
}
20+
21+
export default function NewEntrantInformationForm({
22+
versionId,
23+
}: AdditionalReportingDataProps) {
24+
const [formData, setFormData] = useState<FormData>();
25+
26+
const router = useRouter();
27+
const saveAndContinueUrl = `/reports/${versionId}/new-entrant-information`;
28+
29+
const taskListElements: TaskListElement[] = [
30+
{
31+
type: "Page",
32+
title: "Additional reporting data",
33+
isChecked: true,
34+
link: `/reports/${versionId}/additional-reporting-data`,
35+
},
36+
{
37+
type: "Page",
38+
title: "New entrant information",
39+
isActive: true,
40+
link: `/reports/${versionId}/new-entrant-information`,
41+
},
42+
];
43+
44+
const handleSubmit = async (data: any) => {
45+
const endpoint = `reporting/report-version/${versionId}/additional-data`;
46+
const method = "POST";
47+
48+
const payload = {
49+
report_version: versionId,
50+
...data.captured_emissions_section,
51+
...data.additional_data_section,
52+
};
53+
54+
const response = await actionHandler(endpoint, method, endpoint, {
55+
body: JSON.stringify(payload),
56+
});
57+
if (response) {
58+
router.push(saveAndContinueUrl);
59+
}
60+
};
61+
62+
return (
63+
<MultiStepFormWithTaskList
64+
initialStep={2}
65+
steps={[
66+
"Operation Information",
67+
"Report Information",
68+
"Additional Information",
69+
"Compliance Summary",
70+
"Sign-off & Submit",
71+
]}
72+
taskListElements={taskListElements}
73+
schema={newEntrantInformationSchema}
74+
uiSchema={newEntrantInformationUiSchema}
75+
formData={formData}
76+
baseUrl={baseUrl}
77+
cancelUrl={cancelUrl}
78+
onChange={(data: any) => {
79+
setFormData(data.formData);
80+
}}
81+
onSubmit={(data: any) => handleSubmit(data.formData)}
82+
/>
83+
);
84+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { Typography } from "@mui/material";
2+
import { BC_GOV_BACKGROUND_COLOR_BLUE } from "@bciers/styles";
3+
export const newEntrantInfo = (
4+
<>
5+
<Typography
6+
variant="body2"
7+
color={BC_GOV_BACKGROUND_COLOR_BLUE}
8+
fontStyle="italic"
9+
fontSize={16}
10+
>
11+
This section applies to operations that fall under{" "}
12+
<u>new entrant category</u>.
13+
</Typography>
14+
</>
15+
);
Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
import { RJSFSchema } from "@rjsf/utils";
2+
import FieldTemplate from "@bciers/components/form/fields/FieldTemplate";
3+
import {
4+
InlineFieldTemplate,
5+
TitleOnlyFieldTemplate,
6+
} from "@bciers/components/form/fields";
7+
import SectionFieldTemplate from "@bciers/components/form/fields/SectionFieldTemplate";
8+
import { DateWidget } from "@bciers/components/form/widgets";
9+
import { newEntrantInfo } from "@reporting/src/data/jsonSchema/newEntrantInformation/additionalMessage";
10+
11+
export const newEntrantInformationSchema: RJSFSchema = {
12+
type: "object",
13+
title: "Additional Reporting Data",
14+
properties: {
15+
purpose_note: { type: "object", readOnly: true },
16+
date_of_authorization: {
17+
type: "string",
18+
title: "Date of authorization",
19+
},
20+
date_of_first_shipment: {
21+
type: "string",
22+
title: "Date of first shipment",
23+
},
24+
date_of_new_entrant_period_began: {
25+
type: "string",
26+
title: "Date new entrant period began",
27+
},
28+
assertion_statement: {
29+
type: "boolean",
30+
title: "Assertion statement",
31+
default: false,
32+
},
33+
34+
emission_after_new_entrant: {
35+
type: "object",
36+
title: "Emission categories after new entrant period began",
37+
properties: {
38+
flaring_emissions: {
39+
type: "number",
40+
title: "Flaring emissions",
41+
},
42+
fugitive_emissions: {
43+
type: "number",
44+
title: "Fugitive emissions",
45+
},
46+
industrial_process_emissions: {
47+
type: "number",
48+
title: "Industrial process emissions",
49+
},
50+
on_site_transportation_emissions: {
51+
type: "number",
52+
title: "On-site transportation emissions",
53+
},
54+
stationary_fuel_combustion_emissions: {
55+
type: "number",
56+
title: "Stationary fuel combustion emissions",
57+
},
58+
venting_emissions_useful: {
59+
type: "number",
60+
title: "Venting emissions - useful",
61+
},
62+
venting_emissions_non_useful: {
63+
type: "number",
64+
title: "Venting emissions - non-useful",
65+
},
66+
emissions_from_waste: {
67+
type: "number",
68+
title: "Emissions from waste",
69+
},
70+
emissions_from_wastewater: {
71+
type: "number",
72+
title: "Emissions from wastewater",
73+
},
74+
},
75+
},
76+
emission_excluded_by_fuel_type: {
77+
type: "object",
78+
title: "Emissions excluded by fuel type",
79+
properties: {
80+
co2_emissions_from_excluded_woody_biomass: {
81+
type: "number",
82+
title: "CO2 emissions from excluded woody biomass",
83+
},
84+
other_emissions_from_excluded_biomasss: {
85+
type: "number",
86+
title: "Other emissions from excluded biomass",
87+
},
88+
emissions_from_excluded_non_biomass: {
89+
type: "number",
90+
title: "Emissions from excluded non-biomass",
91+
},
92+
},
93+
},
94+
other_excluded_emissions: {
95+
type: "object",
96+
title: "Other excluded emissions",
97+
properties: {
98+
emissions_from_line_tracing: {
99+
type: "number",
100+
title:
101+
"Emissions from line tracing and non-processing and non-compression activities",
102+
},
103+
emissions_from_fat_oil: {
104+
type: "number",
105+
title:
106+
"Emissions from fat, oil and grease collection, refining and storage ",
107+
},
108+
},
109+
},
110+
},
111+
};
112+
113+
export const newEntrantInformationUiSchema = {
114+
"ui:FieldTemplate": FieldTemplate,
115+
"ui:classNames": "form-heading-label",
116+
"ui:options": { label: false },
117+
"ui:order": [
118+
"purpose_note",
119+
"date_of_authorization",
120+
"date_of_first_shipment",
121+
"date_of_new_entrant_period_began",
122+
"assertion_statement",
123+
"emission_after_new_entrant",
124+
"emission_excluded_by_fuel_type",
125+
"other_excluded_emissions",
126+
],
127+
purpose_note: {
128+
"ui:FieldTemplate": TitleOnlyFieldTemplate,
129+
"ui:title": newEntrantInfo,
130+
},
131+
date_of_authorization: {
132+
"ui:widget": DateWidget,
133+
},
134+
135+
date_of_first_shipment: {
136+
"ui:widget": DateWidget,
137+
},
138+
date_of_new_entrant_period_began: {
139+
"ui:widget": DateWidget,
140+
},
141+
emission_after_new_entrant: {
142+
"ui:FieldTemplate": SectionFieldTemplate,
143+
flaring_emissions: {
144+
"ui:FieldTemplate": InlineFieldTemplate,
145+
},
146+
fugitive_emissions: {
147+
"ui:FieldTemplate": InlineFieldTemplate,
148+
},
149+
industrial_process_emissions: {
150+
"ui:FieldTemplate": InlineFieldTemplate,
151+
},
152+
on_site_transportation_emissions: {
153+
"ui:FieldTemplate": InlineFieldTemplate,
154+
},
155+
stationary_fuel_combustion_emissions: {
156+
"ui:FieldTemplate": InlineFieldTemplate,
157+
},
158+
venting_emissions_useful: {
159+
"ui:FieldTemplate": InlineFieldTemplate,
160+
},
161+
venting_emissions_non_useful: {
162+
"ui:FieldTemplate": InlineFieldTemplate,
163+
},
164+
emissions_from_waste: {
165+
"ui:FieldTemplate": InlineFieldTemplate,
166+
},
167+
emissions_from_wastewater: {
168+
"ui:FieldTemplate": InlineFieldTemplate,
169+
},
170+
},
171+
emission_excluded_by_fuel_type: {
172+
"ui:FieldTemplate": SectionFieldTemplate,
173+
co2_emissions_from_excluded_woody_biomass: {
174+
"ui:FieldTemplate": InlineFieldTemplate,
175+
},
176+
other_emissions_from_excluded_biomasss: {
177+
"ui:FieldTemplate": InlineFieldTemplate,
178+
},
179+
emissions_from_excluded_non_biomass: {
180+
"ui:FieldTemplate": InlineFieldTemplate,
181+
},
182+
},
183+
other_excluded_emissions: {
184+
"ui:FieldTemplate": SectionFieldTemplate,
185+
emissions_from_line_tracing: {
186+
"ui:FieldTemplate": InlineFieldTemplate,
187+
},
188+
emissions_from_fat_oil: {
189+
"ui:FieldTemplate": InlineFieldTemplate,
190+
},
191+
},
192+
};

0 commit comments

Comments
 (0)