actionsleiste update

This commit is contained in:
2026-04-07 17:12:32 +02:00
parent 2587238b3e
commit cbaba8cbe8
11 changed files with 1187 additions and 178 deletions

View File

@@ -28,6 +28,14 @@ const STATUS_LABEL = { offen: 'Offen', in_bearbeitung: 'In Bearbeitung', entsorg
const PRIO_LABELS = { kritisch: 'Kritisch', hoch: 'Hoch', mittel: 'Mittel', niedrig: 'Niedrig' };
const PRIO_OPTIONS = ['kritisch', 'hoch', 'mittel', 'niedrig'];
const STATUS_OPTIONS = ['offen', 'in_bearbeitung', 'entsorgt'];
const BEARB_STATUS_LABELS = {
'': 'Nicht gesetzt',
portalpruefung: '\u{1F50D} Portalprüfung durchführen',
gutschreiben_entsorgen: '\u267B\uFE0F Direkt gutschreiben & entsorgen',
zurueck_hersteller: '\u{1F4E6} Zurück an Hersteller senden',
defekt_ankunft: '\u26A0\uFE0F Defekt bei Ankunft melden',
};
const BEARB_STATUS_OPTIONS = ['', 'portalpruefung', 'gutschreiben_entsorgen', 'zurueck_hersteller', 'defekt_ankunft'];
function formatTimestamp(ts) {
if (!ts) return '';
@@ -97,6 +105,7 @@ export default function AssetDetail() {
zustaendig: doc.zustaendig || '',
status: doc.status || 'offen',
prio: doc.prio || 'mittel',
bearbeitungsStatus: doc.bearbeitungsStatus || '',
kommentar: doc.kommentar || '',
});
} catch (err) {
@@ -125,6 +134,7 @@ export default function AssetDetail() {
{ key: 'zustaendig', label: 'Zuständig' },
{ key: 'status', label: 'Status' },
{ key: 'prio', label: 'Priorität' },
{ key: 'bearbeitungsStatus', label: 'Bearbeitungsstatus' },
{ key: 'kommentar', label: 'Kommentar' },
];
const changes = [];
@@ -134,6 +144,8 @@ export default function AssetDetail() {
if (oldVal !== newVal) {
if (f.key === 'status') {
changes.push(`${f.label}: ${STATUS_LABEL[oldVal] || oldVal}${STATUS_LABEL[newVal] || newVal}`);
} else if (f.key === 'bearbeitungsStatus') {
changes.push(`${f.label}: ${BEARB_STATUS_LABELS[oldVal] || oldVal || 'Nicht gesetzt'}${BEARB_STATUS_LABELS[newVal] || newVal || 'Nicht gesetzt'}`);
} else if (f.key === 'prio') {
changes.push(`${f.label}: ${PRIO_LABELS[oldVal] || oldVal}${PRIO_LABELS[newVal] || newVal}`);
} else {
@@ -201,6 +213,7 @@ export default function AssetDetail() {
zustaendig: asset.zustaendig || '',
status: asset.status || 'offen',
prio: asset.prio || 'mittel',
bearbeitungsStatus: asset.bearbeitungsStatus || '',
kommentar: asset.kommentar || '',
});
}
@@ -369,6 +382,26 @@ export default function AssetDetail() {
)}
</div>
{(form.status === 'in_bearbeitung' || asset.bearbeitungsStatus) && (
<div className="space-y-1.5 sm:col-span-2">
<Label>Bearbeitungsstatus</Label>
{editing ? (
<Select value={form.bearbeitungsStatus || '_none'} onValueChange={(v) => setForm(f => ({ ...f, bearbeitungsStatus: v === '_none' ? '' : v }))}>
<SelectTrigger className="w-full">
<SelectValue />
</SelectTrigger>
<SelectContent>
{BEARB_STATUS_OPTIONS.map((s) => (
<SelectItem key={s || '_none'} value={s || '_none'}>{BEARB_STATUS_LABELS[s]}</SelectItem>
))}
</SelectContent>
</Select>
) : (
<p className="text-sm">{BEARB_STATUS_LABELS[asset.bearbeitungsStatus || ''] || ''}</p>
)}
</div>
)}
<div className="space-y-1.5 sm:col-span-2">
<Label>Kommentar</Label>
{editing ? (