// ----------------------------- // Projektübersicht — CSV/ZIP-Export // ----------------------------- // Stellt exportCSV() bereit: lädt den ZIP mit den übersichtlichen CSV-Dateien // der aktuellen Abteilung über GET /export-csv und stößt den Download an. // Hängt im Seitenmenü von Test.html am Button "CSV Export" und nutzt baseUrl() // aus js/server.js sowie currentDepartment aus js/globals.js. Der ZIP enthält // pro logischer Entität eine CSV (Wochen, Personen, Projekte, …), erzeugt vom // Server (siehe server.js im Projekt-Root). // exportCSV: fordert den CSV-Export der aktuellen Abteilung an und lädt ihn // als ZIP-Datei herunter. Kein Parameter, keine Rückgabe; Fehler werden über // ein Alert gemeldet. async function exportCSV(){ try { const dept = currentDepartment || 'ELT'; const res = await fetch(baseUrl() + '/export-csv?department=' + encodeURIComponent(dept)); if(!res.ok){ let msg = 'Server HTTP ' + res.status; try { const json = await res.json(); if(json && json.error) msg = json.error; } catch(e){ /* Antwort war kein JSON */ } throw new Error(msg); } const blob = await res.blob(); const filename = 'Projektuebersicht_' + dept + '_' + new Date().toISOString().slice(0, 10) + '.zip'; const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename; document.body.appendChild(a); a.click(); a.remove(); setTimeout(() => URL.revokeObjectURL(url), 1000); } catch(err){ console.error('CSV-Export fehlgeschlagen:', err); alert('CSV-Export fehlgeschlagen: ' + (err.message || err)); } }