From 0784553017e9edbfadeb67f81c91124402d3bd86 Mon Sep 17 00:00:00 2001 From: Pepe Ziberi Date: Sun, 22 Feb 2026 01:09:33 +0100 Subject: [PATCH] v1.0.7: fix symbol scale bug, custom layer dropdown, simplify rapport form, app logo in rapport --- package.json | 2 +- src/app/rapport/[token]/page.tsx | 17 ++---- src/components/journal/journal-view.tsx | 57 +++++++---------- src/components/map/map-view.tsx | 81 ++++++++++++++++--------- src/lib/rapport-pdf.tsx | 15 +---- 5 files changed, 81 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index 1c99256..20abc7c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lageplan", - "version": "1.0.6", + "version": "1.0.7", "description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation", "private": true, "scripts": { diff --git a/src/app/rapport/[token]/page.tsx b/src/app/rapport/[token]/page.tsx index 2ddeea6..fe4bb1c 100644 --- a/src/app/rapport/[token]/page.tsx +++ b/src/app/rapport/[token]/page.tsx @@ -145,9 +145,7 @@ export default function RapportViewerPage({ params }: { params: Promise<{ token: {/* Header */}
- {d.logoUrl && ( - Logo - )} + Lageplan

Einsatzrapport

{d.organisation} · {d.abteilung}

@@ -168,8 +166,7 @@ export default function RapportViewerPage({ params }: { params: Promise<{ token: - - +
@@ -177,15 +174,9 @@ export default function RapportViewerPage({ params }: { params: Promise<{ token: {/* 2. Zeitverlauf */}
-
+
- - - - - - - +
diff --git a/src/components/journal/journal-view.tsx b/src/components/journal/journal-view.tsx index 4d09b6a..4eee8e5 100644 --- a/src/components/journal/journal-view.tsx +++ b/src/components/journal/journal-view.tsx @@ -948,10 +948,6 @@ export function JournalView({ projectId, projectTitle, projectLocation, einsatzl
-
- - setRapportForm(f => ({ ...f, koordinaten: e.target.value }))} /> -
setRapportForm(f => ({ ...f, alarmierungsart: e.target.value }))} /> @@ -964,22 +960,15 @@ export function JournalView({ projectId, projectTitle, projectLocation, einsatzl {/* Zeitverlauf */}
-
- {[ - ['zeitAlarm', 'Alarm'], - ['zeitAusruecken', 'Ausrücken'], - ['zeitEintreffen', 'Eintreffen'], - ['zeitBereit', 'Bereit'], - ['zeitKontrolle', 'F. u. Kontrolle'], - ['zeitAus', 'F. aus'], - ['zeitEinruecken', 'Einrücken'], - ['zeitEnde', 'Ende'], - ].map(([key, label]) => ( -
- - setRapportForm(f => ({ ...f, [key]: e.target.value }))} placeholder="HH:MM" /> -
- ))} +
+
+ + setRapportForm(f => ({ ...f, zeitAlarm: e.target.value }))} /> +
+
+ + setRapportForm(f => ({ ...f, zeitEintreffen: e.target.value }))} /> +
{/* 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((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((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', diff --git a/src/components/map/map-view.tsx b/src/components/map/map-view.tsx index c1ca262..4da9a19 100644 --- a/src/components/map/map-view.tsx +++ b/src/components/map/map-view.tsx @@ -107,6 +107,7 @@ export function MapView({ const measureCoordsRef = useRef([]) const [isMapLoaded, setIsMapLoaded] = useState(false) const [activeBaseLayer, setActiveBaseLayer] = useState<'osm' | 'satellite' | 'swisstopo' | 'swissimage'>('osm') + const [layerDropdownOpen, setLayerDropdownOpen] = useState(false) const [measurePointCount, setMeasurePointCount] = useState(0) const [measureFinished, setMeasureFinished] = useState(false) const [drawingPointCount, setDrawingPointCount] = useState(0) @@ -2106,11 +2107,12 @@ export function MapView({ selectedSymbolRef.current.scale = Math.max(0.2, Math.min(10, startScale * ratio)) selectedSymbolRef.current.innerEl.style.fontSize = `${baseFontSize * selectedSymbolRef.current.scale}px` } else { - // For symbols: resize wrapper + // For symbols: resize wrapper, use ratio from start to preserve zoom-aware scale selectedSymbolRef.current.wrapperEl.style.width = `${width}px` selectedSymbolRef.current.wrapperEl.style.height = `${height}px` - const baseSize = 32 - selectedSymbolRef.current.scale = Math.max(0.1, Math.min(10, width / baseSize)) + const startW = selectedSymbolRef.current.resizeStartWidth || 1 + const startScale = selectedSymbolRef.current.resizeStartScale || 1 + selectedSymbolRef.current.scale = Math.max(0.1, Math.min(10, startScale * (width / startW))) } } }} @@ -2155,33 +2157,52 @@ export function MapView({ )} {/* Layer selector dropdown */} - +
+ + {layerDropdownOpen && ( + <> +
setLayerDropdownOpen(false)} /> +
+ {([ + { key: 'osm', label: 'OpenStreetMap' }, + { key: 'satellite', label: 'Satellit (Esri)' }, + { key: 'swisstopo', label: 'Swisstopo Karte' }, + { key: 'swissimage', label: 'Luftbild CH' }, + ] as const).map(({ key, label }) => ( + + ))} +
+ + )} +
{/* Zeichnung abschliessen Button (Linie/Polygon/Pfeil) */} {(drawMode === 'linestring' || drawMode === 'polygon' || drawMode === 'arrow' || drawMode === 'dangerzone') && drawingPointCount >= 2 && ( diff --git a/src/lib/rapport-pdf.tsx b/src/lib/rapport-pdf.tsx index 0a6d069..eb04d65 100644 --- a/src/lib/rapport-pdf.tsx +++ b/src/lib/rapport-pdf.tsx @@ -166,8 +166,7 @@ export function RapportDocument({ data }: { data: RapportData }) { - - + @@ -185,16 +184,8 @@ export function RapportDocument({ data }: { data: RapportData }) { - - - - - - - - - - + +