Chart.js #6328 test01

by Akihiko Kusanagi

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://www.chartjs.org/dist/master/Chart.min.js"></script>
<div>
  <canvas id="chart1" width=300 height=150></canvas>
  getValueForPixel(<span id="chart1-pixel"></span>): <span id="chart1-value"></span>
</div>
<div>
  <canvas id="chart2" width=300 height=150></canvas>
  getValueForPixel(<span id="chart2-pixel"></span>): <span id="chart2-value"></span>
</div>
<div>
  <canvas id="chart3" width=300 height=150></canvas>
  getValueForPixel(<span id="chart3-pixel"></span>): <span id="chart3-value"></span>
</div>
<div>
  <canvas id="chart4" width=300 height=150></canvas>
  getValueForPixel(<span id="chart4-pixel"></span>): <span id="chart4-value"></span>
</div>

JavaScript

function createChart(id, options) {
  new Chart(document.getElementById(id), {
    type: 'line',
    data: {
      labels: ['2015-01-01', '2015-01-25', '2015-02-01'],
      datasets: [{
        data: [0, 1, 2]
      }]
    },
    options: {
      responsive: false,
      title: {
        display: true,
        text: 'controller.kpiName',
        lineHeight: 1
      },
      elements: {
        line: {
          fill: false,
          borderWidth: 2,
          borderColor: '#3e53a4',
          tension: 0
        },
        point: {
          radius: 5,
          hitRadius: 5,
          hoverRadius: 7,
          borderColor: '#3e53a4',
          backgroundColor: '#ffffff' // this one i am using to change point color.
        }
      },
      scales: {
        xAxes: [{
          type: 'time',
          offset: options.offset,
          ticks: {
            source: 'labels',
            reverse: options.reverse
          }
        }]
      },
      onHover: function(event) {
        var pixel = this._pixel = event.clientX - this.canvas.getBoundingClientRect().x
        var scale = this.scales['x-axis-0'];
        document.getElementById(id + '-pixel').innerHTML = pixel;
        document.getElementById(id + '-value').innerHTML = scale.getValueForPixel(pixel);
        this.update(0);
      }
    },
    plugins: [{
      afterDraw: function(chart) {
        var ctx = chart.ctx;
        ctx.strokeStyle = 'red';
        ctx.lineWidth = 1;
        ctx.beginPath();
        ctx.moveTo(chart._pixel, 0);
        ctx.lineTo(chart._pixel, chart.height);
        ctx.stroke();
      }
    }]
  });
}
createChart('chart1', {reverse: false, offset: false});
createChart('chart2', {reverse: false, offset: true});
createChart('chart3', {reverse: true, offset: false});
createChart('chart4', {reverse: true, offset: true});