/* Copyright (C) 2024-2025 LibreWeddingPlanner contributors*/ 'use client' import React, { useState } from "react" 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"; import clsx from "clsx"; import { ProgressBar } from "primereact/progressbar"; import { useEffect } from "react"; import { TableSimulation, TableSimulationSerializer } from "@/app/lib/tableSimulation"; import { AbstractApi } from "@/app/api/abstract-api"; export default function ArrangementsTable({ onArrangementSelected }: { onArrangementSelected: (arrangementId: string) => void }) { const [arrangements, setArrangements] = useState>([]); const [arrangementsLoaded, setArrangementsLoaded] = useState(false); useEffect(() => { refreshSimulations(); const interval = setInterval(refreshSimulations, 10000); return () => clearInterval(interval); }, []); function refreshSimulations() { loadTableSimulations((arrangements) => { setArrangements(arrangements); setArrangementsLoaded(true); }); } function arrangementClicked(e: React.MouseEvent) { onArrangementSelected(e.currentTarget.getAttribute('data-arrangement-id') || ''); } return ( ( {arrangement.name} {arrangement.discomfort} <> { arrangement.valid && arrangement.status === 'not_started' && } { arrangement.valid && arrangement.status !== 'not_started' && } { !arrangement.valid && 'The list of potential guests has changed since this simulation.' } )} /> ); }