Na tej stronie korzystamy z narzędzi własnych lub zewnętrznych, które przechowują małe pliki (cookie) na Twoim urządzeniu.
Masz prawo zdecydować, czy włączyć statystyczne i profilujące pliki cookie.
Włączając je pomagasz nam oferować lepsze usługi i udoskonalać nasz serwis.

`; } /* ===================== Generate report ===================== */ function generateReportForHost(host){ let state = null; if(host){ const instanceId = host.getAttribute('data-instance'); if(instanceId) state = readState(instanceId); } if(!state){ state = readLatestState(); } if(!state){ alert('Nie znaleziono danych mapy interesariuszy w localStorage. Otwórz mapę interesariuszy i dodaj/zaimportuj dane.'); return; } const html = buildReportHTML(state); const w = window.open('', 'SDBG_Raport_Interesariuszy', 'width=1200,height=800'); if(!w){ alert('Przeglądarka zablokowała nowe okno. Zezwól na pop-upy dla tej strony, aby wygenerować PDF.'); return; } w.document.open(); w.document.write(html); w.document.close(); } /* ===================== Button injection ===================== */ function findButtonByText(container, needle){ const btns = Array.from(container.querySelectorAll('button, a')); const n = String(needle||'').toLowerCase(); return btns.find(b => (b.textContent || '').trim().toLowerCase().includes(n)) || null; } function ensureFloatingButton(){ if(document.querySelector('[data-sdbg-pdf="1"]')) { const fb = document.querySelector('[data-sdbg-pdf-float="1"]'); if(fb) fb.remove(); return; } if(document.querySelector('[data-sdbg-pdf-float="1"]')) return; const fb = document.createElement('button'); fb.type = 'button'; fb.className = 'sdbg-report-btn sdbg-report-float'; fb.textContent = 'Generuj raport PDF'; fb.setAttribute('data-sdbg-pdf-float','1'); fb.addEventListener('click', function(){ const host = document.querySelector('.goodman-stakeholders[data-instance]') || document.querySelector('.goodman-stakeholders') || null; generateReportForHost(host); }); document.body.appendChild(fb); } function tryInjectIntoWidget(){ const hosts = document.querySelectorAll('.goodman-stakeholders'); if(!hosts.length) return false; let any = false; hosts.forEach(host=>{ if(host.querySelector('[data-sdbg-pdf="1"]')){ any = true; return; } const btnRow = host.querySelector('.btn-row') || host.querySelector('.goodman-btn-row') || null; if(!btnRow) return; let exportBtn = btnRow.querySelector('[data-act="export"], [data-action="export"], .export, .btn-export') || host.querySelector('[data-act="export"], [data-action="export"]'); let resetBtn = btnRow.querySelector('[data-act="reset"], [data-action="reset"], .reset, .btn-reset') || host.querySelector('[data-act="reset"], [data-action="reset"]'); if(!exportBtn) exportBtn = findButtonByText(btnRow, 'eksport'); if(!resetBtn) resetBtn = findButtonByText(btnRow, 'reset'); const b = document.createElement('button'); b.type = 'button'; b.textContent = 'Generuj raport PDF'; b.setAttribute('data-sdbg-pdf','1'); b.className = (exportBtn && exportBtn.className) ? exportBtn.className : 'sdbg-report-btn'; if(!b.className || !b.className.trim()) b.className = 'sdbg-report-btn'; b.addEventListener('click', function(){ generateReportForHost(host); }); if(resetBtn){ btnRow.insertBefore(b, resetBtn); }else{ btnRow.appendChild(b); } any = true; }); return any; } function boot(){ setTimeout(ensureFloatingButton, 800); let tries = 0; const maxTries = 240; const timer = setInterval(function(){ tries++; const ok = tryInjectIntoWidget(); if(ok){ clearInterval(timer); ensureFloatingButton(); return; } if(tries >= maxTries){ clearInterval(timer); ensureFloatingButton(); } }, 250); const obs = new MutationObserver(function(){ tryInjectIntoWidget(); ensureFloatingButton(); }); obs.observe(document.body, {childList:true, subtree:true}); } if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', boot, {once:true}); }else{ boot(); } })();