<!DOCTYPE html> <html> <head> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> <meta content="utf-8" http-equiv="encoding"> <script src="../dist/index.dev.js" type="text/javascript"></script> </head> <body> <div id="chart" style="width: 500px; height: 500px;"></div> <script type="text/javascript"> const startTime = 1590590148; const arrayLength = 100; this.isZoomed = false; // TODO: temporary hack to have zoomin|zoomout with `appendData`. It will be moved to Pod. var data1 = Array.from({ length: arrayLength }, (el, idx) => [startTime + idx * 10000, Math.floor(Math.random() * 40)]); var data2 = Array.from({ length: arrayLength }, (el, idx) => [startTime + idx * 10000, Math.floor(Math.random() * 100)]); var data3 = Array.from({ length: arrayLength }, (el, idx) => [startTime + idx * 10000, Math.floor(Math.random() * 20) + 90]); const zoomIn = (ranges) => { const xRange = ranges[0]; options.axis.x.range = xRange; pod.updateData(undefined, options); this.isZoomed = true } const zoomOut = (ranges) => { options.axis.x.range = undefined; pod.updateData(undefined, options); this.isZoomed = false } let options = { renderLegend: false, axis: { y: { invert: false, range: [0, 350] }, x: { format: 'time' } }, eventsCallbacks: { zoomIn: zoomIn, zoomOut } }; var pod = new LinePod( document.getElementById('chart'), [ { target: 'test1', datapoints: data1, color: 'green', maxLength: arrayLength + 30, renderDots: true }, { target: 'test2', datapoints: data2, color: 'blue', maxLength: arrayLength + 30, renderDots: true }, { target: 'test3', datapoints: data3, color: 'orange', maxLength: arrayLength + 30, renderDots: true }, ], options ); pod.render(); let rerenderIdx = arrayLength; var test = setInterval(() => { rerenderIdx += 1; const d1 = [startTime + rerenderIdx * 10000, Math.floor(Math.random() * 20) + 90]; const d2 = [startTime + rerenderIdx * 10000, Math.floor(Math.random() * 100)]; const d3 = [startTime + rerenderIdx * 10000, Math.floor(Math.random() * 20) + 90]; console.log('d1', data1) const shouldRerender = !this.isZoomed; console.time('rerender'); data1.push(d1); data2.push(d2); data3.push(d3); pod.updateData([ { target: 'test1', datapoints: data1, color: 'green', maxLength: arrayLength + 30, renderDots: false }, { target: 'test2', datapoints: data2, color: 'blue', maxLength: arrayLength + 30, renderDots: false }, { target: 'test3', datapoints: data3, color: 'orange', maxLength: arrayLength + 30, renderDots: false }, ]); console.timeEnd('rerender'); if(rerenderIdx > arrayLength + 100) { clearInterval(test); } }, 1000); </script> </body> </html>