From 1184a529cf42cfdcd89a002da3afc6254bd43679 Mon Sep 17 00:00:00 2001 From: Manuel Bustillo Date: Sun, 26 Jan 2025 13:05:32 +0100 Subject: [PATCH] Display an icon indicating whether a simulation is still valid --- app/api/tableSimulations.tsx | 1 + app/lib/definitions.ts | 3 +- app/ui/arrangements/arrangements-table.tsx | 79 ++++++++++++---------- 3 files changed, 48 insertions(+), 35 deletions(-) diff --git a/app/api/tableSimulations.tsx b/app/api/tableSimulations.tsx index 6bf36d7..5b0f538 100644 --- a/app/api/tableSimulations.tsx +++ b/app/api/tableSimulations.tsx @@ -12,6 +12,7 @@ export function loadTableSimulations(onLoad?: (tableSimulations: TableArrangemen id: record.id, name: record.name, discomfort: record.discomfort, + valid: record.valid, }); })); }, (error) => { diff --git a/app/lib/definitions.ts b/app/lib/definitions.ts index b03ef4b..5e6ffe8 100644 --- a/app/lib/definitions.ts +++ b/app/lib/definitions.ts @@ -12,7 +12,8 @@ export type TableArrangement = { number: number; name: string; guests?: Guest[]; - discomfort?: number + discomfort?: number; + valid?: boolean; } export type User = { diff --git a/app/ui/arrangements/arrangements-table.tsx b/app/ui/arrangements/arrangements-table.tsx index 9a650e7..fbc132a 100644 --- a/app/ui/arrangements/arrangements-table.tsx +++ b/app/ui/arrangements/arrangements-table.tsx @@ -7,42 +7,53 @@ import { TableArrangement } from '@/app/lib/definitions'; import { classNames } from "../components/button"; import TableOfContents from "../components/table-of-contents"; import { loadTableSimulations } from "@/app/api/tableSimulations"; +import { ArchiveBoxXMarkIcon, CheckBadgeIcon } from "@heroicons/react/24/outline"; +import { Tooltip } from "primereact/tooltip"; -export default function ArrangementsTable ({onArrangementSelected}: {onArrangementSelected: (arrangementId: string) => void}) { - const [arrangements, setArrangements] = useState>([]); - const [arrangementsLoaded, setArrangementsLoaded] = useState(false); +export default function ArrangementsTable({ onArrangementSelected }: { onArrangementSelected: (arrangementId: string) => void }) { + const [arrangements, setArrangements] = useState>([]); + const [arrangementsLoaded, setArrangementsLoaded] = useState(false); - function refreshSimulations() { - loadTableSimulations((arrangements) => { - setArrangements(arrangements); - setArrangementsLoaded(true); - }); - } + function refreshSimulations() { + loadTableSimulations((arrangements) => { + setArrangements(arrangements); + setArrangementsLoaded(true); + }); + } - function arrangementClicked(e: React.MouseEvent) { - onArrangementSelected(e.currentTarget.getAttribute('data-arrangement-id') || ''); - } - - !arrangementsLoaded && refreshSimulations(); + function arrangementClicked(e: React.MouseEvent) { + onArrangementSelected(e.currentTarget.getAttribute('data-arrangement-id') || ''); + } - return( - ( - - - {arrangement.name} - - - {arrangement.discomfort} - - - - - - )} - /> - ); + !arrangementsLoaded && refreshSimulations(); + + return ( + ( + + + {arrangement.name} + + + {arrangement.discomfort} + + + + + + + + { + arrangement.valid ? + : + + } + + + )} + /> + ); } \ No newline at end of file