{gekozen.name}
{gekozen.ronde_label} {gekozen.impactmaker_account_id && impactmakers.get(gekozen.impactmaker_account_id) ? ` · Impactmaker: ${impactmakers.get(gekozen.impactmaker_account_id)}` : ""}
import Link from "next/link"; import { requireExpert } from "../../lib/auth"; import { listAccountNames } from "../../lib/platform-db"; import { listBeoordelingen, listProjectenVoorExpert } from "../../lib/experts"; import { BONUS_MALUS_OPTIONS, EXPERT_CRITERIA } from "../../lib/rikxCalculatie"; import { logout } from "../tenants/logout"; import { saveBeoordeling, stopImpersonation } from "./actions"; import { ProjectPlanView } from "./ProjectPlanView"; // De enige pagina voor experts: projecten in waardebepaling uit hun rondes, het project plan om te lezen // en hun eigen beoordeling. Experts zien niet wat andere experts hebben ingevuld. export default async function ExpertPage({ searchParams, }: { searchParams: Promise<{ project?: string; opgeslagen?: string; error?: string }>; }) { const expert = await requireExpert(); const { project: projectParam, opgeslagen, error } = await searchParams; const projecten = listProjectenVoorExpert(expert.id); const eigen = listBeoordelingen(projecten.map((p) => p.id)).filter((b) => b.expert_id === expert.id); const impactmakers = new Map(listAccountNames().map((a) => [a.id, a.name])); const gekozen = projecten.find((p) => String(p.id) === projectParam) ?? projecten[0] ?? null; const beoordeling = gekozen ? eigen.find((b) => b.project_id === gekozen.id) ?? null : null; const inputClass = "w-full h-10 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 px-3 text-sm text-zinc-900 dark:text-zinc-100 focus:outline-none focus:ring-2 focus:ring-rikx-orange"; return (
{gekozen.ronde_label} {gekozen.impactmaker_account_id && impactmakers.get(gekozen.impactmaker_account_id) ? ` · Impactmaker: ${impactmakers.get(gekozen.impactmaker_account_id)}` : ""}