mirror of
https://github.com/multipleof4/lynchmark.git
synced 2026-07-18 13:55:46 +00:00
19 lines
725 B
JavaScript
19 lines
725 B
JavaScript
async function createStreamVisualizer(asyncIterable,{maxPoints,alpha,width,height,yDomain}){
|
|
const d3=await import('https://cdn.jsdelivr.net/npm/d3@7/+esm');
|
|
const data=[];
|
|
let p;
|
|
for await(const{timestamp:t,value:v}of asyncIterable){
|
|
const e=p==null?v:alpha*v+(1-alpha)*p;
|
|
p=e;
|
|
data.push({timestamp:t,value:v,ema:e});
|
|
if(data.length>maxPoints)data.shift();
|
|
}
|
|
if(!data.length)return{data,path:''};
|
|
const x=d3.scaleLinear().domain([data[0].timestamp,data[data.length-1].timestamp]).range([0,width]);
|
|
const y=d3.scaleLinear().domain(yDomain).range([height,0]);
|
|
const path=d3.line().x(d=>x(d.timestamp)).y(d=>y(d.ema))(data);
|
|
return{data,path};
|
|
}
|
|
export default createStreamVisualizer;
|
|
// Generation time: 7.991s
|
|
// Result: PASS
|