2016-12-16 9 views
1

私はcharts.jsを使用しています。私の現在の必要性のために、私は、ホバーイベントにかかわらず常にツールチップを表示するように設定する方法を見つけました。私の問題は、ツールチップの可視性がデータセットの動作に従わないことです。 charts.jsでは、データセットをクリックしてグラフから削除することができます。私のグラフはそれを行いますが、ツールチップはまだ表示され、グラフ内に浮かびます。ラベルがクリックされたときにデータセットデータで非表示にする方法はありますか?それぞれのデータセットでツールチップを非表示にする方法

ここに私が言ったことの現状の例があります。 https://jsfiddle.net/CaioSantAnna/ddejheg0/

HTML

<canvas id="linha"></canvas> 

Javascriptを

Chart.plugins.register({ 
    beforeRender: function (chart) { 
     if (chart.config.options.showAllTooltips) { 
      // create an array of tooltips 
      // we can't use the chart tooltip because there is only one tooltip per chart 
      chart.pluginTooltips = []; 
      chart.config.data.datasets.forEach(function (dataset, i) { 
       chart.getDatasetMeta(i).data.forEach(function (sector, j) { 
        chart.pluginTooltips.push(new Chart.Tooltip({ 
         _chart: chart.chart, 
         _chartInstance: chart, 
         _data: chart.data, 
         _options: chart.options.tooltips, 
         _active: [sector] 
        }, chart)); 
       }); 
      }); 

      // turn off normal tooltips 
      chart.options.tooltips.enabled = false; 
     } 
    }, 
    afterDraw: function (chart, easing) { 
     if (chart.config.options.showAllTooltips) { 
      // we don't want the permanent tooltips to animate, so don't do anything till the animation runs atleast once 
      if (!chart.allTooltipsOnce) { 
       if (easing !== 1) 
        return; 
       chart.allTooltipsOnce = true; 
      } 

      // turn on tooltips 
      chart.options.tooltips.enabled = true; 
      Chart.helpers.each(chart.pluginTooltips, function (tooltip) { 
       tooltip.initialize(); 
       tooltip.update(); 
       // we don't actually need this since we are not animating tooltips 
       tooltip.pivot(); 
       tooltip.transition(easing).draw(); 
      }); 
      chart.options.tooltips.enabled = false; 
     } 
    } 
}); 

ctx = document.getElementById("linha"); 
    var linha = new Chart(ctx, { 
     type: 'line', 
     data: { 
      labels: ["January", "February", "March", "April", "May", "June", "July"], 
      datasets: [ 
       { 
        label: "My First dataset", 
        fill: true, 
        lineTension: 0.1, 
        backgroundColor: "rgba(75,192,192,0.4)", 
        borderColor: "rgba(75,192,192,1)", 
        borderCapStyle: 'butt', 
        borderDash: [], 
        borderDashOffset: 0.0, 
        borderJoinStyle: 'miter', 
        pointBorderColor: "rgba(75,192,192,1)", 
        pointBackgroundColor: "#fff", 
        pointBorderWidth: 1, 
        pointHoverRadius: 5, 
        pointHoverBackgroundColor: "rgba(75,192,192,1)", 
        pointHoverBorderColor: "rgba(220,220,220,1)", 
        pointHoverBorderWidth: 2, 
        pointRadius: 1, 
        pointHitRadius: 10, 
        data: [65, 59, 80, 81, 56, 55, 40], 
        spanGaps: false, 
        responsive: true, 
        animation: true, 
       }, 
       { 
        label: "Second dataset", 
        fill: true, 
        lineTension: 0.1, 
        backgroundColor: "rgba(0,0,0,0.4)", 
        borderColor: "rgba(0,0,0,1)", 
        borderCapStyle: 'butt', 
        borderDash: [], 
        borderDashOffset: 0.0, 
        borderJoinStyle: 'miter', 
        pointBorderColor: "rgba(0,0,0,1)", 
        pointBackgroundColor: "#fff", 
        pointBorderWidth: 1, 
        pointHoverRadius: 5, 
        pointHoverBackgroundColor: "rgba(0,0,0,1)", 
        pointHoverBorderColor: "rgba(0,0,0,1)", 
        pointHoverBorderWidth: 2, 
        pointRadius: 1, 
        pointHitRadius: 10, 
        data: [13, 78, 60, 75, 90, 10, 27], 
        spanGaps: false, 
        responsive: true, 
        animation: true, 
       } 
      ] 
     }, 
     options: { 
      tooltips: { 
       callbacks: { 
        title: function (tooltipItem, data) { return "" }, 
        label: function (tooltipItem, data) { 
         var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; 
         var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || 'Other'; 
         var label = data.labels[tooltipItem.index]; 
         return value; 
        } 
       } 
      },showAllTooltips: true 
     } 
    }); 

、問題を再現するだけで、グラフの上にラベルの1つにクリックします。

ありがとうございます。

答えて

0

質問を閉じると、私はamcharts(https://www.amcharts.com/)に変更されました。それは、私がchart.jsで達成しようとしていたもののような機能を持ち、リンクウェアライセンスの下で自由に使用できます。

もう一度おねがいします。

関連する問題