On a failed fetch the store now keeps the last real payload (stale > fake) and flags `disconnected` instead of overwriting live data with bundled demo data. Sample fallback is gated behind import.meta.env.DEV, so `vite build` tree-shakes it out entirely (verified: no sample strings in dist). - cold start / no data: centered reconnect spinner that keeps retrying - data present + drop: stale data stays, header shows amber "reconnecting" - polling retries faster (4s) while disconnected, recovers automatically - sample.ts data moved into sampleOverview() so the module fully tree-shakes Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
82 lines
2.0 KiB
TypeScript
82 lines
2.0 KiB
TypeScript
export default {
|
||
app: {
|
||
brand: 'PressV',
|
||
plant: 'Werk',
|
||
line: 'Temperprozess',
|
||
subtitle: 'Live-Übersicht',
|
||
live: 'Live',
|
||
demo: 'Demo-Daten',
|
||
},
|
||
conn: {
|
||
connecting: 'Verbinde mit Server …',
|
||
lost: 'Verbindung verloren – neuer Versuch …',
|
||
reconnecting: 'Verbinde neu …',
|
||
},
|
||
flow: {
|
||
presses: 'Pressen',
|
||
pressesSub: 'inkl. nicht verladen',
|
||
loaded: 'Auf Wagen verladen',
|
||
onWay: 'Auf dem Weg',
|
||
oven: 'Ofen',
|
||
finished: 'Fertig',
|
||
orders: 'Aufträge',
|
||
ordersMax: 'bis 4 / Wagen',
|
||
},
|
||
kpi: {
|
||
notVerladen: 'Nicht verladen · auf Linie',
|
||
notVerladenSub: 'Teile noch an der Presse',
|
||
onWay: 'Auf dem Weg',
|
||
onWaySub: '{n} Wagen unterwegs',
|
||
oven: 'Im Ofen',
|
||
ovenSub: '{n} Batches',
|
||
finished: 'Fertig',
|
||
finishedSub: '{n} Wagen getempert',
|
||
scrapRate: 'Ausschussquote',
|
||
scrapRateSub: 'Ausschuss / Gesamt',
|
||
},
|
||
line: {
|
||
header: 'Maschinenhalle',
|
||
active: '{running}/{total} aktiv · Wagen hängen unter ihrer Presse',
|
||
toStorage: 'Aus dem Ofen',
|
||
toStorageTail: 'Fertig / Lager',
|
||
},
|
||
press: {
|
||
good: 'Gut',
|
||
notVerladen: 'nicht verladen',
|
||
free: 'frei',
|
||
statusRun: 'Läuft',
|
||
statusStop: 'Störung',
|
||
statusIdle: 'Leerlauf',
|
||
orderCount: '{n} aktive Aufträge',
|
||
},
|
||
lane: {
|
||
wagen: '{n} Wagen ↓',
|
||
none: '—',
|
||
parts: '{n} Teile',
|
||
ovenIn: 'Ofen in {n} min',
|
||
},
|
||
oven: {
|
||
title: 'Temper-Ofen',
|
||
meta: '{parts} Teile · {batches} Batches · Ø {avg} min',
|
||
nextOut: 'nächster raus',
|
||
progress: '{done}/{total} min getempert',
|
||
unit: 'min',
|
||
},
|
||
finished: {
|
||
title: 'Fertig · getempert',
|
||
range: 'Zeitraum · {label}',
|
||
goodParts: 'Gutteile',
|
||
carts: 'Wagen',
|
||
scrap: 'Ausschuss',
|
||
avgOven: 'Ø Ofenzeit',
|
||
},
|
||
range: {
|
||
label: 'Fertig · Zeitraum',
|
||
'12h': 'letzte 12 h',
|
||
'1d': 'letzter Tag',
|
||
'7d': 'letzte 7 Tage',
|
||
'14d': 'letzte 14 Tage',
|
||
'30d': 'letzte 30 Tage',
|
||
},
|
||
}
|