MediaWiki:Common.js: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Zeile 826: Zeile 826:


   // ---- Zusatz: Gesamtzahl unter der Legende anzeigen ----------------------
   // ---- Zusatz: Gesamtzahl unter der Legende anzeigen ----------------------
  function addTotalBelowLegend(chart) {
function addTotalBelowLegend(chart) {
    try {
  try {
      if (!chart || !chart.data || !chart.data.datasets || !chart.data.datasets.length) return;
    if (!chart || !chart.data || !chart.data.datasets || !chart.data.datasets.length) return;


      const total = chart.data.datasets.reduce((sum, ds) => {
    // Werte addieren
        const arr = Array.isArray(ds.data) ? ds.data : [];
    const total = chart.data.datasets.reduce((sum, ds) => {
        return sum + arr.reduce((a, b) => a + (parseFloat(b) || 0), 0);
      const arr = Array.isArray(ds.data) ? ds.data : [];
      }, 0);
      return sum + arr.reduce((a, b) => a + (parseFloat(b) || 0), 0);
    }, 0);


      const container = chart.canvas.parentNode; // wrapper div
    // Elternkette: canvas -> wrap -> block(.ados-chart-multi)
      let info = container.querySelector('.chart-total-info');
    const wrap  = chart.canvas.parentNode;
      if (!info) {
    const block = wrap && wrap.parentNode ? wrap.parentNode : null;
        info = document.createElement('div');
    if (!block) return;
        info.className = 'chart-total-info';
 
        info.style.textAlign = 'center';
    // nur direktes Kind nehmen (verhindert Mehrfacheinträge)
        info.style.fontWeight = 'bold';
    let info = block.querySelector(':scope > .chart-total-info');
        info.style.fontSize = '1.05em';
    if (!info) {
        info.style.marginTop = '0.4em';
      info = document.createElement('div');
        info.style.color = '#444';
      info.className = 'chart-total-info';
        container.appendChild(info);
      // Basisstil, falls kein CSS gesetzt ist
      }
      info.style.textAlign = 'center';
       info.textContent = 'Gesamt: ' + total;
      info.style.fontWeight = 'bold';
    } catch (e) {
      info.style.fontSize = '1.05em';
       console.warn('[chart-total]', e);
      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 -----------------------------------------------