import {useUiText} from './UiLanguage'; import { useEffect, useState } from 'react'; import { Field } from './FormElements'; import { request } from './api'; type Def={id:number;label:string;type:string};type Hq={id:number;label:string}; const kinds:Record={'button:cs:cs_eid':'customer','button:cr:cr_eid':'courier','select:crvh:crvh_sid':'vehicle','select:vht':'vehicleType','select:grp':'group','select:br':'branch'}; export function EvaluationField({field,value,headquarters,headquartersOptions,onChange}:{field:Def;value:string;headquarters:number;headquartersOptions:Hq[];onChange:(v:string)=>void}){ const uiText=useUiText(); const [query,setQuery]=useState(''),[items,setItems]=useState<{id:number;value:string|number;label:string}[]>([]),[error,setError]=useState('');const kind=kinds[field.type]; useEffect(()=>{if(!kind)return;let live=true;const timer=setTimeout(()=>request('/evaluations/lookup?'+new URLSearchParams({headquarters:String(headquarters),kind,q:query})).then(v=>{if(live){setItems(v);setError('');}}).catch(e=>{if(live)setError(e.message);}),250);return()=>{live=false;clearTimeout(timer);};},[query,kind,headquarters]); if(['date_begin','date_end','date'].includes(field.type)){const match=value.match(/^(\d{2})\.(\d{2})\.(\d{4})$/),iso=match?`${match[3]}-${match[2]}-${match[1]}`:'';return {const v=e.currentTarget.value;onChange(v?v.split('-').reverse().join('.'):'');}}/>;} if(field.type==='checkboxes_hq'){const selected=value.split(',').filter(Boolean);return
{field.label}
{headquartersOptions.map(h=>)}
;} if(!kind)return ; return
onChange(e.target.value)} placeholder="Keine Auswahl"/>setQuery(e.target.value)} placeholder="Nummer oder Name"/>{error&&

{error}

}

Bis zu 100 Treffer. Leeres Feld hebt die Auswahl auf.

; }