fix: polish live regional workbench labels
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-14 21:48:51 +02:00
parent b5bcd9b041
commit 36d6a92825
9 changed files with 80 additions and 26 deletions
+11 -1
View File
@@ -1,6 +1,16 @@
import type { FormEvent } from 'react'
import type { AreaRead, ProjectRead } from '../../types'
function projectDisplayName(project: ProjectRead | null): string {
if (project?.name === 'Kempen Regional Workbench') {
return 'Kempen · volledige regio'
}
if (project?.name === 'Mol Municipality Workbench') {
return 'Mol · lokale historische werkruimte'
}
return project?.name ?? 'Geen werkruimte actief'
}
interface AreaFormState {
name: string
geometry: string
@@ -41,7 +51,7 @@ export function AreaPanel({
</div>
<span className="count-pill">{areas.length}</span>
</div>
<p className="muted">{selectedProject ? selectedProject.name : 'Geen werkruimte actief'}</p>
<p className="muted">{projectDisplayName(selectedProject)}</p>
<div className="data-selection-summary data-selection-summary-area">
<span>Getoond op de kaart</span>
@@ -2,11 +2,27 @@ 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
const REGIONAL_PROJECT_NAME = 'Kempen Regional Workbench'
const LEGACY_MOL_PROJECT_NAME = 'Mol Municipality Workbench'
function isTechnicalProject(project: ProjectRead): boolean {
return TECHNICAL_PROJECT_PATTERN.test(project.name)
}
function isAdvancedProject(project: ProjectRead): boolean {
return isTechnicalProject(project) || project.name === LEGACY_MOL_PROJECT_NAME
}
function projectDisplayName(project: ProjectRead): string {
if (project.name === REGIONAL_PROJECT_NAME) {
return 'Kempen · volledige regionale werkruimte'
}
if (project.name === LEGACY_MOL_PROJECT_NAME) {
return 'Mol · lokale historische werkruimte'
}
return project.name
}
interface ProjectPanelProps {
projects: ProjectRead[]
selectedProjectId: string | null
@@ -33,9 +49,9 @@ export function ProjectPanel({
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)
const regularProjects = projects.filter((project) => !isAdvancedProject(project))
const advancedProjects = projects.filter(isAdvancedProject)
const visibleProjects = selectedProject && isAdvancedProject(selectedProject)
? [selectedProject, ...regularProjects]
: regularProjects
@@ -52,7 +68,7 @@ export function ProjectPanel({
<div className="data-selection-summary data-selection-summary-project">
<span>Actieve werkruimte</span>
<strong>{selectedProject?.name ?? 'Geen werkruimte actief'}</strong>
<strong>{selectedProject ? projectDisplayName(selectedProject) : 'Geen werkruimte actief'}</strong>
<small>{selectedProject?.region ?? 'De regionale werkruimte wordt automatisch gekozen.'}</small>
</div>
@@ -68,7 +84,7 @@ export function ProjectPanel({
aria-pressed={project.id === selectedProjectId}
data-testid={`project-select-${project.id}`}
>
<strong>{project.name}</strong>
<strong>{projectDisplayName(project)}</strong>
<span>{project.region || 'Regio niet opgegeven'}</span>
</button>
</li>
@@ -118,11 +134,11 @@ export function ProjectPanel({
</button>
{demoWorkflowMessage ? <p>{demoWorkflowMessage}</p> : null}
</div>
{technicalProjects.length > 0 ? (
{advancedProjects.length > 0 ? (
<details className="technical-run-list">
<summary>{technicalProjects.length} technische test- en benchmarkruns</summary>
<summary>{advancedProjects.length} alternatieve en technische werkruimtes</summary>
<ul className="entity-list">
{technicalProjects.map((project) => (
{advancedProjects.map((project) => (
<li key={project.id}>
<button
className={project.id === selectedProjectId ? 'entity-card entity-card-active' : 'entity-card'}
@@ -131,7 +147,7 @@ export function ProjectPanel({
aria-pressed={project.id === selectedProjectId}
data-testid={`project-select-${project.id}`}
>
<strong>{project.name}</strong>
<strong>{projectDisplayName(project)}</strong>
<span>{project.region || 'Technische run'}</span>
</button>
</li>