/* Baustelle PWA Hauptlogik. Alle Routen + Views in einer Datei. */ const main = () => document.getElementById('main'); const title = (s) => document.getElementById('page-title').textContent = s; window.showToast = function (msg, kind) { const t = document.createElement('div'); t.className = 'toast' + (kind ? ' ' + kind : ''); t.textContent = msg; document.getElementById('toast-container').appendChild(t); setTimeout(() => t.remove(), 2800); }; function showLoader(text) { main().innerHTML = '
${escapeHtml(data.customer.name)}
${escapeHtml(data.customer.address || '')}
${escapeHtml((data.customer.zip || '') + ' ' + (data.customer.town || ''))}
${data.customer.phone ? `` : ''}${escapeHtml(data.order.auftragsbeschreibung)}
📄 ${escapeHtml(p.filename)}
`).join('')}${escapeHtml(data.report.titel || data.report.ref)}
Auftrag: ${escapeHtml(data.report.auftragsnummer || '—')}
Format: ${escapeHtml(data.report.page_format || 'A4')} ${data.report.page_orientation === 'L' ? 'Quer' : 'Hoch'}
Seiten: ${data.pages.length}
Status: ${statusLabel}
${escapeHtml(user.name || user.login || 'Unbekannt')}
${escapeHtml(user.login || '')}
Baustelle PWA v1.0
`; document.getElementById('btn-sync').onclick = async () => { await offline.syncQueue(); showToast('Sync ausgelöst'); }; document.getElementById('btn-logout').onclick = async () => { await api.logout(); router.go('#/login'); }; }); /* Bottom nav + Hilfe-Button */ document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('#bottom-nav button').forEach(b => { b.addEventListener('click', () => router.go('#/' + b.dataset.route)); }); const helpBtn = document.getElementById('help-btn'); if (helpBtn) helpBtn.addEventListener('click', openHelpModal); }); function openHelpModal() { const modal = document.createElement('div'); modal.className = 'fullscreen-modal help-modal'; modal.innerHTML = `Im Reiter Aufträge siehst du alle offenen Aufträge, die dir zugewiesen sind. Oben kannst du per Suchfeld nach Auftragsnummer oder Kundenname filtern.
Auf einen Auftrag tippen → Detail-Ansicht mit Kunde, Adresse, Telefon.
Im Auftrag-Detail:
Die Bilder werden automatisch auf 2000px verkleinert und hochgeladen. Sie landen in einem Entwurf-Bericht, der automatisch zum Auftrag angelegt wird.
💡 Alle weiteren Fotos werden an denselben Entwurf angehängt — du hast also einen Bericht mit mehreren Seiten, bis du ihn finalisierst.
Tippe auf ein hochgeladenes Foto im Grid → Vollbild-Ansicht.
Im Skizzen-Editor:
Oben rechts ✓ → Skizze wird als eigenständige neue Bericht-Seite gespeichert. Das Original-Foto bleibt unverändert.
🎙 Sprachnotiz aufnehmen im Auftrag-Detail:
Unter der Foto-Liste erscheint eine eigene Sektion „🎙 Sprachnotizen" mit Play-Button je Eintrag.
Im Reiter Berichte siehst du alle deine Berichte mit Status.
Bericht öffnen → 📑 Bericht finalisieren → erzeugt das PDF und legt es unter „Verknüpfte Dokumente" des Auftrags ab. In Dolibarr siehst du den Bericht dann direkt beim Auftrag.
💡 Wenn du nach dem Finalisieren neue Fotos machst, wird automatisch ein neuer Entwurf angelegt. Der finalisierte bleibt unberührt.
Die App funktioniert auch ohne Internet:
So wird die PWA zur echten App:
Danach startet sie wie eine normale App, ohne Browser-Leiste.
Im Reiter ⚙️: