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);