Quite good looking graph derived from d3.js http://c3js.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

68 lines
34 KiB

(function(P){function vc(){function n(e,d){e.attr("transform",function(e){return"translate("+(d(e)+X)+", 0)"})}function t(e,d){e.attr("transform",function(e){return"translate(0,"+d(e)+")"})}function P(e){var d=e[0];e=e[e.length-1];return d<e?[d,e]:[e,d]}function Ba(e){for(var d=[],n=Math.ceil(e[0]);n<e[1];n++)d.push(n);0<d.length&&0<d[0]&&d.unshift(d[0]-(d[1]-d[0]));return d}function l(l){l.each(function(){var l=e.select(this),ia=Ba(H.domain()),I=l.selectAll(".tick.major").data(ia,String),D=I.enter().insert("g",
"path").attr("class","tick major").style("opacity",1E-6),E=e.transition(I.exit()).style("opacity",1E-6).remove(),Q=e.transition(I).style("opacity",1),M,N=H.rangeExtent?H.rangeExtent():P(H.range()),l=l.selectAll(".domain").data([0]);l.enter().append("path").attr("class","domain");var l=e.transition(l),O=H.copy(),eb=this.__chart__||O;this.__chart__=O;D.append("line");D.append("text");var ja=D.select("line"),ra=Q.select("line"),sa=I.select("text"),Ra=D.select("text"),ta=Q.select("text");X=(O(1)-O(0))/
2;I=d?0:X;switch(v){case "bottom":M=n;ja.attr("y2",A);Ra.attr("y",Math.max(A,0)+B);ra.attr("x1",I).attr("x2",I).attr("y2",A);ta.attr("x",0).attr("y",Math.max(A,0)+B);sa.attr("dy",".71em").style("text-anchor","middle");sa.text(function(e){return ia.length<R||0===e%Math.ceil(ia.length/R)?e<Y.length?Y[e]:e:""});l.attr("d","M"+N[0]+","+Z+"V0H"+N[1]+"V"+Z);break;case "left":M=t,ja.attr("x2",-A),Ra.attr("x",-(Math.max(A,0)+B)),ra.attr("x2",-A).attr("y2",0),ta.attr("x",-(Math.max(A,0)+B)).attr("y",X),sa.attr("dy",
".32em").style("text-anchor","end"),sa.text(function(e){return ia.length<R||0===e%Math.ceil(ia.length/R)?e<Y.length?Y[e]:e:""}),l.attr("d","M"+-Z+","+N[0]+"H0V"+N[1]+"H"+-Z)}if(H.ticks)D.call(M,eb),Q.call(M,O),E.call(M,O);else{var Sa=O.rangeBand()/2,E=function(e){return O(e)+Sa};D.call(M,E);Q.call(M,E)}})}var H=e.scale.linear(),v="bottom",A=6,Z=6,B=3,d=!1,R=10,X=0,Y=[];l.scale=function(e){if(!arguments.length)return H;H=e;return l};l.orient=function(e){if(!arguments.length)return v;v=e in{top:1,right:1,
bottom:1,left:1}?e+"":"bottom";return l};l.categories=function(e){if(!arguments.length)return Y;Y=e;return l};l.tickCentered=function(e){if(!arguments.length)return d;d=e;return l};l.tickTextNum=function(e){if(!arguments.length)return R;R=e;return l};l.tickOffset=function(){return X};l.ticks=function(){};return l}function t(e){return"undefined"===typeof e}function n(e){return"undefined"!==typeof e}var fb=P.c3={},e=P.d3;fb.generate=function(W){var Cb,Db,Ba,l,H,v,A,Z,B;function d(a,b){for(var c=W,g=
0;g<a.length;g++){if(!(a[g]in c))return b;c=c[a[g]]}return c}function R(){gb=null===Fb?+e.select(ua).style("width").replace("px",""):Fb;var a=null===Gb?+e.select(ua).style("height").replace("px",""):Gb;va=0<a?a:320;Hb=20+Ib+ka;Jb=Kb?Kb:Lb?hb||f?1:40:20;Ta=Mb?Mb:ib?1:40;Nb=va-Ib-ka;Ob=20+ka;Pb=va-ka;v=0;A=Jb;Z=Hb;B=Ta;Ba=Nb;l=Ob;H=Ta;Cb=Pb;Db=Ta;s=gb-B-A;r=va-v-Z;la=va-Ba-l}function X(){return s+2+B+A}function Y(){return 40}function ia(){return B+20}function fb(){return r-v+42}function Bb(){Qb=f?10:
0;Rb=f?r:s;jb=f?0:r;kb=f?s:1;m=I(Qb,Rb,n(m)?m.domain():void 0,function(){return J.tickOffset()});y=D(jb,kb,n(y)?y.domain():void 0);S=D(jb,kb,n(S)?S.domain():void 0);$=I(0,s,n(T)?T:void 0,function(a){return 0===a%1?Ca.tickOffset():0});Ua=D(la,10);Va=D(la,10);J=M(m,wc);ma=e.svg.axis().scale(y).orient(xc);Wa=e.svg.axis().scale(S).orient(yc);Ca=M($,zc)}function I(a,b,c,g){var p=(z?e.time.scale():e.scale.linear()).range([a,b]);p.orgDomain=function(){return p.domain()};n(c)&&p.domain(c);t(g)&&(g=function(){return 0});
if(aa){var q=p,d,p=function(a){return q(a)+g(a)};for(d in q)p[d]=q[d];p.orgDomain=function(){return q.domain()};p.domain=function(a){if(!arguments.length)return a=q.domain(),[a[0],a[1]+1];q.domain(a);return p}}return p}function D(a,b){return e.scale.linear().range([a,b])}function E(a){return"y2"===N(a)?S:y}function Q(a){return"y2"===N(a)?Va:Ua}function M(a,b){var c=(aa?vc():e.svg.axis()).scale(a).orient(b);z&&c.tickFormat(Sb?function(a){return e.time.format(Sb)(a)}:Ac);aa?c.categories(Da).tickCentered(Bc):
c.tickOffset=function(){return 0};return c}function N(a){return a in Tb?Tb[a]:"y"}function O(a){return e.min(a,function(a){return e.min(a.values,function(a){return a.value})})}function eb(a){var b={},c,g;a.forEach(function(a){b[a.id]=[];a.values.forEach(function(c){b[a.id].push(c.value)})});for(c=0;c<w.length;c++)for(g=1;g<w[c].length;g++)Ea(w[c][g])&&(t(b[w[c][g]])||b[w[c][g]].forEach(function(a,e){N(w[c][g])===N(w[c][0])&&(b[w[c][0]][e]+=1*a)}));return e.max(Object.keys(b).map(function(a){return e.max(b[a])}))}
function ja(a){var b=Xa(function(b){return N(b.id)===a}),c="y2"===a?Cc:Dc,g="y2"===a?Ec:Fc,c=null!==c?c:O(b),g=null!==g?g:eb(b),p=0.1*Math.abs(g-c),e=p,d=p,f="y2"===a?Gc:Hc;null!==f&&(c=Math.max(Math.abs(c),Math.abs(g)),g=c-f,c=f-c);"y"===a&&null!==Fa&&(e=n(Fa.top)?Fa.top:p,d=n(Fa.bottom)?Fa.bottom:p);"y2"===a&&null!==Ga&&(e=n(Ga.top)?Ga.top:p,d=n(Ga.bottom)?Ga.bottom:p);return[Ic(b,"bar")?0:c-d,g+e]}function ra(a){var b;a?(a=m.domain(),b=F.extent()):(a=T,b=m.domain());return(a[1]-a[0])/(b[1]-b[0])}
function sa(a){for(var b=0;b<a.length;b++)if(!(a[b]in Ya))return!1;return!0}function Ra(a){for(var b=[],c=0;c<a.length;c++)a[c]in Ya&&b.push(Ub(Ya[a[c]]));return b}function ta(a){return"start"in a?m(z?na(a.start):a.start):0}function Sa(a){var b=ta(a);a=("end"in a?m(z?na(a.end):a.end):s)-b;return 0>a?0:a}function Eb(a){var b=Ha[a.id];a.name=n(b)?b:a.id;return a}function Vb(a){var b=a[0],c={},g=[],p,e;for(p=1;p<a.length;p++){c={};for(e=0;e<a[p].length;e++)c[b[e]]=a[p][e];g.push(c)}return g}function Wb(a){var b=
[],c,g,e;for(c=0;c<a.length;c++)for(e=a[c][0],g=1;g<a[c].length;g++)t(b[g-1])&&(b[g-1]={}),b[g-1][e]=a[c][g];return b}function Ia(a){var b=e.keys(a[0]).filter(function(a){return a!==U}),c,g;if(z&&!U)return P.alert('data.x must be specified when axis.x.type == "timeseries"'),[];lb&&t(k.data.x)&&(k.data.x=a.map(function(a){return a[U]}));c=0;a.forEach(function(a){if(z){if(!(U in a))throw Error("'"+U+"' must be included in data");g=na(a[U]);if(null===g)throw Error("Failed to parse timeseries date in data");
a.x=g}else a.x=lb?n(a[U])?a[U]:k.data.x[c]:c;null===Za&&(Za=new Date(a.x));mb=new Date(a.x);c++});b=b.map(function(b){var c=Jc(b);return{id:c,id_org:b,values:a.map(function(a){return{x:a.x,value:null===a[b]||isNaN(a[b])?null:+a[b],id:c}})}});b.forEach(function(a){Ya[a.id_org]=Ub(a)});return b}function Ub(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}}function wa(){return e.max(k.data.targets,function(a){return a.values.length})}function nb(a){a=
t(a)?k.data.targets:a;return a.map(function(a){return a.id})}function ob(a){var b=nb(),c;for(c=0;c<b.length;c++)if(b[c]===a)return!0;return!1}function Xa(a){return n(a)?k.data.targets.filter(a):k.data.targets}function pb(a){return"-shapes -shapes-"+a.id}function Xb(a){return pb(a)+" -line -line-"+a.id}function Kc(a){return pb(a)+" -circles -circles-"+a.id}function Yb(a){return pb(a)+" -bars -bars-"+a.id}function Lc(a,b){return"-shape -shape-"+b+" -circle -circle-"+b}function Zb(a,b){return"-shape -shape-"+
b+" -bar -bar-"+b}function Mc(a,b){return"region region-"+b+" "+("classes"in a?[].concat(a.classes).join(" "):"")}function $a(a){return m(a.x)}function Ja(a){return m(z?na(a.value):a.value)}function $b(a){return y(a.value)}function ba(a){return m(a.x)}function ca(a){return E(a.id)(a.value)}function Nc(){var a={},b=0,c,g;Xa(Ea).forEach(function(e){for(c=0;c<w.length;c++)if(!(0>w[c].indexOf(e.id)))for(g=0;g<w[c].length;g++)if(w[c][g]in a){a[e.id]=a[w[c][g]];break}t(a[e.id])&&(a[e.id]=b++)});a.__max__=
b-1;return a}function ac(a,b,c,g){var e=g?$:m;return function(g){var d=g.id in c?c[g.id]:0;return e(g.x)-a*(b/2-d)}}function bc(a,b,c,g){var e=Object.keys(b);return function(d,f){var k=0,h=g?Q(d.id):E(d.id);Xa(Ea).forEach(function(c){c.id!==d.id&&b[c.id]===b[d.id]&&e.indexOf(c.id)<e.indexOf(d.id)&&(k+=a(c.values[f]))});return c?k:h(d.value)-k}}function cc(a,b){var c=null===a?function(a){return a}:function(b){return a-b};return function(a){var e=b?Q(a.id):E(a.id);return c(e(a.value))}}function qb(a,
b){var c=t(a)?nb():a;"string"===typeof c&&(c=[c]);for(var g=0;g<c.length;g++)da[c[g]]=b}function Ic(a,b){var c=!1;a.forEach(function(a){da[a.id]===b&&(c=!0);a.id in da||"line"!==b||(c=!0)});return c}function rb(a){a="string"===typeof a?a:a.id;return!(a in da)||"line"===da[a]||"spline"===da[a]}function Ea(a){return"bar"===da["string"===typeof a?a:a.id]}function Oc(a){return rb(a)?a.values:[]}function dc(a){return Ea(a)?a.values:[]}function ec(a,b){var c=e.mouse(a),g=e.select(a),d=1*g.attr("cx"),g=
1*g.attr("cy");return Math.sqrt(Math.pow(d-c[0],2)+Math.pow(g-c[1],2))<b}function fc(a){var b=e.mouse(a),c=e.select(a);a=1*c.attr("x");var g=1*c.attr("y"),c=1*c.attr("width");return a-10<b[0]&&b[0]<a+c+10&&g-10<b[1]}function Pc(a,b){var c;for(c=0;c<b.length;c++)if(b[c].start<a&&a<=b[c].end)return!0;return!1}function gc(a,b,c){Qc(a,b);h.select(".selected-circles-"+b.id).selectAll(".selected-circle-"+c).data([b]).enter().append("circle").attr("class",function(){return"selected-circle selected-circle-"+
c}).attr("cx",f?ca:ba).attr("cy",f?ba:ca).attr("stroke",function(){return V(b.id)}).attr("r",1.4*Ka).transition().duration(100).attr("r",Ka)}function sb(a,b,c){Rc(a,b);h.select(".selected-circles-"+b.id).selectAll(".selected-circle-"+c).transition().duration(100).attr("r",0).remove()}function hc(a,b,c,e){a?gc(b,c,e):sb(b,c,e)}function Sc(){}function ic(){}function jc(a,b,c,e){}function kc(a){return a.filter(function(a){return null!==a.value})}function Tc(a,b,c,e){var d,q,k="M",h,m,u,l,s,r=[];if(n(e))for(d=
0;d<e.length;d++)r[d]={},t(e[d].start)?r[d].start=a[0].x:z&&(r[d].start=na(e[d].start)),t(e[d].end)?r[d].end=a[a.length-1].x:z&&(r[d].end=na(e[d].end));l=f?function(a){return c(a.value)}:function(a){return b(a.x)};s=f?function(a){return b(a.x)}:function(a){return c(a.value)};e=z?function(a,e,g,d){var f=a.x.getTime();a=e.x-a.x;e=new Date(f+a*(g+d));return"M"+b(new Date(f+a*g))+" "+c(m(g))+" "+b(e)+" "+c(m(g+d))}:function(a,e,g,d){return"M"+b(h(g))+" "+c(m(g))+" "+b(h(g+d))+" "+c(m(g+d))};for(d=0;d<
a.length;d++)if(t(r)||!Pc(a[d].x,r))k+=" "+l(a[d])+" "+s(a[d]);else{h=I(a[d-1].x,a[d].x);m=D(a[d-1].value,a[d].value);q=b(a[d].x)-b(a[d-1].x);u=c(a[d].value)-c(a[d-1].value);q=Math.sqrt(Math.pow(q,2)+Math.pow(u,2));u=2/q;var v=2*u;for(q=u;1>=q;q+=v)k+=e(a[d-1],a[d],q,u)}return k}function tb(a){var b,c;ab=e.select(ua);if(ab.empty())P.alert('No bind element found. Check the selector specified by "bindto" and existance of that element. Default "bindto" is "#chart".');else{ab.html("");k.data.x=void 0;
k.data.targets=Ia(a);R();Bb();m.domain(e.extent(a.map(function(a){return a.x})));y.domain(ja("y"));S.domain(ja("y2"));$.domain(m.domain());Ua.domain(y.domain());Va.domain(S.domain());J.ticks(10>a.length?a.length:10);ma.ticks(Uc).outerTickSize(0).tickFormat(Vc);Wa.ticks(Wc).outerTickSize(0).tickFormat(Xc);T=m.domain();F.x($);oa&&G.x(m);La=e.select(ua).append("svg").attr("width",s+B+A).attr("height",r+v+Z).on("mouseenter",Yc).on("mouseleave",Zc);bb=La.append("defs");bb.append("clipPath").attr("id",
ub).append("rect").attr("y",v).attr("width",s).attr("height",r-v);bb.append("clipPath").attr("id","xaxis-clip").append("rect").attr("x",-1-B).attr("y",-20).attr("width",X).attr("height",Y);bb.append("clipPath").attr("id","yaxis-clip").append("rect").attr("x",-B+1).attr("y",v-1).attr("width",ia).attr("height",fb);h=La.append("g").attr("transform",K.main);x=xa?La.append("g").attr("transform",K.context):null;ya=za?La.append("g").attr("transform",K.legend):null;ea=e.select(ua).style("position","relative").append("div").style("position",
"absolute").style("width","30%").style("z-index","10").style("visibility","hidden");h.append("g").attr("class","x axis").attr("clip-path",f?"":"url(#xaxis-clip)").attr("transform",K.x).call(f?ma:J).append("text").attr("class","-axis-x-label").attr("x",s).attr("dy","-.5em").style("text-anchor","end").text($c);h.append("g").attr("class","y axis").attr("clip-path",f?"url(#yaxis-clip)":"").call(f?J:ma).append("text").attr("transform","rotate(-90)").attr("dy","1.2em").attr("dx","-.5em").style("text-anchor",
"end").text(ad);Lb&&h.append("g").attr("class","y2 axis").attr("transform",K.y2).call(Wa);b=h.append("g").attr("clip-path",Ma).attr("class","grid");lc&&b.append("g").attr("class","xgrids");vb&&(c=b.append("g").attr("class","xgrid-lines").selectAll(".xgrid-line").data(vb).enter().append("g").attr("class","xgrid-line"),c.append("line").attr("class",function(a){return""+a["class"]}),c.append("text").attr("class",function(a){return""+a["class"]}).attr("text-anchor","end").attr("transform",f?"":"rotate(-90)").attr("dx",
f?0:-v).attr("dy",-6).text(function(a){return a.text}));bd&&b.append("g").attr("class","xgrid-focus").append("line").attr("class","xgrid-focus").attr("x1",f?0:-10).attr("x2",f?s:-10).attr("y1",f?-10:v).attr("y2",f?-10:r);mc&&b.append("g").attr("class","ygrids");wb&&b.append("g").attr("class","ygrid-lines").selectAll("ygrid-line").data(wb).enter().append("line").attr("class",function(a){return"ygrid-line "+a["class"]});h.append("g").attr("clip-path",Ma).attr("class","regions");h.append("g").attr("clip-path",
Ma).attr("class","chart");h.select(".chart").append("g").attr("class","event-rects").style("fill-opacity",0).style("cursor",oa?"ew-resize":null).selectAll(".event-rects").data(a).enter().append("rect").attr("class",function(a,b){return"event-rect event-rect-"+b}).style("cursor",fa&&pa?"pointer":null).on("mouseover",function(a,b){if(!cb){var c=k.data.targets.map(function(a){return Eb(a.values[b])}),d,n;if(0<Object.keys(Ha).length){n=[];for(var l in Ha)for(d=0;d<c.length;d++)if(c[d].id===l){n.push(c[d]);
c.shift(d);break}c=n.concat(c)}nc&&h.selectAll(".-circle-"+b).classed(ga,!0).attr("r",oc);h.selectAll(".-bar-"+b).classed(ga,!0);h.selectAll("line.xgrid-focus").style("visibility","visible").data([c[0]]).attr(f?"y1":"x1",$a).attr(f?"y2":"x2",$a);ea.style("top",e.mouse(this)[1]+30+"px").style("left",(f?e.mouse(this)[0]:m(c[0].x))+60+"px");ea.html(pc(c));ea.style("visibility","visible")}}).on("mouseout",function(a,b){h.select("line.xgrid-focus").style("visibility","hidden");ea.style("visibility","hidden");
h.selectAll(".-circle-"+b).filter(function(){return e.select(this).classed(ga)}).classed(ga,!1).attr("r",xb);h.selectAll(".-bar-"+b).classed(ga,!1)}).on("mousemove",function(a,b){fa&&!cb&&(pa||h.selectAll(".-shape-"+b).filter(function(a){return qa(a)}).each(function(){var a=e.select(this).classed(ga,!0);"circle"===this.nodeName&&a.attr("r",oc);e.select(".event-rect-"+b).style("cursor",null)}).filter(function(){var a=e.select(this);if("circle"===this.nodeName)return ec(this,Ka);if("rect"===this.nodeName)return fc(this,
a.attr("x"),a.attr("y"))}).each(function(){var a=e.select(this);a.classed(ga)||(a.classed(ga,!0),"circle"===this.nodeName&&a.attr("r",Ka));e.select(".event-rect-"+b).style("cursor","pointer")}))}).on("click",function(a,b){yb?yb=!1:h.selectAll(".-shape-"+b).each(function(a){var c=e.select(this),d=c.classed(ha),g=!1,f;"circle"===this.nodeName?(g=ec(this,1.5*Ka),f=hc):"rect"===this.nodeName&&(g=fc(this),f=jc);if(pa||g)fa&&qa(a)&&(c.classed(ha,!d),f(!d,c,a,b)),cd(a,c)})}).call(e.behavior.drag().origin(Object).on("drag",
function(){if(fa&&(!oa||G.altDomain)){var a=zb[0],b=zb[1],c=e.mouse(this),d=c[0],c=c[1],f=Math.min(a,d),k=Math.max(a,d),m=pa?v:Math.min(b,c),n=pa?r:Math.max(b,c);h.select(".dragarea").attr("x",f).attr("y",m).attr("width",k-f).attr("height",n-m);h.selectAll(".-shapes").selectAll(".-shape").filter(function(a){return qa(a)}).each(function(a,b){var c=e.select(this),d=c.classed(ha),g=c.classed(Ab),h,p,q,l;h=!1;"circle"===this.nodeName?(h=1*c.attr("cx"),p=1*c.attr("cy"),l=hc,h=f<h&&h<k&&m<p&&p<n):"rect"===
this.nodeName&&(h=1*c.attr("x"),p=1*c.attr("y"),q=1*c.attr("width"),l=jc,h=f<h+q&&h<k&&p<n);h^g&&(c.classed(Ab,!g),c.classed(ha,!d),l(!d,c,a,b))})}}).on("dragstart",function(){fa&&(zb=e.mouse(this),h.select(".chart").append("rect").attr("class","dragarea").style("opacity",0.1),cb=!0)}).on("dragend",function(){fa&&(h.select(".dragarea").transition().duration(100).style("opacity",0).remove(),h.selectAll(".-shape").classed(Ab,!1),cb=!1)})).call(G).on("dblclick.zoom",null);h.select(".chart").append("g").attr("class",
"chart-bars");h.select(".chart").append("g").attr("class","chart-lines");if(oa)h.insert("rect",dd?null:"g.grid").attr("class","zoom-rect").attr("width",s).attr("height",r).style("opacity",0).style("cursor","ew-resize").call(G).on("dblclick.zoom",null);null!==Na&&F.extent("function"!==typeof Na?Na:z?Na(Za,mb):Na(0,wa()-1));xa&&(x.append("g").attr("clip-path",Ma).attr("class","chart"),x.select(".chart").append("g").attr("class","chart-bars"),x.select(".chart").append("g").attr("class","chart-lines"),
x.append("g").attr("clip-path",Ma).attr("class","x brush").call(F).selectAll("rect").attr("height",la),x.append("g").attr("class","x axis").attr("transform",K.subx).call(Ca));za&&db(k.data.targets);qc(k.data.targets);C({withTransition:!1,withUpdateXDomain:!0});if(ed){if(z&&"string"===typeof Aa){Aa=na(Aa);for(a=0;a<k.data.targets[0].values.length&&0!==k.data.targets[0].values[a].x-Aa;a++);Aa=a}ea.html(pc(k.data.targets.map(function(a){return Eb(a.values[Aa])})));ea.style("top",rc.top).style("left",
rc.left).style("visibility","visible")}null==P.onresize&&(P.onresize=fd)}}function C(a){var b,c,d=Nc(),p=d.__max__+1,q,l,t,w,u;a=n(a)?a:{};b=n(a.withY)?a.withY:!0;w=n(a.withSubchart)?a.withSubchart:!0;u=n(a.withTransition)?a.withTransition:!0;a=n(a.withUpdateXDomain)?a.withUpdateXDomain:!1;u=u?250:0;a&&(m.domain(F.empty()?T:F.extent()),oa&&G.x(m).updateScaleExtent());y.domain(ja("y"));S.domain(ja("y2"));h.select(".x.axis").transition().duration(f?u:0).call(f?ma:J);h.select(".y.axis").transition().duration(f?
0:u).call(f?J:ma);h.select(".y2.axis").transition().call(Wa);h.select(".x.axis .-axis-x-label").attr("x",s);Ua.domain(y.domain());Va.domain(S.domain());ea.style("visibility","hidden");h.select("line.xgrid-focus").style("visibility","hidden").attr("y2",r);if(lc){if("year"===gd)for(a=[],l=Za.getFullYear(),q=mb.getFullYear();l<=q;l++)a.push(new Date(l+"-01-01 00:00:00"));else a=m.ticks(10);a=h.select(".xgrids").selectAll(".xgrid").data(a);a.enter().append("line").attr("class","xgrid");a.exit().remove();
h.selectAll(".xgrid").attr("x1",function(a){return m(a)-J.tickOffset()}).attr("x2",function(a){return m(a)-J.tickOffset()}).attr("y1",v).attr("y2",r)}vb&&(a=h.selectAll(".xgrid-lines"),a.selectAll("line").attr("x1",f?0:Ja).attr("x2",f?s:Ja).attr("y1",f?Ja:v).attr("y2",f?Ja:r),a.selectAll("text").attr("x",f?s:0).attr("y",Ja));b&&mc&&(a=h.select(".ygrids").selectAll(".ygrid").data(y.ticks(10)),a.enter().append("line").attr("class","ygrid"),a.attr("x1",f?y:0).attr("x2",f?y:s).attr("y1",f?0:y).attr("y2",
f?r:y).attr("opacity",0).transition().attr("opacity",1),a.exit().remove());b&&wb&&h.select(".ygrid-lines").selectAll(".ygrid-line").attr("y1",$b).attr("y2",$b);q=aa?1.2*J.tickOffset()/p:0.6*((f?r:s)*ra(!1)/(wa()-1));l=cc(f?null:r);b=ac(q,p,d);a=bc(l,d,f);c=h.selectAll(".-bars").selectAll(".-bar").data(dc);c.transition().duration(u).attr("x",f?a:b).attr("y",f?b:a).attr("width",f?l:q).attr("height",f?q:l);c.enter().append("rect").attr("class",Zb).attr("x",f?a:b).attr("y",f?b:a).attr("width",f?l:q).attr("height",
f?q:l).style("opacity",0).transition().duration(u).style("opacity",1);c.exit().transition().duration(u).style("opacity",0).remove();h.selectAll(".-line").transition().duration(u).attr("d",hd);b=h.selectAll(".-circles").selectAll(".-circle").data(Oc);b.transition().duration(u).style("opacity",function(a){return null===a.value?0:1}).attr("cx",f?ca:ba).attr("cy",f?ba:ca);b.enter().append("circle").style("opacity",function(a){return null===a.value?0:1}).attr("class",Lc).attr("cx",f?ca:ba).attr("cy",f?
ba:ca).attr("r",xb);b.exit().remove();xa&&(null!==e.event&&"zoom"===e.event.type&&F.extent(m.orgDomain()).update(),w&&(x.select(".x.axis").transition().duration(f?u:0).call(f?ma:Ca),F.empty()||F.extent(m.orgDomain()).update(),q=aa?1.2*Ca.tickOffset()/p:0.6*((f?r:s)*ra(!0)/(wa()-1)),l=cc(la,!0),b=ac(q,p,d,!0),a=bc(l,d,!1,!0),d=x.selectAll(".-bars").selectAll(".-bar").data(dc),d.transition().duration(u).attr("x",b).attr("y",a).attr("width",q).attr("height",l),d.enter().append("rect").attr("class",Zb).attr("x",
b).attr("y",a).attr("width",q).attr("height",l).style("opacity",0).transition().style("opacity",1),d.exit().transition().style("opacity",0).remove(),x.selectAll(".-line").transition().duration(u).attr("d",id)));h.selectAll(".selected-circles").filter(function(a){return Ea(a)}).selectAll("circle").remove();h.selectAll(".selected-circle").transition().duration(u).attr("cx",f?ca:ba).attr("cy",f?ba:ca);lb?(t=function(a,b){var c=0<b?k.data.targets[0].values[b-1].x:void 0,d=b<wa()-1?k.data.targets[0].values[b+
1].x:void 0;return(m(d?d:a.x+50)-m(c?c:a.x-50))/2},d=function(a,b){var c=0<b?k.data.targets[0].values[b-1].x:void 0;return(m(a.x)+m(c?c:a.x-50))/2}):(t=(f?r:s)*ra()/(wa()-1),d=function(a){return m(a.x)-t/2});h.selectAll(".event-rect").attr("x",f?0:d).attr("y",f?d:0).attr("width",f?s:t).attr("height",f?t:r);d=h.select(".regions").selectAll("rect.region").data(L);d.enter().append("rect");d.attr("class",Mc).attr("x",f?0:ta).attr("y",f?ta:v).attr("width",f?s:Sa).attr("height",f?Sa:r).style("fill-opacity",
function(a){return n(a.opacity)?a.opacity:0.1});d.exit().transition().duration(u).style("fill-opacity",0).remove()}function jd(){"mousemove"===e.event.sourceEvent.type&&G.altDomain?(m.domain(G.altDomain),G.x(m).updateScaleExtent()):(aa&&m.orgDomain()[0]===T[0]&&m.domain([T[0]-1E-10,m.orgDomain()[1]]),C({withTransition:!1,withY:!1,withSubchart:!1}),"mousemove"===e.event.sourceEvent.type&&(yb=!0))}function fd(){R();Bb();F.x($);oa&&G.x(m);e.select("svg").attr("width",gb).attr("height",va);e.select("#"+
ub).select("rect").attr("width",s).attr("height",r);e.select("#xaxis-clip").select("rect").attr("width",X);e.select(".zoom-rect").attr("width",s).attr("height",r);h.select(".x.axis").attr("transform",K.x);h.select(".y2.axis").attr("transform",K.y2);xa&&(x.select(".x.brush").selectAll("rect").attr("height",la),x.attr("transform",K.context),x.select(".x.axis").attr("transform",K.subx));za&&(ya.attr("transform",K.legend),db(k.data.targets,{withTransition:!1}));C({withTransition:!1,withUpdateXDomain:!0})}
function qc(a){var b;h.select(".chart-bars").selectAll(".chart-bar").data(a).enter().append("g").attr("class",function(a){return"chart-bar target target-"+a.id}).style("pointer-events","none").style("opacity",0).append("g").attr("class",Yb).style("fill",function(a){return V(a.id)}).style("stroke",function(a){return V(a.id)}).style("stroke-width",0).style("cursor",function(a){return qa(a)?"pointer":null});b=h.select(".chart-lines").selectAll(".chart-line").data(a).enter().append("g").attr("class",
function(a){return"chart-line target target-"+a.id}).style("pointer-events","none").style("opacity",0);b.append("path").attr("class",Xb).style("stroke",function(a){return V(a.id)});b.append("g").attr("class",function(a){return"selected-circles selected-circles-"+a.id});b.append("g").attr("class",Kc).style("fill",function(a){return V(a.id)}).style("cursor",function(a){return qa(a)?"pointer":null});a.forEach(function(a){h.selectAll(".selected-circles-"+a.id).selectAll(".selected-circle").each(function(b){b.value=
a.values[b.x].value})});xa&&(b=x.select(".chart-bars").selectAll(".chart-bar").data(a),b=b.enter().append("g").attr("class",function(a){return"chart-bar target target-"+a.id}).style("opacity",0),b.append("g").attr("class",Yb).style("fill",function(a){return V(a.id)}),b=x.select(".chart-lines").selectAll(".chart-line").data(a),b=b.enter().append("g").attr("class",function(a){return"chart-line target target-"+a.id}).style("opacity",0),b.append("path").attr("class",Xb).style("stroke",function(a){return V(a.id)}));
za&&db(a);e.selectAll(".target").transition().style("opacity",1)}function Oa(a,b){k.data.targets.forEach(function(b){for(var d=0;d<a.length;d++)if(b.id===a[d].id){b.values=a[d].values;a.splice(d,1);break}});k.data.targets=k.data.targets.concat(a);qc(k.data.targets);C();b()}function db(a,b){var c=nb(a),d,f=s/2-Pa*Object.keys(a).length/2,h;b=t(b)?{}:b;h=n(b.withTransition)?b.withTransition:!0;d=ya.selectAll(".legend-item").data(c).enter().append("g").attr("class",function(a){return"legend-item legend-item-"+
a}).style("cursor","pointer").on("click",function(a){kd(a)}).on("mouseover",function(a){e.selectAll(".legend-item").filter(function(b){return b!==a}).transition().duration(100).style("opacity",0.3);k.focus(a)}).on("mouseout",function(){e.selectAll(".legend-item").transition().duration(100).style("opacity",1);k.revert()});d.append("rect").attr("class","legend-item-event").style("fill-opacity",0).attr("x",-200).attr("y",function(){return ka/2-16}).attr("width",Pa).attr("height",24);d.append("rect").attr("class",
"legend-item-tile").style("fill",function(a){return V(a)}).attr("x",-200).attr("y",function(){return ka/2-9}).attr("width",10).attr("height",10);d.append("text").text(function(a){return n(Ha[a])?Ha[a]:a}).attr("x",-200).attr("y",function(){return ka/2});ya.selectAll("rect.legend-item-event").data(c).transition().duration(h?250:0).attr("x",function(a,b){return f+Pa*b});ya.selectAll("rect.legend-item-tile").data(c).transition().duration(h?250:0).attr("x",function(a,b){return f+Pa*b});ya.selectAll("text").data(c).transition().duration(h?
250:0).attr("x",function(a,b){return f+Pa*b+14})}function Qa(a){return n(a)?".target-"+a:".target"}var k={data:{}},Ya={},ga="_expanded_",ha="_selected_",Ab="_included_",ua=d(["bindto"],"#chart"),Fb=d(["size","width"],null),Gb=d(["size","height"],null),Mb=d(["padding","left"],null),Kb=d(["padding","right"],null),oa=d(["zoom","enabled"],!1),sc=d(["zoom","extent"],null),dd=d(["zoom","privileged"],!1),Yc=d(["onenter"],function(){}),Zc=d(["onleave"],function(){});if(!("data"in W))throw Error("data is required in config");
var U=d(["data","x"],void 0),ld=d(["data","x_format"],"%Y-%m-%d"),Jc=d(["data","id_converter"],function(a){return a}),Ha=d(["data","names"],{}),w=d(["data","groups"],[]),Tb=d(["data","axes"],{}),da=d(["data","types"],{}),tc=d(["data","regions"],{}),md=d(["data","colors"],{}),fa=d(["data","selection","enabled"],!1),pa=d(["data","selection","grouped"],!1),qa=d(["data","selection","isselectable"],function(){return!0}),xa=d(["subchart","show"],!1),Ib=xa?d(["subchart","size","height"],60):0,nd=d(["color",
"pattern"],null),za=d(["legend","show"],!0),Pa=d(["legend","item","width"],80),kd=d(["legend","item","onclick"],function(){}),uc=d(["axis","x","type"],"indexed"),Da=d(["axis","x","categories"],[]),Bc=d(["axis","x","tick","centered"],!1),Sb=d(["axis","x","tick","format"],null),Na=d(["axis","x","default"],null),$c=d(["axis","x","label"],null),Fc=d(["axis","y","max"],null),Dc=d(["axis","y","min"],null),Hc=d(["axis","y","center"],null),ad=d(["axis","y","label"],null),ib=d(["axis","y","inner"],!1),Vc=
d(["axis","y","format"],function(a){return a}),Fa=d(["axis","y","padding"],null),Uc=d(["axis","y","ticks"],10),Lb=d(["axis","y2","show"],!1),Ec=d(["axis","y2","max"],null),Cc=d(["axis","y2","min"],null),Gc=d(["axis","y2","center"],null),hb=d(["axis","y2","inner"],!1),Xc=d(["axis","y2","format"],function(a){return a}),Ga=d(["axis","y2","padding"],null),Wc=d(["axis","y2","ticks"],10),f=d(["axis","rotated"],!1),lc=d(["grid","x","show"],!1),gd=d(["grid","x","type"],"tick"),vb=d(["grid","x","lines"],null),
mc=d(["grid","y","show"],!1),wb=d(["grid","y","lines"],null),xb=d(["point","show"],!0)?d(["point","r"],2.5):0,bd=d(["point","focus","line","enabled"],!0),nc=d(["point","focus","expand","enabled"],!0),oc=d(["point","focus","expand","r"],nc?4:xb),Ka=d(["point","focus","select","r"],8),cd=d(["point","onclick"],function(){}),Qc=d(["point","onselected"],function(){}),Rc=d(["point","onunselected"],function(){}),L=d(["regions"],[]),pc=d(["tooltip","contents"],function(a){var b="<table class='-tooltip'><tr><th colspan='2'>"+
(z?a[0].x.getFullYear()+"."+(a[0].x.getMonth()+1)+"."+a[0].x.getDate():aa?a[0].x<Da.length?Da[a[0].x]:a[0].x:a[0].x)+"</th></tr>",c,d,e;for(c=0;c<a.length;c++)n(a[c])?(d=n(a[c].value)?(Math.round(100*a[c].value)/100).toFixed(2):"-",e=a[c].name):e=d="-",b+="<tr class='-tooltip-name-"+a[c].id+"'><td class='name'><span style='background-color:"+V(a[c].id)+"'></span>"+e+"</td><td class='value'>"+d+"</td></tr>";return b+"</table>"}),ed=d(["tooltip","init","show"],!1),Aa=d(["tooltip","init","x"],0),rc=
d(["tooltip","init","position"],{top:"0px",left:"50px"}),ub=ua.replace("#","")+"-clip",Ma="url(#"+ub+")",z="timeseries"===uc,aa="categorized"===uc,lb=!z&&U,zb=null,cb=!1,yb=!1,ka=za?40:0,na=e.time.format(ld).parse,V=function(a,b){var c=[],d=null!==b?b:"#1f77b4 #ff7f0e #2ca02c #d62728 #9467bd #8c564b #e377c2 #7f7f7f #bcbd22 #17becf".split(" ");return function(b){if(b in a)return a[b];-1===c.indexOf(b)&&c.push(b);return d[c.indexOf(b)%d.length]}}(md,nd),Ac=function(){var a=[[e.time.format("%Y/%-m/%-d"),
function(){return!0}],[e.time.format("%-m/%-d"),function(a){return a.getMonth()}],[e.time.format("%-m/%-d"),function(a){return 1!==a.getDate()}],[e.time.format("%-m/%-d"),function(a){return a.getDay()&&1!==a.getDate()}],[e.time.format("%I %p"),function(a){return a.getHours()}],[e.time.format("%I:%M"),function(a){return a.getMinutes()}],[e.time.format(":%S"),function(a){return a.getSeconds()}],[e.time.format(".%L"),function(a){return a.getMilliseconds()}]];return function(b){for(var c=a.length-1,d=
a[c];!d[1](b);)d=a[--c];return d[0](b)}}(),Hb,Ob,Jb,Ta,Nb,Pb,s,r,la,gb,va,Qb,Rb,jb,kb,m,y,S,$,Ua,Va,J,ma,Wa,Ca,wc=f?"left":"bottom",xc=f?ib?"top":"bottom":ib?"right":"left",yc=f?hb?"bottom":"top":hb?"left":"right",zc="bottom",K={main:function(){return"translate("+B+","+v+")"},context:function(){return"translate("+H+","+Ba+")"},legend:function(){return"translate("+Db+","+Cb+")"},y2:function(){return"translate("+(f?0:s)+","+(f?10:0)+")"},x:function(){return"translate(0,"+r+")"},subx:function(){return"translate(0,"+
la+")"}},hd=function(){var a=e.svg.line().x(f?function(a){return E(a.id)(a.value)}:$a).y(f?$a:function(a){return E(a.id)(a.value)});return function(b){var c=kc(b.values),d;if(rb(b))return"spline"===da["string"===typeof b?b:b.id]?a.interpolate("cardinal"):a.interpolate("linear"),0<Object.keys(tc).length?Tc(c,m,E(b.id),tc[b.id]):a(c);d=m(c[0].x);b=E(b.id)(c[0].value);return f?"M "+b+" "+d:"M "+d+" "+b}}(),id=function(){var a=e.svg.line().x(function(a){return $(a.x)}).y(function(a){return Q(a.id)(a.value)});
return function(b){var c=kc(b.values);return rb(b)?a(c):"M "+$(c[0].x)+" "+Q(b.id)(c[0].value)}}(),F=e.svg.brush().on("brush",function(){C({withTransition:!1,withY:!1,withSubchart:!1,withUpdateXDomain:!0})}),G=e.behavior.zoom().on("zoomstart",function(){G.altDomain=e.event.sourceEvent.altKey?m.orgDomain():null}).on("zoom",oa?jd:null);F.update=function(){x&&x.select(".x.brush").call(this);return this};G.orgScaleExtent=function(){var a=sc?sc:[1,10];return[a[0],Math.max(wa()/a[1],a[1])]};G.updateScaleExtent=
function(){var a=m.orgDomain(),a=(a[1]-a[0])/(T[1]-T[0]),b=this.orgScaleExtent();this.scaleExtent([b[0]*a,b[1]*a]);return this};var La,bb,h,x,ya,ea,ab,Za=null,mb=null,T;k.focus=function(a){k.defocus();e.selectAll(Qa(a)).filter(function(a){return ob(a.id)}).classed("focused",!0).transition().duration(100).style("opacity",1)};k.defocus=function(a){e.selectAll(Qa(a)).filter(function(a){return ob(a.id)}).classed("focused",!1).transition().duration(100).style("opacity",0.3)};k.revert=function(a){e.selectAll(Qa(a)).filter(function(a){return ob(a.id)}).classed("focused",
!1).transition().duration(100).style("opacity",1)};k.show=function(a){e.selectAll(Qa(a)).transition().style("opacity",1)};k.hide=function(a){e.selectAll(Qa(a)).transition().style("opacity",0)};k.unzoom=function(){F.clear().update();C({withUpdateXDomain:!0})};k.load=function(a){t(a.done)&&(a.done=function(){});"categories"in a&&aa&&(Da=a.categories,J.categories(Da));if("cacheIds"in a&&sa(a.cacheIds))Oa(Ra(a.cacheIds),a.done);else if("data"in a)Oa(Ia(a.data),a.done);else if("url"in a)e.csv(a.url,function(b,
c){Oa(Ia(c),a.done)});else if("rows"in a)Oa(Ia(Vb(a.rows)),a.done);else if("columns"in a)Oa(Ia(Wb(a.columns)),a.done);else throw Error("url or rows or columns is required.");};k.unload=function(a){k.data.targets=k.data.targets.filter(function(b){return b.id!==a});e.selectAll(".target-"+a).transition().style("opacity",0).remove();za&&(e.selectAll(".legend-item-"+a).remove(),db(k.data.targets));0<k.data.targets.length&&C()};k.selected=function(a){a=n(a)?"-"+a:"";return e.merge(h.selectAll(".-shapes"+
a).selectAll(".-shape").filter(function(){return e.select(this).classed(ha)}).map(function(a){return a.map(function(a){return a.__data__})}))};k.select=function(a,b,c){fa&&h.selectAll(".-shapes").selectAll(".-shape").each(function(d,f){var h="circle"===this.nodeName?gc:Sc,k="circle"===this.nodeName?sb:ic;0<=b.indexOf(f)?qa(d)&&(pa||t(a)||0<=a.indexOf(d.id))&&h(e.select(this).classed(ha,!0),d,f):n(c)&&c&&k(e.select(this).classed(ha,!1),d,f)})};k.unselect=function(a,b){fa&&h.selectAll(".-shapes").selectAll(".-shape").each(function(c,
d){var f="circle"===this.nodeName?sb:ic;(t(b)||0<=b.indexOf(d))&&qa(c)&&(pa||t(a)||0<=a.indexOf(c.id))&&f(e.select(this).classed(ha,!1),c,d)})};k.toLine=function(a){qb(a,"line");C()};k.toSpline=function(a){qb(a,"spline");C()};k.toBar=function(a){qb(a,"bar");C()};k.groups=function(a){if(t(a))return w;w=a;C();return w};k.regions=function(a){if(t(a))return L;L=a;C();return L};k.regions.add=function(a){if(t(a))return L;L=L.concat(a);C();return L};k.regions.remove=function(a,b){var c=[].concat(a);b=n(b)?
b:{};c.forEach(function(a){var c=e.selectAll("."+a);n(b.duration)&&(c=c.transition().duration(b.duration).style("fill-opacity",0));c.remove();L=L.filter(function(b){return 0>b.classes.indexOf(a)})});return L};k.data.get=function(a){a=k.data.getAsTarget(a);return n(a)?a.values.map(function(a){return a.value}):void 0};k.data.getAsTarget=function(a){var b=Xa(function(b){return b.id===a});return 0<b.length?b[0]:void 0};k.destroy=function(){k.data.targets=void 0;k.data.x=void 0;ab.html("");P.onresize=
null};if("url"in W.data)e.csv(W.data.url,function(a,b){tb(b)});else if("rows"in W.data)tb(Vb(W.data.rows));else if("columns"in W.data)tb(Wb(W.data.columns));else throw Error("url or rows or columns is required.");return k}})(window);