/* Buchungskalender: Fehler der Schnittstelle fuers Formular. Die Schnittstelle antwortet { fehler: '', felder?: {feld: text} }; request() (shop-dom.js) legt den Code in err.fehler und die ganze Antwort in err.body. Fuer zeigeFehler() daher vorher umformen: zeigeFehler(form, fehlerFuerFormular(err)). */ const CODES = { zeitraum_belegt: 'Der Zeitraum ist bereits belegt.', zeitraum_ungueltig: 'Bitte prüfe den Zeitraum.', } /** => { message, fehler: { feld: text } } (Feldfehler aus body.felder, sonst ein Text unter „_“). */ export function fehlerFuerFormular(err) { const felder = err?.body?.felder const STANDARD = 'Das hat nicht geklappt. Bitte versuch es noch einmal.' const code = typeof err?.fehler === 'string' ? err.fehler : '' const message = (code && CODES[code]) || (code ? STANDARD : err?.message) || STANDARD if (felder && typeof felder === 'object' && Object.keys(felder).length) return { message, fehler: felder } return { message, fehler: { _: message } } }