From b37eb71f799984bd047557c95e77a076edd7d129 Mon Sep 17 00:00:00 2001 From: regexowl Date: Fri, 25 Apr 2025 16:40:47 +0200 Subject: [PATCH] Wizard: Add retirement date column This adds retirement date column to the Packages table and populates it with `end_date` from content-services searchRPMs endpoint. --- .../steps/Packages/Packages.tsx | 65 ++++++++++++++++++- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/src/Components/CreateImageWizard/steps/Packages/Packages.tsx b/src/Components/CreateImageWizard/steps/Packages/Packages.tsx index 2af4fd55..52439e46 100644 --- a/src/Components/CreateImageWizard/steps/Packages/Packages.tsx +++ b/src/Components/CreateImageWizard/steps/Packages/Packages.tsx @@ -33,6 +33,9 @@ import { } from '@patternfly/react-core'; import { Modal } from '@patternfly/react-core'; import { + CheckCircleIcon, + ExclamationCircleIcon, + ExclamationTriangleIcon, ExternalLinkAltIcon, HelpIcon, OptimizeIcon, @@ -1002,6 +1005,55 @@ const Packages = () => { ); }; + const formatDate = (date: string | undefined) => { + if (!date) { + return <>N/A; + } + + const retirementDate = new Date(date); + + const currentDate = new Date(); + const msPerDay = 1000 * 60 * 60 * 24; + const differenceInDays = Math.round( + (retirementDate.getTime() - currentDate.getTime()) / msPerDay + ); + + let icon; + + switch (true) { + case differenceInDays < 0: + icon = ( + + + + ); + break; + case differenceInDays <= 365: + icon = ( + + + + ); + break; + case differenceInDays > 365: + icon = ( + + + + ); + break; + } + + return ( + <> + {icon}{' '} + {retirementDate.toLocaleString('en-US', { month: 'short' }) + + ' ' + + retirementDate.getFullYear()} + + ); + }; + const composePkgTable = () => { let rows: ReactElement[] = []; @@ -1076,6 +1128,7 @@ const Packages = () => { N/A + N/A {grp.repository === 'distro' ? ( <> Red Hat @@ -1166,6 +1219,13 @@ const Packages = () => { source.type === 'module' ? source.stream : 'N/A' )} + + {pkg.sources?.map((source) => + source.type === 'module' + ? formatDate(source.end_date) + : 'N/A' + )} + {pkg.repository === 'distro' ? ( <> Red Hat @@ -1286,9 +1346,10 @@ const Packages = () => { - Name + Name Application stream - Package repository + Retirement date + Package repository {bodyContent}