drawResult = {
const canvasCtx = canvas.getContext('2d');
canvasCtx.clearRect(0, 0, canvas.width, canvas.height);
const canvas2Ctx = scanvas.getContext('2d');
canvas2Ctx.clearRect(0, 0, scanvas.width, scanvas.height);
let sdata = []
const fWindow = 5
function draw() {
requestAnimationFrame(draw);
canvasCtx.fillStyle = 'rgb(255, 255, 255)';
canvasCtx.fillRect(0, 0, canvas.width, canvas.height);
const vdata = []
let data2 = data.slice(0, 128)
data2.forEach((d,i) => {vdata.push( (d+140)*2)})
const barWidth = (canvas.width / 256) * 2.5;
let posX = 0;
vdata.forEach((d,i) => {
const cbar = Math.floor(d + 100)
canvasCtx.fillStyle = d3.rgb(cbar, cbar, cbar)
canvasCtx.fillRect(posX, canvas.height - d / 2, barWidth, d / 2);
posX += barWidth + 1;
})
if(sdata.length >= slines * data.length){
sdata = sdata.slice(0, data.length * (slines - 1))
}
const tdata = Array.from(data.slice(0, 128))
sdata = tdata.concat(sdata)
if(sdata.length < slines * tdata.length){
sdata.forEach((d,i) => {
canvas2Ctx.fillStyle = d3.interpolateInferno((d + 200) / 200)
canvas2Ctx.fillRect((i%tdata.length)*(barWidth+1), parseInt(i/tdata.length) * cellsize, barWidth+2, cellsize);
})
} else {
canvas2Ctx.globalCompositeOperation = "copy";
canvas2Ctx.imageSmoothingEnabled = false
canvas2Ctx.drawImage(canvas2Ctx.canvas,0, 1);
canvas2Ctx.globalCompositeOperation = "source-over"
tdata.forEach((d,i) => {
canvas2Ctx.fillStyle = d3.interpolateInferno((d + 200) / 200)
canvas2Ctx.fillRect(i*(barWidth+1), 0, barWidth+2, cellsize);
})
}
}
draw();
return md`Draw the charts`
}