v1.0.7: fix symbol scale bug, custom layer dropdown, simplify rapport form, app logo in rapport

This commit is contained in:
Pepe Ziberi
2026-02-22 01:09:33 +01:00
parent e4c3c92cab
commit 0784553017
5 changed files with 81 additions and 91 deletions

View File

@@ -948,10 +948,6 @@ export function JournalView({ projectId, projectTitle, projectLocation, einsatzl
</div>
</div>
<div className="grid grid-cols-2 gap-3">
<div>
<label className="text-xs font-semibold text-gray-500 uppercase">Koordinaten</label>
<Input value={rapportForm.koordinaten || ''} onChange={e => setRapportForm(f => ({ ...f, koordinaten: e.target.value }))} />
</div>
<div>
<label className="text-xs font-semibold text-gray-500 uppercase">Alarmierungsart</label>
<Input value={rapportForm.alarmierungsart || ''} onChange={e => setRapportForm(f => ({ ...f, alarmierungsart: e.target.value }))} />
@@ -964,22 +960,15 @@ export function JournalView({ projectId, projectTitle, projectLocation, einsatzl
{/* Zeitverlauf */}
<div>
<label className="text-xs font-semibold text-gray-500 uppercase mb-1 block">Zeitverlauf</label>
<div className="grid grid-cols-4 gap-2">
{[
['zeitAlarm', 'Alarm'],
['zeitAusruecken', 'Ausrücken'],
['zeitEintreffen', 'Eintreffen'],
['zeitBereit', 'Bereit'],
['zeitKontrolle', 'F. u. Kontrolle'],
['zeitAus', 'F. aus'],
['zeitEinruecken', 'Einrücken'],
['zeitEnde', 'Ende'],
].map(([key, label]) => (
<div key={key}>
<label className="text-[10px] text-gray-400">{label}</label>
<Input className="text-sm h-8" value={rapportForm[key] || ''} onChange={e => setRapportForm(f => ({ ...f, [key]: e.target.value }))} placeholder="HH:MM" />
</div>
))}
<div className="grid grid-cols-2 gap-3">
<div>
<label className="text-[10px] text-gray-400">Alarm</label>
<Input type="time" className="text-sm h-8" value={rapportForm.zeitAlarm || ''} onChange={e => setRapportForm(f => ({ ...f, zeitAlarm: e.target.value }))} />
</div>
<div>
<label className="text-[10px] text-gray-400">Eintreffen</label>
<Input type="time" className="text-sm h-8" value={rapportForm.zeitEintreffen || ''} onChange={e => setRapportForm(f => ({ ...f, zeitEintreffen: e.target.value }))} />
</div>
</div>
</div>
{/* Lagebild */}
@@ -1064,22 +1053,20 @@ export function JournalView({ projectId, projectTitle, projectLocation, einsatzl
} else {
mapScreenshot = rawScreenshot
}
// Convert logo URL to base64 for PDF rendering
// Convert Lageplan app logo to base64 for PDF rendering
let logoDataUri = ''
if (rapportForm.logoUrl) {
try {
const logoRes = await fetch(rapportForm.logoUrl)
if (logoRes.ok) {
const blob = await logoRes.blob()
logoDataUri = await new Promise<string>((resolve) => {
const reader = new FileReader()
reader.onloadend = () => resolve(reader.result as string)
reader.readAsDataURL(blob)
})
}
} catch (e) { console.warn('Logo fetch failed:', e) }
}
const rapportData = { ...rapportForm, mapScreenshot, logoUrl: logoDataUri || rapportForm.logoUrl }
try {
const logoRes = await fetch('/logo-icon.png')
if (logoRes.ok) {
const blob = await logoRes.blob()
logoDataUri = await new Promise<string>((resolve) => {
const reader = new FileReader()
reader.onloadend = () => resolve(reader.result as string)
reader.readAsDataURL(blob)
})
}
} catch (e) { console.warn('Logo fetch failed:', e) }
const rapportData = { ...rapportForm, mapScreenshot, logoUrl: logoDataUri || '/logo-icon.png' }
console.log('[Rapport] Sending request, body size ~', JSON.stringify({ projectId, data: rapportData }).length, 'bytes')
const res = await fetch('/api/rapports', {
method: 'POST',