// auto-split module function updateStatusClass(selectEl) { if (!selectEl) return; const tr = selectEl.closest('tr'); ['st-pass', 'st-fail', 'st-skip', 'st-blocked'].forEach(c => selectEl.classList.remove(c)); ['row-pass', 'row-fail', 'row-skip', 'row-blocked'].forEach(c => tr.classList.remove(c)); const v = selectEl.value || ''; if (!v) return; selectEl.classList.add('st-' + v); tr.classList.add('row-' + v); } function bind() { const b = document.getElementById('btnPushDocBee'); if (b) { b.removeAttribute('disabled'); b.classList.remove('is-busy'); b.style.pointerEvents = 'auto'; b.addEventListener('click', postToDocBee, { once: false }); } const p = document.getElementById('btnPrintPDF'); const btn = document.getElementById('btnExportAll'); if (btn) { btn.addEventListener('click', e => { e.preventDefault(); exportAll().catch(err => alert('Export error: ' + err.message)); }); console.log('Export-Button gebunden'); } else { alert('Export-Button nicht gefunden (id=btnExportAll).'); } } function updateTokenBadge(state) { const el = els.docbeeTokenStatus; if (!el) return; const has = !!(typeof DOCBEE_TOKEN !== 'undefined' && String(DOCBEE_TOKEN || '').trim().length > 10); el.classList.remove('ok', 'bad', 'warn'); if (state === 'bad') { el.textContent = 'DocBee: ungültig/401'; el.classList.add('bad'); return; } if (state === 'ok' || (state === undefined && has)) { el.textContent = 'DocBee: Token gesetzt'; el.classList.add('ok'); return; } el.textContent = 'DocBee: fehlt'; el.classList.add('warn'); } function checkRequired(run) { const missing = run.steps.filter(s => (s.kind || 'step') === 'step' && s.required && !s.status); if (missing.length > 0) { alert("Folgende Pflichtschritte haben keinen Status:\n" + missing.map(s => `${s.id} – ${s.title}`).join("\n")); return false; } return true; } const badge = (status) => { const map = { pass: { txt: '✅ PASS', bg: '#DCFCE7', bd: '#22c55e' }, fail: { txt: '❌ FAIL', bg: '#FEE2E2', bd: '#ef4444' }, skip: { txt: '⏭️ SKIP', bg: '#E5E7EB', bd: '#6b7280' }, blocked: { txt: '⛔ BLOCK', bg: '#FEF3C7', bd: '#f59e0b' }, '': { txt: '—', bg: '#F3F4F6', bd: '#9ca3af' } }; const m = map[status || ''] || map['']; return `${m.txt}`; }