@@ -182,11 +191,15 @@ const CategoryMap = ({
const AArray = ACur.practiceCategories;
const BCur = statuteRecord.find((s) => s.statuteName === "2014 Eligible Land");
const BArray = BCur.practiceCategories;
- const TotalArray = AArray.concat(BArray);
+ const CCur = statuteRecord.find((s) => s.statuteName === "Other CSP");
+ const CArray = CCur.practiceCategories;
+ const TotalArray = AArray.concat(BArray).concat(CArray);
if (category === "2018 Practices") {
categoryRecord = statuteRecord[0];
} else if (category === "2014 Eligible Land") {
categoryRecord = statuteRecord[1];
+ } else if (category === "Other CSP") {
+ categoryRecord = statuteRecord[2];
} else {
categoryRecord = TotalArray.find((s) => s.practiceCategoryName === category);
}
@@ -201,7 +214,7 @@ const CategoryMap = ({
if (category === "Land management") legendCategory = "Land management-CSP";
if (category === "Forest management") legendCategory = "Forest management-CSP";
if (category === "Soil testing") legendCategory = "Soil testing-CSP";
- if (category === "Other improvement") legendCategory = "Other improvement-CSP";
+ if (category === "Other improvements") legendCategory = "Other improvements-CSP";
const customScale = legendConfig[legendCategory];
const colorScale = d3.scaleThreshold(customScale, mapColor);
const classes = useStyles();
diff --git a/src/components/csp/CategoryTable.tsx b/src/components/csp/CategoryTable.tsx
index 1eae678..4740c09 100644
--- a/src/components/csp/CategoryTable.tsx
+++ b/src/components/csp/CategoryTable.tsx
@@ -148,11 +148,15 @@ function App({
const AArray = ACur.practiceCategories;
const BCur = value.statutes.find((s) => s.statuteName === "2014 Eligible Land");
const BArray = BCur.practiceCategories;
- const TotalArray = AArray.concat(BArray);
+ const CCur = value.statutes.find((s) => s.statuteName === "Other CSP");
+ const CArray = CCur.practiceCategories;
+ const TotalArray = AArray.concat(BArray).concat(CArray);
if (category === "2018 Practices") {
categoryRecord = statuteRecord[0];
} else if (category === "2014 Eligible Land") {
categoryRecord = statuteRecord[1];
+ } else if (category === "Other CSP") {
+ categoryRecord = statuteRecord[2];
} else {
categoryRecord = TotalArray.find((s) => s.practiceCategoryName === category);
}
@@ -171,7 +175,9 @@ function App({
categoryBenefit: `$${Number(totalPaymentInDollars).toLocaleString(undefined, {
minimumFractionDigits: 2
})}`,
- categoryPercentage: `${totalPaymentInPercentageWithinState.toString()}%`,
+ categoryPercentage: totalPaymentInPercentageWithinState
+ ? `${totalPaymentInPercentageWithinState.toString()}%`
+ : "0%",
cspBenefit: `$${value.totalPaymentInDollars.toLocaleString(undefined, {
minimumFractionDigits: 2
})}`,
diff --git a/src/pages/CSPPage.tsx b/src/pages/CSPPage.tsx
index 11b485a..afdb1fa 100644
--- a/src/pages/CSPPage.tsx
+++ b/src/pages/CSPPage.tsx
@@ -21,8 +21,10 @@ export default function CSPPage(): JSX.Element {
const [totalChartData, setTotalChartData] = React.useState([{}]);
const [old2014ChartData, setOld2014ChartData] = React.useState([{}]);
const [new2018ChartData, setNew2018ChartData] = React.useState([{}]);
+ const [otherCSPChartData, setOtherCSPChartData] = React.useState([{}]);
const [firstTotal, setFirstTotal] = React.useState(0);
const [secondTotal, setSecondTotal] = React.useState(0);
+ const [thirdTotal, setThirdTotal] = React.useState(0);
const [zeroCategories, setZeroCategories] = React.useState([]);
const defaultTheme = createTheme();
@@ -35,14 +37,17 @@ export default function CSPPage(): JSX.Element {
let structuralTotal = 0;
let croplandTotal = 0;
let rangelandTotal = 0;
- let bundlesTotal = 0;
let soilTestingTotal = 0;
let NIPFTotal = 0;
let pasturelandTotal = 0;
- let SAOTotal = 0;
+ const SAOTotal = 0;
let grasslandTotal = 0;
+ let bundlesTotal = 0;
+ let miscellaneousTotal = 0;
+ let sixBPlanningTotal = 0;
let new2018Total = 0;
let old2014Total = 0;
+ let otherCSPTotal = 0;
const zeroCategory = [];
const csp_year = "2018-2022";
@@ -80,48 +85,53 @@ export default function CSPPage(): JSX.Element {
// eslint-disable-next-line
const cur1 = chartData.statutes.find((s) => s.statuteName === "2018 Practices");
const cur2 = chartData.statutes.find((s) => s.statuteName === "2014 Eligible Land");
+ const cur3 = chartData.statutes.find((s) => s.statuteName === "Other CSP");
new2018Total = cur1.totalPaymentInDollars;
old2014Total = cur2.totalPaymentInDollars;
+ otherCSPTotal = cur3.totalPaymentInDollars;
setFirstTotal(new2018Total);
setSecondTotal(old2014Total);
+ setThirdTotal(otherCSPTotal);
const ACur = cur1.practiceCategories;
const BCur = cur2.practiceCategories;
+ const CCur = cur3.practiceCategories;
- const landManagementCur = ACur.find((s) => s.practiceCategoryName === "Land management");
- const otherImprovementCur = ACur.find((s) => s.practiceCategoryName === "Other improvement");
- const existingAPCur = ACur.find((s) => s.practiceCategoryName === "Existing activity payments");
+ const structuralCur = ACur.find((s) => s.practiceCategoryName === "Structural");
const vegetativeCur = ACur.find((s) => s.practiceCategoryName === "Vegetative");
+ const landManagementCur = ACur.find((s) => s.practiceCategoryName === "Land management");
const forestManagementCur = ACur.find((s) => s.practiceCategoryName === "Forest management");
const soilRemediationCur = ACur.find((s) => s.practiceCategoryName === "Soil remediation");
- const structuralCur = ACur.find((s) => s.practiceCategoryName === "Structural");
- const bundlesCur = ACur.find((s) => s.practiceCategoryName === "Bundles");
+ const existingAPCur = ACur.find((s) => s.practiceCategoryName === "Existing activity payments");
const soilTestingCur = ACur.find((s) => s.practiceCategoryName === "Soil testing");
+ const otherImprovementCur = ACur.find((s) => s.practiceCategoryName === "Other improvements");
const croplandCur = BCur.find((s) => s.practiceCategoryName === "Cropland");
const rangelandCur = BCur.find((s) => s.practiceCategoryName === "Rangeland");
const pasturelandCur = BCur.find((s) => s.practiceCategoryName === "Pastureland");
- const SAOCur = BCur.find((s) => s.practiceCategoryName === "Other: supplemental, adjustment & other");
- const NIPFCur = BCur.find((s) => s.practiceCategoryName === "Non-industrial private forestland");
+ const NIPFCur = BCur.find((s) => s.practiceCategoryName === "Non-Industrial Private Forestland (NIPF)");
const grasslandCur = BCur.find((s) => s.practiceCategoryName === "Grassland");
- landManagementTotal += Number(landManagementCur.totalPaymentInDollars);
- if (landManagementTotal === 0) zeroCategory.push("Land management");
- otherImprovementTotal += Number(otherImprovementCur.totalPaymentInDollars);
- if (otherImprovementTotal === 0) zeroCategory.push("Other improvement");
- existingAPTotal += Number(existingAPCur.totalPaymentInDollars);
- if (existingAPTotal === 0) zeroCategory.push("Existing activity payments");
+ const miscellaneousCur = CCur.find((s) => s.practiceCategoryName === "Miscellaneous");
+ const bundlesCur = CCur.find((s) => s.practiceCategoryName === "Bundles");
+ const sixBlanningCur = CCur.find((s) => s.practiceCategoryName === "(6)(B) Planning");
+
+ structuralTotal += Number(structuralCur.totalPaymentInDollars);
+ if (structuralTotal === 0) zeroCategory.push("Structural");
+ if (soilRemediationTotal === 0) zeroCategory.push("Soil remediation");
vegetativeTotal += Number(vegetativeCur.totalPaymentInDollars);
if (vegetativeTotal === 0) zeroCategory.push("Vegetative");
+ landManagementTotal += Number(landManagementCur.totalPaymentInDollars);
+ if (landManagementTotal === 0) zeroCategory.push("Land management");
forestManagementTotal += Number(forestManagementCur.totalPaymentInDollars);
if (forestManagementTotal === 0) zeroCategory.push("Forest management");
soilRemediationTotal += Number(soilRemediationCur.totalPaymentInDollars);
if (soilRemediationTotal === 0) zeroCategory.push("Soil remediation");
- structuralTotal += Number(structuralCur.totalPaymentInDollars);
- if (structuralTotal === 0) zeroCategory.push("Structural");
- bundlesTotal += Number(bundlesCur.totalPaymentInDollars);
- if (bundlesTotal === 0) zeroCategory.push("Bundles");
+ existingAPTotal += Number(existingAPCur.totalPaymentInDollars);
+ if (existingAPTotal === 0) zeroCategory.push("Existing activity payments");
soilTestingTotal = Number(soilTestingCur.totalPaymentInDollars);
if (soilTestingTotal === 0) zeroCategory.push("Soil testing");
+ otherImprovementTotal += Number(otherImprovementCur.totalPaymentInDollars);
+ if (otherImprovementTotal === 0) zeroCategory.push("Other improvements");
croplandTotal += Number(croplandCur.totalPaymentInDollars);
if (croplandTotal === 0) zeroCategory.push("Cropland");
@@ -129,63 +139,68 @@ export default function CSPPage(): JSX.Element {
if (rangelandTotal === 0) zeroCategory.push("Rangeland");
pasturelandTotal += Number(pasturelandCur.totalPaymentInDollars);
if (pasturelandTotal === 0) zeroCategory.push("Pastureland");
- SAOTotal += Number(SAOCur.totalPaymentInDollars);
- if (SAOTotal === 0) zeroCategory.push("Other: supplemental, adjustment & other");
NIPFTotal += Number(NIPFCur.totalPaymentInDollars);
- if (NIPFTotal === 0) zeroCategory.push("Non-industrial private forestland");
+ if (NIPFTotal === 0) zeroCategory.push("Non-Industrial Private Forestland (NIPF)");
if (grasslandCur !== undefined) grasslandTotal += Number(grasslandCur.totalPaymentInDollars);
if (grasslandTotal === 0) zeroCategory.push("Grassland");
+ miscellaneousTotal += Number(miscellaneousCur.totalPaymentInDollars);
+ if (miscellaneousTotal === 0) zeroCategory.push("Miscellaneous");
+ sixBPlanningTotal += Number(sixBlanningCur.totalPaymentInDollars);
+ if (sixBPlanningTotal === 0) zeroCategory.push("(6)(B) Planning");
+ bundlesTotal += Number(bundlesCur.totalPaymentInDollars);
+ if (bundlesTotal === 0) zeroCategory.push("Bundles");
+
setNew2018ChartData([
- { name: "Land management", value: landManagementTotal, color: "#2F7164" },
- {
- name: "Other Improvement",
- value: otherImprovementTotal,
- color: "#4D847A"
- },
{
name: "Existing activity payments",
value: existingAPTotal,
- color: "#749F97"
+ color: "#2F7164"
+ },
+ { name: "Structural", value: structuralTotal, color: "#4D847A" },
+ { name: "Land management", value: landManagementTotal, color: "#749F97" },
+ {
+ name: "Other Improvements",
+ value: otherImprovementTotal,
+ color: "#9CBAB4"
},
- { name: "Vegetative", value: vegetativeTotal, color: "#9CBAB4" },
+ { name: "Vegetative", value: vegetativeTotal, color: "#B9CDC9" },
{
name: "Forest management",
value: forestManagementTotal,
- color: "#B9CDC9"
+ color: "#CDDBD8"
},
{
name: "Soil remediation",
value: soilRemediationTotal,
- color: "#CDDBD8"
+ color: "#E2E8E7"
},
- { name: "Structural", value: structuralTotal, color: "#E2E8E7" },
- { name: "Bundles", value: bundlesTotal, color: "#C3C5C4" },
- { name: "Soil Testing", value: soilTestingTotal, color: "#CAD4C5" }
+ { name: "Soil Testing", value: soilTestingTotal, color: "#F3F6F5" }
]);
setOld2014ChartData([
{ name: "Cropland", value: croplandTotal, color: "#2F7164" },
- { name: "Rangeland", value: rangelandTotal, color: "#4D847A" },
- { name: "Pastureland", value: pasturelandTotal, color: "#749F97" },
{
- name: "Other: supplemental, adjustment & other",
- value: SAOTotal,
- color: "#9CBAB4"
- },
- {
- name: "Non-industrial private forestland",
+ name: "Non-Industrial Private Forestland (NIPF)",
value: NIPFTotal,
- color: "#B9CDC9"
+ color: "#4D847A"
},
- { name: "Grassland", value: grasslandTotal, color: "#CDDBD8" }
+ { name: "Rangeland", value: rangelandTotal, color: "#749F97" },
+ { name: "Pastureland", value: pasturelandTotal, color: "#B9CDC9" },
+ { name: "Grassland", value: grasslandTotal, color: "#CAD4C5" }
+ ]);
+
+ setOtherCSPChartData([
+ { name: "Miscellaneous", value: miscellaneousTotal, color: "#2F7164" },
+ { name: "Bundles", value: bundlesTotal, color: "#9CBAB4" },
+ { name: "(6)(B) Planning", value: sixBPlanningTotal, color: "#CAD4C5" }
]);
setTotalChartData([
{ name: "2018 Practices", value: new2018Total, color: "#2F7164" },
- { name: "2014 Eligible Land", value: old2014Total, color: "#9CBAB4" }
+ { name: "2014 Eligible Land", value: old2014Total, color: "#9CBAB4" },
+ { name: "Other CSP", value: otherCSPTotal, color: "#B9CDC9" }
]);
-
if (zeroCategory.length > 0) setZeroCategories(zeroCategory);
else setZeroCategories(["None"]);
};
@@ -334,6 +349,7 @@ export default function CSPPage(): JSX.Element {
stateCodes={stateCodesData}
/>
+
-
+
+
+
+
+
+
- {firstTotal >= 0 || secondTotal >= 0 ? (
+ {firstTotal >= 0 || secondTotal >= 0 || thirdTotal >= 0 ? (
= 1 && checked <= 10 ? "block" : "none"
+ display: checked >= 1 && checked < 10 ? "block" : "none"
}}
>
- = 11 ? "block" : "none" }}>
+ = 10 && checked < 16 ? "block" : "none" }}>
+ = 16 ? "block" : "none" }}>
+
+
) : null}
@@ -606,9 +660,10 @@ export default function CSPPage(): JSX.Element {
stateCodes={stateCodesArray}
/>
+
+
-
+
-
+
+
+
+
+
+ s.practiceCategoryName === "Vegetative");
const forestManagementCur = ACur.find((s) => s.practiceCategoryName === "Forest management");
const soilRemediationCur = ACur.find((s) => s.practiceCategoryName === "Soil remediation");
- const other6ACur = ACur.find((s) => s.practiceCategoryName === "Other improvement");
+ const other6ACur = ACur.find((s) => s.practiceCategoryName === "Other improvements");
const soilTestingCur = ACur.find((s) => s.practiceCategoryName === "Soil testing");
const otherPlanningCur = BCur.find((s) => s.practiceCategoryName === "Other planning");
@@ -112,7 +112,7 @@ export default function EQIPPage(): JSX.Element {
soilRemediationTotal += Number(soilRemediationCur.totalPaymentInDollars);
if (soilRemediationTotal === 0) zeroCategory.push("Soil remediation");
other6ATotal += Number(other6ACur.totalPaymentInDollars);
- if (other6ATotal === 0) zeroCategory.push("Other improvement");
+ if (other6ATotal === 0) zeroCategory.push("Other improvements");
soilTestingTotal += Number(soilTestingCur.totalPaymentInDollars);
if (soilTestingTotal === 0) zeroCategory.push("Soil testing");
@@ -132,7 +132,7 @@ export default function EQIPPage(): JSX.Element {
{ name: "Land management", value: landManagementTotal, color: "#4D847A" },
{ name: "Vegetative", value: vegetativeTotal, color: "#749F97" },
{ name: "Forest management", value: forestManagementTotal, color: "#9CBAB4" },
- { name: "Other improvement", value: other6ATotal, color: "#B9CDC9" },
+ { name: "Other improvements", value: other6ATotal, color: "#B9CDC9" },
{ name: "Soil remediation; Soil testing", value: soilRemediationTotal + soilTestingTotal, color: "#CDDBD8" }
]);
@@ -248,7 +248,7 @@ export default function EQIPPage(): JSX.Element {
sx={{ width: "85%", m: "auto", display: checked !== 6 ? "none" : "block" }}
>
{
- // setModalOpen(true); // #306: Block the model to be auto-opened due to the size of iframe
- }, []);
const handleOpen = () => {
setModalOpen(true);
};
@@ -82,7 +78,82 @@ export default function IRAPage(): JSX.Element {
-
+
+
+
+
+
+ Inflation Reduction Act Conservation; Policy Design Lab
+
+
+ On August 16, 2022, President Joe Biden signed into law the Inflation Reduction
+ Act of 2022 (P.L.
+
+ 117-169
+
+ ). Among other things, the Inflation Reduction Act (IRA) included an $18 billion
+ investment of additional funds appropriated to four Farm Bill Conservation
+ programs: Environmental Quality Incentives Program (
+
+ EQIP
+
+ ); Conservation Stewardship Program (
+
+ CSP
+
+ ); Agricultural Conservation Easement Program (
+
+ ACEP
+
+ ); and Regional Conservation Partnership Program (
+
+ RCPP
+
+ )...
+
+
+
+
+
+
+
+
RCPP} customSx={tabStyle} selectedSX={selectedStyle} />
ACEP} customSx={tabStyle} selectedSX={selectedStyle} /> */}
-
-
-
diff --git a/src/pages/PolicyLab/PolicyLabPage.tsx b/src/pages/PolicyLab/PolicyLabPage.tsx
index 83e4390..9b37430 100644
--- a/src/pages/PolicyLab/PolicyLabPage.tsx
+++ b/src/pages/PolicyLab/PolicyLabPage.tsx
@@ -53,27 +53,7 @@ export default function PolicyLabPage(): JSX.Element {
- {/* Based on Jun 10 meeting, moving IRA out of Policy Lab page. Leave the code frame here so that it can be re-used for other model predictions. */}
- {/*
-
-
-
-
-
-
-
- */}
- {/* */}
- {/* */}
);
}
diff --git a/src/utils/legendConfig.json b/src/utils/legendConfig.json
index 7f9654d..52944fa 100644
--- a/src/utils/legendConfig.json
+++ b/src/utils/legendConfig.json
@@ -27,38 +27,40 @@
"lossRatio":[0.5, 0.75, 1, 1.5],
"averageInsuredAreaInAcres":[10000, 5000000, 10000000, 20000000],
- "Total EQIP": [10000000, 50000000, 100000000, 200000000],
- "Land management": [1000000, 10000000, 30000000, 50000000],
+ "Total EQIP": [50000000, 100000000, 150000000, 200000000],
+ "Land management": [5000000, 10000000, 30000000, 50000000],
"Forest management": [500000, 1000000, 3000000,10000000],
"Structural":[10000000, 50000000, 80000000, 100000000],
"Soil remediation":[100000, 500000, 1000000, 5000000],
"Vegetative":[1000000, 5000000, 10000000, 20000000],
- "Other improvement":[100000, 1000000, 5000000, 10000000],
+ "Other improvements":[100000, 1000000, 5000000, 10000000],
"Soil testing":[100, 500, 1000, 3000],
"Other planning":[10000, 100000, 500000, 1000000],
"Conservation planning assessment":[5000, 100000, 500000, 1000000],
"Resource-conserving crop rotation":[500, 1000, 5000, 10000],
"Soil health":[10000, 100000, 500000, 1000000],
- "Comprehensive Nutrient Mgt.":[1000, 10000, 100000, 1000000],
+ "Comprehensive Nutrient Mgt.":[10000, 100000, 500000, 1000000],
- "Total CSP": [10000000, 50000000, 100000000, 200000000],
- "2018 Practices": [1000000, 5000000, 10000000, 80000000],
- "2014 Eligible Land": [5000000, 10000000, 80000000, 150000000],
+ "Total CSP": [5000000, 10000000, 50000000, 100000000],
+ "2018 Practices": [1000000, 5000000, 10000000, 30000000],
+ "2014 Eligible Land": [10000000, 50000000, 100000000, 150000000],
+ "Other CSP": [500000, 1000000, 8000000, 15000000],
"Forest management-CSP": [100000, 500000, 1000000, 10000000],
"Land management-CSP": [10000, 1000000, 5000000, 10000000],
- "Existing activity payments": [100000, 1000000, 3000000, 5000000],
+ "Existing activity payments": [1000000, 8000000, 15000000, 30000000],
"Vegetative-CSP": [500000, 1000000, 5000000, 10000000],
- "Other improvement-CSP": [5000, 1000000, 5000000, 10000000],
+ "Other improvements-CSP": [5000, 1000000, 5000000, 10000000],
"Soil remediation": [100000, 500000, 1000000, 3000000],
- "Structural-CSP": [50000, 100000, 500000, 1000000],
- "Bundles": [50000, 100000, 300000, 800000],
+ "Structural-CSP": [50000, 100000, 1000000, 10000000],
"Soil testing-CSP": [100000, 500000, 1000000, 10000000],
- "Cropland": [1000000, 10000000, 100000000, 200000000],
- "Non-industrial private forestland": [500000, 1000000, 3000000, 8000000],
- "Pastureland": [1000000, 5000000, 8000000, 10000000],
+ "Cropland": [100000, 1000000, 10000000, 20000000],
+ "Non-Industrial Private Forestland (NIPF)": [50000, 100000, 1000000, 5000000 ],
+ "Pastureland": [100000, 500000, 800000, 1000000],
"Grassland": [5000, 100000, 400000, 8000000],
- "Other: supplemental, adjustment & other": [500000, 1000000, 5000000, 10000000],
- "Rangeland": [100000, 5000000, 10000000, 30000000],
+ "Rangeland": [10000, 500000, 1000000, 3000000],
+ "Miscellaneous": [100000, 500000, 1000000, 5000000],
+ "(6)(B) Planning": [100000, 500000, 1000000, 5000000],
+ "Bundles": [50000, 100000, 300000, 800000],
"Total CRP": [100000, 10000000, 100000000, 500000000],
"Total General Sign-Up":[10000, 100000, 10000000, 100000000],