import {useEffect,useState} from 'react'; import {request} from './api'; import {Modal} from './FormElements'; import {MasterDataEditor} from './BusinessForms'; import {Statistics} from './Statistics'; type Context={id:number;number:string;label:string;headquartersId:number;canOpenMaster:boolean;canStatistics:boolean;masterUnavailableReason:string}; export function AppointmentCustomerNavigation({customer,kind,onClose,onDirtyChange}:{customer:number;kind:'master'|'statistics';onClose:()=>void;onDirtyChange:(dirty:boolean)=>void}){ const [data,setData]=useState(null),[error,setError]=useState(''); useEffect(()=>{if(customer===0)return;let active=true;request(`/appointments/customers/${customer}/context`).then(d=>{if(active)setData(d);}).catch(e=>{if(active)setError(e.message);});return()=>{active=false;};},[customer]); // The existing master editor owns save/uncertain-response and discard handling. // Keep the outer calendar/workspace from unmounting an open editor silently. const editing=kind==='master'&&(customer===0||!!data?.canOpenMaster); useEffect(()=>{onDirtyChange(editing);return()=>onDirtyChange(false);},[editing,onDirtyChange]); if(editing)return {}}/>; return
{error?

{error}

:!data?

Kunde wird geladen …

:kind==='master'?

{data.masterUnavailableReason}

:!data.canStatistics?

Für diese Ansicht ist das Statistikrecht erforderlich.

:!data.number?

Beim Kunden fehlt die Kundennummer für die Statistik.

:}
; }