import type { FormEvent } from 'react' import type { ProjectCreate, ProjectRead } from '../../types' const TECHNICAL_PROJECT_PATTERN = /^(GeoIntel Detection Quality Matrix|GeoIntel hard-negative|GeoIntel training|Mol Building QA)/i function isTechnicalProject(project: ProjectRead): boolean { return TECHNICAL_PROJECT_PATTERN.test(project.name) } interface ProjectPanelProps { projects: ProjectRead[] selectedProjectId: string | null loadingProjects: boolean projectForm: ProjectCreate loadingDemoWorkflow: boolean demoWorkflowMessage: string | null onCreateProject: (event: FormEvent) => void onUpdateProjectForm: (projectForm: ProjectCreate) => void onSelectProject: (projectId: string) => void onLoadDemoWorkflow: () => void } export function ProjectPanel({ projects, selectedProjectId, loadingProjects, projectForm, loadingDemoWorkflow, demoWorkflowMessage, onCreateProject, onUpdateProjectForm, onSelectProject, onLoadDemoWorkflow, }: ProjectPanelProps): JSX.Element { const selectedProject = projects.find((project) => project.id === selectedProjectId) const regularProjects = projects.filter((project) => !isTechnicalProject(project)) const technicalProjects = projects.filter(isTechnicalProject) const visibleProjects = selectedProject && isTechnicalProject(selectedProject) ? [selectedProject, ...regularProjects] : regularProjects return (

Gegevenscontext

Werkruimtes

{regularProjects.length} beschikbaar
{loadingProjects ?

Werkruimtes laden...

: null}
Actieve werkruimte {selectedProject?.name ?? 'Geen werkruimte actief'} {selectedProject?.region ?? 'De regionale werkruimte wordt automatisch gekozen.'}

Beschikbare werkruimtes

    {visibleProjects.map((project) => (
  • ))} {regularProjects.length === 0 ? (
  • Nog geen werkruimte beschikbaar

    Maak een werkruimte aan of laad de demonstratiegegevens.

  • ) : null}
Geavanceerd projectbeheer
{demoWorkflowMessage ?

{demoWorkflowMessage}

: null}
{technicalProjects.length > 0 ? (
{technicalProjects.length} technische test- en benchmarkruns
    {technicalProjects.map((project) => (
  • ))}
) : null}
) }