Artikelbild: nur noch an einer Stelle, hochkant, und beim Import beruecksichtigt

Das alte Bild in der Chargen-Karte entfaellt - seit dem neuen Bild neben den
Kennfeldern stand es doppelt auf der Seite.

Der Rahmen ist jetzt hochkant (3:4) statt quadratisch. Lebensmittelverpackungen
sind fast immer hoeher als breit; im Quadrat blieben links und rechts leere
Streifen.

Beim Import wurde image_url komplett verworfen, obwohl das JSON-Backup sie
enthaelt - eingelesene Artikel blieben deshalb dauerhaft ohne Bild. Die Adresse
wird jetzt uebernommen (bei bestehenden Artikeln nur ergaenzend, nie
ueberschreibend); die lokale Kopie holt der Bildabruf beim ersten Ansehen.
Bewusst nicht waehrend des Imports: Ein Backup mit 200 Artikeln wuerde sonst
200 Downloads in einer Anfrage abarbeiten.

Ausserdem holen jetzt auch Artikelliste, Ein- und Auslagern ihr Vorschaubild
aus der eigenen Datenbank statt direkt von Open Food Facts. Einzige Ausnahme
bleibt der OFF-Vorschlag beim Scannen: Dort existiert der Artikel noch nicht.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-23 13:48:20 +02:00
parent c155116b4e
commit 3763f2f114
7 changed files with 59 additions and 21 deletions

View File

@@ -194,9 +194,11 @@ input::placeholder { color: var(--muted); opacity: 0.7; }
drueckt ein langer Produktname die Eingaben aus der Karte heraus. */
.produkt-kopf { display: flex; gap: var(--sp-4); align-items: flex-start; }
.produkt-kopf-felder { flex: 1 1 auto; min-width: 0; }
/* Hochkant: Lebensmittelverpackungen sind fast immer hoeher als breit -
in einem quadratischen Rahmen blieben links und rechts leere Streifen. */
.produkt-bild {
flex: 0 0 auto;
width: 132px; height: 132px;
width: 132px; aspect-ratio: 3 / 4;
object-fit: contain; /* Verpackungen nie beschneiden */
background: var(--surface-2);
border: 1px solid var(--border);
@@ -205,8 +207,7 @@ input::placeholder { color: var(--muted); opacity: 0.7; }
}
/* Auf schmalen Fenstern haben Bild und Felder nebeneinander keinen Platz mehr. */
@media (max-width: 560px) {
.produkt-kopf { flex-direction: column-reverse; }
.produkt-bild { width: 100%; height: 160px; }
.produkt-kopf { flex-direction: column-reverse; align-items: center; }
}
.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
@@ -307,7 +308,6 @@ td select { width: auto; min-width: 0; max-width: 100%; }
border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--surface-2);
}
.thumb-fallback { display: grid; place-items: center; color: var(--muted); }
.product-img { max-width: 150px; border-radius: var(--radius); border: 1px solid var(--border); margin-bottom: var(--sp-3); }
/* ---------- Badges / pills ---------- */
.badge {