From e65b7a6264dea13d82f8f1a2c62746b99c9ab198 Mon Sep 17 00:00:00 2001 From: Masayuki Tanaka Date: Thu, 20 Feb 2014 12:08:51 +0900 Subject: [PATCH] Add arc.title option --- c3.css | 6 ++ c3.js | 33 ++++++-- c3.min.js | 163 +++++++++++++++++++------------------- htdocs/samples/dount.html | 4 +- 4 files changed, 116 insertions(+), 90 deletions(-) diff --git a/c3.css b/c3.css index af29f03..6ccc9f4 100644 --- a/c3.css +++ b/c3.css @@ -70,6 +70,12 @@ text { stroke-width: 2px; } +/*-- Arc --*/ + +.chart-arcs-title { + font-size: 1.3em; +} + /*-- Focus --*/ .target.focused path.-line { diff --git a/c3.js b/c3.js index feec8da..9ca6101 100644 --- a/c3.js +++ b/c3.js @@ -123,7 +123,8 @@ __point_onunselected = getConfig(['point', 'onunselected'], function () {}); // arc - var __arc_label_fomat = getConfig(['arc', 'label', 'format'], function (d, ratio) { return ratio.toFixed(1) + "%"; }); + var __arc_label_fomat = getConfig(['arc', 'label', 'format'], function (d, ratio) { return (100 * ratio).toFixed(1) + "%"; }), + __arc_title = getConfig(['arc', 'title'], ""); // region - region to change style var __regions = getConfig(['regions'], []); @@ -442,9 +443,11 @@ } return translate; } + function getArcRatio(d) { + return (d.endAngle - d.startAngle) / (Math.PI * 2); + } function textForArcLable(d) { - var ratio = 100 * (d.endAngle - d.startAngle) / (Math.PI * 2); - return __arc_label_fomat(d, ratio); + return __arc_label_fomat(d, getArcRatio(d)); } function expandArc(targetId, withoutFadeOut) { var target = svg.selectAll('.chart-arc.target' + (targetId ? '-' + targetId : '')), @@ -453,7 +456,12 @@ .transition().duration(50) .attr("d", svgArcExpanded) .transition().duration(100) - .attr("d", svgArcExpandedSub); + .attr("d", svgArcExpandedSub) + .each(function (d) { + if (isDountType(d.data)) { + // callback here + } + }); if (!withoutFadeOut) { noneTargets.style("opacity", 0.3); } @@ -1069,9 +1077,16 @@ var id = (typeof d === 'string') ? d : d.id; return __data_types[id] === 'scatter'; } - function isArcType(d) { + function isPieType(d) { var id = (typeof d === 'string') ? d : d.id; - return __data_types[id] === 'pie' || __data_types[id] === 'dount'; + return __data_types[id] === 'pie'; + } + function isDountType(d) { + var id = (typeof d === 'string') ? d : d.id; + return __data_types[id] === 'dount'; + } + function isArcType(d) { + return isPieType(d) || isDountType(d); } /* not used function lineData(d) { @@ -1581,7 +1596,11 @@ // Define g for arc chart area main.select(".chart").append("g") .attr("class", "chart-arcs") - .attr("transform", translate.arc); + .attr("transform", translate.arc) + .append('text') + .attr('class', 'chart-arcs-title') + .style("text-anchor", "middle") + .text(__arc_title); if (__zoom_enabled) { // TODO: __zoom_privileged here? // if zoom privileged, insert rect to forefront diff --git a/c3.min.js b/c3.min.js index 56d296e..abed51d 100644 --- a/c3.min.js +++ b/c3.min.js @@ -1,87 +1,88 @@ -(function(O){function ld(){function u(d,f){d.attr("transform",function(d){return"translate("+(f(d)+ba)+", 0)"})}function x(d,f){d.attr("transform",function(d){return"translate(0,"+f(d)+")"})}function O(d){var f=d[0];d=d[d.length-1];return fa?a:0}),c=1;c+a||(b[e][c]+=+a)});return d.max(Object.keys(b).map(function(a){return d.max(b[a])}))}function mb(a){var b=nb(function(b){return y(b.id)===a}),c="y2"===a?yd:zd,e="y2"===a?Ad:Bd,c=c?c:vd(b),e=e?e:wd(b),k=0.1*Math.abs(e-c),d=k,f=k,g="y2"===a?Cd:Dd;g&&(c=Math.max(Math.abs(c),Math.abs(e)),e=c-g,c=g-c);"y"===a&&Ia&&(d=Ia.top?Ia.top:k,f=Ia.bottom?Ia.bottom:k);"y2"===a&&Ja&&(d=Ja.top?Ja.top:k,f=Ja.bottom? -Ja.bottom:k);la(b,"bar")&&!tc(b)&&(f=c);return[c-f,e+d]}function Ed(a){return d.min(a,function(a){return d.min(a.values,function(a){return a.x})})}function Fd(a){return d.max(a,function(a){return d.max(a.values,function(a){return a.x})})}function ob(a){var b=[Ed(a),Fd(a)];a=b[0];var b=b[1],c=da?0:0.01*Math.abs(a-b);a=B?new Date(a.getTime()-c):a-c;b=B?new Date(b.getTime()+c):b+c;return[a,b]}function ta(a){return a[1]-a[0]}function Gd(a){for(var b=0;ba?0:a}function wc(a){return na&&a===na||Z&&Id(Z,a)}function Jd(a){return!wc(a)}function Kd(a){Object.keys(a).forEach(function(b){Z[b]=a[b]})}function qb(a){var b;a&&(b=Ka[a.id],a.name=b?b:a.id);return a}function xc(a){var b=a[0],c={},e=[],k,d;for(k=1;kb&&(c=a,b=a.values.length)}):c=a?h.data.targets[0]:null;return c}function rb(a){a=x(a)?h.data.targets: -a;return a.map(function(a){return a.id})}function Bc(a){var b=rb(),c;for(c=0;ca})} -function xd(a){return Cc(a,function(a){return 0k&&(d-=c+30)),c=b[1]+15+et[c].indexOf(k.id)))for(e=0;e=f;f+=r)h+=e(a[d-1],a[d],f,za)}return h}function Wb(a){var b;tb=d.select(sa);if(tb.empty())O.alert('No bind element found. Check the selector specified by "bindto" and existance of that element. Default "bindto" is "#chart".');else{tb.html("");h.data.x={};h.data.targets=La(a);qa();Q();m.domain(d.extent(ob(h.data.targets)));z.domain(mb("y"));Y.domain(mb("y2"));U.domain(m.domain());hb.domain(z.domain());ib.domain(Y.domain());I.ticks(10>a.length?a.length:10);ua.ticks(ce).outerTickSize(0).tickFormat(de); -jb.ticks(ee).outerTickSize(0).tickFormat(fe);T=m.domain();K.scale(U);oa&&E.scale(m);p=d.select(sa).append("svg").attr("width",r+A+X).attr("height",s+n+N).on("mouseenter",ge).on("mouseleave",he);ub=p.append("defs");ub.append("clipPath").attr("id",Xb).append("rect").attr("y",n).attr("width",r).attr("height",s-n);ub.append("clipPath").attr("id","xaxis-clip").append("rect").attr("x",-1-A).attr("y",-20).attr("width",M).attr("height",ca);ub.append("clipPath").attr("id","yaxis-clip").append("rect").attr("x", +"translate("+0.8*(a/c)*Ga+","+0.8*(b/c)*Ga+")");return b}function Ya(a){return vd(a,(a.endAngle-a.startAngle)/(2*Math.PI))}function Za(a,b){var c=p.selectAll(".chart-arc.target"+(a?"-"+a:"")),e=p.selectAll(".-arc").filter(function(b){return b.data.id!==a});c.selectAll("path").transition().duration(50).attr("d",qc).transition().duration(100).attr("d",rc).each(function(a){Mb(a.data)});b||e.style("opacity",0.3)}function xb(a){p.selectAll(".chart-arc.target"+(a?"-"+a:"")).selectAll("path").transition().duration(50).attr("d", +kb);p.selectAll(".-arc").style("opacity",1)}function wd(a){var b=tc(a),c,e,k,f;if(0a?a:0}),c=1;c+a||(b[e][c]+=+a)});return d.max(Object.keys(b).map(function(a){return d.max(b[a])}))}function mb(a){var b=nb(function(b){return y(b.id)===a}),c="y2"===a?zd:Ad,e="y2"===a?Bd:Cd,c=c?c:wd(b),e=e?e:xd(b),k=0.1*Math.abs(e-c),d=k,f=k,g="y2"===a?Dd:Ed;g&&(c=Math.max(Math.abs(c),Math.abs(e)),e=c-g,c=g-c);"y"===a&&Ia&&(d=Ia.top?Ia.top:k,f=Ia.bottom?Ia.bottom:k);"y2"===a&&Ja&&(d=Ja.top?Ja.top:k,f=Ja.bottom? +Ja.bottom:k);la(b,"bar")&&!uc(b)&&(f=c);return[c-f,e+d]}function Fd(a){return d.min(a,function(a){return d.min(a.values,function(a){return a.x})})}function Gd(a){return d.max(a,function(a){return d.max(a.values,function(a){return a.x})})}function ob(a){var b=[Fd(a),Gd(a)];a=b[0];var b=b[1],c=da?0:0.01*Math.abs(a-b);a=B?new Date(a.getTime()-c):a-c;b=B?new Date(b.getTime()+c):b+c;return[a,b]}function ta(a){return a[1]-a[0]}function Hd(a){for(var b=0;ba?0:a}function xc(a){return na&&a===na||Z&&Jd(Z,a)}function Kd(a){return!xc(a)}function Ld(a){Object.keys(a).forEach(function(b){Z[b]=a[b]})}function qb(a){var b;a&&(b=Ka[a.id],a.name=b?b:a.id);return a}function yc(a){var b=a[0],c={},e=[],k,d;for(k=1;kb&&(c=a,b=a.values.length)}):c=a?h.data.targets[0]:null;return c}function rb(a){a=x(a)?h.data.targets: +a;return a.map(function(a){return a.id})}function Cc(a){var b=rb(),c;for(c=0;ca})} +function yd(a){return Dc(a,function(a){return 0k&&(d-=c+30)),c=b[1]+15+et[c].indexOf(k.id)))for(e=0;e=f;f+=r)h+=e(a[d-1],a[d],f,za)}return h}function Xb(a){var b;tb=d.select(sa);if(tb.empty())O.alert('No bind element found. Check the selector specified by "bindto" and existance of that element. Default "bindto" is "#chart".');else{tb.html("");h.data.x={};h.data.targets=La(a);qa();Q();m.domain(d.extent(ob(h.data.targets)));z.domain(mb("y"));Y.domain(mb("y2"));U.domain(m.domain());hb.domain(z.domain());ib.domain(Y.domain());I.ticks(10>a.length?a.length:10);ua.ticks(de).outerTickSize(0).tickFormat(ee); +jb.ticks(fe).outerTickSize(0).tickFormat(ge);T=m.domain();K.scale(U);oa&&E.scale(m);p=d.select(sa).append("svg").attr("width",r+A+X).attr("height",s+n+N).on("mouseenter",he).on("mouseleave",ie);ub=p.append("defs");ub.append("clipPath").attr("id",Yb).append("rect").attr("y",n).attr("width",r).attr("height",s-n);ub.append("clipPath").attr("id","xaxis-clip").append("rect").attr("x",-1-A).attr("y",-20).attr("width",M).attr("height",ca);ub.append("clipPath").attr("id","yaxis-clip").append("rect").attr("x", -A+1).attr("y",n-1).attr("width",ha).attr("height",yb);l=p.append("g").attr("transform",L.main);F=Aa?p.append("g").attr("transform",L.context):null;Ba=Ca?p.append("g").attr("transform",L.legend):null;V=d.select(sa).style("position","relative").append("div").style("position","absolute").style("z-index","10").style("display","none");l.append("g").attr("class","x axis").attr("clip-path",g?"":"url(#xaxis-clip)").attr("transform",L.x).call(g?ua:I).append("text").attr("class","-axis-x-label").attr("x", -r).attr("dy","-.5em").style("text-anchor","end").text(ie);l.append("g").attr("class","y axis").attr("clip-path",g?"url(#yaxis-clip)":"").call(g?I:ua).append("text").attr("transform","rotate(-90)").attr("dy","1.2em").attr("dx","-.5em").style("text-anchor","end").text(je);Bb&&l.append("g").attr("class","y2 axis").attr("transform",L.y2).call(jb);a=l.append("g").attr("clip-path",Ra).attr("class","grid");ad&&a.append("g").attr("class","xgrids");Yb&&(b=a.append("g").attr("class","xgrid-lines").selectAll(".xgrid-line").data(Yb).enter().append("g").attr("class", -"xgrid-line"),b.append("line").attr("class",function(a){return""+a["class"]}),b.append("text").attr("class",function(a){return""+a["class"]}).attr("text-anchor","end").attr("transform",g?"":"rotate(-90)").attr("dx",g?0:-n).attr("dy",-5).text(function(a){return a.text}));ke&&a.append("g").attr("class","xgrid-focus").append("line").attr("class","xgrid-focus").attr("x1",g?0:-10).attr("x2",g?r:-10).attr("y1",g?-10:n).attr("y2",g?-10:s);bd&&a.append("g").attr("class","ygrids");Zb&&(a=a.append("g").attr("class", -"ygrid-lines").selectAll("ygrid-line").data(Zb).enter().append("g").attr("class","ygrid-line"),a.append("line").attr("class",function(a){return""+a["class"]}),a.append("text").attr("class",function(a){return""+a["class"]}).attr("text-anchor","end").attr("transform",g?"rotate(-90)":"").attr("dx",g?0:-n).attr("dy",-5).text(function(a){return a.text}));l.append("g").attr("clip-path",Ra).attr("class","regions");l.append("g").attr("clip-path",Ra).attr("class","chart");l.select(".chart").append("g").attr("class", -"event-rects").style("fill-opacity",0).style("cursor",oa?"ew-resize":null);l.select(".chart").append("g").attr("class","chart-bars");l.select(".chart").append("g").attr("class","chart-lines");l.select(".chart").append("g").attr("class","chart-arcs").attr("transform",L.arc);if(oa)l.insert("rect",le?null:"g.grid").attr("class","zoom-rect").attr("width",r).attr("height",s).style("opacity",0).style("cursor","ew-resize").call(E).on("dblclick.zoom",null);null!==vb&&K.extent("function"!==typeof vb?vb:vb(ob())); -Aa&&(F.append("g").attr("clip-path",Ra).attr("class","chart"),F.select(".chart").append("g").attr("class","chart-bars"),F.select(".chart").append("g").attr("class","chart-lines"),F.append("g").attr("clip-path",Ra).attr("class","x brush").call(K).selectAll("rect").attr(g?"width":"height",g?Cb:eb),F.append("g").attr("class","x axis").attr("transform",L.subx).attr("clip-path",g?"url(#yaxis-clip)":"").call(gb));Ca&&wb(h.data.targets);cd(h.data.targets);H({withTransition:!1,withUpdateXDomain:!0});if(me){if(B&& -"string"===typeof Da){Da=ma(Da);for(a=0;aOb(c,a)?p.select(".event-rect").style("cursor","pointer"):p.select(".event-rect").style("cursor",null))}).on("click",function(){var a,c;D(h.data.targets)||(a=d.mouse(this),c=Mc(h.data.targets,a),100>Ob(c,a)&&l.select(".-circles-"+c.id).select(".-circle-"+c.index).each(function(){ed(this,c,c.index)}))}).call(d.behavior.drag().origin(Object).on("drag",function(){fd(d.mouse(this))}).on("dragstart", -function(){gd(d.mouse(this))}).on("dragend",function(){hd()})).call(E).on("dblclick.zoom",null)}function ed(a,b,c){var e=d.select(a),f=e.classed(ga),g=!1,h;"circle"===a.nodeName?(g=Uc(a,1.5*Qa),h=Xc):"rect"===a.nodeName&&(g=Vc(a),h=Zc);if(pa||g)ea&&fa(b)&&(e.classed(ga,!f),h(!f,e,b,c)),re(b,e)}function fd(a){var b,c,e,f,g,m,p;D(h.data.targets)||!ea||oa&&!E.altDomain||(b=cc[0],c=cc[1],e=a[0],a=a[1],f=Math.min(b,e),g=Math.max(b,e),m=pa?n:Math.min(c,a),p=pa?s:Math.max(c,a),l.select(".dragarea").attr("x", -f).attr("y",m).attr("width",g-f).attr("height",p-m),l.selectAll(".-shapes").selectAll(".-shape").filter(function(a){return fa(a)}).each(function(a,b){var c=d.select(this),e=c.classed(ga),h=c.classed(dc),l,n,q,r;l=!1;"circle"===this.nodeName?(l=1*c.attr("cx"),n=1*c.attr("cy"),r=Xc,l=f",c,d,f;for(c=0;c"+ -f+""+d+"");return b+""}),me=f(["tooltip","init","show"],!1),Da=f(["tooltip","init","x"],0),dd=f(["tooltip","init","position"],{top:"0px",left:"50px"}),Xb=sa.replace("#","")+"-clip",Ra="url(#"+Xb+")",B="timeseries"===kd,da="categorized"===kd,Nb=!B&&(na||Z),cc=null,Sa=!1,bc=!1,ka=Ca?40:0,J=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]}}(ze,Ae),sd=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 c=a.length-1,d=a[c];!d[1](b);)d=a[--c];return d[0](b)}}(),r,Cb,s,eb,zb,ra,Ga,Db,Eb,kb,pc,qc,Lb,Fb,Gb,Hb,Ib,Jb,Kb,m,z,Y,U,hb,ib,I,ua,jb,gb,nd=g?"left":"bottom",od=g?bb?"top":"bottom":bb?"right":"left",pd=g?db?"bottom":"top":db?"left":"right",qd=g?"left":"bottom",L={main:function(){return"translate("+A+","+n+")"},context:function(){return"translate("+Fa+","+Ea+")"},legend:function(){return"translate("+jc+","+ -ic+")"},y2:function(){return"translate("+(g?0:r)+","+(g?10:0)+")"},x:function(){return"translate(0,"+s+")"},subx:function(){return"translate(0,"+(g?0:eb)+")"},arc:function(){return"translate("+r/2+","+s/2+")"}},nc=40,mc=20;Lb=d.layout.pie().value(function(a){return a.values.reduce(function(a,c){return a+c.value},0)});var te=function(){var a=d.svg.line().x(g?function(a){return w(a.id)(a.value)}:wa).y(g?wa:function(a){return w(a.id)(a.value)});return function(b){var c=Sb(b.values),d;if(Pb(b))return Rc(b)? -a.interpolate("cardinal"):a.interpolate("linear"),jd[b.id]?be(c,m,w(b.id),jd[b.id]):a(c);d=m(c[0].x);b=w(b.id)(c[0].value);return g?"M "+b+" "+d:"M "+d+" "+b}}(),ue=function(){var a;a=g?d.svg.area().x0(function(a){return w(a.id)(0)}).x1(function(a){return w(a.id)(a.value)}).y(wa):d.svg.area().x(wa).y0(function(a){return w(a.id)(0)}).y1(function(a){return w(a.id)(a.value)});return function(b){var c=Sb(b.values),d;if(la([b],"area")||la([b],"area-spline"))return Rc(b)?a.interpolate("cardinal"):a.interpolate("linear"), -a(c);d=m(c[0].x);b=w(b.id)(c[0].value);return g?"M "+b+" "+d:"M "+d+" "+b}}(),ve=function(){var a=d.svg.line().x(g?function(a){return G(a.id)(a.value)}:Ic).y(g?Ic:function(a){return G(a.id)(a.value)});return function(b){var c=Sb(b.values);return Pb(b)?a(c):"M "+U(c[0].x)+" "+G(b.id)(c[0].value)}}(),K=d.svg.brush().on("brush",function(){H({withTransition:!1,withY:!1,withSubchart:!1,withUpdateXDomain:!0})}),E=d.behavior.zoom().on("zoomstart",function(){E.altDomain=d.event.sourceEvent.altKey?m.orgDomain(): -null}).on("zoom",oa?we:null);K.update=function(){F&&F.select(".x.brush").call(this);return this};K.scale=function(a){return g?this.y(a):this.x(a)};E.scale=function(a){return g?this.y(a):this.x(a)};E.orgScaleExtent=function(){var a=id?id:[1,10];return[a[0],Math.max(fb()/a[1],a[1])]};E.updateScaleExtent=function(){var a=ta(m.orgDomain())/ta(T),b=this.orgScaleExtent();this.scaleExtent([b[0]*a,b[1]*a]);return this};var p,ub,l,F,Ba,V,tb,T;h.focus=function(a){var b=p.selectAll(Va(a)),c=b.filter(gc),b=b.filter(hc); -h.revert();h.defocus();c.classed("focused",!0).transition().duration(100).style("opacity",1);b.transition().duration(100).style("opacity",1);D(h.data.targets)&&Za(a,!0);ec(a)};h.defocus=function(a){var b=p.selectAll(Va(a)),c=b.filter(gc),b=b.filter(hc);h.revert();c.classed("focused",!1).transition().duration(100).style("opacity",0.3);b.transition().duration(100).style("opacity",0.3);D(h.data.targets)&&xb(a);xe(a)};h.revert=function(a){var b=p.selectAll(Va(a)),c=b.filter(gc),b=b.filter(hc);c.classed("focused", -!1).transition().duration(100).style("opacity",1);b.transition().duration(100).style("opacity",1);D(h.data.targets)&&xb(a);fc()};h.show=function(a){p.selectAll(Va(a)).transition().style("opacity",1)};h.hide=function(a){p.selectAll(Va(a)).transition().style("opacity",0)};h.unzoom=function(){K.clear().update();H({withUpdateXDomain:!0})};h.load=function(a){"function"!==typeof a.done&&(a.done=function(){});a.xs&&Kd(a.xs);"categories"in a&&da&&(Ha=a.categories,I.categories(Ha));if("cacheIds"in a&&Gd(a.cacheIds))Ta(Hd(a.cacheIds), -a.done);else if("data"in a)Ta(La(a.data),a.done);else if("url"in a)d.csv(a.url,function(b,c){Ta(La(c),a.done)});else if("rows"in a)Ta(La(xc(a.rows)),a.done);else if("columns"in a)Ta(La(yc(a.columns)),a.done);else throw Error("url or rows or columns is required.");};h.unload=function(a){h.data.targets=h.data.targets.filter(function(b){return b.id!==a});p.selectAll(".target-"+a).transition().style("opacity",0).remove();Ca&&(p.selectAll(".legend-item-"+a).remove(),wb(h.data.targets));0b.classes.indexOf(a)})});return P};h.data.get=function(a){a=h.data.getAsTarget(a);return u(a)?a.values.map(function(a){return a.value}): -void 0};h.data.getAsTarget=function(a){var b=nb(function(b){return b.id===a});return 0Pb(c,a)?p.select(".event-rect").style("cursor","pointer"):p.select(".event-rect").style("cursor",null))}).on("click",function(){var a,c;D(h.data.targets)||(a=d.mouse(this),c=Nc(h.data.targets,a),100>Pb(c,a)&&l.select(".-circles-"+c.id).select(".-circle-"+c.index).each(function(){fd(this, +c,c.index)}))}).call(d.behavior.drag().origin(Object).on("drag",function(){gd(d.mouse(this))}).on("dragstart",function(){hd(d.mouse(this))}).on("dragend",function(){id()})).call(E).on("dblclick.zoom",null)}function fd(a,b,c){var e=d.select(a),f=e.classed(ga),g=!1,h;"circle"===a.nodeName?(g=Vc(a,1.5*Qa),h=Yc):"rect"===a.nodeName&&(g=Wc(a),h=$c);if(pa||g)ea&&fa(b)&&(e.classed(ga,!f),h(!f,e,b,c)),te(b,e)}function gd(a){var b,c,e,f,g,m,p;D(h.data.targets)||!ea||oa&&!E.altDomain||(b=dc[0],c=dc[1],e=a[0], +a=a[1],f=Math.min(b,e),g=Math.max(b,e),m=pa?n:Math.min(c,a),p=pa?s:Math.max(c,a),l.select(".dragarea").attr("x",f).attr("y",m).attr("width",g-f).attr("height",p-m),l.selectAll(".-shapes").selectAll(".-shape").filter(function(a){return fa(a)}).each(function(a,b){var c=d.select(this),e=c.classed(ga),h=c.classed(ec),l,n,q,r;l=!1;"circle"===this.nodeName?(l=1*c.attr("cx"),n=1*c.attr("cy"),r=Yc,l=f",c,d,f;for(c=0;c"+f+""+d+"");return b+""}),oe=f(["tooltip","init","show"],!1),Da=f(["tooltip","init","x"],0),ed=f(["tooltip","init","position"],{top:"0px",left:"50px"}),Yb=sa.replace("#","")+"-clip",Ra="url(#"+Yb+")",B="timeseries"===ld,da="categorized"===ld, +Ob=!B&&(na||Z),dc=null,Sa=!1,cc=!1,ka=Ca?40:0,J=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]}}(Be,Ce),td=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 c=a.length-1,d=a[c];!d[1](b);)d=a[--c];return d[0](b)}}(),r,Cb,s,eb,zb,ra,Ga,Db,Eb,kb,qc,rc,Lb,Fb,Gb,Hb,Ib,Jb,Kb,m,z,Y,U,hb,ib,I,ua,jb,gb,od=g?"left":"bottom",pd=g?bb?"top":"bottom":bb? +"right":"left",qd=g?db?"bottom":"top":db?"left":"right",rd=g?"left":"bottom",L={main:function(){return"translate("+A+","+n+")"},context:function(){return"translate("+Fa+","+Ea+")"},legend:function(){return"translate("+kc+","+jc+")"},y2:function(){return"translate("+(g?0:r)+","+(g?10:0)+")"},x:function(){return"translate(0,"+s+")"},subx:function(){return"translate(0,"+(g?0:eb)+")"},arc:function(){return"translate("+r/2+","+s/2+")"}},oc=40,nc=20;Lb=d.layout.pie().value(function(a){return a.values.reduce(function(a, +c){return a+c.value},0)});var ve=function(){var a=d.svg.line().x(g?function(a){return w(a.id)(a.value)}:wa).y(g?wa:function(a){return w(a.id)(a.value)});return function(b){var c=Tb(b.values),d;if(Qb(b))return Sc(b)?a.interpolate("cardinal"):a.interpolate("linear"),kd[b.id]?ce(c,m,w(b.id),kd[b.id]):a(c);d=m(c[0].x);b=w(b.id)(c[0].value);return g?"M "+b+" "+d:"M "+d+" "+b}}(),we=function(){var a;a=g?d.svg.area().x0(function(a){return w(a.id)(0)}).x1(function(a){return w(a.id)(a.value)}).y(wa):d.svg.area().x(wa).y0(function(a){return w(a.id)(0)}).y1(function(a){return w(a.id)(a.value)}); +return function(b){var c=Tb(b.values),d;if(la([b],"area")||la([b],"area-spline"))return Sc(b)?a.interpolate("cardinal"):a.interpolate("linear"),a(c);d=m(c[0].x);b=w(b.id)(c[0].value);return g?"M "+b+" "+d:"M "+d+" "+b}}(),xe=function(){var a=d.svg.line().x(g?function(a){return G(a.id)(a.value)}:Jc).y(g?Jc:function(a){return G(a.id)(a.value)});return function(b){var c=Tb(b.values);return Qb(b)?a(c):"M "+U(c[0].x)+" "+G(b.id)(c[0].value)}}(),K=d.svg.brush().on("brush",function(){H({withTransition:!1, +withY:!1,withSubchart:!1,withUpdateXDomain:!0})}),E=d.behavior.zoom().on("zoomstart",function(){E.altDomain=d.event.sourceEvent.altKey?m.orgDomain():null}).on("zoom",oa?ye:null);K.update=function(){F&&F.select(".x.brush").call(this);return this};K.scale=function(a){return g?this.y(a):this.x(a)};E.scale=function(a){return g?this.y(a):this.x(a)};E.orgScaleExtent=function(){var a=jd?jd:[1,10];return[a[0],Math.max(fb()/a[1],a[1])]};E.updateScaleExtent=function(){var a=ta(m.orgDomain())/ta(T),b=this.orgScaleExtent(); +this.scaleExtent([b[0]*a,b[1]*a]);return this};var p,ub,l,F,Ba,V,tb,T;h.focus=function(a){var b=p.selectAll(Va(a)),c=b.filter(hc),b=b.filter(ic);h.revert();h.defocus();c.classed("focused",!0).transition().duration(100).style("opacity",1);b.transition().duration(100).style("opacity",1);D(h.data.targets)&&Za(a,!0);fc(a)};h.defocus=function(a){var b=p.selectAll(Va(a)),c=b.filter(hc),b=b.filter(ic);h.revert();c.classed("focused",!1).transition().duration(100).style("opacity",0.3);b.transition().duration(100).style("opacity", +0.3);D(h.data.targets)&&xb(a);ze(a)};h.revert=function(a){var b=p.selectAll(Va(a)),c=b.filter(hc),b=b.filter(ic);c.classed("focused",!1).transition().duration(100).style("opacity",1);b.transition().duration(100).style("opacity",1);D(h.data.targets)&&xb(a);gc()};h.show=function(a){p.selectAll(Va(a)).transition().style("opacity",1)};h.hide=function(a){p.selectAll(Va(a)).transition().style("opacity",0)};h.unzoom=function(){K.clear().update();H({withUpdateXDomain:!0})};h.load=function(a){"function"!== +typeof a.done&&(a.done=function(){});a.xs&&Ld(a.xs);"categories"in a&&da&&(Ha=a.categories,I.categories(Ha));if("cacheIds"in a&&Hd(a.cacheIds))Ta(Id(a.cacheIds),a.done);else if("data"in a)Ta(La(a.data),a.done);else if("url"in a)d.csv(a.url,function(b,c){Ta(La(c),a.done)});else if("rows"in a)Ta(La(yc(a.rows)),a.done);else if("columns"in a)Ta(La(zc(a.columns)),a.done);else throw Error("url or rows or columns is required.");};h.unload=function(a){h.data.targets=h.data.targets.filter(function(b){return b.id!== +a});p.selectAll(".target-"+a).transition().style("opacity",0).remove();Ca&&(p.selectAll(".legend-item-"+a).remove(),wb(h.data.targets));0 +b.classes.indexOf(a)})});return P};h.data.get=function(a){a=h.data.getAsTarget(a);return u(a)?a.values.map(function(a){return a.value}):void 0};h.data.getAsTarget=function(a){var b=nb(function(b){return b.id===a});return 0