MediaWiki:Common.js: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
||
| Zeile 826: | Zeile 826: | ||
// ---- Zusatz: Gesamtzahl unter der Legende anzeigen ---------------------- | // ---- Zusatz: Gesamtzahl unter der Legende anzeigen ---------------------- | ||
function addTotalBelowLegend(chart) { | |||
try { | |||
if (!chart || !chart.data || !chart.data.datasets || !chart.data.datasets.length) return; | |||
// Werte addieren | |||
const total = chart.data.datasets.reduce((sum, ds) => { | |||
const arr = Array.isArray(ds.data) ? ds.data : []; | |||
return sum + arr.reduce((a, b) => a + (parseFloat(b) || 0), 0); | |||
}, 0); | |||
// Elternkette: canvas -> wrap -> block(.ados-chart-multi) | |||
const wrap = chart.canvas.parentNode; | |||
const block = wrap && wrap.parentNode ? wrap.parentNode : null; | |||
if (!block) return; | |||
// nur direktes Kind nehmen (verhindert Mehrfacheinträge) | |||
let info = block.querySelector(':scope > .chart-total-info'); | |||
if (!info) { | |||
info = document.createElement('div'); | |||
info.className = 'chart-total-info'; | |||
// Basisstil, falls kein CSS gesetzt ist | |||
info.style.textAlign = 'center'; | |||
info. | info.style.fontWeight = 'bold'; | ||
info.style.fontSize = '1.05em'; | |||
info.style.marginTop = '0.5rem'; | |||
info.style.marginBottom = '0.35rem'; | |||
info.style.color = '#444'; | |||
block.appendChild(info); | |||
} | } | ||
info.textContent = 'Gesamt: ' + total; | |||
} catch (e) { | |||
console.warn('[chart-total]', e); | |||
} | } | ||
} | |||
// ---- Einzel-Chart rendern ----------------------------------------------- | // ---- Einzel-Chart rendern ----------------------------------------------- | ||