diff --git a/src/app/components/building-passport/RecommendationCard.tsx b/src/app/components/building-passport/RecommendationCard.tsx index 32ac4f1..5238e54 100644 --- a/src/app/components/building-passport/RecommendationCard.tsx +++ b/src/app/components/building-passport/RecommendationCard.tsx @@ -31,6 +31,8 @@ const TitleMap = { exposed_floor_insulation: "Exposed Floor Insulation", // Windows windows_glazing: "Window Glazing", + // Solar pv + solar_pv: "Solar Photovoltaic Panels System", // Default options when no recommendation is selected wall_insulation: "Wall Insulation", floor_insulation: "Floor Insulation", diff --git a/src/app/components/building-passport/RecommendationContainer.tsx b/src/app/components/building-passport/RecommendationContainer.tsx index a6e9339..95f6a5e 100644 --- a/src/app/components/building-passport/RecommendationContainer.tsx +++ b/src/app/components/building-passport/RecommendationContainer.tsx @@ -96,6 +96,11 @@ export default function RecommendationContainer({ (rec: Recommendation) => rec.default ) || emptyImpactState; + const defaultSolarRecommendations = + categorizedRecommendations.solar_pv?.find( + (rec: Recommendation) => rec.default + ) || emptyImpactState; + const [costMap, setCostMap] = useState({ wall_insulation: defaultWallsRecommendations?.estimatedCost || 0, floor_insulation: defaultFloorRecommendations?.estimatedCost || 0, @@ -105,6 +110,7 @@ export default function RecommendationContainer({ sealing_open_fireplace: defaultFireplaceRecommendations?.estimatedCost || 0, low_energy_lighting: defaultLightingRecommendations?.estimatedCost || 0, windows_glazing: defaultWindowsRecommendations?.estimatedCost || 0, + solar_pv: defaultSolarRecommendations?.estimatedCost || 0, }); const [sapMap, setSapMap] = useState({ @@ -115,6 +121,7 @@ export default function RecommendationContainer({ sealing_open_fireplace: defaultFireplaceRecommendations.sapPoints || 0, low_energy_lighting: defaultLightingRecommendations.sapPoints || 0, windows_glazing: defaultWindowsRecommendations.sapPoints || 0, + solar_pv: defaultSolarRecommendations.sapPoints || 0, }); const [labourDaysMap, setLabourDaysMap] = useState({ @@ -125,6 +132,7 @@ export default function RecommendationContainer({ sealing_open_fireplace: defaultFireplaceRecommendations.labourDays || 0, low_energy_lighting: defaultLightingRecommendations.labourDays || 0, windows_glazing: defaultWindowsRecommendations.labourDays || 0, + solar_pv: defaultSolarRecommendations.labourDays || 0, }); const [co2SavingsMap, setCo2SavingsMap] = useState({ @@ -138,6 +146,7 @@ export default function RecommendationContainer({ low_energy_lighting: defaultLightingRecommendations.co2EquivalentSavings || 0, windows_glazing: defaultWindowsRecommendations.co2EquivalentSavings || 0, + solar_pv: defaultSolarRecommendations.co2EquivalentSavings || 0, }); const [energyCostSavingsMap, setEnergyCostSavingsMap] = @@ -152,6 +161,7 @@ export default function RecommendationContainer({ low_energy_lighting: defaultLightingRecommendations.energyCostSavings || 0, windows_glazing: defaultWindowsRecommendations.energyCostSavings || 0, + solar_pv: defaultSolarRecommendations.energyCostSavings || 0, }); const [heatDemandMap, setHeatDemandMap] = useState({ @@ -162,6 +172,7 @@ export default function RecommendationContainer({ sealing_open_fireplace: defaultFireplaceRecommendations.heatDemand || 0, low_energy_lighting: defaultLightingRecommendations.heatDemand || 0, windows_glazing: defaultWindowsRecommendations.heatDemand || 0, + solar_pv: defaultSolarRecommendations.heatDemand || 0, }); const [totalEstimatedCost, setTotalEstimatedCost] = useState( diff --git a/src/app/components/building-passport/RecommendationModal.tsx b/src/app/components/building-passport/RecommendationModal.tsx index cde156f..8a98f3c 100644 --- a/src/app/components/building-passport/RecommendationModal.tsx +++ b/src/app/components/building-passport/RecommendationModal.tsx @@ -44,6 +44,7 @@ const TitleMap = { sealing_open_fireplace: "Sealing Fireplaces", low_energy_lighting: "Low Energy Lighting", windows_glazing: "Window Glazing", + solar_pv: "Solar PV Systems", }; export default function RecommendationModal({ diff --git a/src/app/db/schema/recommendations.ts b/src/app/db/schema/recommendations.ts index fdf2325..f65f36c 100644 --- a/src/app/db/schema/recommendations.ts +++ b/src/app/db/schema/recommendations.ts @@ -114,7 +114,8 @@ export type RecommendationType = | "windows_glazing" | "roof_insulation" | "wall_insulation" - | "floor_insulation"; + | "floor_insulation" + | "solar_pv"; export type UnnestedRecommendation = { quantity: number; diff --git a/src/types/recommendations.ts b/src/types/recommendations.ts index 0282927..4e603e0 100644 --- a/src/types/recommendations.ts +++ b/src/types/recommendations.ts @@ -6,4 +6,5 @@ export interface RecommendationMetricMap { sealing_open_fireplace: number; low_energy_lighting: number; windows_glazing: number; + solar_pv: number; }