Browse Source

Enable custom x

pull/8/head
Masayuki Tanaka 11 years ago
parent
commit
8f1d1c1cc3
  1. 36
      c3.js
  2. 132
      c3.min.js
  3. 23
      htdocs/samples/custom_x_scale.html

36
c3.js

@ -45,7 +45,7 @@
// data - data configuration
checkConfig('data', 'data is required in config');
var __data_x = getConfig(['data', 'x'], 'x'),
var __data_x = getConfig(['data', 'x'], undefined),
__data_x_format = getConfig(['data', 'x_format'], '%Y-%m-%d'),
__data_id_converter = getConfig(['data', 'id_converter'], function (id) { return id; }),
__data_names = getConfig(['data', 'names'], {}),
@ -148,7 +148,8 @@
clipPath = "url(#" + clipId + ")";
var isTimeSeries = (__axis_x_type === 'timeseries'),
isCategorized = (__axis_x_type === 'categorized');
isCategorized = (__axis_x_type === 'categorized'),
isCustomX = !isTimeSeries && __data_x;
var dragStart = null, dragging = false, cancelClick = false;
@ -447,13 +448,23 @@
var ids = d3.keys(data[0]).filter(function (key) { return key !== __data_x; });
var targets, i = 0, parsedDate;
// check __data_x is defined if timeseries
if (isTimeSeries && ! __data_x) {
alert('data.x must be specified when axis.x.type == "timeseries"');
return [];
}
data.forEach(function (d) {
if (isTimeSeries) {
if (!(__data_x in d)) { throw Error("'" + __data_x + "' must be included in data"); }
parsedDate = parseDate(d[__data_x]);
if (parsedDate === null) { throw Error("Failed to parse timeseries date in data"); }
d.x = parsedDate;
} else {
}
else if (isCustomX) {
d.x = d[__data_x];
}
else {
d.x = i++;
}
if (firstDate === null) { firstDate = new Date(d.x); }
@ -487,6 +498,12 @@
})
};
}
function getPrevX(i) {
return i > 0 ? c3.data.targets[0].values[i-1].x : undefined;
}
function getNextX(i) {
return i < maxDataCount() - 1 ? c3.data.targets[0].values[i+1].x : undefined;
}
function maxDataCount() {
return d3.max(c3.data.targets, function (t) { return t.values.length; });
}
@ -1477,8 +1494,19 @@
.attr("cy", __axis_rotated ? circleX : circleY);
// rect for mouseover
if (isCustomX) {
rectW = function (d,i) {
var prevX = getPrevX(i), nextX = getNextX(i);
return (x(nextX ? nextX : d.x+50)-x(prevX ? prevX : d.x-50))/2;
};
rectX = function (d,i) {
var prevX = getPrevX(i);
return (x(d.x)+x(prevX ? prevX : d.x-50))/2;
};
} else {
rectW = (((__axis_rotated ? height : width) * getXDomainRatio()) / (maxDataCount() - 1));
rectX = function (d) { return x(d.x) - (rectW / 2); };
rectX = function (d,i) { return x(d.x) - (rectW / 2); };
}
main.selectAll('.event-rect')
.attr("x", __axis_rotated ? 0 : rectX)
.attr("y", __axis_rotated ? rectX : 0)

132
c3.min.js vendored

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

23
htdocs/samples/custom_x_scale.html

@ -0,0 +1,23 @@
<html>
<head>
<link rel="stylesheet" type="text/css" href="/css/c3.css">
</head>
<body>
<div id="chart"></div>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="/js/c3.min.js"></script>
<script>
var chart = c3.generate({
bindto: '#chart',
data: {
x : 'x',
columns: [
['x', 100, 120, 130, 200, 240, 500],
['sample', 30, 200, 100, 400, 150, 250]
]
}
});
</script>
</body>
</html>
Loading…
Cancel
Save