v1.3.1: Fix symbol loading, DEL key, SOMA/Pendenzen in rapport, improved onboarding, org settings tab, logo upload

This commit is contained in:
Pepe Ziberi
2026-02-25 22:28:10 +01:00
parent 5917fa88ad
commit 708bdf6be0
17 changed files with 570 additions and 55 deletions

View File

@@ -461,8 +461,21 @@ export function JournalView({ projectId, projectTitle, projectLocation, einsatzl
zeitKontrolle: '', zeitAus: '', zeitEinruecken: '', zeitEnde: '',
lageEintreffen: '',
massnahmen: entries.map(e => `${formatTime(e.time)} ${e.what}${e.who ? ` (${e.who})` : ''}`),
somaItems: checkItems.map(c => ({
label: c.label,
confirmed: c.confirmed,
ok: c.ok,
confirmedAt: c.confirmedAt ? formatTime(c.confirmedAt) : null,
})),
pendenzenItems: pendenzen.map(p => ({
what: p.what,
who: p.who || '',
whenHow: p.whenHow || '',
done: p.done,
doneAt: p.doneAt ? formatTime(p.doneAt) : null,
})),
fahrzeuge: [] as any[],
bemerkungen: pendenzen.filter(p => !p.done).map(p => `PENDENT: ${p.what}${p.who ? ` (${p.who})` : ''}`).join('\n'),
bemerkungen: '',
einsatzleiter: einsatzleiter || '',
rapporteur: journalfuehrer || '',
reportNumber: '',

View File

@@ -202,6 +202,39 @@ export function RapportDialog({
) : <span className="text-muted-foreground">Keine Einträge</span>}
</div>
</div>
{/* SOMA Checklist (read-only, from journal) */}
{Array.isArray(rapportForm.somaItems) && rapportForm.somaItems.length > 0 && (
<div>
<label className="text-xs font-semibold text-muted-foreground uppercase">SOMA Checkliste</label>
<div className="border rounded-md p-2 bg-muted text-sm max-h-32 overflow-auto">
{rapportForm.somaItems.map((s: any, i: number) => (
<div key={i} className="flex items-center gap-2 py-0.5">
<span className={`inline-block w-4 text-center ${s.confirmed ? 'text-blue-600 font-bold' : 'text-muted-foreground'}`}>{s.confirmed ? '✓' : '—'}</span>
<span className={`inline-block w-4 text-center ${s.ok ? 'text-green-600 font-bold' : 'text-muted-foreground'}`}>{s.ok ? '✓' : '—'}</span>
<span>{s.label}</span>
{s.confirmedAt && <span className="text-[10px] text-muted-foreground ml-auto">{s.confirmedAt}</span>}
</div>
))}
</div>
</div>
)}
{/* Pendenzen (read-only, from journal) */}
{Array.isArray(rapportForm.pendenzenItems) && rapportForm.pendenzenItems.length > 0 && (
<div>
<label className="text-xs font-semibold text-muted-foreground uppercase">Pendenzen</label>
<div className="border rounded-md p-2 bg-muted text-sm max-h-32 overflow-auto">
{rapportForm.pendenzenItems.map((p: any, i: number) => (
<div key={i} className={`flex items-center gap-2 py-0.5 ${p.done ? 'line-through text-muted-foreground' : ''}`}>
<span className={`inline-block w-4 text-center ${p.done ? 'text-green-600 font-bold' : 'text-muted-foreground'}`}>{p.done ? '✓' : '○'}</span>
<span>{p.what}</span>
{p.who && <span className="text-muted-foreground text-xs">({p.who})</span>}
{p.whenHow && <span className="text-muted-foreground text-xs ml-1"> {p.whenHow}</span>}
{p.doneAt && <span className="text-[10px] text-green-600 ml-auto">{p.doneAt}</span>}
</div>
))}
</div>
</div>
)}
{/* Bemerkungen */}
<div>
<label className="text-xs font-semibold text-muted-foreground uppercase">Bemerkungen</label>