var patternCanvas = document.createElement('canvas'); var patternContext = patternCanvas.getContext('2d'); patternCanvas.width = 6; patternCanvas.height = 6; patternContext.fillStyle = '#ff0000'; patternContext.fillRect(0, 0, 6, 6); patternContext.fillStyle = '#ffff00'; patternContext.fillRect(0, 0, 4, 4); var pattern = patternContext.createPattern(patternCanvas, 'repeat'); var gradient; module.exports = { config: { type: 'line', data: { datasets: [{ data: [8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8], pointBorderColor: '#ff0000', pointBackgroundColor: '#00ff00', showLine: false }, { label: '', data: [4, 4, 4, 4, 4, 5, 3, 4, 4, 4, 4], pointBorderColor: pattern, pointBackgroundColor: pattern, showLine: false }, { label: '', data: [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], showLine: false }], labels: ['', '', '', '', '', '', '', '', '', '', ''] }, options: { scales: { x: {display: false}, y: {display: false} }, elements: { line: { fill: false } }, plugins: { legend: false, title: false, filler: false, tooltip: { mode: 'nearest', intersect: false, callbacks: { label: function() { return '\u200b'; }, } }, }, layout: { padding: 15 } }, plugins: [{ beforeDatasetsUpdate: function(chart) { if (!gradient) { gradient = chart.ctx.createLinearGradient(0, 0, 512, 256); gradient.addColorStop(0, '#ff0000'); gradient.addColorStop(1, '#0000ff'); } chart.config.data.datasets[2].pointBorderColor = gradient; chart.config.data.datasets[2].pointBackgroundColor = gradient; return true; }, afterDraw: function(chart) { var canvas = chart.canvas; var rect = canvas.getBoundingClientRect(); var point, event; for (var i = 0; i < 3; ++i) { for (var j = 0; j < 11; ++j) { point = chart.getDatasetMeta(i).data[j]; event = { type: 'mousemove', target: canvas, clientX: rect.left + point.x, clientY: rect.top + point.y }; chart._handleEvent(event); chart.tooltip.handleEvent(event); chart.tooltip.opacity = j / 10; chart.tooltip.draw(chart.ctx); } } } }] }, options: { canvas: { height: 256, width: 512 } } };