UNPKG

vislite

Version:

灵活、快速、简单的数据可视化交互式跨端前端库

10 lines 5.23 kB
/*! * BarLayout of VISLite JavaScript Library v1.4.0 * git+https://github.com/oi-contrib/VISLite.git */ function t(t,i){for(var a in t)i[a]=t[a];return i} /*! * animation of OIPage v1.3.0 * git+https://github.com/oi-contrib/OIPage.git */ var i,a=[];var n=function(){function n(i){void 0===i&&(i={}),this.name="BarLayout",this.__option={x:50,y:350,width:400,height:300,category:"xAxis",duration:200},this.__config=t(i,{})}return n.prototype.setOption=function(i){return t(i,this.__option),this},n.prototype.use=function(t){var i={coordinate:{x:this.__option.x,y:this.__option.y,width:this.__option.width,height:this.__option.height,xAxis:{type:"xAxis"===this.__option.category?"category":"value",data:[]},yAxis:{type:"xAxis"===this.__option.category?"value":"category",data:[]}},node:[]},a=void 0,n=void 0;if(t.data)for(var r=0,e=t.data;r<e.length;r++){var o=e[r];(void 0===a||o>a)&&(a=o),(void 0===n||o<n)&&(n=o)}else{if(!t.value)throw new Error("No data leads to parsing errors");for(var h=0,u=t.value;h<u.length;h++)for(var s=0,l=u[h].data;s<l.length;s++){o=l[s];(void 0===a||o>a)&&(a=o),(void 0===n||o<n)&&(n=o)}}var _,d,f=function(t,i,a,n){if(t<i){var r=i;i=t,t=r}else if(t==i)return[t];var e=function(t){for(var i=t<100&&t>-100?10:.1,a=-1,n=t;10==i?n>=-100&&n<=100:n<=-100||n>=100;)a+=1,n*=i;if(10==i)return Math.pow(10,a);for(var r="0.",e=1;e<a;e++)r+="0";return+(r+"1")}(t-i),o=Math.ceil((t-i)*e/a),h=function(a){var n=({3:2,4:5,6:5,7:5,8:10,9:10,11:10,12:10,13:15,14:15,16:15,17:15,18:20,19:20,21:20,22:20,23:25,24:25,26:25,27:25}[o+a]||o+a)/e,r=Math.floor(i/n)*n,h=[];h.push(r);for(var u=1;h[h.length-1]<t;u++)h.push(r+n*u);return h},u=h(0),s=function(){for(var t=[],a=u[u.length-1]-(null==n?void 0:n.max),r=0;r<u.length;r++)r+1<u.length&&u[r+1]-a<i||t.push(u[r]-a);return t},l=function(){for(var i=[],a=u[0]-(null==n?void 0:n.min),r=0;r<u.length&&(i[r]=u[r]-a,!(t<=i[r]));r++);return i};if(n){if("max"in n&&"min"in n&&n.max>=t&&n.min<=i){var _=function(){if(u[0]>=n.min&&u[u.length-1]<=n.max)return!0;var t=s();if(t[0]>=n.min&&t[t.length-1]<=n.max)return u=t,!0;var i=l();return i[0]>=n.min&&i[t.length-1]<=n.max?(u=i,!0):void 0};if(_())return u;for(var d=1;d<100;d++){if(u=h(d),_())return u;if(u=h(-d),_())return u}}"max"in n&&n.max>=t?n.max<u[u.length-1]&&(u=s()):"min"in n&&n.min<=i&&n.min>u[0]&&(u=l())}for(var f=0;f<u.length;f++){var v=u[f]+"";/\./.test(v)&&(/9{7,}$/.test(v)?(v=v.replace(/9{7,}$/,""),u[f]=+(v.substring(0,v.length-1)+(+v[v.length-1]+1))):/0{7,}\d$/.test(v)&&(u[f]=+v.replace(/0{7,}\d$/,"")))}return u}(a||0,n||0,5);"xAxis"===this.__option.category?(i.coordinate.xAxis.data=t.category,i.coordinate.yAxis.data=f,_=this.__option.width,d=-1*this.__option.height):(i.coordinate.xAxis.data=f,i.coordinate.yAxis.data=t.category,_=this.__option.height,d=this.__option.width);var v=[],p=_/t.category.length,c=.9*p,g=.05*p;if(t.data)for(var x=0;x<t.data.length;x++)v.push([g+p*x,c]);else{var y=c/t.value.length,m=.9*y,w=.05*y;for(x=0;x<t.value[0].data.length;x++){v[x]=[];for(var b=0;b<t.value.length;b++)v[x].push([g+p*x+y*b+w,m])}}var k=d/(f[f.length-1]-f[0]),A=function(t){return k*(t-f[0])};if("xAxis"===this.__option.category)if(t.data){var B=[];for(x=0;x<t.data.length;x++)B.push({x:this.__option.x+v[x][0],y:this.__option.y,width:v[x][1],height:A(t.data[x]),value:t.data[x]});i.node.push({bar:B})}else for(b=0;b<t.value.length;b++){for(B=[],x=0;x<t.value[b].data.length;x++)B.push({x:this.__option.x+v[x][b][0],y:this.__option.y,width:v[x][b][1],height:A(t.value[b].data[x]),value:t.value[b].data[x]});i.node.push({name:t.value[b].name,bar:B})}else if(t.data){for(B=[],x=0;x<t.data.length;x++)B.push({x:this.__option.x,y:this.__option.y-this.__option.height+v[x][0],width:A(t.data[x]),height:v[x][1],value:t.data[x]});i.node.push({bar:B})}else for(b=0;b<t.value.length;b++){for(B=[],x=0;x<t.value[b].data.length;x++)B.push({x:this.__option.x,y:this.__option.y-this.__option.height+v[x][b][0],width:A(t.value[b].data[x]),height:v[x][b][1],value:t.value[b].data[x]});i.node.push({name:t.value[b].name,bar:B})}return i},n.prototype.bind=function(t,i){return this.__rback=i,this.__oralBar=t,this.__preBar=this.use(this.__oralBar),this.__rback(this.__preBar),this},n.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralBar=null,this.__preBar=null,this},n.prototype.doUpdate=function(){var t=this,n=this.use(this.__oralBar),r=JSON.parse(JSON.stringify(n));return function(t,n,r){arguments.length<2&&(n=400),arguments.length<3&&(r=function(){});var e={timer:function(t,i,n){if(!t)throw new Error("Tick is required!");var r=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return a.push({id:r,createTime:new Date,tick:t,duration:i,callback:n}),e.start(),r},start:function(){i||(i=setInterval(e.tick,13))},tick:function(){var t,i,n,r,o,h,u,s=a;for((a=[]).length=0,i=0;i<s.length;i++)t=(o=s[i]).createTime,n=o.tick,h=o.duration,r=o.callback,n(u=(u=(+(new Date).valueOf()-t.valueOf())/h)>1?1:u),u<1&&o.id?a.push(o):r(u);a.length<=0&&e.stop()},stop:function(){i&&(clearInterval(i),i=null)}},o=e.timer((function(i){t(i)}),n,r)}((function(i){t.__preBar,t.__rback(r)}),this.__option.duration,(function(){t.__preBar=n,t.__rback(t.__preBar)})),this},n}();export{n as default};