diff --git a/pain-points-atlas.html b/pain-points-atlas.html index cf80990fb..a847db706 100644 --- a/pain-points-atlas.html +++ b/pain-points-atlas.html @@ -308,7 +308,7 @@ let currentFilter = 'all'; async function load(){ try { const r = await fetch(API + '?t=' + Date.now()); - DATA = await r.json(); + DATA = await r.json(); window.DATA = DATA; render(); } catch(e) { console.error(e); } } @@ -425,6 +425,81 @@ function renderPP(){ } load(); + +// === OPUS DRILL-DOWN PILOT v1 19avr — append-only, doctrine #14 === +(function(){ + if (window.__opusDrillInit) return; window.__opusDrillInit = true; + var modal = document.createElement('div'); + modal.id = 'opus-drill-modal'; + modal.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.85);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;cursor:pointer'; + var inner = document.createElement('div'); + inner.id = 'opus-drill-inner'; + inner.style.cssText = 'max-width:820px;width:100%;max-height:90vh;overflow:auto;background:var(--bg-1,#0b0d15);border:1px solid var(--border-h,rgba(99,102,241,0.35));border-radius:16px;padding:32px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6)'; + inner.addEventListener('click', function(e){ e.stopPropagation(); }); + modal.appendChild(inner); + modal.addEventListener('click', function(){ modal.style.display='none'; }); + document.addEventListener('keydown', function(e){ if(e.key==='Escape') modal.style.display='none'; }); + if (document.body) document.body.appendChild(modal); + else document.addEventListener('DOMContentLoaded', function(){ document.body.appendChild(modal); }); + + function fmtEur(n){ if(!n) return '0€'; if(n>=1e6) return (n/1e6).toFixed(2)+'M€'; if(n>=1e3) return Math.round(n/1000)+'k€'; return n+'€'; } + + function renderPP(pp, DATA) { + var vendors = (DATA && DATA.erp_vendors) || {}; + var erps = (pp.erps_affected || []).map(function(e){ + var v = vendors[e] || {}; + return ''+(v.label || e)+''; + }).join(''); + return [ + '
'+pp.business_cost+'
', + ''+pp.why_erp_fails+'
'+pp.agent_how+'
', + '