Artikeldaten von Open Food Facts vergleichen und einzeln uebernehmen

Neuer Knopf unter "Nachschlagen" auf der Artikelseite. Er fragt OFF erneut und
stellt die Antwort den eigenen Daten gegenueber: Name, Marke, Packungsgroesse,
Kategorie und Bild, jeweils mit eigenem Uebernehmen-Knopf und einem
"Alle uebernehmen". Uebernommen wird nur ins Formular - gespeichert erst mit
"Speichern", damit man bis zuletzt bei den eigenen Daten bleiben kann.

Dafuer noetig: GET /products/{id}/off. /lookup taugt hier nicht, weil es bei
einem bekannten Barcode den eigenen Artikel meldet und OFF gar nicht erst
fragt. Der neue Endpunkt probiert auch die zusaetzlichen EAN-Codes durch - oft
ist nur einer davon bei OFF hinterlegt.

Damit ist das Bild unabhaengig davon nachholbar, ob ein Backup eine
Bildadresse enthielt.

Nebenbei: Der Nachschlagen-Knopf uebergab die Gruppenliste, wo die
Einheitenliste erwartet wird - die Einheit eines Vorschlags wurde deshalb nie
richtig zugeordnet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-23 14:00:30 +02:00
parent 2fa274eae8
commit 8766e35e91
7 changed files with 267 additions and 9 deletions

View File

@@ -209,6 +209,27 @@ input::placeholder { color: var(--muted); opacity: 0.7; }
@media (max-width: 560px) {
.produkt-kopf { flex-direction: column-reverse; align-items: center; }
}
/* Zwei gestapelte Knoepfe neben einem Eingabefeld. */
.knopf-spalte { display: flex; flex-direction: column; gap: var(--sp-2); flex: 0 0 auto; }
.knopf-spalte .btn { justify-content: center; white-space: nowrap; }
/* Gegenueberstellung mit Open Food Facts */
.off-vergleich {
border: 1px solid var(--border);
border-radius: var(--radius);
background: var(--surface-2);
padding: var(--sp-3);
margin-bottom: var(--sp-4);
}
.off-kopf { display: flex; align-items: center; gap: var(--sp-2); margin-bottom: var(--sp-3); }
.off-kopf h3 { font-size: 0.95rem; margin: 0; flex: 1; }
.off-tabelle { background: var(--surface); }
/* Klein genug, dass die Zeile nicht auseinandergeht, gross genug zum Erkennen. */
.off-bild {
width: 56px; aspect-ratio: 3 / 4; object-fit: contain;
background: var(--surface-2); border-radius: 4px; display: block;
}
.field-inline { display: flex; gap: var(--sp-2); align-items: flex-end; margin-bottom: var(--sp-4); }
/* Labels in einer Inline-Reihe duerfen keinen eigenen Abstand haben, sonst
rutschen daneben stehende Buttons optisch nach unten. */