From 5154b665ef6a4d705240a7e56dc4ec0a708ed265 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 8 May 2026 09:02:21 +0000 Subject: [PATCH] added tests for pre sap ui with removed duplication --- .../live/PropertyDetailDrawer.tsx | 19 ++++++---- .../your-projects/live/[dealId]/DealPage.tsx | 35 ++++++------------- src/app/utils.ts | 11 ++++++ 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx index 469e037..4f9f1c4 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx @@ -1740,13 +1740,18 @@ export default function PropertyDetailDrawer({ label="Pre-SAP Score" value={ deal.preSapScore - ? {deal.preSapScore} + ? (() => { + const num = parseInt(deal.preSapScore.replace(/^[A-Za-z]+/, ""), 10); + return ( + {deal.preSapScore} + ); + })() : null } /> diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx index 7bc9396..0a101dc 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx @@ -15,7 +15,7 @@ import { TooltipTrigger, } from "@/app/shadcn_components/ui/tooltip"; import { AlertTriangle, ChevronRight, ChevronDown } from "lucide-react"; -import { sapToEpc } from "@/app/utils"; +import { sapToEpc, getEpcAccentClasses, parsePreSap } from "@/app/utils"; import { parseMeasures } from "@/app/lib/parseMeasures"; import { outOfOrderInstructionWarning } from "@/app/lib/softWarnings"; import type { ClassifiedDeal, PortfolioCapabilityType, DocStatus, EffectiveRemovalState } from "../types"; @@ -78,7 +78,7 @@ export default function DealPage({ router.replace(`?tab=${tab}`, { scroll: false }); }; - const epcCurrent = sapToEpc(deal.preSapScore != null ? Number(deal.preSapScore) : null); + const parsedPreSap = parsePreSap(deal.preSapScore); const epcPotential = sapToEpc(deal.epcSapScorePotential != null ? Number(deal.epcSapScorePotential) : null); const technicalApprovedMeasures = parseMeasures( deal.technicalApprovedMeasuresForInstall ?? null, @@ -134,14 +134,17 @@ export default function DealPage({ Energy Performance

- {epcCurrent} - {epcPotential !== "Unknown" && epcPotential !== epcCurrent && ( + {parsedPreSap ? ( + + {parsedPreSap.display} + + ) : ( + + )} + {epcPotential !== "Unknown" && epcPotential !== (parsedPreSap?.letter ?? "Unknown") && ( → {epcPotential} )}
- {deal.preSapScore !== null && deal.preSapScore !== undefined && ( -

SAP: {deal.preSapScore}

- )} {/* Key details */} @@ -160,24 +163,6 @@ export default function DealPage({ - - {deal.preSapScore} - - ) : null - } - /> {/* Survey info */} diff --git a/src/app/utils.ts b/src/app/utils.ts index f1b2dcc..2c42a13 100644 --- a/src/app/utils.ts +++ b/src/app/utils.ts @@ -132,6 +132,17 @@ export function sapToEpc(sapPoints: number | null): string { } } +// Handles "D55" (new format) and "56" (legacy numeric-only format) +export function parsePreSap(raw: string | null | undefined): { letter: string; display: string } | null { + if (!raw) return null; + const match = raw.trim().match(/^([A-Za-z]?)(\d+)$/); + if (!match) return null; + const num = parseInt(match[2], 10); + const letter = match[1] ? match[1].toUpperCase() : sapToEpc(num); + if (letter === "Unknown") return null; + return { letter, display: `${letter}${num}` }; +} + export function formatDateTime(dateTimeString: string | Date): string { // Create a new Date object const dateTime = new Date(dateTimeString);