Chart.jsで線グラフで縦棒をマウスホイールで動かす方法

Chart.jsで線グラフで縦棒をマウスホイールで動かす方法:

Chart.js 2.7.xにはバグがあってchart.update()でアノテーションが再描画されません。

Chart.js 2.6.xに落とすと、正常に動作します。

(2018年12月21日現在)

index.html
<!DOCTYPE html> 
<html lang="en" > 
 
<head> 
  <meta charset="UTF-8"> 
  <title>chartjs-plugin-annotation sandbox</title> 
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> 
<script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.bundle.min.js'></script> 
<script src='https://cdnjs.cloudflare.com/ajax/libs/chartjs-plugin-annotation/0.5.7/chartjs-plugin-annotation.min.js'></script> 
<script src='https://cdn.rawgit.com/chartjs/Chart.js/master/samples/utils.js'></script>   
</head> 
 
<body> 
 
 
  <div style="width: 75%"> 
    <canvas id="canvas"></canvas> 
  </div> 
 
 
 
 
<script> 
var g_value_index = 5; 
var g_chart = null; 
var chartData = { 
  labels: ["11月30日 12:00", "11月30日 15:00", "12月1日 00:00", "12月1日 03:00", "12月1日 06:00", "12月1日 09:00", "12月1日 12:00", "12月1日 15:00", "12月1日 18:00", "12月1日 21:00", "12月2日 00:00", "12月2日 03:00"], 
  datasets: [ 
    { 
      data: [1008, 1008, 1004, 1006, 1004, 1002, 996, 992, 990, 975, 970, 955] 
    } 
  ] 
}; 
 
var my_annotation = { 
            type: "line", 
            mode: "vertical", 
            scaleID: "x-axis-0", 
            value: chartData.labels[g_value_index], 
            borderColor: "blue", 
            label: { 
              content: "1008", 
              enabled: true, 
              position: "top" 
            } 
          }; 
var options = { 
      animation: false, 
      annotation: { 
        annotations: [ 
          my_annotation, 
        ] 
      } 
    }; 
 
function main() 
{ 
  var ctx = document.getElementById("canvas").getContext("2d"); 
  g_chart = new Chart(ctx, { 
    type: "line", 
    data: chartData, 
    options: options, 
  }); 
} 
main(); 
 
 
 
function handler(e){ 
    if (e.originalEvent.deltaY < 0) { 
        console.log("wheel up"); 
        g_value_index --; 
        if ( g_value_index < 0 ) { 
            g_value_index = 0; 
        } 
    } else { 
        console.log("wheel down"); 
        g_value_index ++; 
        if ( g_value_index > chartData.length - 1 ) { 
            g_value_index = chartData.labels.length - 1; 
        } 
    } 
    console.log("g_value_index="+g_value_index); 
    my_annotation.value = chartData.labels[g_value_index]; 
    console.log("my_annotation.value="+my_annotation.value); 
    options.annotation.annotations.shift(); 
    options.annotation.annotations.push(my_annotation); 
 
    g_chart.update(); 
    e.preventDefault(); 
} 
$("#canvas").off('wheel'); 
$("#canvas").on('wheel', handler); 
 
</script> 
 
 
 
</body> 
 
</html> 
 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)