Repository navigation
Expand file tree
/
Copy pathaan.min.js
More file actions
16 lines (16 loc) · 6.43 KB
/
Copy pathaan.min.js
File metadata and controls
16 lines (16 loc) · 6.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'use strict';let map=(a,b,c,d,e)=>d+(((a-b)/(c-b))*(e-d));function doy(n,m){let a=0.0000000001;let b=true;let co;m>Math.abs(n)?co=m:co=Math.abs(n);while(b){Math.floor(co/a)==0?b=false:a*=10};if(co<=a*0.5&&co>a*0.2){a*=0.5}else if(co<=a*0.2&&co>a*0.1){a*=0.2}else if(co<=a*0.1){a*=0.1};let c;let d;if(n<0){c=a*-1;d=Math.abs(a-c)}else{c=0;d=Math.abs(a)};return [c,a,d]};let cx;let cy;document.>
let gMP=c=>{let r=c.getBoundingClientRect();return {x:cx-r.left,y:cy-r.top}};let Aan=function(el){this.c=el.getContext("2d");this.e=el;this.l;this.d={}};Aan.prototype.update=function(cb){cb(this.d)};Aan.prototype.draw=function(p){if(typeof p!="object"){console.error("parameter must be object")};let ca=this.e;let c=this.c;let wh=window.innerHeight;let ch=ca.height;let xl=(ca.width*0.9)-(ca.width*0.1);let xlfp=xl*0.95;
let xx=(xl-xlfp)/2;let sma=[ca.height*0.1-ca.height*0.09,ca.width*0.1-ca.width*0.09];let an=true;if(p.setting){p.setting.disableAnim?an=false:an=true};this.d.Yaxis=p.Yaxis;if(p.Xaxis){this.d.Xaxis=p.Xaxis};let sD=()=>{let led=[];for(let i of this.d.Yaxis){led.push(i.data.length)};let ald=Math.max(...led);let l=0;this.d.Yaxis.forEach(e=>{if(e.data.length>l){l=e.data.length}});if(p.setting){
if(p.setting.amountDataDisplayed){let dataDisplayed=p.setting.amountDataDisplayed;if(l>=p.setting.amountDataDisplayed){for(let i=0;i<this.d.Yaxis.length;i++){this.d.Yaxis[i].data=this.d.Yaxis[i].data.slice(ald-dataDisplayed,ald)}}}}};sD();this.mode=p.type;let t=this.mode;let d=ca.height*0.85-ca.height*0.1;let ym;let ymi;let ny;let nny;let sY;let Ya;let ndp=()=>{let ayd=[];for(let i of this.d.Yaxis){for(let j of i.data){ayd.push(j)}};
ym=Math.max(...ayd);ymi=Math.min(...ayd);nny=doy(ymi,ym)[1];sY=doy(ymi,ym)[0];Ya=doy(ymi,ym)[2];if(ch>wh*0.8){ny=5}else if(ch>wh*0.4&&ch<=wh*0.8){ny=5}else if(ch>wh*0.2&&ch<=wh*0.4){ny=4};if(ymi<0){ny-=1}};ndp();let ci=(x,y,color,width)=>{c.fillStyle=color;c.beginPath();c.arc(x,y,width,0,Math.PI*2,true);c.fill();};let re=(x,y,w,h)=>{c.beginPath();c.fillStyle="rgba(220,220,220,0.5)";c.rect(x,y,w,h);c.fill()};
let dwb=()=>{let color="#ffffff";if(p.setting){p.setting.backgroundColor?color=p.setting.backgroundColor:null};c.fillStyle=color;c.fillRect(0,0,ca.width,ca.height)};let dT=()=>{if(p.title){c.fillStyle=p.title.color?p.title.color:"#111111";c.textAlign="left";let fs=p.title.font_size||`${ca.height<ca.width?ca.height *0.09:ca.width*0.09}px`;let ff=p.title.font_family||"Arial";c.font=`bolder ${fs} ${ff}`;
c.fillText(p.title.name,ca.width*0.01,ca.height*0.07)}};let dl=()=>{let s=true;if(p.setting){s=p.setting.showLabel};if(this.d.Yaxis.length>1&&s){let waol;let st;if(p.title){waol=ca.width*0.5;st=ca.width*0.5;}else{waol=ca.width*0.9;st=ca.width*0.1;};for(let i=0;i<this.d.Yaxis.length;i++){let x=st+(waol*(i/this.d.Yaxis.length));let y=ca.height*0.05;ci(x,y,this.d.Yaxis[i].color,8);ci(x,y,"#ffffff",4);
c.fillStyle="#111111";c.textAlign="left";c.font= `15px Arial`;c.fillText(this.d.Yaxis[i].name,x+10,y+5);}}};let X=()=>{if(!this.d.Xaxis){let arr=[];for(let i of this.d.Yaxis){arr.push(i.data.length)};this.l=Math.max(...arr);}else{this.l=this.d.Xaxis.labels.length;for(let i=0;i<this.l;i++){c.beginPath();let x;if(t=="line"){x=ca.width*0.1+(xlfp*(i/(this.l-1)))+xx;}else if(t=="bar"){x=ca.width*0.1+(xl*((i+1)/ (this.l+1)))};
c.moveTo(x,map(ca.height*0.1,0,ca.height,ca.height,0));c.lineTo(x,map(ca.height*0.1-Math.min(...sma),0,ca.height,ca.height,0));c.stroke();c.fillStyle='rgb(0,0,0)';c.textAlign="center";c.font="15px Arial";c.fillText(`${this.d.Xaxis.labels[i]}`,x,map(ca.height*0.05,0,ca.height,ca.height,0));}}};let Y=()=>{for(let i=0;i<=ny;i++){let a=map(Ya*(i/ny)+sY,sY,nny,0,d);let y=map((ca.height*0.1+a),0,ca.height,ca.height,0);
let v=Ya*(i/ny)+sY;c.strokeStyle='rgb(100,100,100)';v==0?c.lineWidth=1:c.lineWidth=0.3;c.beginPath();c.moveTo(ca.width*0.9,y);c.lineTo(ca.width*0.1-Math.min(...sma),y);c.stroke();c.fillStyle='rgb(0,0,0)';c.textAlign="right";c.font=`15px Arial`;c.fillText(v,ca.width*0.1-Math.min(...sma)-1,y+5);}};let ddv=()=>{if(t=='line'){let dc=()=>{for(let Ya of this.d.Yaxis){c.beginPath();
c.lineWidth=2;for(let j=0;j<this.l;j++){let x=ca.width*0.1+(xlfp*(j/(this.l-1)))+xx;let y=map((ca.height*0.1)+map(Ya.data[j],sY,nny,0,d),0,ca.height,ca.height,0);j==0?c.moveTo(x,y):c.lineTo(x,y);};Ya.color?c.strokeStyle=Ya.color:null;c.stroke();}};dc();for(let j=0;j<this.l;j++){let x=ca.width*0.1+(xlfp*(j/(this.l-1)))+xx;let mP=gMP(ca);let b=(xlfp*(1/(this.l)))/2;if(mP.x<x+b&&mP.x>x-b&&mP.y>ca.height*0.1&&mP.y<ca.height*0.9)
{for(let k of this.d.Yaxis){if(k.data[j]){let x=ca.width*0.1+(xlfp*(j/(this.l-1)))+xx;let y=map(ca.height*0.1+map(k.data[j],sY,nny,0,ca.height*0.75),0,ca.height,ca.height,0);ci(x,y,k.color,10);ci(x,y,"#ffffff",5);}};let xfr=ca.width*0.1+(xlfp*(j/(this.l-1)))+xx;let yfr=ca.height*0.35;j>=this.l*0.5?xfr-=ca.width*0.25:xfr+=ca.width*0.05;let dij=[];this.d.Yaxis.forEach(k=>{if(k.data[j]){dij.push(k.data[j])}});
let dl=0;dij.forEach(e=> dl+=e);let aod=dl/dij.length;if(aod>Ya*0.5){yfr=ca.height*0.45};re(xfr,yfr,ca.width*0.2,20*dij.length);let eod=[];this.d.Yaxis.forEach(Yaxis=>{for(let j=0;j<Yaxis.data.length;j++){if(eod[j]==undefined){eod[j]=[]};eod[j].push(Yaxis.data[j]);}});let X=[];for(let n=0;n<this.d.Yaxis.length;n++){if(this.d.Yaxis[n].data[j]){X.push(1)};c.fillStyle=this.d.Yaxis[n].color;c.textAlign="left";
c.font=`15px Arial`;if(X.length>0){let as=(X.length-1) /eod[j].length;if(this.d.Yaxis[n].data[j]){let y=yfr+(20*dij.length*as)+(ca.height*0.2)*0.2;c.fillText(this.d.Yaxis[n].name,xfr+(ca.width*0.2)*0.01,y);c.textAlign="right";c.fillText(this.d.Yaxis[n].data[j],xfr+ca.width*0.2-((ca.width*0.2)*0.01),y);}}}}}}else if(t=='bar'){let eoy=[];for(let Yaxis of this.d.Yaxis){for(let j=0;
j<Yaxis.data.length;j++){if(eoy[j]==undefined){eoy[j]=[];};eoy[j].push(Yaxis.data[j]);}};let xll=ca.width*0.9-ca.width*0.1;let Xl=[];let bw=xll*(0.6/this.l);for(let i=0;i<this.d.Yaxis.length;i++){for(let j=0;j<this.d.Yaxis[i].data.length;j++){if(Xl[j]==undefined){Xl[j]=[]};Xl[j].push(1);let thick_of_each_bar=bw*(1/eoy[j].length);let each_bar=(bw*((Xl[j].length-1)/ eoy[j].length));
let x=ca.width*0.1+(xl*((j+1)/ (this.l+1)))+each_bar-(bw*0.5);let y;if(ymi<0){y=map(ca.height*0.1+d/2,0,ca.height,ca.height,0);}else{y=map(ca.height*0.1,0,ca.height,ca.height,0);};c.fillStyle=this.d.Yaxis[i].color;c.fillRect(x,y,thick_of_each_bar,map(this.d.Yaxis[i].data[j],0,Ya,0,(ca.height*0.85)-(ca.height*0.1))*-1);}}}};function action(){ndp();dwb();dT();dl();X();Y();ddv();sD();if(an){requestAnimationFrame(action)}};action();}