16 lines
930 B
JavaScript
16 lines
930 B
JavaScript
/* Buchungskalender: Fehler der Schnittstelle fuers Formular. Die Schnittstelle antwortet { fehler: '<code>', 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 message = (typeof err?.fehler === 'string' && CODES[err.fehler]) || err?.message || 'Das hat nicht geklappt. Bitte versuch es noch einmal.'
|
|
if (felder && typeof felder === 'object' && Object.keys(felder).length) return { message, fehler: felder }
|
|
return { message, fehler: { _: message } }
|
|
}
|