From fd302e07e43cbcc4358cce05feee450b53b4734f Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Thu, 4 Apr 2024 11:03:11 +0100 Subject: [PATCH] Added heating controls and fixed saveChanges() function inside recommendation card modal to use the adjusted heat demand instead of the regular --- .../building-passport/RecommendationCard.tsx | 1 + .../building-passport/RecommendationContainer.tsx | 14 ++++++++++++++ .../building-passport/RecommendationModal.tsx | 2 +- src/app/db/schema/recommendations.ts | 3 ++- src/types/recommendations.ts | 1 + 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/app/components/building-passport/RecommendationCard.tsx b/src/app/components/building-passport/RecommendationCard.tsx index 4f7cc5d..2a4b614 100644 --- a/src/app/components/building-passport/RecommendationCard.tsx +++ b/src/app/components/building-passport/RecommendationCard.tsx @@ -35,6 +35,7 @@ const TitleMap = { solar_pv: "Solar Photovoltaic Panels System", // Heating heating: "Heating Systems", + heating_control: "Heating Controls", // Hot water tank hot_water_tank_insulation: "Hot Water Tank Insulation", // Default options when no recommendation is selected diff --git a/src/app/components/building-passport/RecommendationContainer.tsx b/src/app/components/building-passport/RecommendationContainer.tsx index f22648e..fa63afb 100644 --- a/src/app/components/building-passport/RecommendationContainer.tsx +++ b/src/app/components/building-passport/RecommendationContainer.tsx @@ -107,6 +107,11 @@ export default function RecommendationContainer({ (rec: Recommendation) => rec.default ) || emptyImpactState; + const defaultHeatingControlRecommendations = + categorizedRecommendations.heating_control?.find( + (rec: Recommendation) => rec.default + ) || emptyImpactState; + const defaultHotWaterTankRecommendations = categorizedRecommendations.hot_water_tank_insulation?.find( (rec: Recommendation) => rec.default @@ -125,6 +130,7 @@ export default function RecommendationContainer({ heating: defaultHeatingRecommendations.estimatedCost || 0, hot_water_tank_insulation: defaultHotWaterTankRecommendations.estimatedCost || 0, + heating_control: defaultHeatingControlRecommendations.estimatedCost || 0, }); const [sapMap, setSapMap] = useState({ @@ -139,6 +145,7 @@ export default function RecommendationContainer({ heating: defaultHeatingRecommendations.sapPoints || 0, hot_water_tank_insulation: defaultHotWaterTankRecommendations.sapPoints || 0, + heating_control: defaultHeatingControlRecommendations.sapPoints || 0, }); const [labourDaysMap, setLabourDaysMap] = useState({ @@ -153,6 +160,7 @@ export default function RecommendationContainer({ heating: defaultHeatingRecommendations.labourDays || 0, hot_water_tank_insulation: defaultHotWaterTankRecommendations.labourDays || 0, + heating_control: defaultHeatingControlRecommendations.labourDays || 0, }); const [co2SavingsMap, setCo2SavingsMap] = useState({ @@ -170,6 +178,8 @@ export default function RecommendationContainer({ heating: defaultHeatingRecommendations.co2EquivalentSavings || 0, hot_water_tank_insulation: defaultHotWaterTankRecommendations.co2EquivalentSavings || 0, + heating_control: + defaultHeatingControlRecommendations.co2EquivalentSavings || 0, }); const [energyCostSavingsMap, setEnergyCostSavingsMap] = @@ -188,6 +198,8 @@ export default function RecommendationContainer({ heating: defaultHeatingRecommendations.energyCostSavings || 0, hot_water_tank_insulation: defaultHotWaterTankRecommendations.energyCostSavings || 0, + heating_control: + defaultHeatingControlRecommendations.energyCostSavings || 0, }); const [heatDemandMap, setHeatDemandMap] = useState({ @@ -204,6 +216,8 @@ export default function RecommendationContainer({ heating: defaultHeatingRecommendations.adjustedHeatDemand || 0, hot_water_tank_insulation: defaultHotWaterTankRecommendations.adjustedHeatDemand || 0, + heating_control: + defaultHeatingControlRecommendations.adjustedHeatDemand || 0, }); const [totalEstimatedCost, setTotalEstimatedCost] = useState( diff --git a/src/app/components/building-passport/RecommendationModal.tsx b/src/app/components/building-passport/RecommendationModal.tsx index 8a98f3c..2cda4f9 100644 --- a/src/app/components/building-passport/RecommendationModal.tsx +++ b/src/app/components/building-passport/RecommendationModal.tsx @@ -167,7 +167,7 @@ export default function RecommendationModal({ // Update the heat demand savings map const newHeatDemandMap = { ...heatDemandMap, - [title]: recommendationData[newIndex]?.heatDemand || 0, + [title]: recommendationData[newIndex]?.adjustedHeatDemand || 0, }; setHeatDemandMap(newHeatDemandMap); diff --git a/src/app/db/schema/recommendations.ts b/src/app/db/schema/recommendations.ts index 980a374..bf2ed17 100644 --- a/src/app/db/schema/recommendations.ts +++ b/src/app/db/schema/recommendations.ts @@ -121,7 +121,8 @@ export type RecommendationType = | "floor_insulation" | "solar_pv" | "heating" - | "hot_water_tank_insulation"; + | "hot_water_tank_insulation" + | "heating_control"; export type UnnestedRecommendation = { quantity: number; diff --git a/src/types/recommendations.ts b/src/types/recommendations.ts index a485a9f..960e464 100644 --- a/src/types/recommendations.ts +++ b/src/types/recommendations.ts @@ -9,4 +9,5 @@ export interface RecommendationMetricMap { solar_pv: number; heating: number; hot_water_tank_insulation: number; + heating_control: number; }