2017-05-03 3 views
1

Ich habe Probleme beim Entfernen der unerwünschten 0% aus dem Kreisdiagramm. Diese Nummer zeigt die Gesamtzahl der verfügbaren Optionen in% an. Wenn eine Option keinen Wert gemäß einem Filter hat, zeigt sie eine 0% für sie an, die ich entfernen möchte. Ich füge meinen Code unten ein.Entfernen 0% aus Kreisdiagramm

function drawPieChart(versionStatusCanvas,on_hold, active, cancelled, 
activecount, onholdcount, cancelledcount) { 

    var versionStatusData = [{ 
    value: on_hold, 
    color:"#444444", 
    label: "On Hold(" +onholdcount+")", 
}, 
{ 
    value: active, 
    color: "#72bb53", 
    label: "Active(" +activecount+")", 
}, 
{ 
    value: cancelled, 
    color: "#ff6624", 
    label: "Cancelled(" +cancelledcount+")", 

}]; 
var versionStatusCanvas = document.getElementById("versionStatus"); 
var versionStatusCtx = versionStatusCanvas.getContext("2d"); 
var versionStatusChart = new Chart(versionStatusCtx).Pie(versionStatusData,{ 
    animationSteps: 100, 
    animationEasing: 'easeInOutQuart', 
    showTooltips: false, 
    segmentShowStroke : false, 
    onAnimationProgress: drawSegmentValues 
}); 

document.getElementById('version-status-legend').innerHTML = 
versionStatusChart.generateLegend(); 

function drawSegmentValues(){ 
var radius = versionStatusChart.outerRadius; 
var midX = versionStatusCanvas.width/2; 
var midY = versionStatusCanvas.height/2 
for(var i=0; i<versionStatusChart.segments.length; i++){ 
    versionStatusCtx.fillStyle="white"; 
    var textSize = versionStatusCanvas.width/20; 
    versionStatusCtx.font= textSize+"px Verdana"; 
    // Get needed variables 
    var value = versionStatusChart.segments[i].value + '%'; 
    var startAngle = versionStatusChart.segments[i].startAngle; 
    var endAngle = versionStatusChart.segments[i].endAngle; 
    var middleAngle = startAngle + ((endAngle - startAngle)/2); 

    // Compute text location 
    var posX = (radius/2) * Math.cos(middleAngle) + midX; 
    var posY = (radius/2) * Math.sin(middleAngle) + midY; 

    // Text offside by middle 
    var w_offset = versionStatusCtx.measureText(value).width/2; 
    var h_offset = textSize/4; 
    if(value != '0.0%') 
    versionStatusCtx.fillText(value, posX - w_offset, posY + h_offset); 
} 
} 
} 

Die Werte werden vom php-Controller in JSON übergeben. Ich habe verschiedene Methoden ausprobiert, um das zu erreichen, aber ich kann das nicht. Jede Hilfe wäre willkommen.

Antwort

3

Try this:

if(parseInt(value) > 0) 
    versionStatusCtx.fillText(value, posX - w_offset, posY + h_offset); 
} 

parseInt(value) analysiert den Wert in einen int auf Null zu vergleichen. Zuvor war der Wert im Code einem% -Zeichen mit dem Wert verbunden, was ihn zu einer Zeichenkette machte.

+0

Dies funktionierte gr8 – Rahul

Verwandte Themen