2017-03-09 4 views
0

Ich möchte einige Daten in reactjs mit Chartjs-2 anzeigen. Zum Anzeigen meiner Daten möchte ich ein Donut-Kreisdiagramm. Wenn ich die spezifische Kreisdiagramm verwende es zeigt mir, wie: enter image description hereChartjs- 2 Donut Charts angepasst Tooltip

Aber die gewünschte Ausgabe in etwa so sein sollte: enter image description here

ich aus der Dokumentation gelesen habe, dass ich den Tooltip von der Option ändern, bei dem aber Ich kann den Weg dazu nicht finden. Weißt du wie?

Antwort

1

Sie müssen Ihren benutzerdefinierten Tooltipp in den Diagrammoptionen implementieren. Sie müssen den Stil und die Größe des HTML-Elements durch den gewünschten ersetzen.

var myPieChart = new-Diagramm (CTX, { Typ: 'pie', Daten: Daten, Optionen: { Tooltips: { custom: function (tooltipModel) {// Tooltip Element var tooltipEl = document.getElementById ('chartjs-tooltip');

  // Create element on first render 
      if (!tooltipEl) { 
       tooltipEl = document.createElement('div'); 
       tooltipEl.id = 'chartjs-tooltip'; 
       tooltipEl.innerHTML = "<table></table>" 
       document.body.appendChild(tooltipEl); 
      } 

      // Hide if no tooltip 
      if (tooltipModel.opacity === 0) { 
       tooltipEl.style.opacity = 0; 
       return; 
      } 

      // Set caret Position 
      tooltipEl.classList.remove('above', 'below', 'no-transform'); 
      if (tooltipModel.yAlign) { 
       tooltipEl.classList.add(tooltipModel.yAlign); 
      } else { 
       tooltipEl.classList.add('no-transform'); 
      } 

      function getBody(bodyItem) { 
       return bodyItem.lines; 
      } 

      // Set Text 
      if (tooltipModel.body) { 
       var titleLines = tooltipModel.title || []; 
       var bodyLines = tooltipModel.body.map(getBody); 

       var innerHtml = '<thead>'; 

       titleLines.forEach(function(title) { 
        innerHtml += '<tr><th>' + title + '</th></tr>'; 
       }); 
       innerHtml += '</thead><tbody>'; 

       bodyLines.forEach(function(body, i) { 
        var colors = tooltipModel.labelColors[i]; 
        var style = 'background:' + colors.backgroundColor; 
        style += '; border-color:' + colors.borderColor; 
        style += '; border-width: 2px'; 
        var span = '<span class="chartjs-tooltip-key" style="' + style + '"></span>'; 
        innerHtml += '<tr><td>' + span + body + '</td></tr>'; 
       }); 
       innerHtml += '</tbody>'; 

       var tableRoot = tooltipEl.querySelector('table'); 
       tableRoot.innerHTML = innerHtml; 
      } 

      // `this` will be the overall tooltip 
      var position = this._chart.canvas.getBoundingClientRect(); 

      // Display, position, and set styles for font 
      tooltipEl.style.opacity = 1; 
      tooltipEl.style.left = position.left + tooltipModel.caretX + 'px'; 
      tooltipEl.style.top = position.top + tooltipModel.caretY + 'px'; 
      tooltipEl.style.fontFamily = tooltipModel._fontFamily; 
      tooltipEl.style.fontSize = tooltipModel.fontSize; 
      tooltipEl.style.fontStyle = tooltipModel._fontStyle; 
      tooltipEl.style.padding = tooltipModel.yPadding + 'px ' + tooltipModel.xPadding + 'px'; 
     } 
    } 
} 

});

Verwandte Themen