Skip to content

Instantly share code, notes, and snippets.

@adler3d
Created March 21, 2021 01:33
Show Gist options
  • Save adler3d/bee82fbea8d3e127948ff1a637363a05 to your computer and use it in GitHub Desktop.
Save adler3d/bee82fbea8d3e127948ff1a637363a05 to your computer and use it in GitHub Desktop.
//id2time=JSON.parse(POST.data);return ""+mapkeys(id2time).length;
//id2y={};return mapkeys(id2time).map(id=>id2y[id]=id2time[id].split(" ").pop()).join("\n");
//a=POST.data;return "done: a=arr_of_user_stats";
//return json(JSON.parse(a).filter(e=>!e.user_name).map(e=>e.user_id));
//return maps2csv(JSON.parse(a).map(e=>(e.user_name).split(",").join(".")));
var years=[2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020];
var arr=JSON.parse(a);
var bugs=JSON.parse(POST.data);
arr.filter(e=>e.user_id in bugs).map(e=>e.user_name=bugs[e.user_id]);
//return json(arr.filter(e=>!('user_name' in e)));
//arr.map(e=>((typeof e.user_name)==="number"?e.user_name+"":e.user_name).split(",").join("."))
//return maps2csv(arr);
//return maps2table(arr.filter(e=>e.user_id in bugs));
var f=e=>{
var ey=id2y[e.user_id]|0;
//e.tot=qapsum(years.map(y=>{/*if(ey&&y>ey)e[y]=0;*/return e[y]|0;}));
//e.diff=e.tot-(e.total|0);
//e.k=e.diff/(e.total|0);
e.y=ey;
e.ny=qapsum(years.map(y=>e[y]>=1?1:0));
e.mpy=e.total/e.ny;
e.ny2=qapsum(years.map(y=>e[y]>=100?1:0));
return e;
};//return mapaddfront(e,{tot});};
var out=arr.map((e,i)=>mapaddfront(f(e),{'#':"#"+(i+1)}));
//out=out.filter(e=>e.k>0);
//out=out.filter(e=>e.user_id in id2y);
//out=out.filter(e=>e[2019]>0&&e.k<0.5);
var stats=(years.map(y=>({y,n:qapsum(out,e=>e[y]),active:qapsum(out,e=>e[y]>0?1:0)})));
stats.map(e=>e["avg n/a"]=(e.n/e.active).toFixed(2));var mid=(arr,k)=>{return arr[(arr.length*(100-k)*0.01)|0];};var midz=(arr,k)=>((arr.length*(100-k)*0.01)|0)+1;
var mids=[25,31.25,37.5,43.75,50,75,87.5,93.75,96.875,98.4375,99.21875];
/*stats.map(e=>{
var q=out.map(u=>u[e.y]).filter(e=>e?1:0);
qapsort(q);
for(var i=0;i<3;i++){if(i==2){e["|"]="";}mids.map(k=>{
if(i==1)e["m"+(k|0)]=mid(q,k)//+" m";
if(i==2)e["a"+(k|0)]=midz(q,k)//+" u";
if(i==0)e["p"+(k|0)]=((midz(q,k)*mid(q,k))*0.001).toFixed(2)//+" p";
});}
});
//return stats.map(e=>json(e)).join("\n")+"";*/
out=out.filter(e=>(
e[2018]>10//&&e[2013]>10//&& e[2020]>10
//e[2020]==0&&e[2019]==0&&e[2018]==0&&e[2017]==0&&e[2016]==0&&e[2015]==0&&e[2014]==0
&&e.ny2>=4/*&&e.mpy<480*/
)&&e.mpy>20&&e.total>50);//out.slice(1880,2000);
//qapsort(out,e=>e.total);
//qapsort(out,e=>e.ny);
qapsort(out,e=>e.mpy);
//qapsort(out,e=>e[2019]|0);
qapsort(out,e=>e.ny2);
qapsort(out,e=>e.mpy);
//qapsort(out,e=>e.total);
out=out.map((e,i)=>mapaddfront(f(e),{'N':"#"+(i+1)}));
//qapsort(out,e=>e.ny2);
//qapsort(out,e=>e.total);
//qapsort(out,e=>e.total|0);
//return json(out.map(e=>e.user_id));
//out=out.filter(e=>(e.user_id+"").includes(362));
//return [out.length,arr.length];
//out.map(e=>e.k=e.k.toFixed(2));
out.map(e=>e.mpy=e.mpy.toFixed(2));
html(maps2table(out));
return inspect({L:out.length,tot:qapsum(out,e=>e.total),avg:qapavg(out,e=>e.total)});//+"\n"+maps2table(out.slice(0,12));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment