Tabellen entzerrt, EAN-Codes mit Marke und Artikelname, Codes-Block nach unten

EAN-Codes:
- Das Kennzeichen "Artikel" ist weg; stattdessen stehen Marke und Artikelname
  zusammen ("Zweifel - Moutarde Original Chips"). Die Marke allein reichte nicht,
  um einen Code wiederzuerkennen. Hinweistext entsprechend angepasst.

Produktseite:
- "Weitere EAN-Codes" steht jetzt unterhalb von Formular und Chargen statt als
  dritte Spalte dazwischen. Die Codes braucht man selten und sie schoben die
  beiden wichtigen Bloecke auseinander.

Tabellen:
- "overflow-wrap: anywhere" galt fuer ALLE Zellen und zerriss Woerter mitten
  drin ("PROD UKTE", "555 Gram m"). Jetzt nur noch gezielt per Klasse.
- Kopfzeilen und Zahl-plus-Einheit brechen nicht mehr um.
- Eingaben in Tabellen sind kompakter (kleinere Polsterung, Zahlenfelder 8ch),
  Auswahlfelder richten sich nach ihrem Text statt 132px Mindestbreite -
  dadurch sind die Zeilen deutlich schlanker.
- Kennzeichen wie "niedrig" oder "abgelaufen" sitzen ueber .cell-row in einer
  Zeile mit dem Wert und rutschen nicht mehr je nach Zeilenhoehe herum.

Geprueft: "npm run build" laeuft durch. Backend unveraendert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-23 07:50:42 +02:00
parent d804666a95
commit 32d49b47bd
5 changed files with 80 additions and 57 deletions

View File

@@ -11,11 +11,12 @@ import Icon from "./Icon";
*
* onAdd({ code, note }) und onDelete(code) werden vom Aufrufer bereitgestellt.
*/
/** Innerhalb einer Gruppe unterscheidet die Marke besser als der Name
* in der Gruppe "Mehl" heisst jeder Artikel irgendwie "…mehl". Fehlt die
* Marke, bleibt der Name als Rueckfall. */
/** Marke und Artikelname zusammen die Marke allein reichte nicht, um einen
* Code wiederzuerkennen ("Zweifel" gibt es mehrfach), der Name allein auch
* nicht (in "Mehl" heisst alles irgendwie Mehl). Fehlt eines von beiden,
* bleibt das andere stehen. */
function besitzer(b) {
return b.product_brand || b.product_name || "";
return [b.product_brand, b.product_name].filter(Boolean).join(" · ");
}
export default function BarcodeList({
@@ -45,8 +46,7 @@ export default function BarcodeList({
<li key={`p-${b.code}`}>
<span className="code-row">
<code className="strong">{b.code}</code>
<span className="badge">Artikel</span>
<span className="muted small owner" title={b.product_name}>{besitzer(b)}</span>
<span className="muted small owner" title={besitzer(b)}>{besitzer(b)}</span>
</span>
</li>
))}
@@ -57,10 +57,7 @@ export default function BarcodeList({
{b.product_name ? (
/* Gehört der Code zu einem Artikel, sagt dessen Marke bereits,
worum es geht eine Notiz waere hier nur Dopplung. */
<>
<span className="badge">Artikel</span>
<span className="muted small owner" title={b.product_name}>{besitzer(b)}</span>
</>
<span className="muted small owner" title={besitzer(b)}>{besitzer(b)}</span>
) : (
/* Codes ohne Artikel haben keine Marke. Hier ist die Notiz die
einzige Angabe, woran man den Code wiedererkennt. */