-
Notifications
You must be signed in to change notification settings - Fork 0
/
simpleCharts.min.js
17 lines (17 loc) · 56.9 KB
/
simpleCharts.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*********************************************************************
* simpleCharts.js *
* *
* Version: 1.2 *
* Date: 29-04-2018 *
* Author: Dan Machado *
* Require raphaeljs v2.2.1 *
**********************************************************************/
function formatNumber(t,e){var i,o,r,a,n,h;for(i=void 0===e?2:e,-1==(o=String(t)).indexOf(".")&&(o+="."),0==(n=(a=(r=(o+="000000").split("."))[0].length)-3*Math.floor(a/3))&&(n=3),h=r[0].substring(0,n);n<a-1;)h+=","+r[0].substring(n,n+3),n+=3;return h+"."+r[1].substring(0,i)}function roundNumber(t,e){var i=2;return"number"==typeof e&&(i=e),Math.round(t*Math.pow(10,i))/Math.pow(10,i)}function CloneObject(t){var e,i;if(t instanceof Object&&!(t instanceof Array)){i={};for(e in t)t.hasOwnProperty(e)&&(t[e]instanceof Object?i[e]=CloneObject(t[e]):i[e]=t[e])}else if(t instanceof Array){i=[];var o,r=t.length;for(o=0;o<r;o++)i[o]=t[o]}return i}function complementObject(t,e){if(!(t instanceof Object)||t instanceof Array)return!(t instanceof Array);for(var i in t)t.hasOwnProperty(i)&&(void 0===e[i]&&(t[i]instanceof Object&&!(t[i]instanceof Array)?e[i]={}:e[i]=null),complementObject(t[i],e[i])&&(e[i]=t[i]))}function overWriteObj(t,e){var i;if(t instanceof Object&&!(t instanceof Array)&&t instanceof Object&&!(t instanceof Array))for(i in t)t.hasOwnProperty(i)&&e.hasOwnProperty(i)&&(t[i]instanceof Object?overWriteObj(t[i],e[i]):e[i]instanceof Object||(t[i]=e[i]))}function changeColor(t,e){var i=Math.abs(e);i<0&&(i+=1);var o,r,a={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15},n=[0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F"],h="#";(t=(t=String(t)).toUpperCase()).length;for(r=1;r<4;r++)o=16*a[t[2*r-1]]+a[t[2*r]],e<0?o*=i:o=(255-o)*i+o,o=Math.round(o),h+=String(n[Math.floor(o/16)])+String(n[o-16*Math.floor(o/16)]);return h}function Paper(t){this.ID=t;var e=document.getElementById(this.ID);this.paper=Raphael(t,e.clientWidth,e.clientHeight)}function Shape(){this.obj=null}function Rect(t,e,i,o,r,a){Shape.call(this),this.obj=t.paper.rect(e,i,o,r,0),void 0!==a&&this.obj.attr(a)}function Line(t,e,i,o,r,a){Shape.call(this),this.obj=t.paper.path("M"+e+","+i+"L"+o+","+r),void 0!==a&&this.obj.attr(a)}function AnimateHBar(t,e,i,o,r,a,n){Shape.call(this),this.obj=t.paper.path("M"+e+","+i+"L"+e+","+i+"L"+e+","+(i+r)+"L"+e+","+(i+r)+"Z"),void 0!==n&&this.obj.attr(n),this.obj.animate({path:"M"+e+","+i+"L"+(e+o)+","+i+"L"+(e+o)+","+(i+r)+"L"+e+","+(i+r)+"Z"},a,"linear")}function AnimateVBar(t,e,i,o,r,a){Shape.call(this),this.obj=t.paper.path("M"+e+","+i+"L"+(e+o)+","+i+"L"+(e+o)+","+i+"L"+e+","+i+"Z"),void 0!==a&&this.obj.attr(a),this.obj.animate({path:"M"+e+","+i+"L"+(e+o)+","+i+"L"+(e+o)+","+(i-r)+"L"+e+","+(i-r)+"Z"},2e3,"linear")}function Circle(t,e,i,o,r){Shape.call(this),this.obj=t.paper.circle(e,i,o),void 0!==r&&this.obj.attr(r)}function AnimateCircle(t,e,i,o,r){Shape.call(this),this.obj=t.paper.circle(e,i,.1),void 0!==r&&this.obj.attr(r),this.obj.animate(Raphael.animation({r:o},2e3))}function Path(t,e,i){Shape.call(this),this.obj=t.paper.path(e),void 0!==i&&this.obj.attr(i)}function AnimateLine(t,e,i,o,r,a,n){Shape.call(this),this.obj=t.paper.path("M"+e+","+i),void 0!==n&&this.obj.attr(n),this.obj.animate({path:"M"+e+","+i+"L"+o+","+r},a,"linear")}function AnimatedArch(t,e,i,o,r,a,n,h,s){Shape.call(this),this.r=5,this.ms=h,this.tt=0,this.time=Date.now()+h,this.perc=i,this.initialAngle=e,this.radious=a,this.width=n,this.cx=o,this.cy=r,this.x0=(this.radious+this.width)*Math.cos(this.initialAngle)+this.cx,this.y0=(this.radious+this.width)*Math.sin(this.initialAngle)+this.cy,this.x1=this.radious*Math.cos(this.initialAngle)+o,this.y1=this.radious*Math.sin(this.initialAngle)+r,this.obj=t.paper.path("M"+this.x0+" "+this.y0+"L"+this.x1+" "+this.y1),void 0!==s&&this.obj.attr(s),this.animateArch()}function Text(t,e,i,o,r,a,n,h){var s;if(Shape.call(this),void 0===h)h=this.defaultStyle;else for(s in this.defaultStyle)this.defaultStyle.hasOwnProperty(s)&&!h.hasOwnProperty(s)&&(h[s]=this.defaultStyle[s]);if(this.Style=h,this.dummySVG.counter++,null===this.dummySVG.data){this.dummySVG.data=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.dummySVG.data.setAttribute("viewBox","0 0 1000 100"),this.dummySVG.data.setAttribute("preserveAspectRatio","xMidYMid meet"),document.body.appendChild(this.dummySVG.data);var p=document.createElementNS("http://www.w3.org/2000/svg","text");p.setAttribute("x",-1e4),p.setAttribute("y",100);var c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttribute("dy",4),p.appendChild(c),this.dummySVG.data.appendChild(p)}this.strStyle.data!=h["font-size"]+h["font-weight"]+h["font-family"]+h["font-style"]&&(this.strStyle.data=h["font-size"]+h["font-weight"]+h["font-family"]+h["font-style"],this.dummySVG.data.childNodes[0].setAttributeNS(null,"font-size",h["font-size"]+"px"),this.dummySVG.data.childNodes[0].setAttributeNS(null,"font-family",h["font-family"]),this.dummySVG.data.childNodes[0].setAttributeNS(null,"font-style",h["font-style"]),this.dummySVG.data.childNodes[0].setAttributeNS(null,"font-weight",h["font-weight"]),this.dummySVG.data.childNodes[0].setAttributeNS(null,"text-anchor","start"));var l,u,d,b,f,m=String(n).trim();for(m=m.replace("&","&"),f=(n=this.textLines(o,m)).length,b="",l=0;l<f;l++)b+=n[l],l<f-1&&(b+="\n");this.align=a,this.valign=r,h["text-anchor"]="middle",u=e+o/2,"left"==a?(h["text-anchor"]="start",u=e):"right"==a&&(h["text-anchor"]="end",u=e+o),this.obj=t.paper.text(0,i,b),this.obj.attr(h),d=this.obj.getBBox().height,d="before"==r?i-d/2:"after"==r?i+d/2:i,this.obj.attr({x:u,y:d}),this.dummySVG.counter--}!function(){var t={list:[],insert:function(t,e){"function"==typeof window[t]&&this.list.push([t,e,new window[t](e)])},reload:function(){for(var t=0;t<this.list.length;t++)document.getElementById(this.list[t][1].canvasID).innerHTML="",this.list[t][2].Reload(),this.list[t][2]=new window[this.list[t][0]](this.list[t][1])}};window.addEventListener("resize",function(){"use strict";t.reload()}),this.chartLoader=function(e,i){"string"==typeof i?t.insert(e,JSON.parse(document.getElementById(i).innerHTML.trim())):t.insert(e,i)}}(),Paper.prototype.setViewBox=function(t,e,i,o,r){this.paper.setViewBox(t,e,i,o,r)},Paper.prototype.setSize=function(t,e){this.paper.setSize(t,e)},Paper.prototype.canvasSetAttribute=function(t,e){this.paper.canvas.setAttribute(t,e)},Paper.prototype.Clear=function(){document.getElementById(this.ID).innerHTML="",this.paper.clear()},Paper.prototype.getById=function(t){return this.paper.getById(t)},Paper.prototype.getDimension=function(t){var e=document.getElementById(this.ID);return"width"==t?e.clientWidth:"height"==t?e.clientHeight:void 0},Paper.prototype.defaults={text:{fill:"#000000","font-family":"inherit","font-size":12,"font-style":"normal","font-weight":"normal"}},Object.freeze(Paper.prototype.defaults),Shape.prototype.attr=function(t){this.obj.attr(t)},Shape.prototype.move=function(t){var e,i,o=this.obj.getBBox();e=t.hasOwnProperty("x")?t.x:o.x,i=t.hasOwnProperty("y")?t.y:o.y;var r,a,n=this.obj.getBBox(!0);this.obj.matrix.a>0?this.obj.matrix.b>0?(r=n.height*this.obj.matrix.b,a=0):(r=0,a=-1*n.width*this.obj.matrix.b):this.obj.matrix.b>0?(r=o.width,a=-1*n.height*this.obj.matrix.a):(r=-1*n.width*this.obj.matrix.a,a=o.height),e+=r,i+=a;var h=this.obj.matrix.invert().x(e,i),s=this.obj.matrix.invert().y(e,i);this.obj.attr({x:h,y:s})},Shape.prototype.show=function(){this.obj.show()},Shape.prototype.hide=function(){this.obj.hide()},Shape.prototype.toFront=function(){this.obj.toFront()},Shape.prototype.toShow=function(){this.obj.show(),this.obj.toFront()},Shape.prototype.toBack=function(){this.obj.toBack()},Shape.prototype.mouseover=function(t){this.obj.mouseover(t)},Shape.prototype.mouseout=function(t){this.obj.mouseout(t)},Shape.prototype.getId=function(){return this.obj.id},Shape.prototype.getBBox=function(t){return"boolean"==typeof t?this.obj.getBBox(t):this.obj.getBBox()},Rect.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:Rect,writable:!0}}),Line.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:Line,writable:!0}}),AnimateHBar.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:AnimateHBar,writable:!0}}),AnimateVBar.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:AnimateVBar,writable:!0}}),Circle.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:Circle,writable:!0}}),AnimateCircle.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:AnimateCircle,writable:!0}}),Path.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:Path,writable:!0}}),AnimateLine.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:AnimateLine,writable:!0}}),AnimatedArch.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:AnimatedArch,writable:!0}}),AnimatedArch.prototype.animateArch=function(){if(Date.now()<this.time?(this.tt=this.ms-(this.time-Date.now()),this.a=0):(this.a+=1,this.tt=this.ms),this.a<3){this.a++;var t=this;this.correction=0,setTimeout(function(){t.animateArch()},this.r),this.correction>1&&(this.correction=0);var e=this.perc*(this.tt/this.ms)*.9999,i=Math.floor(.5+e/100),o=this.initialAngle+2*Math.PI*e/100,r=Math.cos(o),a=Math.sin(o),n="M"+this.x0+","+this.y0+"A"+(this.radious+this.width)+" "+(this.radious+this.width)+" 0 "+i+" 1";n+=" "+((this.radious+this.width)*r+this.cx)+" "+((this.radious+this.width)*a+this.cy),n+="L"+(this.radious*r+this.cx)+","+(this.radious*a+this.cy),n+="A"+this.radious+" "+this.radious+" 0 "+i+" 0 "+this.x1+" "+this.y1,n+="Z",this.obj.node.setAttribute("d",n)}},Text.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:Text,writable:!0}}),Text.prototype.strStyle={data:null},Text.prototype.dummySVG={data:null,counter:0},Text.prototype.textContainer={data:null},Text.prototype.defaultStyle={fill:"#000000","font-family":"Arial, sans-serif","font-size":12,"font-style":"normal","font-weight":"normal"},Text.prototype.textM=function(t){this.dummySVG.data.childNodes[0].childNodes[0].appendChild(document.createTextNode(t));var e=this.dummySVG.data.getBBox();return this.dummySVG.data.childNodes[0].childNodes[0].removeChild(this.dummySVG.data.childNodes[0].childNodes[0].childNodes[0]),e.width},Text.prototype.trimText=function(t,e,i){var o,r,a="";r=(t=String(t).trim()).length,this.textM("...");var n,h="";if(t=t.replace("\n"," "),e>=this.textM(t))return t;for(o=0;o<r;o++){if(h=a,a+=t[o],e==(n=this.textM(a+"..."))){a="...";break}if(e<n){a=h+"...";break}}return a},Text.prototype.breakingText=function(t){var e={words:[],lengths:[],sp:0};e.sp=this.textM("a a")-2*this.textM("a"),this.spaceWidth=e.sp;var i,o,r,a=String(t).split(" ");for(0,o=a.length,i=0;i<o;i++)a[i]=a[i].trim(),0!=(r=this.textM(a[i]))&&(e.words.push(a[i]),e.lengths.push(r));return e},Text.prototype.textLines=function(t,e){var i,o,r,a,n,h,s=t,p=[],c=String(e).split("\n");for(r=0,h=c.length,n=0;n<h;n++){for(p[r]="",s=t,a=(i=this.breakingText(c[n])).words.length,o=0;o<a;o++)s-i.lengths[o]<0&&s!=t&&(p[++r]="",s=t),p[r].length>0&&(p[r]+=" ",s-=i.sp),p[r]+=i.words[o],s-=i.lengths[o];r++}return p},Text.prototype.move=function(t){var e,i,o=this.obj.getBBox();e=t.hasOwnProperty("x")?t.x:o.x,i=t.hasOwnProperty("y")?t.y:o.y;var r,a,n=this.obj.getBBox(!0);this.obj.matrix.a>0?this.obj.matrix.b>0?(r=n.height*this.obj.matrix.b,a=0):(r=0,a=-1*n.width*this.obj.matrix.b):this.obj.matrix.b>0?(r=o.width,a=-1*n.height*this.obj.matrix.a):(r=-1*n.width*this.obj.matrix.a,a=o.height),e+=r,i+=a;var h=this.obj.matrix.invert().x(e,i),s=this.obj.matrix.invert().y(e,i);"right"==this.align?h+=n.width:"center"==this.align&&(h+=n.width/2),s+=n.height/2,this.obj.attr({x:h,y:s})},Text.prototype.attr=function(t){delete t.x,delete t.y,this.obj.attr(t)};
function Set(){this.x=0,this.y=0,this.width=0,this.height=0,this.set=[]}function Wrapper(t,i){Shape.call(this),this.x=0,this.y=0,this.width=0,this.height=0,this.obj=t;var h=this.obj.getBBox();this.x=h.x,this.y=h.y;var e=0;i.hasOwnProperty("h")?i.h>h.height&&(this.height=i.h,e=i.h-h.height,i.hasOwnProperty("valign")?e*=i.valign/100:e*=.5):i.hasOwnProperty("vPadding")?(this.height=h.height+2*i.vPadding,e=i.vPadding):this.height=h.height,e>0&&(this.y-=e),e=0,i.hasOwnProperty("w")?i.w>h.width&&(this.width=i.w,e=i.w-h.width,i.hasOwnProperty("align")?e*=i.align/100:e*=.5):i.hasOwnProperty("hPadding")?(this.width=h.width+2*i.hPadding,e=i.hPadding):this.width=h.width,e>0&&(this.x-=e)}function Row(t,i,h,e){Set.call(this),this.coordinates=[],this.sp=[],this.valignment=[],this.justifyContent="left",this.valign=0,this.w=0,this.xd=1,"number"==typeof t&&(this.width=t,this.xd=0),"number"==typeof i&&(this.height=i),"string"==typeof e&&("middle"!=e&&"bottom"!=e||("middle"==e?this.valign=1:"bottom"==e&&(this.valign=2))),0==this.xd&&"string"==typeof h&&("center"!=h&&"right"!=h&&"space-between"!=h&&"space-around"!=h||(this.justifyContent=h))}function Group(t,i,h){Set.call(this),this.currentRow=0,this.h=0,this.sil=!1,"number"==typeof i&&"inline"==t&&i>0&&(this.width=i,this.sil=!0),this.geometry="default","inline"!=t&&"stocked"!=t||(this.geometry=t),this.justifyContent="left",void 0===h&&"string"==typeof i&&(h=i),"inline"!=t||"space-between"!=h&&"space-around"!=h?"left"!=h&&"right"!=h&&"center"!=h||(this.justifyContent=h):this.justifyContent=h}function MiniPage(t,i,h,e,s,o){if(void 0===o)o={};this.setDefaults(o),this.paddingX=o.paddingX,this.paddingY=o.paddingY,Group.call(this,o.geometry,e-2*this.paddingX,o.justifyContent),Group.prototype.move.call(this,{x:i+this.paddingX,y:h+this.paddingY}),this.miniPage=null,o.miniPage&&(this.miniPage=new Rect(t,i,h,e,s,o))}Set.prototype.getBBox=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},Set.prototype.move=function(t){var i,h,e,s=this.x,o=this.y;for(t.hasOwnProperty("x")&&(s=t.x),t.hasOwnProperty("y")&&(o=t.y),h=this.set.length,i=0;i<h;i++)e=this.set[i].getBBox(),this.set[i].move({x:s+e.x-this.x,y:o+e.y-this.y});this.x=s,this.y=o},Set.prototype.toShow=function(){this.looping(function(t){t.toFront(),t.show()})},Set.prototype.show=function(){this.looping(function(t){t.show()})},Set.prototype.toFront=function(){this.looping(function(t){t.toFront()})},Set.prototype.hide=function(){this.looping(function(t){t.hide()})},Set.prototype.Scale=function(t){this.looping(function(i){i.attr({transform:t})})},Set.prototype.looping=function(t){var i,h=this.set.length;for(i=0;i<h;i++)t(this.set[i])},Wrapper.prototype=Object.create(Shape.prototype,{constructor:{configurable:!0,enumerable:!0,value:Wrapper,writable:!0}}),Wrapper.prototype.getBBox=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},Wrapper.prototype.move=function(t){var i,h,e,s,o;i=this.x,h=this.y,t.hasOwnProperty("x")&&(i=t.x),t.hasOwnProperty("y")&&(h=t.y),e=(o=this.obj.getBBox()).x-this.x+i,s=o.y-this.y+h,this.obj.move({x:e,y:s}),this.x=i,this.y=h},Row.prototype=Object.create(Set.prototype,{constructor:{configurable:!0,enumerable:!0,value:Row,writable:!0}}),Row.prototype.insert=function(t,i){var h=0,e=this.set.length;this.set[e]=t,void 0===this.sp[e]&&(this.sp[e]=0);var s=this.set[e].getBBox();this.valignment[e]=this.valign,"string"==typeof i&&("top"==i?this.valignment[e]=0:"middle"==i?this.valignment[e]=1:"bottom"==i&&(this.valignment[e]=2));var o,n=this.x;if(this.w+=s.width,(this.xd||this.w>this.width)&&(this.width=this.w),0==this.xd&&"left"!=this.justifyContent)for(o=Math.max(0,this.width-this.w),"right"==this.justifyContent||"center"==this.justifyContent?("center"==this.justifyContent&&(o/=2),n+=o,o=0):"space-between"==this.justifyContent&&e>0?0==e?n+=o/2:o/=e:"space-around"==this.justifyContent&&(n+=(o/=e+1)/2),h=0;h<e+1;h++)n+=this.sp[h],this.set[h].move({x:n}),this.coordinates[h]=n,n+=(s=this.set[h].getBBox()).width+o;else n+=this.w-s.width,this.set[e].move({x:n}),this.coordinates[e]=n;var r=0;for(h=0;h<e+1;h++)r+=this.valignment[h];if(r>0){if(s=this.set[e].getBBox(),this.height>s.height){r=this.valignment[e]*(this.height-s.height)/2;this.set[e].move({x:this.coordinates[e],y:this.y+r})}else if(this.height<s.height){var a;for(this.height=s.height,h=0;h<e+1;h++)s=this.set[h].getBBox(),a=this.y+this.valignment[h]*(this.height-s.height)/2,this.set[h].move({y:a})}}else this.set[e].move({y:this.y});this.height<s.height&&(this.height=s.height)},Row.prototype.insertSpace=function(t){this.sp[this.set.length]=t,this.w+=t,(this.xd||this.w>this.width)&&(this.width+=t)},Row.prototype.move=function(t){var i,h,e,s;for(t.hasOwnProperty("x")&&(this.x=t.x),t.hasOwnProperty("y")&&(this.y=t.y),h=this.set.length,i=0;i<h;i++)e=this.set[i].getBBox(),s=this.y+this.valignment[i]*(this.height-e.height)/2,this.set[i].move({x:this.coordinates[i]+this.x,y:s})},Group.prototype=Object.create(Set.prototype,{constructor:{configurable:!0,enumerable:!0,value:Group,writable:!0}}),Group.prototype.insert=function(t){var i=this.set.length;this.set[i]=t;var h=this.set[i].getBBox();if("default"==this.geometry)h.x<this.x&&(this.x=h.x),h.y<this.y&&(this.y=h.y),h.y+h.height>this.y+this.height&&(this.height=h.y+h.height-this.y),h.x+h.width>this.x+this.width&&(this.width=h.x+h.width-this.x);else if("stocked"==this.geometry){var e=this.x,s=this.y,o=0;"center"==this.justifyContent?o=1:"right"==this.justifyContent&&(o=2),e=this.x+o*(this.width-h.width)/2,this.set[i].move({x:e,y:s+this.height}),this.height+=h.height,o&&this.x>e&&(this.x=e),h.width>this.width&&(this.width=h.width)}else if("inline"==this.geometry){var n,r,a=0;if(e=this.x,0==this.sil)this.set[i].move({x:e+this.width,y:this.y}),this.width+=h.width,this.height<h.height&&(this.height=h.height);else{for(n=this.currentRow;n<i;n++)a+=this.set[n].getBBox().width;for(a+h.width>this.width?(this.currentRow=i,a=h.width,this.h=0):a+=h.width,this.h<h.height&&(this.height+=h.height-this.h,this.h=h.height),s=this.y+this.height-this.h,r=this.width-a,"left"==this.justifyContent?r=0:"right"==this.justifyContent||"center"==this.justifyContent?("center"==this.justifyContent&&(r/=2),e+=r,r=0):"space-between"==this.justifyContent&&i>0?i-this.currentRow==0?e+=r/2:r/=i-this.currentRow:"space-around"==this.justifyContent&&(e+=(r/=i+1-this.currentRow)/2),n=this.currentRow;n<i+1;n++)this.set[n].move({x:e,y:s}),e+=(h=this.set[n].getBBox()).width+r}}},Group.prototype.insertSpace=function(t){t>0&&(0==this.w&&"inline"==this.geometry?this.width+=t:this.height+=t)},MiniPage.prototype=Object.create(Group.prototype,{constructor:{configurable:!0,enumerable:!0,value:MiniPage,writable:!0}}),MiniPage.prototype.defaults={geometry:"stocked",paddingX:5,paddingY:5,miniPage:!1,justifyContent:"left"},Object.freeze(MiniPage.prototype.defaults),MiniPage.prototype.setDefaults=function(t){var i;for(i in this.defaults)this.defaults.hasOwnProperty(i)&&void 0===t[i]&&(t[i]=this.defaults[i])},MiniPage.prototype.getBBox=function(t){return null!==this.miniPage?this.miniPage.getBBox(t):{x:this.x-this.paddingX,y:this.y-this.paddingY,height:this.height+2*this.paddingY,width:this.width+2*this.paddingX}},MiniPage.prototype.insertSpace=function(t){if(Group.prototype.insertSpace.call(this,t),null!==this.miniPage){var i=this.getBBox();this.height+2*this.paddingY!=i.height&&this.reSize(this.width+2*this.paddingX,this.height+2*this.paddingY)}},MiniPage.prototype.insert=function(t){if(Group.prototype.insert.call(this,t),null!==this.miniPage){var i=this.getBBox();this.height+2*this.paddingY!=i.height&&this.reSize(this.width+2*this.paddingX,this.height+2*this.paddingY)}},MiniPage.prototype.bound=function(t,i,h,e){var s=this.getBBox(),o=s.x+i,n=s.y+h;t.move({x:o,y:n}),"boolean"==typeof e&&!0===e&&(s=t.getBBox(),this.reSize(s.width+2*this.paddingX,s.height+2*this.paddingY))},MiniPage.prototype.reSize=function(t,i){null!==this.miniPage&&this.miniPage.attr({width:t,height:i})},MiniPage.prototype.toFront=function(){null!==this.miniPage&&this.miniPage.toFront(),Group.prototype.toFront.call(this)},MiniPage.prototype.hide=function(){null!==this.miniPage&&this.miniPage.hide(),Group.prototype.hide.call(this)},MiniPage.prototype.toShow=function(){null!==this.miniPage&&this.miniPage.toShow(),Group.prototype.toShow.call(this)},MiniPage.prototype.setStyle=function(t,i){"body"==t?this.miniPage.attr(i):this.set[t].attr(i)},MiniPage.prototype.move=function(t){var i=this.getBBox(),h=i.x,e=i.y;t.hasOwnProperty("x")&&(h=t.x),t.hasOwnProperty("y")&&(e=t.y),null!==this.miniPage&&this.miniPage.move({x:h,y:e}),Group.prototype.move.call(this,{x:h+this.paddingX,y:e+this.paddingY})};
function Grid(t){this.objData=t,this.containerID=t.canvasID,this.canvas=document.getElementById(t.canvasID),this.containerWidth=this.canvas.clientWidth,this.containerHeight=this.canvas.clientHeight,this.paddingX=10,this.paddingY=5,this.scaleFactor=1}Grid.prototype.defaultSettings={gridSettings:{bgColor:"#ffffff",scaleColor:"#0000ff",labelColor:"#666666",scaleFontSize:12,scaleArea:45,"font-family":"Arial, sans-serif",popUpA:{maxWidth:200,paddingX:5,paddingY:5,justifyContent:"left",fill:"#ffffff",stroke:"#a1a1a1","stroke-width":.5,font:{fill:"#ff88ee","font-size":14,"font-style":"normal","font-weight":"normal","font-family":""}},popUpB:{maxWidth:300,paddingX:5,paddingY:5,justifyContent:"left",fill:"#000000",stroke:"#a1a1a1","stroke-width":0,font:{fill:"#ffffff","font-size":12,"font-style":"normal","font-weight":"normal","font-family":""}},extraMk:!0,mxDecimals:2},title:{fill:"#000000","font-size":22,"font-style":"normal","font-weight":"bold"},subTitle:{fill:"#000000","font-size":16,"font-style":"normal","font-weight":"normal"},axisTitles:{fill:"#a18899","font-size":16,"font-style":"normal","font-weight":"normal"},keys:{fill:"#000000","font-size":14,"font-style":"normal","font-weight":"normal"},additionalInfo:{fill:"#000000","font-size":12,"font-style":"normal","font-weight":"normal"}},Object.freeze(Grid.prototype.defaultSettings),Grid.prototype.setDefaults=function(){var t=CloneObject(this.defaultSettings.gridSettings);complementObject(this.settings,t),this.objData.hasOwnProperty("gridSettings")&&overWriteObj(t,this.objData.gridSettings);var i,e=["title","subTitle","axisTitles","keys","additionalInfo"],s=e.length;for(i=0;i<s;i++)t[e[i]]={},complementObject(this.defaultSettings[e[i]],t[e[i]]),t[e[i]]["font-family"]=t["font-family"],this.objData.hasOwnProperty(e[i])&&this.objData[e[i]].hasOwnProperty("font")&&overWriteObj(t[e[i]],this.objData[e[i]].font);""==t.popUpA.font["font-family"]&&(t.popUpA.font["font-family"]=t["font-family"]),""==t.popUpB.font["font-family"]&&(t.popUpB.font["font-family"]=t["font-family"]),this.settings=null,this.settings=t,this.settings.paddingA=20,this.settings.paddingB=10,this.settings.paddingC=5,this.settings.popUpA.miniPage=!0,this.settings.popUpB.miniPage=!0},Grid.prototype.setPaper=function(){this.paper=new Paper(this.containerID),this.topPanel=new MiniPage(this.paper,5,0,this.containerWidth-10,0,{paddingX:0,paddingY:this.paddingY}),this.bottomPanel=new MiniPage(this.paper,5,0,this.containerWidth-10,0,{paddingX:0,paddingY:this.paddingY}),this.popUp=new MiniPage(this.paper,0,0,100,100,this.settings.popUpA),this.popUp.hide(),this.canvas.style.backgroundColor=this.settings.bgColor},Grid.prototype.setKeys=function(){var t,i,e;if(this.objData.hasOwnProperty("keys"))if(this.containerWidth<400&&("right"==this.objData.keys.position||"left"==this.objData.keys.position)&&(this.objData.keys.position="bottom"),"top"==this.objData.keys.position||"bottom"==this.objData.keys.position?("center"==this.objData.keys.align&&(this.objData.keys.align="space-around"),this.keyBlock=new Group("inline",this.containerWidth-2*this.paddingX,this.objData.keys.align)):this.keyBlock=new Group("stocked","left"),"columns"==this.objData.chartType||"bars"==this.objData.chartType||"donut"==this.objData.chartType||"sunburst"==this.objData.chartType||"lines"==this.objData.chartType)for(i=this.objData.dataSet.length,t=0;t<i;t++){var s=new Row(0,0,"left");s.insert(new Rect(this.paper,10,10,10,10,{fill:this.objData.dataSet[t].color,"stroke-width":"0px"})),s.insertSpace(5),e="sunburst"==this.objData.chartType?this.objData.dataSet[t].name[0]:this.objData.dataSet[t].name,"donut"!=this.objData.chartType&&"sunburst"!=this.objData.chartType||(e+=" "+this.objData.dataSet[t].data[0]+"%"),s.insert(new Text(this.paper,25,5,160,"after","left",e,this.settings.keys)),"top"!=this.objData.keys.position&&"bottom"!=this.objData.keys.position||s.insertSpace(10),this.keyBlock.insert(s)}else this.objData.chartType},Grid.prototype.setTitle=function(){var t=1;if(this.objData.hasOwnProperty("title")){var i=new Text(this.paper,0,0,this.containerWidth,"after","left",this.objData.title.text,this.settings.title);t=this.getAlignment.call(this.objData.title),this.topPanel.insert(new Wrapper(i,{w:this.containerWidth,align:t,vPadding:2}))}if(this.objData.hasOwnProperty("subTitle")){var e=new Text(this.paper,0,0,this.containerWidth,"after","left",this.objData.subTitle.text,this.settings.subTitle);t=this.getAlignment.call(this.objData.subTitle),this.topPanel.insert(new Wrapper(e,{w:this.containerWidth,align:t,vPadding:1}))}},Grid.prototype.getAlignment=function(){var t=1;return this.hasOwnProperty("align")&&("right"==this.align?t=99:"center"==this.align&&(t=50)),t},Grid.prototype.setPanelsTB=function(){(this.objData.hasOwnProperty("axisTitles")&&void 0!==this.objData.axisTitles.xTitle&&(this.xTitle=new Wrapper(new Text(this.paper,0,0,this.containerWidth,"after","left",this.objData.axisTitles.xTitle,this.settings.axisTitles),{w:this.containerWidth,align:55,vPadding:5}),this.bottomPanel.insert(this.xTitle)),this.objData.hasOwnProperty("keys")&&("top"==this.objData.keys.position?this.topPanel.insert(this.keyBlock):"bottom"==this.objData.keys.position&&this.bottomPanel.insert(this.keyBlock)),this.objData.hasOwnProperty("additionalInfo"))&&(aling=this.getAlignment.call(this.objData.additionalInfo[void 0]),"top"==this.objData.additionalInfo.position?this.topPanel.insert(new Wrapper(new Text(this.paper,0,0,this.containerWidth,"after","left",this.objData.additionalInfo.content,this.settings.additionalInfo),{w:this.containerWidth,align:void 0,vPadding:5})):this.bottomPanel.insert(new Wrapper(new Text(this.paper,0,0,this.containerWidth,"after","left",this.objData.additionalInfo.content,this.settings.additionalInfo),{w:this.containerWidth,align:void 0,vPadding:5})));this.bottomPanel.insertSpace(5),this.topPanel.move({x:5,y:0})},Grid.prototype.preparePanelsLR=function(){var t,i=0,e=0,s=0,a=0;return this.objData.hasOwnProperty("keys")&&("left"==this.objData.keys.position?(i=(t=this.keyBlock.getBBox()).width,e=t.height):"right"==this.objData.keys.position&&(s=(t=this.keyBlock.getBBox()).width,a=t.height)),this.objData.hasOwnProperty("axisTitles")&&void 0!==this.objData.axisTitles.yTitle&&(this.yTitle=new Text(this.paper,0,0,this.containerWidth,"after","left",this.objData.axisTitles.yTitle,this.settings.axisTitles),this.yTitle.attr({transform:"r-90,10,10"}),i+=(t=this.yTitle.getBBox()).width+this.paddingX,e=Math.max(e,t.height)),{lw:i,lh:e,rw:s,rh:a}},Grid.prototype.setPanelsLR=function(){var t=this.containerHeight-(this.bottomPanel.height+this.topPanel.height);if(this.leftPanel=new Row(0,t),this.leftPanel.insertSpace(this.paddingX),this.rightPanel=new Row(0,t),this.rightPanel.insertSpace(this.paddingX),this.objData.hasOwnProperty("keys")){var i="top";this.objData.keys.hasOwnProperty("align")&&(i=this.objData.keys.align),"left"==this.objData.keys.position?(this.leftPanel.insert(this.keyBlock,i),this.leftPanel.insertSpace(this.paddingX)):"right"==this.objData.keys.position&&(this.rightPanel.insert(this.keyBlock,i),this.rightPanel.insertSpace(this.paddingX))}this.objData.hasOwnProperty("axisTitles")&&void 0!==this.objData.axisTitles.yTitle&&(this.leftPanel.insert(this.yTitle,"middle"),this.leftPanel.insertSpace(this.paddingX)),this.leftPanel.move({y:this.topPanel.height}),this.rightPanel.move({x:this.containerWidth-this.rightPanel.getBBox().width,y:this.topPanel.height})},Grid.prototype.getScaleValues=function(t){var i=t;return t<1e-6?i=String(1e7*t)+"/10M":t<1e-5?i=String(1e6*t)+"/1M":t<1e-4?i=String(1e5*t)+"/100k":t<.001?i=String(1e4*t)+"/10k":t<.01?i=String(1e3*t)+"/1k":t>=1e6?i=String(t/1e6)+"M":t>=1e3&&(i=String(t/1e3)+"k"),i},Grid.prototype.mkVScale=function(t){for(var i=0,e=this.x0-this.settings.scaleArea-this.settings.paddingB;i<this.vScale.axisLength;)new Line(this.paper,this.x0,this.y0-i,this.x0+t,this.y0-i,{stroke:this.settings.scaleColor}),i>0&&new Text(this.paper,e,this.y0-i,this.settings.scaleArea,"middle","right",this.getScaleValues(this.vInvTransform(i)),{fill:this.settings.labelColor,"font-size":this.settings.scaleFontSize,"font-family":this.settings["font-family"]}),i+=this.vScale.intervalLength;i=this.vScale.axisLength,new Text(this.paper,e,this.y0-i,this.settings.scaleArea,"middle","right",this.getScaleValues(this.vInvTransform(i)),{fill:this.settings.labelColor,"font-size":this.settings.scaleFontSize,"font-family":this.settings["font-family"]}),new Line(this.paper,this.x0,this.y0-i,this.x0+t,this.y0-i,{stroke:this.settings.scaleColor})},Grid.prototype.mkHScale=function(t){for(var i,e,s,a=0;a<this.hScale.axisLength;)new Line(this.paper,this.x0+a,this.y0-t,this.x0+a,this.y0,{stroke:this.settings.scaleColor}),a>0&&(s=(e=(i=new Text(this.paper,this.x0+a,this.y0+this.settings.paddingC,this.settings.scaleArea,"after","left",this.getScaleValues(this.hInvTransform(a)),{fill:this.settings.labelColor,"font-size":this.settings.scaleFontSize,"font-family":this.settings["font-family"]})).getBBox()).x-e.width/2,i.move({x:s})),a+=this.hScale.intervalLength;a=this.hScale.axisLength,s=(e=(i=new Text(this.paper,this.x0+a,this.y0+this.settings.paddingC,this.settings.scaleArea,"after","left",this.getScaleValues(this.hInvTransform(a)),{fill:this.settings.labelColor,"font-size":this.settings.scaleFontSize,"font-family":this.settings["font-family"]})).getBBox()).x-e.width/2,i.move({x:s}),new Line(this.paper,this.x0+a,this.y0-t,this.x0+a,this.y0,{stroke:this.settings.scaleColor})},Grid.prototype.transForm=function(t){return t>0?this.isLogarithmic?this.factor*(Math.log10(t)+1-this.minEx):this.factor*t:0},Grid.prototype.invTransForm=function(t,i){var e=roundNumber(t/this.factor,i);return this.isLogarithmic?Math.pow(10,this.minEx-1+e):e},Grid.prototype.setScale=function(t,i){if(i(this,t),this.max<this.min&&(this.max=this.min),this.minVisualValue>this.min*this.axisLength/this.max){this.isLogarithmic=!0;var e=Math.ceil(Math.log10(this.max));this.minEx=Math.ceil(Math.log10(this.min))-1,e==this.minEx&&this.minEx--,this.numIntervals=e-this.minEx+1,this.intervalLength=this.axisLength/this.numIntervals,this.intervalLength<40&&(this.intervalLength=40,this.axisLength=40*this.numIntervals),this.factor=this.axisLength/(e-this.minEx+1)}else{this.factor=this.axisLength/this.max;var s,a=this.intervalLength/this.factor,n=Math.pow(10,Math.ceil(Math.log10(a))),o=[10,5,4,2],h=n;for(s=0;s<o.length;s++)if(a<n/o[s]){h=n/o[s];break}(o=Math.ceil(this.max/h)*h)==this.max&&this.extraMk&&(o+=.25*h),this.factor=this.axisLength/o,this.intervalLength=h*this.factor}},Grid.prototype.printcategory=function(t,i,e,s,a,n,o,h){var r=new Text(this.paper,-1500,0,this.settings.popUpB.maxWidth,"after","left",t,this.settings.popUpB.font),l=r.trimText(t,s,{"font-size":this.settings.categoryFontSize,"font-family":this.settings["font-family"]}),p=new Text(this.paper,i,e,s,a,n,l,{fill:this.settings.labelColor,"font-size":this.settings.categoryFontSize,"font-family":this.settings["font-family"]});if(l!=t){var g=this.settings.popUpB,f=r.getBBox(),d=f.width+2*g.paddingX,c=f.height+2*g.paddingY,y=this.scaleFactor;f=null,p.mouseover(function(t){null==f&&(i=3+t.clientX-document.getElementById(h).getBoundingClientRect().left,e=3+t.clientY-document.getElementById(h).getBoundingClientRect().top,f=1,i+d>document.getElementById(h).getBoundingClientRect().right&&(i-=d),i*=y,e*=y,o.setStyle("body",g),o.reSize(d,c),o.move({x:i,y:e}),o.toShow(),o.bound(r,g.paddingX,g.paddingY),r.toShow())}),p.mouseout(function(){r.hide(),o.hide(),f=null})}},Grid.prototype.moveLabel=function(t,i,e,s,a){var n=document.getElementById(this.containerID).getBoundingClientRect(),o=10+t.clientX;o+i>n.right&&(o-=i+10),o-=n.left,o*=this.scaleFactor;var h=10+t.clientY;h+e>n.bottom&&(h-=e+10),h-=n.top,h*=this.scaleFactor,this.popUp.setStyle("body",this.settings.popUpA),this.popUp.reSize(i,e),this.popUp.move({x:o,y:h}),this.popUp.toShow(),this.popUp.bound(s,this.settings.popUpA.paddingX,this.settings.popUpA.paddingY),s.toShow()},Grid.prototype.scaleDown=function(){this.paper.setSize(this.containerWidth,this.containerHeight),this.paper.setViewBox(0,0,this.scaleFactor*this.containerWidth,this.scaleFactor*this.containerHeight,!0),this.canvas.style.height=this.containerHeight/this.scaleFactor+"px"},Grid.prototype.Reload=function(){this.paper.Clear()};
function Bars(t){Grid.call(this,t),this.settings={rowHeight:30,barThickness:14,speed:500,categoryBoxWidth:160,categoryFontSize:12},this.setDefaults(),this.settings.rowHeight=Math.max(this.settings.rowHeight,this.settings.barThickness),this.setPaper(),this.setKeys();var i=this.preparePanelsLR();this.x0=i.lw+this.settings.paddingC+this.settings.paddingB+this.settings.categoryBoxWidth,this.xAxisLength=this.containerWidth-this.x0-this.settings.paddingC-i.rw-this.settings.scaleArea/2,this.hScale={min:1e6,max:this.objData.dataSet[0].data[0],minEx:null,numIntervals:null,isLogarithmic:!1,axisLength:this.xAxisLength,minVisualValue:10,intervalLength:80,factor:1,extraMk:this.settings.extraMk},this.setScale.call(this.hScale,this.objData.dataSet,function(t,i){var s,e,a,h,n;for(a=i.length,h=i[0].data.length,e=0;e<h;e++)for(n=0,s=0;s<a;s++)i[s].data[e]>0&&(t.min>Number(i[s].data[e])&&(t.min=Number(i[s].data[e])),n+=i[s].data[e]),t.max<n&&(t.max=n)}),this.scaleFactor=1;var s=0;this.hScale.axisLength!=this.xAxisLength&&(s=this.hScale.axisLength-this.xAxisLength,this.scaleFactor=(this.containerWidth+s)/this.containerWidth,this.containerWidth+=s),this.setTitle(),this.setPanelsTB();var e=this.bottomPanel.getBBox(),a=this.topPanel.getBBox();this.yAxisLength=this.settings.rowHeight*this.objData.labels.length,this.y0=this.yAxisLength+this.settings.paddingC+a.height,this.containerHeight=this.yAxisLength+this.settings.paddingC,this.containerHeight+=a.height+e.height+this.settings.paddingA;var h=this.containerHeight-e.height;this.bottomPanel.move({y:h}),this.setPanelsLR();var n,o;this.rightPanel.getBBox();for(o=this.objData.dataSet.length,this.kyc=[],n=0;n<o;n++)this.kyc[n]=new Rect(this.paper,-1e3,-300,10,10,{fill:"#ffffff","stroke-width":"0px"}),this.kyc[n].hide();var r=this.objData.dataSet.length;for(this.dataOrder=[],n=0;n<r;n++)this.dataOrder[this.objData.dataSet[n].name]=n,this.kyc[n].attr({fill:this.objData.dataSet[n].color});this.hTransform=this.transForm.bind(this.hScale),this.hInvTransform=this.invTransForm.bind(this.hScale),this.mkHScale(this.yAxisLength),this.printData(),this.scaleDown()}Bars.prototype=Object.create(Grid.prototype,{constructor:{configurable:!0,enumerable:!0,value:Bars,writable:!0}}),Bars.prototype.printData=function(){var t,i,s,e=this.objData.labels.length,a=this.objData.dataSet.length;s=this.y0-this.yAxisLength;var h={},n={},o=[];for(t=0;t<e;t++){new Line(this.paper,this.x0-10,s,this.x0,s,{stroke:this.settings.scaleColor}),this.printcategory(this.objData.labels[t],this.x0-this.settings.categoryBoxWidth-this.settings.paddingC,s+this.settings.rowHeight/2,this.settings.categoryBoxWidth,"middle","left",this.popUp,this.containerID);var r=[],g=[];for(i=0;i<a;i++)g[i]=this.objData.dataSet[i].color,r[i]=this.objData.dataSet[i].name;for(i=0;i<a;i++)h[this.objData.dataSet[i].name]=this.objData.dataSet[i].data[t],n[this.objData.dataSet[i].color]=this.objData.dataSet[i].data[t],o[i]=this.objData.dataSet[i].data[t];r.sort(function(t,i){return h[t]-h[i]}),g.sort(function(t,i){return n[t]-n[i]}),o.sort(function(t,i){return t-i});var l=[];for(i=0;i<a;i++)l[this.dataOrder[r[i]]]=i;this.stockedLogData(this.settings.rowHeight/2+s-this.settings.barThickness/2,o,g,r,this.objData.labels[t],l),s+=this.settings.rowHeight,h=null,h={}}new Line(this.paper,this.x0-10,s,this.x0,s,{stroke:this.settings.scaleColor})},Bars.prototype.stockedBars=function(t,i,s,e,a,h){if(a<s.length){var n=i+s[a],o=Math.round(1e3*(this.hTransform(n)-this.hTransform(i))/this.settings.speed);new AnimateHBar(this.paper,this.x0+this.hTransform(i),t,this.hTransform(n)-this.hTransform(i),this.settings.barThickness,o,{fill:e[a],"stroke-width":"0px"}),this.paper.getById(h).toFront(),a++,setTimeout(function(){this.stockedBars(t,n,s,e,a,h)}.bind(this),o)}},Bars.prototype.stockedLogData=function(t,i,s,e,a,h){t=t,i=CloneObject(i),s=CloneObject(s),e=CloneObject(e),a=a,h=CloneObject(h);(function(){setTimeout(function(){var n,o;o=i.length;var r,g=0;for(n=0;n<o;n++)g+=i[n];r=this.hTransform(g);var l=new Rect(this.paper,this.x0,t,r,this.settings.barThickness,{fill:"#ffffff","fill-opacity":0,"stroke-opacity":0});this.stockedBars(t,0,i,s,0,l.getId());var d=new Group("stocked",this.settings.popUpA.justifyContent);for(d.insert(new Text(this.paper,0,0,this.settings.popUpA.maxWidth,"after","left",a,{fill:this.settings.popUpA.font.fill,"font-size":this.settings.popUpA.font["font-size"],"font-weight":"500","font-family":this.settings.popUpA.font["font-family"]})),d.insertSpace(5),n=0;n<o;n++){var p=new Row;p.insert(this.kyc[n],"middle"),p.insertSpace(5),p.insert(new Text(this.paper,0,0,this.settings.popUpA.maxWidth,"after","left",e[h[n]]+" "+formatNumber(i[h[n]],this.settings.mxDecimals),this.settings.popUpA.font)),d.insert(p)}d.hide();var c=d.getBBox(),f=c.width+2*this.settings.popUpA.paddingX,m=c.height+2*this.settings.popUpA.paddingY,b=this.popUp;c=null,l.mouseover(function(t){null==c&&(c=1,this.moveLabel(t,f,m,d,function(t,i){}))}.bind(this)),l.mouseout(function(){d.hide(),b.hide(),c=null})}.bind(this),10*Math.round(100*Math.random()))}).bind(this)()};
function Columns(t){Grid.call(this,t),this.containerHeight=this.containerWidth/1.618,this.canvas.style.height=this.containerHeight+"px",this.settings={maxColumnWidth:60,columnPadding:15,groupColumnPadding:50},this.setDefaults(),this.setPaper(),this.setKeys();var i=this.preparePanelsLR();this.x0=i.lw+this.settings.paddingC+this.settings.paddingB+this.settings.scaleArea/2,this.xAxisLength=this.containerWidth-(this.x0+this.settings.paddingA+i.rw);var s=this.objData.dataSet.length,n=this.objData.dataSet[0].data.length,e=this.xAxisLength/n,a=this.settings.groupColumnPadding+s*this.settings.maxColumnWidth+(s-1)*this.settings.columnPadding;this.scaleFactor=1;var h=0;if(a>e){var o=e/a;o*this.settings.maxColumnWidth<20&&(h=(o=20/this.settings.maxColumnWidth)*a*n-this.xAxisLength,this.scaleFactor=(this.containerWidth+h)/this.containerWidth,this.containerWidth+=h,this.xAxisLength=o*a*n,e=a*o),this.settings.maxColumnWidth=o*this.settings.maxColumnWidth,this.settings.columnPadding=o*this.settings.columnPadding,this.settings.groupColumnPadding=o*this.settings.groupColumnPadding}else a<e&&(this.settings.groupColumnPadding+=e-a);this.setTitle(),this.setPanelsTB();var g=this.bottomPanel.getBBox(),r=this.topPanel.getBBox();this.yAxisLength=this.containerHeight-(r.height+g.height+this.settings.paddingC+this.settings.paddingB+.6*this.settings.paddingA),this.vScale={min:1e6,max:this.objData.dataSet[0].data[0],minEx:null,numIntervals:null,isLogarithmic:!1,axisLength:this.yAxisLength,minVisualValue:10,intervalLength:80,factor:1,extraMk:this.settings.extraMk},this.setScale.call(this.vScale,this.objData.dataSet,function(t,i){var s,n,e,a;for(e=i.length,a=i[0].data.length,s=0;s<e;s++)for(n=0;n<a;n++)i[s].data[n]>0&&(t.min>Number(i[s].data[n])&&(t.min=Number(i[s].data[n])),t.max<Number(i[s].data[n])&&(t.max=Number(i[s].data[n])))}),this.vScale.axisLength!=this.yAxisLength&&(this.containerHeight+=this.vScale.axisLength-this.yAxisLength,this.canvas.style.height=this.containerHeight+"px"),this.setPanelsLR();var l=this.containerHeight-g.height;this.bottomPanel.move({y:l}),this.y0=l-(this.settings.paddingB+.6*this.settings.paddingA),this.vTransform=this.transForm.bind(this.vScale),this.vInvTransform=this.invTransForm.bind(this.vScale),this.mkVScale(this.xAxisLength),this.setCathegories(e),this.printSeries(n,s),this.scaleDown()}Columns.prototype=Object.create(Grid.prototype,{constructor:{configurable:!0,enumerable:!0,value:Columns,writable:!0}}),Columns.prototype.setCathegories=function(t){var i,s=this.objData.dataSet[0].data.length,n=this.x0;for(i=0;i<s+1;i++)new Line(this.paper,n,this.y0,n,this.y0+10,{stroke:this.settings.scaleColor}),i<s&&this.printcategory(this.objData.labels[i],n,this.y0+10,t,"after","center",this.popUp,this.containerID),n+=t},Columns.prototype.printSeries=function(t,i){var s,n;for(s=this.x0+this.settings.groupColumnPadding/2,n=0;n<t;n++)this.columnGroup(n,i,s),s+=this.settings.groupColumnPadding-this.settings.columnPadding,s+=i*(this.settings.columnPadding+this.settings.maxColumnWidth)},Columns.prototype.columnGroup=function(t,i,s){t=t,i=i,s=s;(function(){setTimeout(function(){var n,e,a,h,o=this.popUp,g=this.objData;e=s;var r=new Group("stocked",this.settings.popUpA.justifyContent);for(r.insert(new Text(this.paper,-500,this.y0,this.settings.popUpA.maxWidth,"after","left",g.labels[t],{fill:this.settings.popUpA.font.fill,"font-size":this.settings.popUpA.font["font-size"],"font-weight":"500","font-family":this.settings.popUpA.font["font-family"]})),r.insertSpace(5),n=0;n<i;n++)new AnimateVBar(this.paper,e,this.y0,this.settings.maxColumnWidth,this.vTransform(g.dataSet[n].data[t]),{fill:g.dataSet[n].color,"sfill-opacity":.8,"stroke-width":"0px"}),e+=this.settings.columnPadding+this.settings.maxColumnWidth,h=this.objData.dataSet[n].name+" "+formatNumber(this.objData.dataSet[n].data[t],this.settings.mxDecimals),r.insert(new Text(this.paper,-500,0,this.settings.popUpA.maxWidth,"after","left",h,this.settings.popUpA.font));r.hide();var l=r.width,d=r.height;d+=2*this.settings.popUpA.paddingX,l+=2*this.settings.popUpA.paddingY;var p=new Rect(this.paper,s,0,e-s-this.settings.columnPadding,this.y0,{fill:"#ffffff","fill-opacity":0,"stroke-opacity":0});a=null,p.mouseover(function(t){null==a&&(a=1,this.moveLabel(t,l,d,r,function(t,i){}))}.bind(this)),p.mouseout(function(){r.hide(),o.hide(),a=null})}.bind(this),100)}).bind(this)()};
function Lines(t){Grid.call(this,t),this.containerHeight=this.containerWidth/1.618,this.canvas.style.height=this.containerHeight+"px",this.settings={minDataInterval:35,"line-width":2,elapsedTime:2e3},this.setDefaults(),this.setPaper(),this.setKeys();var i=this.preparePanelsLR();this.x0=i.lw+this.settings.paddingC+this.settings.paddingB+this.settings.scaleArea/2,this.xAxisLength=this.containerWidth-(this.x0+this.settings.paddingA+i.rw),this.setTitle(),this.setPanelsTB();var s=this.bottomPanel.getBBox(),e=this.topPanel.getBBox();this.yAxisLength=this.containerHeight-(e.height+s.height+this.settings.paddingC+this.settings.paddingB+.6*this.settings.paddingA),this.vScale={min:1e6,max:this.objData.dataSet[0].data[0],minEx:null,numIntervals:null,isLogarithmic:!1,axisLength:this.yAxisLength,minVisualValue:10,intervalLength:80,factor:1},this.setScale.call(this.vScale,this.objData.dataSet,function(t,i){var s,e,a,n;for(a=i.length,n=i[0].data.length,s=0;s<a;s++)for(e=0;e<n;e++)i[s].data[e]>0&&(t.min>Number(i[s].data[e])&&(t.min=Number(i[s].data[e])),t.max<Number(i[s].data[e])&&(t.max=Number(i[s].data[e])))}),this.vScale.axisLength!=this.yAxisLength&&(this.containerHeight+=this.vScale.axisLength-this.yAxisLength,this.canvas.style.height=this.containerHeight+"px"),this.setPanelsLR();var a=this.containerHeight-s.height;this.bottomPanel.move({y:a}),this.y0=a-(this.settings.paddingB+.6*this.settings.paddingA),this.vTransform=this.transForm.bind(this.vScale),this.vInvTransform=this.invTransForm.bind(this.vScale),this.mkVScale(this.xAxisLength),this.hScale(),this.ms=Math.round(this.settings.ms/this.objData.dataSet[0].data.length),this.printSeries(0),this.paper.setSize(this.containerWidth,this.containerHeight)}Lines.prototype=Object.create(Grid.prototype,{constructor:{configurable:!0,enumerable:!0,value:Lines,writable:!0}}),Lines.prototype.hScale=function(){for(var t=this.objData.serie.length,i=t,s=(this.xAxisLength-this.settings.paddingA)/(i-1),e=1;this.settings.minDataInterval>s;)e++,i=Math.floor(t/e),s=(this.xAxisLength-this.settings.paddingA)/i;this.settings.minDataInterval=(this.xAxisLength-this.settings.paddingA)/(t-1),this.firstPoint=this.x0+this.settings.paddingA/2;var a,n,h=0;for(a=this.firstPoint,n=this.objData.serie.length,h=0;h<n;h++)h%e==0&&(new Line(this.paper,a,this.y0+5,a,this.y0,{stroke:this.settings.scaleColor}),this.printcategory(this.objData.serie[h],a-this.settings.scaleArea/2,this.y0+2+this.settings.scaleFontSize,this.settings.scaleArea,"after","center",this.popUp,this.containerID)),a+=this.settings.minDataInterval},Lines.prototype.printSeries=function(t){var i,s,e,a,n,h;n=this.objData.serie.length,h=this.objData.dataSet.length;var o,r=t;for(o=0;o<h;o++)i=this.firstPoint+r*this.settings.minDataInterval,s=this.y0-this.vTransform(this.objData.dataSet[o].data[r]),this.recordPoint(r,o,i,s),r<n-1&&(e=i+this.settings.minDataInterval,a=this.y0-this.vTransform(this.objData.dataSet[o].data[r+1]),new AnimateLine(this.paper,i,s,e,a,this.ms,{stroke:this.objData.dataSet[o].color,"stroke-width":this.settings["line-width"]+"px"}));r<n-1&&setTimeout(function(){r++,this.printSeries(r)}.bind(this),this.ms)},Lines.prototype.recordPoint=function(t,i,s,e){t=t,i=i,s=s,e=e;(function(){setTimeout(function(){var a,n,h=this.popUp,o=(this.objData,new Group("stocked",this.settings.popUpA.justifyContent));o.insert(new Text(this.paper,-500,this.y0,this.settings.popUpA.maxWidth,"after","left",this.objData.serie[t],{fill:this.settings.popUpA.font.fill,"font-size":this.settings.popUpA.font["font-size"],"font-style":this.settings.popUpA.font["font-style"],"font-weight":"bold","font-family":this.settings.popUpA["font-family"]})),o.insertSpace(5),n=this.objData.dataSet[i].name+" "+formatNumber(this.objData.dataSet[i].data[t],this.settings.mxDecimals),o.insert(new Text(this.paper,-500,0,this.settings.popUpA.maxWidth,"after","left",n,this.settings.popUpA.font)),o.hide();var r=o.getBBox(),g=r.width,p=r.height;p+=2*this.settings.popUpA.paddingX,g+=2*this.settings.popUpA.paddingY;var l=new Circle(this.paper,s,e,1.75*this.settings["line-width"],{fill:this.objData.dataSet[i].color,"stroke-width":8,stroke:this.objData.dataSet[i].color,"stroke-opacity":0});a=null,l.mouseover(function(t){null==a&&(l.attr({"stroke-opacity":.5}),a=1,this.moveLabel(t,g,p,o,function(t,i){}))}.bind(this)),l.mouseout(function(){l.attr({"stroke-opacity":0}),o.hide(),h.hide(),a=null})}.bind(this),100)}).bind(this)()};
function BubbleChart(t){Grid.call(this,t),this.containerHeight=this.containerWidth/1.618,this.canvas.style.height=this.containerHeight+"px",this.settings={bubbleStyle:{fill:"#bddaf5",stroke:"#7aaadc"}},this.setDefaults(),this.setPaper(),this.setKeys();var a=this.preparePanelsLR();this.x0=a.lw+this.settings.paddingC+this.settings.paddingB+this.settings.scaleArea/2,this.xAxisLength=this.containerWidth-(this.x0+this.settings.paddingC+a.rw),this.hScale={min:1e6,max:this.objData.dataSet[0].data[0],minEx:null,numIntervals:null,isLogarithmic:!1,axisLength:this.xAxisLength,minVisualValue:10,intervalLength:80,factor:1},this.setScale.call(this.hScale,this.objData.dataSet,function(t,i){var a,s;for(s=i.length,a=0;a<s;a++)i[a].data[0]>0&&(t.min>Number(i[a].data[0])?t.min=Number(i[a].data[0]):t.max<Number(i[a].data[0])&&(t.max=Number(i[a].data[0])))}),this.scaleFactor=1;var s=0;this.hScale.axisLength!=this.xAxisLength&&(s=this.hScale.axisLength-this.xAxisLength,this.scaleFactor=(this.containerWidth+s)/this.containerWidth,this.containerWidth+=s),this.setTitle(),this.setPanelsTB();var e=this.topPanel.getBBox(),h=this.bottomPanel.getBBox();this.yAxisLength=this.containerHeight-(e.height+h.height+this.settings.paddingC+this.settings.paddingB+.6*this.settings.paddingA),this.vScale={min:1e6,max:this.objData.dataSet[0].data[1],minEx:null,numIntervals:null,isLogarithmic:!1,axisLength:this.yAxisLength,minVisualValue:10,intervalLength:80,factor:1},this.setScale.call(this.vScale,this.objData.dataSet,function(t,i){var a,s;for(s=i.length,a=0;a<s;a++)i[a].data[1]>0&&(t.min>i[a].data[1]?t.min=i[a].data[1]:t.max<i[a].data[1]&&(t.max=i[a].data[1]))}),this.vScale.axisLength!=this.yAxisLength&&(this.containerHeight+=this.vScale.axisLength-this.yAxisLength,this.canvas.style.height=this.containerHeight+"px"),this.setPanelsLR();var n=this.containerHeight-h.height;this.bottomPanel.move({y:n}),this.y0=n-(this.settings.paddingB+.6*this.settings.paddingA),this.vTransform=this.transForm.bind(this.vScale),this.vInvTransform=this.invTransForm.bind(this.vScale),this.hTransform=this.transForm.bind(this.hScale),this.hInvTransform=this.invTransForm.bind(this.hScale),this.mkVScale(this.hScale.axisLength),this.mkHScale(this.vScale.axisLength);var r=t.dataSet.length,o=[];for(i=0;i<r;i++)o[i]=i;for(o.sort(function(i,a){return t.dataSet[a].data[2]-t.dataSet[i].data[2]}),i=0;i<r;i++){this.printBubble(o[i],t);o[i]}this.scaleDown()}BubbleChart.prototype=Object.create(Grid.prototype,{constructor:{configurable:!0,enumerable:!0,value:BubbleChart,writable:!0}}),BubbleChart.prototype.printBubble=function(t,i){t=t;(function(){setTimeout(function(){var i,a=this.objData,s=this.popUp,e=this.settings.popUpA.maxWidth,h=new Group("stocked",this.settings.popUpA.justifyContent);h.insert(new Text(this.paper,-500,0,e,"after","left",a.dataSet[t].name,{fill:this.settings.popUpA.font.fill,"font-size":this.settings.popUpA.font["font-size"],"font-weight":"bold","font-family":this.settings.popUpA.font["font-family"]})),h.insertSpace(5);var n=[a.dataNames[0]+" "+formatNumber(a.dataSet[t].data[0],this.settings.mxDecimals),a.dataNames[1]+" "+formatNumber(a.dataSet[t].data[1],this.settings.mxDecimals),a.dataNames[2]+" "+a.dataSet[t].data[2]];for(i=0;i<3;i++)h.insert(new Text(this.paper,-500,0,e,"after","left",n[i],this.settings.popUpA.font));h.hide();var o=h.width,l=h.height;l+=2*this.settings.popUpA.paddingX,o+=2*this.settings.popUpA.paddingY;var d=new AnimateCircle(this.paper,this.x0+this.hTransform(a.dataSet[t].data[0]),this.y0-this.vTransform(a.dataSet[t].data[1]),7+10*Math.log10(a.dataSet[t].data[2]),{fill:this.settings.bubbleStyle.fill,"fill-opacity":.8,stroke:this.settings.bubbleStyle.stroke,"stroke-opacity":.8});r=null,d.mouseover(function(t){null==r&&(r=!0,d.attr({"stroke-width":"2px"}),this.moveLabel(t,o,l,h))}.bind(this)),d.mouseout(function(){d.attr({"stroke-width":"1px"}),h.hide(),s.hide(),r=null})}.bind(this),10)}).bind(this)()};
function DonutChart(t){Grid.call(this,t),this.settings={donutRation:.3,maxDonutFont:50,orderData:!0},this.setDefaults(),this.setPaper(),this.setTitle(),this.setKeys(),this.setPanelsTB();var i=this.topPanel.getBBox(),a=this.bottomPanel.getBBox(),s=this.preparePanelsLR(),e=this.containerWidth-(s.lw+s.rw+2*this.settings.paddingA);this.donutWidth=e/2*Math.min(.8,Math.max(this.settings.donutRation,0)),this.radious=e/2-this.donutWidth,this.x0=s.lw+this.settings.paddingA+e/2,this.y0=i.height+this.settings.paddingA+e/2,this.containerHeight=this.y0+this.settings.paddingA+e/2+a.height;var h=this.containerHeight-a.height;this.bottomPanel.move({y:h}),this.setPanelsLR(),this.cAngle=-3*Math.PI/2,this.mkLabels();var o,n,r=[],l=this.objData.dataSet.length;for(o=0;o<l;o++)r[o]=o;this.settings.orderData&&(n=this.objData,r.sort(function(t,i){return n.dataSet[t].data-n.dataSet[i].data})),this.labels[r[l-1]].show(),this.dataTest={a:r[l-1]},this.printArch(r,0),this.canvas.style.height=this.containerHeight+"px",this.paper.setSize(this.containerWidth,this.containerHeight)}DonutChart.prototype=Object.create(Grid.prototype,{constructor:{configurable:!0,enumerable:!0,value:DonutChart,writable:!0}}),DonutChart.prototype.printArch=function(t,i){if(i<this.objData.dataSet.length){var a=t[i],s=this.objData.dataSet[a].data,e=new AnimatedArch(this.paper,this.cAngle,s,this.x0,this.y0,this.radious,this.donutWidth,700,{fill:this.objData.dataSet[a].color,stroke:this.objData.dataSet[a].color,"stroke-width":"0px"}),h=this.labels,o=this.dataTest,n=a;n!=o.a&&(h[o.a].hide(),o.a=n,h[n].show());var r=null;e.mouseover(function(t){null==r&&(n!=o.a&&(h[o.a].hide(),o.a=n,h[n].show()),e.attr({fill:changeColor(this.objData.dataSet[a].color,.2)}),r=1)}.bind(this)),e.mouseout(function(){e.attr({fill:this.objData.dataSet[a].color}),r=null}.bind(this)),this.cAngle+=2*Math.PI*s/100,i++,setTimeout(function(){this.printArch(t,i)}.bind(this),700)}},DonutChart.prototype.mkLabels=function(){this.labels=[];var t,i,a,s,e,h,o,n;for(i=this.objData.dataSet.length,t=0;t<i;t++)this.labels[t]=new Group("stocked","center"),a=s=0,this.labels[t].insert(new Text(this.paper,0,0,2*(this.radious+this.donutWidth),"after","center",this.objData.dataSet[t].name,{fill:this.objData.dataSet[t].color,"font-size":this.settings.maxDonutFont,"font-family":this.settings["font-family"]})),this.labels[t].insert(new Text(this.paper,0,0,2*(this.radious+this.donutWidth),"after","center",this.objData.dataSet[t].data[0]+"%",{fill:this.objData.dataSet[t].color,"font-size":Math.floor(.8*this.settings.maxDonutFont),"font-family":this.settings["font-family"]})),e=this.labels[t].getBBox(),a=this.x0-e.width/2-5,s=this.y0-e.height/2,h=Math.sqrt((e.width+10)*(e.width+10)+e.height*e.height),n="s"+(o=Math.min(1,2*this.radious/h))+","+o+","+this.x0+","+this.y0,this.labels[t].move({x:a,y:s}),this.labels[t].Scale(n),this.labels[t].hide()};
function SunburstChart(t){Grid.call(this,t),this.settings={donutRation:.3,maxDonutFont:50,orderData:!0},this.setDefaults(),this.setPaper(),this.setTitle(),this.setKeys(),this.setPanelsTB();var i=this.topPanel.getBBox(),s=this.bottomPanel.getBBox(),a=this.preparePanelsLR(),e=this.containerWidth-(a.lw+a.rw+2*this.settings.paddingA);this.donutWidth=e/2*Math.min(.8,Math.max(this.settings.donutRation,0))/this.objData.dataSet[0].data.length,this.radious=e/2-this.objData.dataSet[0].data.length*this.donutWidth,this.x0=a.lw+this.settings.paddingA+e/2,this.y0=i.height+this.settings.paddingA+e/2,this.containerHeight=this.y0+this.settings.paddingA+e/2+s.height;var h=this.containerHeight-s.height;this.bottomPanel.move({y:h}),this.setPanelsLR(),this.cAngle=-3*Math.PI/2,this.mkLabels();var n,o=[],r=this.objData.dataSet.length;for(n=0;n<r;n++)o[n]=n;this.settings.orderData&&o.sort(function(t,i){return this.objData.dataSet[t].data-this.objData.dataSet[i].data}),this.labels[o[r-1]].show(),this.dataTest={a:o[r-1]};var l=[];for(n=0;n<r;n++)l[n]=this.objData.dataSet[o[n]].data[0];this.printArch(this.cAngle,l,o,0,0,700,0,0),this.canvas.style.height=this.containerHeight+"px",this.paper.setSize(this.containerWidth,this.containerHeight)}SunburstChart.prototype=Object.create(Grid.prototype,{constructor:{configurable:!0,enumerable:!0,value:SunburstChart,writable:!0}}),SunburstChart.prototype.printArch=function(t,i,s,a,e,h,n,o){if(a<i.length){var r=i[a],l=changeColor(this.objData.dataSet[s[e]].color,a*n*.2);if(n<1){var d=[];for(k=0;k<this.objData.dataSet[s[a]].data[1].length;k++)d[k]=this.objData.dataSet[s[a]].data[1][k];this.printArch(t,d,s,0,e,Math.floor(h/this.objData.dataSet[s[a]].data[1].length),n+1,s[a])}var p=new AnimatedArch(this.paper,t,r,this.x0,this.y0,this.radious+n*this.donutWidth,this.donutWidth,h,{fill:l,stroke:l,"stroke-width":"0px"});if(p.attr({"stroke-width":"1px",stroke:"#ffffff"}),0==n){var f=this.labels,u=this.dataTest,g=a;g!=u.a&&(f[u.a].hide(),u.a=g,f[g].show());var b=null;p.mouseover(function(t){null==b&&(g!=u.a&&(f[u.a].hide(),u.a=g,f[g].show()),p.attr({fill:changeColor(l,.5)}),b=1)}.bind(this)),p.mouseout(function(){p.attr({fill:l}),b=null});e=e+1}else{var c=new Group("stocked",this.settings.popUpA.justifyContent);c.insert(new Text(this.paper,0,0,this.settings.popUpA.maxWidth,"after","left",this.objData.dataSet[o].name[0],{fill:this.settings.popUpA.font.fill,"font-size":this.settings.popUpA.font["font-size"],"font-weight":"500","font-family":this.settings.popUpA.font["font-family"]})),c.insertSpace(5);var m=new Row;m.insert(new Text(this.paper,0,0,this.settings.popUpA.maxWidth,"after","left",this.objData.dataSet[o].name[n][a]+" "+formatNumber(i[a],this.settings.mxDecimals),this.settings.popUpA.font)),c.insert(m),c.hide();var S=(b=c.getBBox()).width+2*this.settings.popUpA.paddingX,D=b.height+2*this.settings.popUpA.paddingY;b=null,p.mouseover(function(t){null==b&&(b=1,this.moveLabel(t,S,D,c,function(t,i){}),p.attr({fill:changeColor(l,.5)}))}.bind(this)),p.mouseout(function(){p.attr({fill:l}),c.hide(),this.popUp.hide(),b=null}.bind(this))}a++,setTimeout(function(){this.printArch(t+2*Math.PI*r/100,i,s,a,e,h,n,o)}.bind(this),h)}},SunburstChart.prototype.mkLabels=function(){this.labels=[];var t,i,s,a,e,h,n,o;for(i=this.objData.dataSet.length,t=0;t<i;t++)this.labels[t]=new Group("stocked","center"),s=a=0,this.labels[t].insert(new Text(this.paper,0,0,2*(this.radious+this.donutWidth),"after","center",this.objData.dataSet[t].name[0],{fill:this.objData.dataSet[t].color,"font-size":this.settings.maxDonutFont,"font-family":this.settings["font-family"]})),this.labels[t].insert(new Text(this.paper,0,0,2*(this.radious+this.donutWidth),"after","center",this.objData.dataSet[t].data[0]+"%",{fill:this.objData.dataSet[t].color,"font-size":Math.floor(.8*this.settings.maxDonutFont),"font-family":this.settings["font-family"]})),e=this.labels[t].getBBox(),s=this.x0-e.width/2-5,a=this.y0-e.height/2,h=Math.sqrt((e.width+10)*(e.width+10)+e.height*e.height),o="s"+(n=Math.min(1,2*this.radious/h))+","+n+","+this.x0+","+this.y0,this.labels[t].move({x:s,y:a}),this.labels[t].Scale(o),this.labels[t].hide()};