Textmengencheck: Ausrichtungs-Dropdown (hoch/quer) + robustes Laden
All checks were successful
Build & Deploy / deploy (push) Successful in 23s

Formate werden zu Familien (family) gruppiert; hat eine Familie mehrere
Ausrichtungen (orientation hoch/quer), erscheint ein zweites Dropdown.
fetchCheckFormats faellt auf aktive Formate zurueck, falls show_check
(vor dem Directus-Bootstrap) noch fehlt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
s4luorth
2026-09-30 11:04:37 +02:00
parent ffb4de7fba
commit ffef7a50de
2 changed files with 88 additions and 17 deletions

View File

@@ -232,7 +232,13 @@ export type Product = {
input_mode: 'text' | 'datei';
};
export type Format = { id: number; key: string; name: string; product: number };
export type Format = {
id: number; key: string; name: string; product: number;
/** Familie fürs Ausrichtungs-Dropdown (z. B. A5, A6). Leer = eigener Eintrag. */
family?: string | null;
/** Ausrichtung innerhalb der Familie. Leer = keine Wahl. */
orientation?: 'hoch' | 'quer' | null;
};
/**
* Produkt-Schlüssel, die für den angemeldeten Kunden individuell freigeschaltet
@@ -274,11 +280,23 @@ export async function fetchFormats(): Promise<Format[]> {
* öffentlichen Konfigurator bestellbar sind. Adress-Postkarten sind ausgenommen.
*/
export async function fetchCheckFormats(): Promise<Format[]> {
const data = await request(
'/items/formats?fields=id,key,name,product&filter[show_check][_eq]=true&limit=-1',
const felder = 'fields=id,key,name,product,family,orientation';
try {
const data = await request(
`/items/formats?${felder}&filter[show_check][_eq]=true&limit=-1`,
{ auth: false },
);
const rows: Format[] = data?.data ?? [];
if (rows.length) return rows;
} catch {
/* Feld show_check evtl. noch nicht angelegt → Fallback unten. */
}
// Fallback (z. B. vor dem Directus-Bootstrap): aktive Formate, damit der Check nutzbar bleibt.
const aktiv = await request(
`/items/formats?${felder}&filter[active][_eq]=true&limit=-1`,
{ auth: false },
);
return data?.data ?? [];
return aktiv?.data ?? [];
}
/* ── Preis & Bestellung (Extension skrift-orders) ─────────────────────────── */