From 0bb4331da1c43ae770828d8dafeb687237fe89a8 Mon Sep 17 00:00:00 2001 From: Jacob Rideout Date: Thu, 10 Oct 2013 13:26:40 -0400 Subject: [PATCH] Allow for dynamic chart sizing. Closes #295 --- dc.js | 39 +++++++++---- dc.min.js | 4 +- dc.min.js.map | 2 +- src/base-chart.js | 115 +++++++++----------------------------- test/base-chart-test.js | 54 ++++++++---------- web/docs/api-1.7.0-dev.md | 33 ++++++++--- web/docs/index.html | 26 +++++++-- web/js/dc.js | 39 +++++++++---- 8 files changed, 155 insertions(+), 157 deletions(-) diff --git a/dc.js b/dc.js index 2650fb1e5..11a6d2d2a 100644 --- a/dc.js +++ b/dc.js @@ -691,7 +691,15 @@ dc.baseChart = function (_chart) { var _root; var _svg; - var _width = 200, _height = 200; + var _default_width = function (element) { + return element && element.getBoundingClientRect && element.getBoundingClientRect().width || 200; + }; + var _width = _default_width; + + var _default_height = function (element) { + return element && element.getBoundingClientRect && element.getBoundingClientRect().height || 200; + }; + var _height = _default_height; var _keyAccessor = function (d) { return d.key; @@ -757,27 +765,38 @@ dc.baseChart = function (_chart) { /** #### .width([value]) - Set or get width attribute of a chart. If the value is given, then it will be used as the new width. - - If no value specified then value of the current width attribute will be returned. + Set or get width attribute of a chart. See `.height` below for further description of the behavior. **/ _chart.width = function (w) { - if (!arguments.length) return _width; - _width = w; + if (!arguments.length) return _width(_root.node()); + _width = d3.functor(w || _default_width); return _chart; }; /** #### .height([value]) - Set or get height attribute of a chart. If the value is given, then it will be used as the new height. + Set or get height attribute of a chart. The height is applied to the SVG element + generated by the chart when rendered (or rerendered). If a value is given, then it + will be used to calculate the new height and the chart returned for method chaining. + The value can either be a numeric, a function, or falsy. If no value specified then + value of the current height attribute will be returned. - If no value specified then value of the current height attribute will be returned. + By default, without an explicit height being given, the chart will select the width + of its anchor element. If that isn't possible it defaults to 200; + + Examples: + + ```js + chart.height(250); // Set the chart's height to 250px; + chart.height(function(anchor) { return doSomethingWith(anchor); }); // set the chart's height with a function + chart.height(null); // reset the height to the default auto calculation + ``` **/ _chart.height = function (h) { - if (!arguments.length) return _height; - _height = h; + if (!arguments.length) return _height(_root.node()); + _height = d3.functor(h || _default_height); return _chart; }; diff --git a/dc.min.js b/dc.min.js index 373435727..2fcc1d6d4 100644 --- a/dc.min.js +++ b/dc.min.js @@ -1,3 +1,3 @@ -dc=function(){"use strict";var a={version:"1.7.0-dev",constants:{CHART_CLASS:"dc-chart",DEBUG_GROUP_CLASS:"debug",STACK_CLASS:"stack",DESELECTED_CLASS:"deselected",SELECTED_CLASS:"selected",NODE_INDEX_NAME:"__index__",GROUP_INDEX_NAME:"__group_index__",DEFAULT_CHART_GROUP:"__default_chart_group__",EVENT_DELAY:40,NEGLIGIBLE_NUMBER:1e-10},_renderlet:null};return a.chartRegistry=function(){function b(b){return b||(b=a.constants.DEFAULT_CHART_GROUP),c[b]||(c[b]=[]),b}var c={};return{has:function(a){for(var b in c)if(c[b].indexOf(a)>=0)return!0;return!1},register:function(a,d){d=b(d),c[d].push(a)},clear:function(a){a?delete c[a]:c={}},list:function(a){return a=b(a),c[a]}}}(),a.registerChart=function(b,c){a.chartRegistry.register(b,c)},a.hasChart=function(b){return a.chartRegistry.has(b)},a.deregisterAllCharts=function(b){a.chartRegistry.clear(b)},a.filterAll=function(b){for(var c=a.chartRegistry.list(b),d=0;d=b||void 0===b)return a;var d=a.transition().duration(b);return c instanceof Function&&c(d),d},a.units={},a.units.integers=function(a,b){return Math.abs(b-a)},a.units.ordinal=function(a,b,c){return c},a.units.fp={},a.units.fp.precision=function(b){var c=function(b,d){var e=Math.abs((d-b)/c.resolution);return a.utils.isNegligible(e-Math.floor(e))?Math.floor(e):Math.ceil(e)};return c.resolution=b,c},a.round={},a.round.floor=function(a){return Math.floor(a)},a.round.ceil=function(a){return Math.ceil(a)},a.round.round=function(a){return Math.round(a)},a.override=function(a,b,c){var d=a[b];a["_"+b]=d,a[b]=c},a.renderlet=function(b){return arguments.length?(a._renderlet=b,a):a._renderlet},a.instanceOfChart=function(a){return a instanceof Object&&a.__dc_flag__},a.errors={},a.errors.Exception=function(a){var b=a||"Unexpected internal error";this.message=b,this.toString=function(){return b}},a.errors.InvalidStateException=function(){a.errors.Exception.apply(this,arguments)},a.dateFormat=d3.time.format("%m/%d/%Y"),a.printers={},a.printers.filters=function(b){for(var c="",d=0;d0&&(c+=", "),c+=a.printers.filter(b[d]);return c},a.printers.filter=function(b){var c="";return b&&(b instanceof Array?b.length>=2?c="["+a.utils.printSingleValue(b[0])+" -> "+a.utils.printSingleValue(b[1])+"]":b.length>=1&&(c=a.utils.printSingleValue(b[0])):c=a.utils.printSingleValue(b)),c},a.utils={},a.utils.printSingleValue=function(b){var c=""+b;return b instanceof Date?c=a.dateFormat(b):"string"==typeof b?c=b:a.utils.isFloat(b)?c=a.utils.printSingleValue.fformat(b):a.utils.isInteger(b)&&(c=Math.round(b)),c},a.utils.printSingleValue.fformat=d3.format(".2f"),a.utils.add=function(a,b){if("string"==typeof b&&(b=b.replace("%","")),a instanceof Date){"string"==typeof b&&(b=+b);var c=new Date;return c.setTime(a.getTime()),c.setDate(a.getDate()+b),c}if("string"==typeof b){var d=+b/100;return a>0?a*(1+d):a*(1-d)}return a+b},a.utils.subtract=function(a,b){if("string"==typeof b&&(b=b.replace("%","")),a instanceof Date){"string"==typeof b&&(b=+b);var c=new Date;return c.setTime(a.getTime()),c.setDate(a.getDate()-b),c}if("string"==typeof b){var d=+b/100;return 0>a?a*(1+d):a*(1-d)}return a-b},a.utils.GroupStack=function(){function a(a){d[a]||(d[a]=[])}var b,c,d=[[]],e=[];this.setDataPoint=function(b,c,e){a(b),d[b][c]=e},this.getDataPoint=function(b,c){a(b);var e=d[b][c];return void 0===e&&(e=0),e},this.addGroup=function(a,c){return c||(c=b),e.push([a,c]),e.length-1},this.addNamedGroup=function(a,b,c){var d=this.addGroup(a,c);return e[d].name=b},this.getGroupByIndex=function(a){return e[a][0]},this.getAccessorByIndex=function(a){return e[a][1]},this.size=function(){return e.length},this.clear=function(){d=[],e=[]},this.setDefaultAccessor=function(a){b=a},this.getDataLayers=function(){return d},this.clearDataLayers=function(){d=[[]]},this.showGroups=function(a,b){b&&(c=!1),this.toggleGroups(a,!1)},this.hideGroups=function(a,b){b&&(c=!0),this.toggleGroups(a,!0)},this.toggleGroups=function(a,b){for(var c=0;c0&&e[b-1].hidden)){for(var f={index:b,points:[]},g=d[b],h=0;h-a.constants.NEGLIGIBLE_NUMBER},a.utils.groupMax=function(b,c){var d=d3.max(b.all(),function(a){return c(a)});return a.utils.isNegligible(d)&&(d=0),d},a.utils.groupMin=function(b,c){var d=d3.min(b.all(),function(a){return c(a)});return a.utils.isNegligible(d)&&(d=0),d},a.utils.nameToId=function(a){return a.toLowerCase().replace(/[\s]/g,"_").replace(/[\.']/g,"")},a.utils.appendOrSelect=function(a,b){var c=a.select(b);return c.empty()&&(c=a.append(b)),c},a.utils.createLegendable=function(a,b,c,d){var e={name:a._getGroupName(b,d),data:b};return"function"==typeof a.colors&&(e.color=a.colors()(c)),e},a.utils.safeNumber=function(b){return a.utils.isNumber(+b)?+b:0},a.events={current:null},a.events.trigger=function(b,c){return c?(a.events.current=b,setTimeout(function(){b==a.events.current&&b()},c),void 0):(b(),void 0)},a.cumulative={},a.cumulative.Base=function(){this._keyIndex=[],this._map={},this.sanitizeKey=function(a){return a+=""},this.clear=function(){this._keyIndex=[],this._map={}},this.size=function(){return this._keyIndex.length},this.getValueByKey=function(a){a=this.sanitizeKey(a);var b=this._map[a];return b},this.setValueByKey=function(a,b){return a=this.sanitizeKey(a),this._map[a]=b},this.indexOfKey=function(a){return a=this.sanitizeKey(a),this._keyIndex.indexOf(a)},this.addToIndex=function(a){a=this.sanitizeKey(a),this._keyIndex.push(a)},this.getKeyByIndex=function(a){return this._keyIndex[a]}},a.cumulative.Sum=function(){a.cumulative.Base.apply(this,arguments),this.add=function(a,b){b||(b=0),void 0===this.getValueByKey(a)?(this.addToIndex(a),this.setValueByKey(a,b)):this.setValueByKey(a,this.getValueByKey(a)+b)},this.minus=function(a,b){this.setValueByKey(a,this.getValueByKey(a)-b)},this.cumulativeSum=function(a){var b=this.indexOfKey(a);if(0>b)return 0;for(var c=0,d=0;b>=d;++d){var e=this.getKeyByIndex(d);c+=this.getValueByKey(e)}return c}},a.cumulative.Sum.prototype=new a.cumulative.Base,a.cumulative.CountUnique=function(){function b(a){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}a.cumulative.Base.apply(this,arguments),this.add=function(a,b){void 0===this.getValueByKey(a)&&(this.setValueByKey(a,{}),this.addToIndex(a)),void 0!==b&&(void 0===this.getValueByKey(a)[b]&&(this.getValueByKey(a)[b]=0),this.getValueByKey(a)[b]+=1)},this.minus=function(a,b){this.getValueByKey(a)[b]-=1,this.getValueByKey(a)[b]<=0&&delete this.getValueByKey(a)[b]},this.count=function(a){return b(this.getValueByKey(a))},this.cumulativeCount=function(a){var b=this.indexOfKey(a);if(0>b)return 0;for(var c=0,d=0;b>=d;++d){var e=this.getKeyByIndex(d);c+=this.count(e)}return c}},a.cumulative.CountUnique.prototype=new a.cumulative.Base,a.baseChart=function(b){function c(a,b,c){var d=a.anchor(),e="__names__";c&&c!=a.valueAccessor()||(c="default"),b[e]||(b[e]={}),b[e][d]||(b[e][d]={a:[],n:[]});var f=b[e][d].a.indexOf(c);return-1==f&&(f=b[e][d].a.length,b[e][d].a[f]=c,b[e][d].n[f]={name:""}),b[e][d].n[f]}function d(){return o=b.root().append("svg").attr("width",b.width()).attr("height",b.height())}function e(c){if(!b[c]||!b[c]())throw new a.errors.InvalidStateException("Mandatory attribute chart."+c+" is missing on chart[#"+b.anchorName()+"]")}function f(a){G.splice(G.indexOf(a),1),i(),b._invokeFilteredListener(a)}function g(a){G.push(a),i(),b._invokeFilteredListener(a)}function h(){G=[],i(),b._invokeFilteredListener(null)}function i(){if(b.dataSet()&&void 0!==b.dimension().filter){var a=H(b.dimension(),G);G=a?a:G}}function j(){for(var a=0;a=0}),b},I=function(){return l.all()};return b.width=function(a){return arguments.length?(q=a,b):q},b.height=function(a){return arguments.length?(r=a,b):r},b.dimension=function(a){return arguments.length?(k=a,b.expireCache(),b):k},b.data=function(a){return arguments.length?(I=d3.functor(a),b.expireCache(),b):I()},b.group=function(a,c){return arguments.length?(l=a,b.expireCache(),"string"==typeof c&&b._setGroupName(l,c),b):l},b._getGroupName=function(a,d){return c(b,a,d).name},b._setGroupName=function(a,d,e){c(b,a,e).name=d},b.ordering=function(a){return arguments.length?(u=a,b.expireCache(),b):u},b.computeOrderedGroups=function(a){var c=a?a:b.data().slice(0);if(c.length<2)return c;var d=crossfilter.quicksort.by(b.ordering());return d(c,0,c.length)},b.filterAll=function(){return b.filter(null)},b.dataSet=function(){return void 0!==k&&void 0!==l},b.select=function(a){return n.select(a)},b.selectAll=function(a){return n?n.selectAll(a):null},b.anchor=function(c,d){return arguments.length?(a.instanceOfChart(c)?(m=c.anchor(),n=c.root()):(m=c,n=d3.select(m),n.classed(a.constants.CHART_CLASS,!0),a.registerChart(b,d)),D=d,b):m},b.anchorName=function(){var a=b.anchor();return a&&a.id?a.id:a?a.replace("#",""):""},b.root=function(a){return arguments.length?(n=a,b):n},b.svg=function(a){return arguments.length?(o=a,b):o},b.resetSvg=function(){return b.select("svg").remove(),d()},b.filterPrinter=function(a){return arguments.length?(A=a,b):A},b.turnOnControls=function(){return n&&(b.selectAll(".reset").style("display",null),b.selectAll(".filter").text(A(b.filters())).style("display",null)),b},b.turnOffControls=function(){return n&&(b.selectAll(".reset").style("display","none"),b.selectAll(".filter").style("display","none").text(b.filter())),b},b.transitionDuration=function(a){return arguments.length?(z=a,b):z},b._mandatoryAttributes=function(a){return arguments.length?(C=a,b):C},b.render=function(){F.preRender(b),C.forEach(e);var a=b.doRender();return p&&p.render(),b.activateRenderlets("postRender"),a},b.activateRenderlets=function(a){b.transitionDuration()>0&&o?o.transition().duration(b.transitionDuration()).each("end",function(){j(),a&&F[a](b)}):(j(),a&&F[a](b))},b.redraw=function(){F.preRedraw(b);var a=b.doRedraw();return b.activateRenderlets("postRedraw"),a},b._invokeFilteredListener=function(a){void 0!==a&&F.filtered(b,a)},b._invokeZoomedListener=function(){F.zoomed(b)},b.hasFilter=function(a){return arguments.length?G.indexOf(a)>=0:G.length>0},b.filter=function(a){return arguments.length?(null===a?h():b.hasFilter(a)?f(a):g(a),null!==n&&b.hasFilter()?b.turnOnControls():b.turnOffControls(),b):G.length>0?G[0]:null},b.filters=function(){return G},b.highlightSelected=function(b){d3.select(b).classed(a.constants.SELECTED_CLASS,!0),d3.select(b).classed(a.constants.DESELECTED_CLASS,!1)},b.fadeDeselected=function(b){d3.select(b).classed(a.constants.SELECTED_CLASS,!1),d3.select(b).classed(a.constants.DESELECTED_CLASS,!0)},b.resetHighlight=function(b){d3.select(b).classed(a.constants.SELECTED_CLASS,!1),d3.select(b).classed(a.constants.DESELECTED_CLASS,!1)},b.onClick=function(c){var d=b.keyAccessor()(c);a.events.trigger(function(){b.filter(d),a.redrawAll(b.chartGroup())})},b.filterHandler=function(a){return arguments.length?(H=a,b):H},b.doRender=function(){return b},b.doRedraw=function(){return b},b.legendables=function(){return[]},b.legendHighlight=function(){},b.legendReset=function(){},b.keyAccessor=function(a){return arguments.length?(s=a,b):s},b.valueAccessor=function(a){return arguments.length?(t=a,b):t},b.label=function(a){return arguments.length?(v=a,w=!0,b):v},b.renderLabel=function(a){return arguments.length?(w=a,b):w},b.title=function(a){return arguments.length?(x=a,y=!0,b):x},b.renderTitle=function(a){return arguments.length?(y=a,b):y},b.renderlet=function(a){return B.push(a),b},b.chartGroup=function(a){return arguments.length?(D=a,b):D},b.expireCache=function(){return b},b.legend=function(a){return arguments.length?(p=a,p.parent(b),b):p},b.on=function(a,c){return F[a]=c,b},b},a.marginable=function(a){var b={top:10,right:50,bottom:30,left:30};return a.margins=function(c){return arguments.length?(b=c,a):b},a.effectiveWidth=function(){return a.width()-a.margins().left-a.margins().right},a.effectiveHeight=function(){return a.height()-a.margins().top-a.margins().bottom},a},a.coordinateGridChart=function(b){function c(a){b.elasticX()&&!b.isOrdinal()?v.domain([b.xAxisMin(),b.xAxisMax()]):b.isOrdinal()&&0===v.domain().length&&v.domain(b.computeOrderedGroups().map(function(a){return a.key})),b.isOrdinal()?b.prepareOrdinalXAxis():v.range([0,b.xAxisLength()]),E=E.scale(b.x()).orient("bottom"),d(a)}function d(c){var d=c.selectAll("g."+o);if(Q){d.empty()&&(d=c.insert("g",":first-child").attr("class",m+" "+o).attr("transform","translate("+b.yAxisX()+","+b.margins().top+")"));var e=E.tickValues()?E.tickValues():v.ticks(E.ticks()[0]),f=d.selectAll("line").data(e),g=f.enter().append("line").attr("x1",function(a){return v(a)}).attr("y1",b.xAxisY()-b.margins().top).attr("x2",function(a){return v(a)}).attr("y2",0).attr("opacity",0);a.transition(g,b.transitionDuration()).attr("opacity",1),a.transition(f,b.transitionDuration()).attr("x1",function(a){return v(a)}).attr("y1",b.xAxisY()-b.margins().top).attr("x2",function(a){return v(a)}).attr("y2",0),f.exit().remove()}else d.selectAll("line").remove()}function e(a){(void 0===y||b.elasticY())&&(y=d3.scale.linear(),y.domain([b.yAxisMin(),b.yAxisMax()]).rangeRound([b.yAxisHeight(),0])),y.range([b.yAxisHeight(),0]),J=J.scale(y).orient("left"),f(a)}function f(c){var d=c.selectAll("g."+n);if(P){var e=J.tickValues()?J.tickValues():y.ticks(J.ticks()[0]);d.empty()&&(d=c.insert("g",":first-child").attr("class",m+" "+n).attr("transform","translate("+b.yAxisX()+","+b.margins().top+")"));var f=d.selectAll("line").data(e),g=f.enter().append("line").attr("x1",1).attr("y1",function(a){return y(a)}).attr("x2",b.xAxisLength()).attr("y2",function(a){return y(a)}).attr("opacity",0);a.transition(g,b.transitionDuration()).attr("opacity",1),a.transition(f,b.transitionDuration()).attr("x1",1).attr("y1",function(a){return y(a)}).attr("x2",b.xAxisLength()).attr("y2",function(a){return y(a)}),f.exit().remove()}else d.selectAll("line").remove()}function g(){return b.xAxisY()-b.margins().top}function h(){return b.anchorName()+"-clip"}function i(){var c=a.utils.appendOrSelect(s,"defs"),d=a.utils.appendOrSelect(c,"clipPath").attr("id",h()),e=2*V;a.utils.appendOrSelect(d,"rect").attr("width",b.xAxisLength()+e).attr("height",b.yAxisHeight()+e)}function j(){U&&b.root().call(d3.behavior.zoom().x(b.x()).scaleExtent(S).on("zoom",function(){b.focus(b.x().domain()),b._invokeZoomedListener(),k()}))}function k(){if(C){var c=b.x().domain();if(T){var d=C.xOriginalDomain(),e=[c[0]d[1]?c[1]:d[1]];C.focus(e)}else C.focus(c);C.filter(null),C.filter(c),a.events.trigger(function(){a.redrawAll(b.chartGroup())})}}function l(a){return a instanceof Array&&a.length>1}var m="grid-line",n="horizontal",o="vertical",p="y-axis-label",q="x-axis-label",r=12;b=a.colorChart(a.marginable(a.baseChart(b))),b.colors(d3.scale.category10()),b._mandatoryAttributes().push("x");var s,t,u,v,w,x,y,z,A,B,C,D,E=d3.svg.axis(),F=a.units.integers,G=0,H=!1,I=0,J=d3.svg.axis(),K=0,L=!1,M=0,N=d3.svg.brush(),O=!0,P=!1,Q=!1,R=!1,S=[-10,100],T=!0,U=!1,V=0;return b.title(function(a){return a.data.key+": "+a.data.value}),b.rescale=function(){B=void 0,b.xUnitCount()},b.rangeChart=function(a){return arguments.length?(C=a,C.focusChart(b),b):C},b.zoomScale=function(a){return arguments.length?(S=a,b):S},b.zoomOutRestrict=function(a){return arguments.length?(T=a,b):T},b._generateG=function(a){return s=void 0===a?b.svg():a,t=s.append("g"),u=t.append("g").attr("class","chart-body").attr("transform","translate("+b.margins().left+", "+b.margins().top+")").attr("clip-path","url(#"+h()+")"),t},b.g=function(a){return arguments.length?(t=a,b):t},b.mouseZoomable=function(a){return arguments.length?(U=a,b):U},b.chartBodyG=function(a){return arguments.length?(u=a,b):u},b.x=function(a){return arguments.length?(v=a,w=v.domain(),b):v},b.xOriginalDomain=function(){return w},b.xUnits=function(a){return arguments.length?(F=a,b):F},b.xAxis=function(a){return arguments.length?(E=a,b):E},b.elasticX=function(a){return arguments.length?(H=a,b):H},b.xAxisPadding=function(a){return arguments.length?(G=a,b):G},b.xUnitCount=function(){if(void 0===B){var a=b.xUnits()(b.x().domain()[0],b.x().domain()[1],b.x().domain());B=a instanceof Array?a.length:a}return B},b.isOrdinal=function(){return b.xUnits()===a.units.ordinal},b.prepareOrdinalXAxis=function(a){a||(a=b.xUnitCount());for(var c=[],d=b.xAxisLength()/(a+1),e=d/2,f=0;a>f;f++)c[f]=e,e+=d;v.range(c)},b.renderXAxis=function(c){var d=c.selectAll("g.x");d.empty()&&(d=c.append("g").attr("class","axis x").attr("transform","translate("+b.margins().left+","+b.xAxisY()+")"));var e=c.selectAll("text."+q);e.empty()&&b.xAxisLabel()&&(e=c.append("text").attr("transform","translate("+b.xAxisLength()/2+","+(b.height()-I)+")").attr("class",q).attr("text-anchor","middle").text(b.xAxisLabel())),b.xAxisLabel()&&e.text()!=b.xAxisLabel()&&axisYLab.text(b.xAxisLabel()),a.transition(d,b.transitionDuration()).call(E)},b.xAxisY=function(){return b.height()-b.margins().bottom},b.xAxisLength=function(){return b.effectiveWidth()},b.xAxisLabel=function(a,c){return arguments.length?(x=a,b.margins().bottom-=I,I=void 0===c?r:c,b.margins().bottom+=I,b):x},b.renderYAxis=function(c){var d=c.selectAll("g.y");d.empty()&&(d=c.append("g").attr("class","axis y").attr("transform","translate("+b.yAxisX()+","+b.margins().top+")"));var e=c.selectAll("text."+p);e.empty()&&b.yAxisLabel()&&(e=c.append("text").attr("transform","translate("+M+","+b.yAxisHeight()/2+"),rotate(-90)").attr("class",p).attr("text-anchor","middle").text(b.yAxisLabel())),b.yAxisLabel()&&e.text()!=b.yAxisLabel()&&e.text(b.yAxisLabel()),a.transition(d,b.transitionDuration()).call(J)},b.yAxisX=function(){return b.margins().left},b.yAxisLabel=function(a,c){return arguments.length?(z=a,b.margins().left-=M,M=void 0===c?r:c,b.margins().left+=M,b):z},b.y=function(a){return arguments.length?(y=a,b):y},b.yAxis=function(a){return arguments.length?(J=a,b):J},b.elasticY=function(a){return arguments.length?(L=a,b):L},b.renderHorizontalGridLines=function(a){return arguments.length?(P=a,b):P},b.renderVerticalGridLines=function(a){return arguments.length?(Q=a,b):Q},b.xAxisMin=function(){var c=d3.min(b.data(),function(a){return b.keyAccessor()(a)});return a.utils.subtract(c,G)},b.xAxisMax=function(){var c=d3.max(b.data(),function(a){return b.keyAccessor()(a)});return a.utils.add(c,G)},b.yAxisMin=function(){var c=d3.min(b.data(),function(a){return b.valueAccessor()(a)});return c=a.utils.subtract(c,K)},b.yAxisMax=function(){var c=d3.max(b.data(),function(a){return b.valueAccessor()(a)});return c=a.utils.add(c,K)},b.yAxisPadding=function(a){return arguments.length?(K=a,b):K},b.yAxisHeight=function(){return b.effectiveHeight()},b.round=function(a){return arguments.length?(A=a,b):A},a.override(b,"filter",function(a){return arguments.length?(b._filter(a),a?b.brush().extent(a):b.brush().clear(),b):b._filter()}),b.brush=function(a){return arguments.length?(N=a,b):N},b.renderBrush=function(a){if(b.isOrdinal()&&(O=!1),O){N.on("brush",b._brushing);var c=a.append("g").attr("class","brush").attr("transform","translate("+b.margins().left+","+b.margins().top+")").call(N.x(b.x()));c.selectAll("rect").attr("height",g()),c.selectAll(".resize").append("path").attr("d",b.resizeHandlePath),b.hasFilter()&&b.redrawBrush(a)}},b.extendBrush=function(){var a=N.extent();return b.round()&&(a[0]=a.map(b.round())[0],a[1]=a.map(b.round())[1],t.select(".brush").call(N.extent(a))),a},b.brushIsEmpty=function(a){return N.empty()||!a||a[1]<=a[0]},b.brushHasNoLength=function(a){return a[0]instanceof Date&&a[1]instanceof Date?a[0].getTime()==a[1].getTime():a[0]==a[1]},b._brushing=function(){var c=b.extendBrush();b.redrawBrush(t),b.brushHasNoLength(c)||(b.brushIsEmpty(c)?a.events.trigger(function(){b.filter(null),a.redrawAll(b.chartGroup())}):a.events.trigger(function(){b.filter(null),b.filter([c[0],c[1]]),a.redrawAll(b.chartGroup())},a.constants.EVENT_DELAY))},b.redrawBrush=function(a){if(O){b.filter()&&b.brush().empty()&&b.brush().extent(b.filter());var c=a.select("g.brush");c.call(b.brush().x(b.x())),c.selectAll("rect").attr("height",g())}b.fadeDeselectedArea()},b.fadeDeselectedArea=function(){},b.resizeHandlePath=function(a){var b=+("e"==a),c=b?1:-1,d=g()/3;return"M"+.5*c+","+d+"A6,6 0 0 "+b+" "+6.5*c+","+(d+6)+"V"+(2*d-6)+"A6,6 0 0 "+b+" "+.5*c+","+2*d+"Z"+"M"+2.5*c+","+(d+8)+"V"+(2*d-8)+"M"+4.5*c+","+(d+8)+"V"+(2*d-8)},b.clipPadding=function(a){return arguments.length?(V=a,b):V},b.doRender=function(){return b.resetSvg(),b.dataSet()&&(b._generateG(),i(),c(b.g()),e(b.g()),b.plotData(),b.renderXAxis(b.g()),b.renderYAxis(b.g()),b.renderBrush(b.g()),j()),b},b.doRedraw=function(){return c(b.g()),e(b.g()),b.plotData(),b.elasticY()&&b.renderYAxis(b.g()),(b.elasticX()||R)&&b.renderXAxis(b.g()),b.redrawBrush(b.g()),b},b.subRender=function(){return b.dataSet()&&b.plotData(),b},b.brushOn=function(a){return arguments.length?(O=a,b):O},b.focus=function(a){R=!0,l(a)?b.x().domain(a):b.x().domain(b.xOriginalDomain()),b.rescale(),b.redraw(),l(a)||(R=!1)},b.refocused=function(){return R},b.focusChart=function(c){return arguments.length?(D=c,b.on("filtered",function(b){a.events.trigger(function(){D.focus(b.filter()),D.filter(b.filter()),a.redrawAll(b.chartGroup())})}),b):D},b},a.colorChart=function(b){var c=d3.scale.category20c(),d=[0,c.range().length],e=function(e){var f=d;"function"==typeof d&&(f=d.call(b));var g=f[0],h=f[1];if(isNaN(e)&&(e=0),!a.utils.isNumber(h))return c(e);var i=b.colors().range().length,j=(h-g)/i,k=Math.abs(Math.min(i-1,Math.round((e-g)/j)));return b.colors()(k)},f=function(a,b){return b};return b.colors=function(a){if(!arguments.length)return c;if(a instanceof Array){c=d3.scale.ordinal().range(a);for(var e=[],f=0;f=d[0]&&a.x<=d[d.length-1]};b.stackLayers().forEach(function(b){b.points.forEach(function(b){c(b)&&a.push(b)})})}else b.stackLayers().forEach(function(b){a=a.concat(b.points)});return a}function d(a,c){return b.getKeyAccessorByIndex(a)(c)}function e(a,c){return b.getValueAccessorByIndex(a)(c)}function f(a,b){for(var c=0;cg)&&(c=g)}return a.utils.subtract(c,b.xAxisPadding())},b.xAxisMax=function(){for(var c=null,d=b.allGroups(),e=0;ec)&&(c=g)}return a.utils.add(c,b.xAxisPadding())},b.calculateDataPointMatrixForAll=function(){k.clearDataLayers();for(var a=b.allGroups(),c=0;c=c)&&(d=0),d};var g=function(a){return b.label()(a)},h=function(a){return b.bubbleR(a)>d?1:0};b.doRenderLabel=function(c){if(b.renderLabel()){var d=c.select("text");d.empty()&&(d=c.append("text").attr("text-anchor","middle").attr("dy",".3em").on("click",b.onClick)),d.attr("opacity",0).text(g),a.transition(d,b.transitionDuration()).attr("opacity",h)}},b.doUpdateLabels=function(c){if(b.renderLabel()){var d=c.selectAll("text").text(g);a.transition(d,b.transitionDuration()).attr("opacity",h)}};var i=function(a){return b.title()(a)};return b.doRenderTitles=function(a){if(b.renderTitle()){var c=a.select("title");c.empty()&&a.append("title").text(i)}},b.doUpdateTitles=function(a){b.renderTitle()&&a.selectAll("title").text(i)},b.minRadiusWithLabel=function(a){return arguments.length?(d=a,b):d},b.maxBubbleRelativeSize=function(a){return arguments.length?(c=a,b):c},b.initBubbleColor=function(c,d){return this[a.constants.NODE_INDEX_NAME]=d,b.getColor(c,d)},b.updateBubbleColor=function(c){return b.getColor(c,this[a.constants.NODE_INDEX_NAME])},b.fadeDeselectedArea=function(){b.hasFilter()?b.selectAll("g."+b.BUBBLE_NODE_CLASS).each(function(a){b.isSelectedNode(a)?b.highlightSelected(this):b.fadeDeselected(this)}):b.selectAll("g."+b.BUBBLE_NODE_CLASS).each(function(){b.resetHighlight(this)})},b.isSelectedNode=function(a){return b.hasFilter(a.key)},b.onClick=function(c){var d=c.key;a.events.trigger(function(){b.filter(d),a.redrawAll(b.chartGroup())})},b},a.pieChart=function(b,c){function d(){if(C.dataSet()){var a=p();w=w?w:d3.min([C.width(),C.height()])/2;var b=C.buildArcs(),c=a(C._assembleCappedData());if(x){var d=x.selectAll("g."+z).data(c);e(d,b,c),j(c,b),n(d),o()}}}function e(a,b,c){var d=f(a);g(d,b),h(d),i(c,b)}function f(a){var b=a.enter().append("g").attr("class",function(a,b){return z+" _"+b});return b}function g(a,b){var c=a.append("path").attr("fill",function(a,b){return C.getColor(a,b)}).on("click",u).attr("d",function(a,c){return v(a,c,b)});c.transition().duration(C.transitionDuration()).attrTween("d",s)}function h(a){C.renderTitle()&&a.append("title").text(function(a){return C.title()(a)})}function i(b,c){if(C.renderLabel()){var d=x.selectAll("text."+z).data(b);d.exit().remove();var e=d.enter().append("text").attr("class",function(a,b){return z+" _"+b}).on("click",u);a.transition(e,C.transitionDuration()).attr("transform",function(a){a.innerRadius=C.innerRadius(),a.outerRadius=w;var b=c.centroid(a);return isNaN(b[0])||isNaN(b[1])?"translate(0,0)":"translate("+b+")"}).attr("text-anchor","middle").text(function(a){var b=a.data;return r(b)||q(a)?"":C.label()(a)})}}function j(a,b){k(a,b),l(a,b),m(a)}function k(b,c){var d=x.selectAll("g."+z).data(b).select("path").attr("d",function(a,b){return v(a,b,c)});a.transition(d,C.transitionDuration(),function(a){a.attrTween("d",s)}).attr("fill",function(a,b){return C.getColor(a,b)})}function l(b,c){if(C.renderLabel()){var d=x.selectAll("text."+z).data(b);a.transition(d,C.transitionDuration()).attr("transform",function(a){a.innerRadius=C.innerRadius(),a.outerRadius=w;var b=c.centroid(a);return isNaN(b[0])||isNaN(b[1])?"translate(0,0)":"translate("+b+")"}).attr("text-anchor","middle").text(function(a){var b=a.data;return r(b)||q(a)?"":C.label()(a)})}}function m(a){C.renderTitle()&&x.selectAll("g."+z).data(a).select("title").text(function(a){return C.title()(a)})}function n(a){a.exit().remove()}function o(){C.hasFilter()?C.selectAll("g."+z).each(function(a){C.isSelectedSlice(a)?C.highlightSelected(this):C.fadeDeselected(this)}):C.selectAll("g."+z).each(function(){C.resetHighlight(this)})}function p(){return d3.layout.pie().sort(null).value(function(a){return C.valueAccessor()(a)})}function q(a){var b=a.endAngle-a.startAngle;return isNaN(b)||B>b}function r(a){return 0===C.valueAccessor()(a)}function s(a){a.innerRadius=C.innerRadius();var b=this._current;t(b)&&(b={startAngle:0,endAngle:0});var c=d3.interpolate(b,a);return this._current=c(0),function(a){return v(c(a),0,C.buildArcs())}}function t(a){return!a||isNaN(a.startAngle)||isNaN(a.endAngle)}function u(a){C.onClick(a.data)}function v(a,b,c){var d=c(a,b);return d.indexOf("NaN")>=0&&(d="M0,0"),d}var w,x,y=.5,z="pie-slice",A=0,B=y,C=a.capped(a.colorChart(a.baseChart({})));return C.slicesCap=C.cap,C.label(function(a){return C.keyAccessor()(a.data)}),C.renderLabel(!0),C.title(function(a){return C.keyAccessor()(a.data)+": "+C.valueAccessor()(a.data)}),C.transitionDuration(350),C.doRender=function(){return C.resetSvg(),x=C.svg().append("g").attr("transform","translate("+C.cx()+","+C.cy()+")"),d(),C},C.innerRadius=function(a){return arguments.length?(A=a,C):A},C.radius=function(a){return arguments.length?(w=a,C):w},C.cx=function(){return C.width()/2},C.cy=function(){return C.height()/2},C.buildArcs=function(){return d3.svg.arc().outerRadius(w).innerRadius(A)},C.isSelectedSlice=function(a){return C.hasFilter(C.keyAccessor()(a.data))},C.doRedraw=function(){return d(),C},C.minAngleForLabel=function(a){return arguments.length?(B=a,C):B},C.anchor(b,c)},a.barChart=function(b,c){function d(b){return a.utils.safeNumber(Math.abs(m.y()(b.y+b.y0)-m.y()(b.y0))) -}function e(b,c){var e=b.selectAll("rect.bar").data(c.points);e.enter().append("rect").attr("class","bar").attr("fill",m.getColor).append("title").text(m.title()),m.isOrdinal()&&e.on("click",h),a.transition(e,m.transitionDuration()).attr("x",function(b){var c=m.x()(b.x);return(o||m.isOrdinal())&&(c-=j/2),a.utils.safeNumber(c)}).attr("y",function(b){var c=m.y()(b.y+b.y0);return b.y<0&&(c-=d(b)),a.utils.safeNumber(c)}).attr("width",j).attr("height",function(a){return d(a)}).select("title").text(m.title()),a.transition(e.exit(),m.transitionDuration()).attr("height",0).remove()}function f(){if(void 0===j){var a=m.isOrdinal()?g()+1:g(),b=Math.floor((m.xAxisLength()-(a-1)*n)/a);(1/0==b||isNaN(b)||k>b)&&(b=k),j=b}}function g(){return void 0===i&&(i=m.xUnitCount()),i}function h(a){m.onClick(a.data)}var i,j,k=1,l=2,m=a.stackableChart(a.coordinateGridChart({})),n=l,o=!1;return a.override(m,"rescale",function(){m._rescale(),i=void 0,j=void 0,g()}),m.plotData=function(){var a=m.chartBodyG().selectAll("g.stack").data(m.stackLayers());f(),a.enter().append("g").attr("class",function(a,b){return"stack _"+b}),a.each(function(a,b){var c=d3.select(this);e(c,a,b)}),m.stackLayers(null)},m.fadeDeselectedArea=function(){var b=m.chartBodyG().selectAll("rect.bar"),c=m.brush().extent();if(m.isOrdinal())m.hasFilter()?(b.classed(a.constants.SELECTED_CLASS,function(a){return m.hasFilter(m.keyAccessor()(a.data))}),b.classed(a.constants.DESELECTED_CLASS,function(a){return!m.hasFilter(m.keyAccessor()(a.data))})):(b.classed(a.constants.SELECTED_CLASS,!1),b.classed(a.constants.DESELECTED_CLASS,!1));else if(m.brushIsEmpty(c))b.classed(a.constants.DESELECTED_CLASS,!1);else{var d=c[0],e=c[1];b.classed(a.constants.DESELECTED_CLASS,function(a){var b=m.keyAccessor()(a.data);return d>b||b>=e})}},m.centerBar=function(a){return arguments.length?(o=a,m):o},m.gap=function(a){return arguments.length?(n=a,m):n},m.extendBrush=function(){var a=m.brush().extent();return m.round()&&!o&&(a[0]=a.map(m.round())[0],a[1]=a.map(m.round())[1],m.chartBodyG().select(".brush").call(m.brush().extent(a))),a},m.legendHighlight=function(a){m.select(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!0),m.select(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!0)},m.legendReset=function(a){m.selectAll(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!1),m.selectAll(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!1)},m.anchor(b,c)},a.lineChart=function(b,c){function d(b,c){var d=d3.svg.line().x(function(a){return s.x()(a.x)}).y(function(a){return s.y()(a.y+a.y0)}).interpolate(v).tension(w);m&&d.defined(m),b.append("path").attr("class","line").attr("stroke",s.getColor).attr("fill",s.getColor),a.transition(c.select("path.line"),s.transitionDuration()).attr("d",function(a){return f(d(a.points))})}function e(b,c){if(t){var d=d3.svg.area().x(function(a){return s.x()(a.x)}).y(function(a){return s.y()(a.y+a.y0)}).y0(function(a){return s.y()(a.y0)}).interpolate(v).tension(w);m&&d.defined(m),b.append("path").attr("class","area").attr("fill",s.getColor).attr("d",function(a){return f(d(a.points))}),a.transition(c.select("path.area"),s.transitionDuration()).attr("d",function(a){return f(d(a.points))})}}function f(a){return!a||a.indexOf("NaN")>=0?"M0,0":a}function g(b,c){if(!s.brushOn()){var d=o+"-list",e=b.select("g."+d);e.empty()&&(e=b.append("g").attr("class",d)),c.each(function(b,c){var d=d3.select(this),f=d.datum().points,g=e.select("g."+o+"._"+c);g.empty()&&(g=e.append("g").attr("class",o+" _"+c)),h(g);var m=g.selectAll("circle."+p).data(f);m.enter().append("circle").attr("class",p).attr("r",u).attr("fill",s.getColor).style("fill-opacity",1e-6).style("stroke-opacity",1e-6).on("mousemove",function(){var a=d3.select(this);i(a),j(a,g)}).on("mouseout",function(){var a=d3.select(this);k(a),l(g)}).append("title").text(s.title()),m.attr("cx",function(b){return a.utils.safeNumber(s.x()(b.x))}).attr("cy",function(b){return a.utils.safeNumber(s.y()(b.y+b.y0))}).select("title").text(s.title()),m.exit().remove()})}}function h(a){var b=a.select("path."+q).empty()?a.append("path").attr("class",q):a.select("path."+q);b.style("display","none").attr("stroke-dasharray","5,5");var c=a.select("path."+r).empty()?a.append("path").attr("class",r):a.select("path."+r);c.style("display","none").attr("stroke-dasharray","5,5")}function i(a){return a.style("fill-opacity",.8),a.style("stroke-opacity",.8),a}function j(a,b){var c=a.attr("cx"),d=a.attr("cy");b.select("path."+q).style("display","").attr("d","M0 "+d+"L"+c+" "+d),b.select("path."+r).style("display","").attr("d","M"+c+" "+s.yAxisHeight()+"L"+c+" "+d)}function k(a){a.style("fill-opacity",1e-6).style("stroke-opacity",1e-6)}function l(a){a.select("path."+q).style("display","none"),a.select("path."+r).style("display","none")}var m,n=5,o="dc-tooltip",p="dot",q="yRef",r="xRef",s=a.stackableChart(a.coordinateGridChart({})),t=!1,u=n,v="linear",w=.7;return s.transitionDuration(500),s.plotData=function(){var a=s.chartBodyG(),b=a.selectAll("g.stack-list");b.empty()&&(b=a.append("g").attr("class","stack-list"));var c=b.selectAll("g.stack").data(s.stackLayers()),f=c.enter().append("g").attr("class",function(a,b){return"stack _"+b});d(f,c),e(f,c),g(a,c),s.stackLayers(null)},s.interpolate=function(a){return arguments.length?(v=a,s):v},s.tension=function(a){return arguments.length?(w=a,s):w},s.defined=function(a){return arguments.length?(m=a,s):m},s.renderArea=function(a){return arguments.length?(t=a,s):t},s.dotRadius=function(a){return arguments.length?(u=a,s):u},s.legendHighlight=function(a){s.selectAll(".chart-body").selectAll("path").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!0),s.selectAll(".chart-body").selectAll("path").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!0)},s.legendReset=function(a){s.selectAll(".chart-body").selectAll("path").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!1),s.selectAll(".chart-body").selectAll("path").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!1)},s.anchor(b,c)},a.dataCount=function(b,c){var d=d3.format(",d"),e=a.baseChart({});return e.doRender=function(){return e.selectAll(".total-count").text(d(e.dimension().size())),e.selectAll(".filter-count").text(d(e.group().value())),e},e.doRedraw=function(){return e.doRender()},e.anchor(b,c)},a.dataTable=function(b,c){function d(){var a=l.root().selectAll("tbody").data(e(),function(a){return l.keyAccessor()(a)}),b=a.enter().append("tbody");return b.append("tr").attr("class",k).append("td").attr("class",h).attr("colspan",n.length).html(function(a){return l.keyAccessor()(a)}),a.exit().remove(),b}function e(){g||(g=crossfilter.quicksort.by(o));var a=l.dimension().top(m);return d3.nest().key(l.group()).sortKeys(p).sortValues(p).entries(g(a,0,a.length))}function f(a){var b=a.order().selectAll("tr."+i).data(function(a){return a.values}),c=b.enter().append("tr").attr("class",i);return n.forEach(function(a,b){c.append("td").attr("class",j+" _"+b).html(a)}),b.exit().remove(),b}var g,h="dc-table-label",i="dc-table-row",j="dc-table-column",k="dc-table-group",l=a.baseChart({}),m=25,n=[],o=function(a){return a},p=d3.ascending;return l.doRender=function(){return l.selectAll("tbody").remove(),f(d()),l},l.doRedraw=function(){return l.doRender()},l.size=function(a){return arguments.length?(m=a,l):m},l.columns=function(a){return arguments.length?(n=a,l):n},l.sortBy=function(a){return arguments.length?(o=a,l):o},l.order=function(a){return arguments.length?(p=a,l):p},l.anchor(b,c)},a.bubbleChart=function(b,c){function d(b){var c=b.enter().append("g");c.attr("class",i.BUBBLE_NODE_CLASS).attr("transform",k).append("circle").attr("class",function(a,b){return i.BUBBLE_CLASS+" _"+b}).on("click",i.onClick).attr("fill",i.initBubbleColor).attr("r",0),a.transition(b,i.transitionDuration()).attr("r",function(a){return i.bubbleR(a)}).attr("opacity",function(a){return i.bubbleR(a)>0?1:0}),i.doRenderLabel(c),i.doRenderTitles(c)}function e(b){a.transition(b,i.transitionDuration()).attr("transform",k).selectAll("circle."+i.BUBBLE_CLASS).attr("fill",i.updateBubbleColor).attr("r",function(a){return i.bubbleR(a)}).attr("opacity",function(a){return i.bubbleR(a)>0?1:0}),i.doUpdateLabels(b),i.doUpdateTitles(b)}function f(a){a.exit().remove()}function g(a){var b=i.x()(i.keyAccessor()(a));return isNaN(b)&&(b=0),b}function h(a){var b=i.y()(i.valueAccessor()(a));return isNaN(b)&&(b=0),b}var i=a.abstractBubbleChart(a.coordinateGridChart({})),j=!1;i.transitionDuration(750);var k=function(a){return"translate("+g(a)+","+h(a)+")"};return i.elasticRadius=function(a){return arguments.length?(j=a,i):j},i.plotData=function(){j&&i.r().domain([i.rMin(),i.rMax()]),i.r().range([i.MIN_RADIUS,i.xAxisLength()*i.maxBubbleRelativeSize()]);var a=i.chartBodyG().selectAll("g."+i.BUBBLE_NODE_CLASS).data(i.data());d(a),e(a),f(a),i.fadeDeselectedArea()},i.renderBrush=function(){},i.redrawBrush=function(){i.fadeDeselectedArea()},i.anchor(b,c)},a.compositeChart=function(b,c){function d(a,b){a._generateG(j.g()),a.g().attr("class",i+" _"+b)}function e(){for(var a=[],b=0;b1?b.push.apply(b,e):b.push(a.utils.createLegendable(c,c.group(),d,c.valueAccessor()))}),b},j.legendHighlight=function(a){for(var b=0;b0&&(a[0]=0),q=d3.scale.linear().domain(a).range([0,x.effectiveWidth()]),y.scale(q)}}function e(){var b=p.select("g.axis");d(),b.empty()&&(b=p.append("g").attr("class","axis").attr("transform","translate(0, "+x.effectiveHeight()+")")),a.transition(b,x.transitionDuration()).call(y)}function f(){p.selectAll("g.tick").select("line.grid-line").remove(),p.selectAll("g.tick").append("line").attr("class","grid-line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",function(){return-x.effectiveHeight()})}function g(){s=x._assembleCappedData(),e(),f();var a=p.selectAll("g."+w).data(s);h(a),i(a),j(a)}function h(a){var b=a.enter().append("g").attr("class",function(a,b){return w+" _"+b});b.append("rect").attr("width",0),l(b),m(a)}function i(a){a.exit().remove()}function j(b){var c=s.length,d=(x.effectiveHeight()-(c+1)*v)/c,e=b.attr("transform",function(a,b){return"translate(0,"+((b+1)*v+b*d)+")"}).select("rect").attr("height",d).attr("fill",x.getColor).on("click",n).classed("deselected",function(a){return x.hasFilter()?!x.isSelectedRow(a):!1}).classed("selected",function(a){return x.hasFilter()?x.isSelectedRow(a):!1});a.transition(e,x.transitionDuration()).attr("width",function(a){var b=q(0)==-1/0?q(1):q(0);return Math.abs(b-q(x.valueAccessor()(a)))}).attr("transform",o),k(b),m(b)}function k(a){x.renderTitle()&&(a.selectAll("title").remove(),a.append("title").text(function(a){return x.title()(a)}))}function l(a){x.renderLabel()&&a.append("text").on("click",n)}function m(b){if(x.renderLabel()){var c=b.select("text").attr("x",t).attr("y",u).on("click",n).attr("class",function(a,b){return w+" _"+b}).text(function(a){return x.label()(a)});a.transition(c,x.transitionDuration()).attr("transform",o)}}function n(a){x.onClick(a)}function o(a){var b=q(x.valueAccessor()(a)),c=q(0),d=b>c?c:b;return"translate("+d+",0)"}var p,q,r,s,t=10,u=15,v=5,w="row",x=a.capped(a.marginable(a.colorChart(a.baseChart({})))),y=d3.svg.axis().orient("bottom");return x.rowsCap=x.cap,x.doRender=function(){return x.resetSvg(),p=x.svg().append("g").attr("transform","translate("+x.margins().left+","+x.margins().top+")"),g(),x},x.title(function(a){return x.keyAccessor()(a)+": "+x.valueAccessor()(a)}),x.label(function(a){return x.keyAccessor()(a)}),x.x=function(a){return arguments.length?(q=a,x):q},x.doRedraw=function(){return g(),x},x.xAxis=function(){return y},x.gap=function(a){return arguments.length?(v=a,x):v},x.elasticX=function(a){return arguments.length?(r=a,x):r},x.labelOffsetX=function(a){return arguments.length?(t=a,x):t},x.labelOffsetY=function(a){return arguments.length?(u=a,x):u},x.isSelectedRow=function(a){return x.hasFilter(x.keyAccessor()(a))},x.anchor(b,c)},a.legend=function(){function a(){return i+h}var b,c,d=2,e={},f=0,g=0,h=12,i=5;return e.parent=function(a){return arguments.length?(b=a,e):b},e.render=function(){c=b.svg().append("g").attr("class","dc-legend").attr("transform","translate("+f+","+g+")");var e=c.selectAll("g.dc-legend-item").data(b.legendables()).enter().append("g").attr("class","dc-legend-item").attr("transform",function(b,c){return"translate(0,"+c*a()+")"}).on("mouseover",function(a){b.legendHighlight(a)}).on("mouseout",function(a){b.legendReset(a)});e.append("rect").attr("width",h).attr("height",h).attr("fill",function(a){return a.color}),e.append("text").text(function(a){return a.name}).attr("x",h+d).attr("y",function(){return h/2+(this.clientHeight?this.clientHeight:13)/2-2})},e.x=function(a){return arguments.length?(f=a,e):f},e.y=function(a){return arguments.length?(g=a,e):g},e.gap=function(a){return arguments.length?(i=a,e):i},e.itemHeight=function(a){return arguments.length?(h=a,e):h},e},a.capped=function(b){var c=1/0,d="Others",e=function(a){var c=d3.sum(a,b.valueAccessor()),e=b.data(),f=d3.sum(e,b.valueAccessor()),g=a.map(b.keyAccessor()),h=e.map(b.keyAccessor()),i=d3.set(g),j=h.filter(function(a){return!i.has(a)});f>c&&a.push({others:j,key:d,value:f-c})};return b._assembleCappedData=function(){if(1/0==c)return b.computeOrderedGroups();var a=b.group().top(c);return a=b.computeOrderedGroups(a),e&&e(a),a},b.cap=function(a){return arguments.length?(c=a,b):c},b.othersLabel=function(a){return arguments.length?(d=a,b):d},b.othersGrouper=function(a){return arguments.length?(e=a,b):e},a.override(b,"onClick",function(a){a.others&&a.others.forEach(function(a){b.filter(a)}),b._onClick(a)}),b},a.scatterPlot=function(b,c){var d=a.coordinateGridChart({});return d.plotData=function(){d.chartBodyG().selectAll("path.dc-symbol").data(d.data()).enter().append("path").attr("class","dc-symbol").attr("transform",function(a){return"translate("+d.x()(d.keyAccessor()(a))+","+d.y()(d.valueAccessor()(a))+")"}).attr("d",d3.svg.symbol())},d.anchor(b,c)},a.numberDisplay=function(b,c){var d="number-display",e=d3.format(".2s"),f=a.baseChart({});return f._mandatoryAttributes(["group"]),f.value=function(){return f.data()},f.data(function(){var a=f.group().all&&f.group().all()[0]||f.group().value();return f.valueAccessor()(a)}),f.transitionDuration(250),f.doRender=function(){var a=f.value(),b=f.selectAll("."+d);return b.empty()&&(b=b.data([0]).enter().append("span").attr("class",d)),b.transition().duration(f.transitionDuration()).ease("quad-out-in").tween("text",function(){var b=d3.interpolateNumber(this.lastValue||0,a);return this.lastValue=a,function(a){this.textContent=f.formatNumber()(b(a))}}),f},f.doRedraw=function(){return f.doRender()},f.formatNumber=function(a){return arguments.length?(e=a,f):e},f.anchor(b,c)},a.heatMap=function(b,c){function d(a,b,c){return!b||c[b-1]!=a}var e,f,g,h,i=function(a,b){return b},j=d3.scale.quantize().range(["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]),k=a.coordinateGridChart({});return k._mandatoryAttributes(["group"]),k.title(i),k.boxOnClick=function(){},k.xAxisOnClick=function(){},k.yAxisOnClick=function(){},k.rows=function(a){if(arguments.length)return g=a,k;if(g)return g;var b=k.data().map(k.valueAccessor());return b.sort(d3.ascending),d3.scale.ordinal().domain(b.filter(d))},k.cols=function(a){if(arguments.length)return f=a,k;if(f)return f;var b=k.data().map(k.keyAccessor());return b.sort(d3.ascending),d3.scale.ordinal().domain(b.filter(d))},k.fill=function(a){return arguments.length?(h=a,k):h?h:j.domain(d3.extent(k.data(),i))},k.fillAccessor=function(a){return arguments.length?(i=a,k):i},k.doRender=function(){return k.resetSvg(),e=k.svg().append("g").attr("class","heatmap").attr("transform","translate("+k.margins().left+","+k.margins().top+")"),k.doRedraw()},k.doRedraw=function(){var b=k.rows(),c=k.cols(),d=k.fill(),f=b.domain().length,g=c.domain().length,h=Math.floor(k.effectiveWidth()/g),j=Math.floor(k.effectiveHeight()/f);c.rangeRoundBands([0,k.effectiveWidth()]),b.rangeRoundBands([k.effectiveHeight(),0]);var l=e.selectAll("g.box-group").data(k.data(),function(a,b){return k.keyAccessor()(a,b)+"\x00"+k.valueAccessor()(a,b)}),m=l.enter().append("g").attr("class","box-group");m.append("rect").attr("fill","white").on("click",k.boxOnClick),m.append("title").text(function(a){return k.title()(a)}),a.transition(l.select("rect"),k.transitionDuration()).attr("class","heat-box").attr("x",function(a,b){return c(k.keyAccessor()(a,b))}).attr("y",function(a,c){return b(k.valueAccessor()(a,c))}).attr("rx",.15*h).attr("ry",.15*j).attr("fill",function(a,b){return d(i(a,b))}).attr("width",h).attr("height",j),l.exit().remove();var n=e.selectAll("g.cols");n.empty()&&(n=e.append("g").attr("class","cols axis")),n.selectAll("text").data(c.domain()).enter().append("text").attr("x",function(a){return c(a)+h/2}).style("text-anchor","middle").attr("y",k.effectiveHeight()).attr("dy",12).on("click",k.xAxisOnClick).text(function(a){return a});var o=e.selectAll("g.rows");o.empty()&&(o=e.append("g").attr("class","rows axis")),o.selectAll("text").data(b.domain()).enter().append("text").attr("y",function(a){return b(a)+j/2}).attr("dy",6).style("text-anchor","end").attr("x",0).attr("dx",-2).on("click",k.yAxisOnClick).text(function(a){return a})},k.anchor(b,c)},function(){function a(a){return[0,a.length-1]}function b(a){return[d3.quantile(a,.25),d3.quantile(a,.5),d3.quantile(a,.75)]}d3.box=function(){function c(a){a.each(function(a,b){a=a.map(h).sort(d3.ascending);var c=d3.select(this),l=a.length,m=a[0],n=a[l-1],o=a.quartiles=j(a),p=i&&i.call(this,a,b),q=p&&p.map(function(b){return a[b]}),r=p?d3.range(0,p[0]).concat(d3.range(p[1]+1,l)):d3.range(l),s=d3.scale.linear().domain(g&&g.call(this,a,b)||[m,n]).range([e,0]),t=this.__chart__||d3.scale.linear().domain([0,1/0]).range(s.range());this.__chart__=s;var u=c.selectAll("line.center").data(q?[q]:[]);u.enter().insert("line","rect").attr("class","center").attr("x1",d/2).attr("y1",function(a){return t(a[0])}).attr("x2",d/2).attr("y2",function(a){return t(a[1])}).style("opacity",1e-6).transition().duration(f).style("opacity",1).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}),u.transition().duration(f).style("opacity",1).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}),u.exit().transition().duration(f).style("opacity",1e-6).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}).remove();var v=c.selectAll("rect.box").data([o]);v.enter().append("rect").attr("class","box").attr("x",0).attr("y",function(a){return t(a[2])}).attr("width",d).attr("height",function(a){return t(a[0])-t(a[2])}).transition().duration(f).attr("y",function(a){return s(a[2])}).attr("height",function(a){return s(a[0])-s(a[2])}),v.transition().duration(f).attr("y",function(a){return s(a[2])}).attr("height",function(a){return s(a[0])-s(a[2])});var w=c.selectAll("line.median").data([o[1]]);w.enter().append("line").attr("class","median").attr("x1",0).attr("y1",t).attr("x2",d).attr("y2",t).transition().duration(f).attr("y1",s).attr("y2",s),w.transition().duration(f).attr("y1",s).attr("y2",s);var x=c.selectAll("line.whisker").data(q||[]);x.enter().insert("line","circle, text").attr("class","whisker").attr("x1",0).attr("y1",t).attr("x2",d).attr("y2",t).style("opacity",1e-6).transition().duration(f).attr("y1",s).attr("y2",s).style("opacity",1),x.transition().duration(f).attr("y1",s).attr("y2",s).style("opacity",1),x.exit().transition().duration(f).attr("y1",s).attr("y2",s).style("opacity",1e-6).remove();var y=c.selectAll("circle.outlier").data(r,Number);y.enter().insert("circle","text").attr("class","outlier").attr("r",5).attr("cx",d/2).attr("cy",function(b){return t(a[b])}).style("opacity",1e-6).transition().duration(f).attr("cy",function(b){return s(a[b])}).style("opacity",1),y.transition().duration(f).attr("cy",function(b){return s(a[b])}).style("opacity",1),y.exit().transition().duration(f).attr("cy",function(b){return s(a[b])}).style("opacity",1e-6).remove();var z=k||s.tickFormat(8),A=c.selectAll("text.box").data(o);A.enter().append("text").attr("class","box").attr("dy",".3em").attr("dx",function(a,b){return 1&b?6:-6}).attr("x",function(a,b){return 1&b?d:0}).attr("y",t).attr("text-anchor",function(a,b){return 1&b?"start":"end"}).text(z).transition().duration(f).attr("y",s),A.transition().duration(f).text(z).attr("y",s);var B=c.selectAll("text.whisker").data(q||[]);B.enter().append("text").attr("class","whisker").attr("dy",".3em").attr("dx",6).attr("x",d).attr("y",t).text(z).style("opacity",1e-6).transition().duration(f).attr("y",s).style("opacity",1),B.transition().duration(f).text(z).attr("y",s).style("opacity",1),B.exit().transition().duration(f).attr("y",s).style("opacity",1e-6).remove()}),d3.timer.flush()}var d=1,e=1,f=0,g=null,h=Number,i=a,j=b,k=null;return c.width=function(a){return arguments.length?(d=a,c):d},c.height=function(a){return arguments.length?(e=a,c):e},c.tickFormat=function(a){return arguments.length?(k=a,c):k},c.duration=function(a){return arguments.length?(f=a,c):f},c.domain=function(a){return arguments.length?(g=null==a?a:d3.functor(a),c):g},c.value=function(a){return arguments.length?(h=a,c):h},c.whiskers=function(a){return arguments.length?(i=a,c):i},c.quartiles=function(a){return arguments.length?(j=a,c):j},c}}(),a.boxPlot=function(b,c){function d(){return g.group().all().map(function(a){return a.map=function(){return g.valueAccessor()(a)},a})}function e(a){return function(b){for(var c=b.quartiles[0],d=b.quartiles[2],e=(d-c)*a,f=-1,g=b.length;b[++f]d+e;);return[f,g]}}var f,g=a.coordinateGridChart({}),h=1.5,i=e,j=i(h),k=d3.box();return g.yAxisPadding(12),g.plotData=function(){f=.2*g.effectiveWidth()/(g.xUnitCount()+1),k.whiskers(j).width(f).height(g.effectiveHeight()).domain(g.y().domain());var a=Array.prototype.slice.call(g.x().domain(),0);g.chartBodyG().selectAll("g.box").data(d()).enter().append("g").attr("class","box").attr("transform",function(a,b){return"translate("+(g.x()(b)-f/2)+",0)"}).call(k),g.x().domain(a)},g.yAxisMin=function(){var b=d3.min(g.group().all(),function(a){return d3.min(g.valueAccessor()(a))});return b=a.utils.subtract(b,g.yAxisPadding())},g.yAxisMax=function(){var b=d3.max(g.group().all(),function(a){return d3.max(g.valueAccessor()(a))});return b=a.utils.add(b,g.yAxisPadding())},g.anchor(b,c)},a}(); +dc=function(){"use strict";var a={version:"1.7.0-dev",constants:{CHART_CLASS:"dc-chart",DEBUG_GROUP_CLASS:"debug",STACK_CLASS:"stack",DESELECTED_CLASS:"deselected",SELECTED_CLASS:"selected",NODE_INDEX_NAME:"__index__",GROUP_INDEX_NAME:"__group_index__",DEFAULT_CHART_GROUP:"__default_chart_group__",EVENT_DELAY:40,NEGLIGIBLE_NUMBER:1e-10},_renderlet:null};return a.chartRegistry=function(){function b(b){return b||(b=a.constants.DEFAULT_CHART_GROUP),c[b]||(c[b]=[]),b}var c={};return{has:function(a){for(var b in c)if(c[b].indexOf(a)>=0)return!0;return!1},register:function(a,d){d=b(d),c[d].push(a)},clear:function(a){a?delete c[a]:c={}},list:function(a){return a=b(a),c[a]}}}(),a.registerChart=function(b,c){a.chartRegistry.register(b,c)},a.hasChart=function(b){return a.chartRegistry.has(b)},a.deregisterAllCharts=function(b){a.chartRegistry.clear(b)},a.filterAll=function(b){for(var c=a.chartRegistry.list(b),d=0;d=b||void 0===b)return a;var d=a.transition().duration(b);return c instanceof Function&&c(d),d},a.units={},a.units.integers=function(a,b){return Math.abs(b-a)},a.units.ordinal=function(a,b,c){return c},a.units.fp={},a.units.fp.precision=function(b){var c=function(b,d){var e=Math.abs((d-b)/c.resolution);return a.utils.isNegligible(e-Math.floor(e))?Math.floor(e):Math.ceil(e)};return c.resolution=b,c},a.round={},a.round.floor=function(a){return Math.floor(a)},a.round.ceil=function(a){return Math.ceil(a)},a.round.round=function(a){return Math.round(a)},a.override=function(a,b,c){var d=a[b];a["_"+b]=d,a[b]=c},a.renderlet=function(b){return arguments.length?(a._renderlet=b,a):a._renderlet},a.instanceOfChart=function(a){return a instanceof Object&&a.__dc_flag__},a.errors={},a.errors.Exception=function(a){var b=a||"Unexpected internal error";this.message=b,this.toString=function(){return b}},a.errors.InvalidStateException=function(){a.errors.Exception.apply(this,arguments)},a.dateFormat=d3.time.format("%m/%d/%Y"),a.printers={},a.printers.filters=function(b){for(var c="",d=0;d0&&(c+=", "),c+=a.printers.filter(b[d]);return c},a.printers.filter=function(b){var c="";return b&&(b instanceof Array?b.length>=2?c="["+a.utils.printSingleValue(b[0])+" -> "+a.utils.printSingleValue(b[1])+"]":b.length>=1&&(c=a.utils.printSingleValue(b[0])):c=a.utils.printSingleValue(b)),c},a.utils={},a.utils.printSingleValue=function(b){var c=""+b;return b instanceof Date?c=a.dateFormat(b):"string"==typeof b?c=b:a.utils.isFloat(b)?c=a.utils.printSingleValue.fformat(b):a.utils.isInteger(b)&&(c=Math.round(b)),c},a.utils.printSingleValue.fformat=d3.format(".2f"),a.utils.add=function(a,b){if("string"==typeof b&&(b=b.replace("%","")),a instanceof Date){"string"==typeof b&&(b=+b);var c=new Date;return c.setTime(a.getTime()),c.setDate(a.getDate()+b),c}if("string"==typeof b){var d=+b/100;return a>0?a*(1+d):a*(1-d)}return a+b},a.utils.subtract=function(a,b){if("string"==typeof b&&(b=b.replace("%","")),a instanceof Date){"string"==typeof b&&(b=+b);var c=new Date;return c.setTime(a.getTime()),c.setDate(a.getDate()-b),c}if("string"==typeof b){var d=+b/100;return 0>a?a*(1+d):a*(1-d)}return a-b},a.utils.GroupStack=function(){function a(a){d[a]||(d[a]=[])}var b,c,d=[[]],e=[];this.setDataPoint=function(b,c,e){a(b),d[b][c]=e},this.getDataPoint=function(b,c){a(b);var e=d[b][c];return void 0===e&&(e=0),e},this.addGroup=function(a,c){return c||(c=b),e.push([a,c]),e.length-1},this.addNamedGroup=function(a,b,c){var d=this.addGroup(a,c);return e[d].name=b},this.getGroupByIndex=function(a){return e[a][0]},this.getAccessorByIndex=function(a){return e[a][1]},this.size=function(){return e.length},this.clear=function(){d=[],e=[]},this.setDefaultAccessor=function(a){b=a},this.getDataLayers=function(){return d},this.clearDataLayers=function(){d=[[]]},this.showGroups=function(a,b){b&&(c=!1),this.toggleGroups(a,!1)},this.hideGroups=function(a,b){b&&(c=!0),this.toggleGroups(a,!0)},this.toggleGroups=function(a,b){for(var c=0;c0&&e[b-1].hidden)){for(var f={index:b,points:[]},g=d[b],h=0;h-a.constants.NEGLIGIBLE_NUMBER},a.utils.groupMax=function(b,c){var d=d3.max(b.all(),function(a){return c(a)});return a.utils.isNegligible(d)&&(d=0),d},a.utils.groupMin=function(b,c){var d=d3.min(b.all(),function(a){return c(a)});return a.utils.isNegligible(d)&&(d=0),d},a.utils.nameToId=function(a){return a.toLowerCase().replace(/[\s]/g,"_").replace(/[\.']/g,"")},a.utils.appendOrSelect=function(a,b){var c=a.select(b);return c.empty()&&(c=a.append(b)),c},a.utils.createLegendable=function(a,b,c,d){var e={name:a._getGroupName(b,d),data:b};return"function"==typeof a.colors&&(e.color=a.colors()(c)),e},a.utils.safeNumber=function(b){return a.utils.isNumber(+b)?+b:0},a.events={current:null},a.events.trigger=function(b,c){return c?(a.events.current=b,setTimeout(function(){b==a.events.current&&b()},c),void 0):(b(),void 0)},a.cumulative={},a.cumulative.Base=function(){this._keyIndex=[],this._map={},this.sanitizeKey=function(a){return a+=""},this.clear=function(){this._keyIndex=[],this._map={}},this.size=function(){return this._keyIndex.length},this.getValueByKey=function(a){a=this.sanitizeKey(a);var b=this._map[a];return b},this.setValueByKey=function(a,b){return a=this.sanitizeKey(a),this._map[a]=b},this.indexOfKey=function(a){return a=this.sanitizeKey(a),this._keyIndex.indexOf(a)},this.addToIndex=function(a){a=this.sanitizeKey(a),this._keyIndex.push(a)},this.getKeyByIndex=function(a){return this._keyIndex[a]}},a.cumulative.Sum=function(){a.cumulative.Base.apply(this,arguments),this.add=function(a,b){b||(b=0),void 0===this.getValueByKey(a)?(this.addToIndex(a),this.setValueByKey(a,b)):this.setValueByKey(a,this.getValueByKey(a)+b)},this.minus=function(a,b){this.setValueByKey(a,this.getValueByKey(a)-b)},this.cumulativeSum=function(a){var b=this.indexOfKey(a);if(0>b)return 0;for(var c=0,d=0;b>=d;++d){var e=this.getKeyByIndex(d);c+=this.getValueByKey(e)}return c}},a.cumulative.Sum.prototype=new a.cumulative.Base,a.cumulative.CountUnique=function(){function b(a){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}a.cumulative.Base.apply(this,arguments),this.add=function(a,b){void 0===this.getValueByKey(a)&&(this.setValueByKey(a,{}),this.addToIndex(a)),void 0!==b&&(void 0===this.getValueByKey(a)[b]&&(this.getValueByKey(a)[b]=0),this.getValueByKey(a)[b]+=1)},this.minus=function(a,b){this.getValueByKey(a)[b]-=1,this.getValueByKey(a)[b]<=0&&delete this.getValueByKey(a)[b]},this.count=function(a){return b(this.getValueByKey(a))},this.cumulativeCount=function(a){var b=this.indexOfKey(a);if(0>b)return 0;for(var c=0,d=0;b>=d;++d){var e=this.getKeyByIndex(d);c+=this.count(e)}return c}},a.cumulative.CountUnique.prototype=new a.cumulative.Base,a.baseChart=function(b){function c(a,b,c){var d=a.anchor(),e="__names__";c&&c!=a.valueAccessor()||(c="default"),b[e]||(b[e]={}),b[e][d]||(b[e][d]={a:[],n:[]});var f=b[e][d].a.indexOf(c);return-1==f&&(f=b[e][d].a.length,b[e][d].a[f]=c,b[e][d].n[f]={name:""}),b[e][d].n[f]}function d(){return o=b.root().append("svg").attr("width",b.width()).attr("height",b.height())}function e(c){if(!b[c]||!b[c]())throw new a.errors.InvalidStateException("Mandatory attribute chart."+c+" is missing on chart[#"+b.anchorName()+"]")}function f(a){I.splice(I.indexOf(a),1),i(),b._invokeFilteredListener(a)}function g(a){I.push(a),i(),b._invokeFilteredListener(a)}function h(){I=[],i(),b._invokeFilteredListener(null)}function i(){if(b.dataSet()&&void 0!==b.dimension().filter){var a=J(b.dimension(),I);I=a?a:I}}function j(){for(var a=0;a=0}),b},K=function(){return l.all()};return b.width=function(a){return arguments.length?(r=d3.functor(a||q),b):r(n.node())},b.height=function(a){return arguments.length?(t=d3.functor(a||s),b):t(n.node())},b.dimension=function(a){return arguments.length?(k=a,b.expireCache(),b):k},b.data=function(a){return arguments.length?(K=d3.functor(a),b.expireCache(),b):K()},b.group=function(a,c){return arguments.length?(l=a,b.expireCache(),"string"==typeof c&&b._setGroupName(l,c),b):l},b._getGroupName=function(a,d){return c(b,a,d).name},b._setGroupName=function(a,d,e){c(b,a,e).name=d},b.ordering=function(a){return arguments.length?(w=a,b.expireCache(),b):w},b.computeOrderedGroups=function(a){var c=a?a:b.data().slice(0);if(c.length<2)return c;var d=crossfilter.quicksort.by(b.ordering());return d(c,0,c.length)},b.filterAll=function(){return b.filter(null)},b.dataSet=function(){return void 0!==k&&void 0!==l},b.select=function(a){return n.select(a)},b.selectAll=function(a){return n?n.selectAll(a):null},b.anchor=function(c,d){return arguments.length?(a.instanceOfChart(c)?(m=c.anchor(),n=c.root()):(m=c,n=d3.select(m),n.classed(a.constants.CHART_CLASS,!0),a.registerChart(b,d)),F=d,b):m},b.anchorName=function(){var a=b.anchor();return a&&a.id?a.id:a?a.replace("#",""):""},b.root=function(a){return arguments.length?(n=a,b):n},b.svg=function(a){return arguments.length?(o=a,b):o},b.resetSvg=function(){return b.select("svg").remove(),d()},b.filterPrinter=function(a){return arguments.length?(C=a,b):C},b.turnOnControls=function(){return n&&(b.selectAll(".reset").style("display",null),b.selectAll(".filter").text(C(b.filters())).style("display",null)),b},b.turnOffControls=function(){return n&&(b.selectAll(".reset").style("display","none"),b.selectAll(".filter").style("display","none").text(b.filter())),b},b.transitionDuration=function(a){return arguments.length?(B=a,b):B},b._mandatoryAttributes=function(a){return arguments.length?(E=a,b):E},b.render=function(){H.preRender(b),E.forEach(e);var a=b.doRender();return p&&p.render(),b.activateRenderlets("postRender"),a},b.activateRenderlets=function(a){b.transitionDuration()>0&&o?o.transition().duration(b.transitionDuration()).each("end",function(){j(),a&&H[a](b)}):(j(),a&&H[a](b))},b.redraw=function(){H.preRedraw(b);var a=b.doRedraw();return b.activateRenderlets("postRedraw"),a},b._invokeFilteredListener=function(a){void 0!==a&&H.filtered(b,a)},b._invokeZoomedListener=function(){H.zoomed(b)},b.hasFilter=function(a){return arguments.length?I.indexOf(a)>=0:I.length>0},b.filter=function(a){return arguments.length?(null===a?h():b.hasFilter(a)?f(a):g(a),null!==n&&b.hasFilter()?b.turnOnControls():b.turnOffControls(),b):I.length>0?I[0]:null},b.filters=function(){return I},b.highlightSelected=function(b){d3.select(b).classed(a.constants.SELECTED_CLASS,!0),d3.select(b).classed(a.constants.DESELECTED_CLASS,!1)},b.fadeDeselected=function(b){d3.select(b).classed(a.constants.SELECTED_CLASS,!1),d3.select(b).classed(a.constants.DESELECTED_CLASS,!0)},b.resetHighlight=function(b){d3.select(b).classed(a.constants.SELECTED_CLASS,!1),d3.select(b).classed(a.constants.DESELECTED_CLASS,!1)},b.onClick=function(c){var d=b.keyAccessor()(c);a.events.trigger(function(){b.filter(d),a.redrawAll(b.chartGroup())})},b.filterHandler=function(a){return arguments.length?(J=a,b):J},b.doRender=function(){return b},b.doRedraw=function(){return b},b.legendables=function(){return[]},b.legendHighlight=function(){},b.legendReset=function(){},b.keyAccessor=function(a){return arguments.length?(u=a,b):u},b.valueAccessor=function(a){return arguments.length?(v=a,b):v},b.label=function(a){return arguments.length?(x=a,y=!0,b):x},b.renderLabel=function(a){return arguments.length?(y=a,b):y},b.title=function(a){return arguments.length?(z=a,A=!0,b):z},b.renderTitle=function(a){return arguments.length?(A=a,b):A},b.renderlet=function(a){return D.push(a),b},b.chartGroup=function(a){return arguments.length?(F=a,b):F},b.expireCache=function(){return b},b.legend=function(a){return arguments.length?(p=a,p.parent(b),b):p},b.on=function(a,c){return H[a]=c,b},b},a.marginable=function(a){var b={top:10,right:50,bottom:30,left:30};return a.margins=function(c){return arguments.length?(b=c,a):b},a.effectiveWidth=function(){return a.width()-a.margins().left-a.margins().right},a.effectiveHeight=function(){return a.height()-a.margins().top-a.margins().bottom},a},a.coordinateGridChart=function(b){function c(a){b.elasticX()&&!b.isOrdinal()?v.domain([b.xAxisMin(),b.xAxisMax()]):b.isOrdinal()&&0===v.domain().length&&v.domain(b.computeOrderedGroups().map(function(a){return a.key})),b.isOrdinal()?b.prepareOrdinalXAxis():v.range([0,b.xAxisLength()]),E=E.scale(b.x()).orient("bottom"),d(a)}function d(c){var d=c.selectAll("g."+o);if(Q){d.empty()&&(d=c.insert("g",":first-child").attr("class",m+" "+o).attr("transform","translate("+b.yAxisX()+","+b.margins().top+")"));var e=E.tickValues()?E.tickValues():v.ticks(E.ticks()[0]),f=d.selectAll("line").data(e),g=f.enter().append("line").attr("x1",function(a){return v(a)}).attr("y1",b.xAxisY()-b.margins().top).attr("x2",function(a){return v(a)}).attr("y2",0).attr("opacity",0);a.transition(g,b.transitionDuration()).attr("opacity",1),a.transition(f,b.transitionDuration()).attr("x1",function(a){return v(a)}).attr("y1",b.xAxisY()-b.margins().top).attr("x2",function(a){return v(a)}).attr("y2",0),f.exit().remove()}else d.selectAll("line").remove()}function e(a){(void 0===y||b.elasticY())&&(y=d3.scale.linear(),y.domain([b.yAxisMin(),b.yAxisMax()]).rangeRound([b.yAxisHeight(),0])),y.range([b.yAxisHeight(),0]),J=J.scale(y).orient("left"),f(a)}function f(c){var d=c.selectAll("g."+n);if(P){var e=J.tickValues()?J.tickValues():y.ticks(J.ticks()[0]);d.empty()&&(d=c.insert("g",":first-child").attr("class",m+" "+n).attr("transform","translate("+b.yAxisX()+","+b.margins().top+")"));var f=d.selectAll("line").data(e),g=f.enter().append("line").attr("x1",1).attr("y1",function(a){return y(a)}).attr("x2",b.xAxisLength()).attr("y2",function(a){return y(a)}).attr("opacity",0);a.transition(g,b.transitionDuration()).attr("opacity",1),a.transition(f,b.transitionDuration()).attr("x1",1).attr("y1",function(a){return y(a)}).attr("x2",b.xAxisLength()).attr("y2",function(a){return y(a)}),f.exit().remove()}else d.selectAll("line").remove()}function g(){return b.xAxisY()-b.margins().top}function h(){return b.anchorName()+"-clip"}function i(){var c=a.utils.appendOrSelect(s,"defs"),d=a.utils.appendOrSelect(c,"clipPath").attr("id",h()),e=2*V;a.utils.appendOrSelect(d,"rect").attr("width",b.xAxisLength()+e).attr("height",b.yAxisHeight()+e)}function j(){U&&b.root().call(d3.behavior.zoom().x(b.x()).scaleExtent(S).on("zoom",function(){b.focus(b.x().domain()),b._invokeZoomedListener(),k()}))}function k(){if(C){var c=b.x().domain();if(T){var d=C.xOriginalDomain(),e=[c[0]d[1]?c[1]:d[1]];C.focus(e)}else C.focus(c);C.filter(null),C.filter(c),a.events.trigger(function(){a.redrawAll(b.chartGroup())})}}function l(a){return a instanceof Array&&a.length>1}var m="grid-line",n="horizontal",o="vertical",p="y-axis-label",q="x-axis-label",r=12;b=a.colorChart(a.marginable(a.baseChart(b))),b.colors(d3.scale.category10()),b._mandatoryAttributes().push("x");var s,t,u,v,w,x,y,z,A,B,C,D,E=d3.svg.axis(),F=a.units.integers,G=0,H=!1,I=0,J=d3.svg.axis(),K=0,L=!1,M=0,N=d3.svg.brush(),O=!0,P=!1,Q=!1,R=!1,S=[-10,100],T=!0,U=!1,V=0;return b.title(function(a){return a.data.key+": "+a.data.value}),b.rescale=function(){B=void 0,b.xUnitCount()},b.rangeChart=function(a){return arguments.length?(C=a,C.focusChart(b),b):C},b.zoomScale=function(a){return arguments.length?(S=a,b):S},b.zoomOutRestrict=function(a){return arguments.length?(T=a,b):T},b._generateG=function(a){return s=void 0===a?b.svg():a,t=s.append("g"),u=t.append("g").attr("class","chart-body").attr("transform","translate("+b.margins().left+", "+b.margins().top+")").attr("clip-path","url(#"+h()+")"),t},b.g=function(a){return arguments.length?(t=a,b):t},b.mouseZoomable=function(a){return arguments.length?(U=a,b):U},b.chartBodyG=function(a){return arguments.length?(u=a,b):u},b.x=function(a){return arguments.length?(v=a,w=v.domain(),b):v},b.xOriginalDomain=function(){return w},b.xUnits=function(a){return arguments.length?(F=a,b):F},b.xAxis=function(a){return arguments.length?(E=a,b):E},b.elasticX=function(a){return arguments.length?(H=a,b):H},b.xAxisPadding=function(a){return arguments.length?(G=a,b):G},b.xUnitCount=function(){if(void 0===B){var a=b.xUnits()(b.x().domain()[0],b.x().domain()[1],b.x().domain());B=a instanceof Array?a.length:a}return B},b.isOrdinal=function(){return b.xUnits()===a.units.ordinal},b.prepareOrdinalXAxis=function(a){a||(a=b.xUnitCount());for(var c=[],d=b.xAxisLength()/(a+1),e=d/2,f=0;a>f;f++)c[f]=e,e+=d;v.range(c)},b.renderXAxis=function(c){var d=c.selectAll("g.x");d.empty()&&(d=c.append("g").attr("class","axis x").attr("transform","translate("+b.margins().left+","+b.xAxisY()+")"));var e=c.selectAll("text."+q);e.empty()&&b.xAxisLabel()&&(e=c.append("text").attr("transform","translate("+b.xAxisLength()/2+","+(b.height()-I)+")").attr("class",q).attr("text-anchor","middle").text(b.xAxisLabel())),b.xAxisLabel()&&e.text()!=b.xAxisLabel()&&axisYLab.text(b.xAxisLabel()),a.transition(d,b.transitionDuration()).call(E)},b.xAxisY=function(){return b.height()-b.margins().bottom},b.xAxisLength=function(){return b.effectiveWidth()},b.xAxisLabel=function(a,c){return arguments.length?(x=a,b.margins().bottom-=I,I=void 0===c?r:c,b.margins().bottom+=I,b):x},b.renderYAxis=function(c){var d=c.selectAll("g.y");d.empty()&&(d=c.append("g").attr("class","axis y").attr("transform","translate("+b.yAxisX()+","+b.margins().top+")"));var e=c.selectAll("text."+p);e.empty()&&b.yAxisLabel()&&(e=c.append("text").attr("transform","translate("+M+","+b.yAxisHeight()/2+"),rotate(-90)").attr("class",p).attr("text-anchor","middle").text(b.yAxisLabel())),b.yAxisLabel()&&e.text()!=b.yAxisLabel()&&e.text(b.yAxisLabel()),a.transition(d,b.transitionDuration()).call(J)},b.yAxisX=function(){return b.margins().left},b.yAxisLabel=function(a,c){return arguments.length?(z=a,b.margins().left-=M,M=void 0===c?r:c,b.margins().left+=M,b):z},b.y=function(a){return arguments.length?(y=a,b):y},b.yAxis=function(a){return arguments.length?(J=a,b):J},b.elasticY=function(a){return arguments.length?(L=a,b):L},b.renderHorizontalGridLines=function(a){return arguments.length?(P=a,b):P},b.renderVerticalGridLines=function(a){return arguments.length?(Q=a,b):Q},b.xAxisMin=function(){var c=d3.min(b.data(),function(a){return b.keyAccessor()(a)});return a.utils.subtract(c,G)},b.xAxisMax=function(){var c=d3.max(b.data(),function(a){return b.keyAccessor()(a)});return a.utils.add(c,G)},b.yAxisMin=function(){var c=d3.min(b.data(),function(a){return b.valueAccessor()(a)});return c=a.utils.subtract(c,K)},b.yAxisMax=function(){var c=d3.max(b.data(),function(a){return b.valueAccessor()(a)});return c=a.utils.add(c,K)},b.yAxisPadding=function(a){return arguments.length?(K=a,b):K},b.yAxisHeight=function(){return b.effectiveHeight()},b.round=function(a){return arguments.length?(A=a,b):A},a.override(b,"filter",function(a){return arguments.length?(b._filter(a),a?b.brush().extent(a):b.brush().clear(),b):b._filter()}),b.brush=function(a){return arguments.length?(N=a,b):N},b.renderBrush=function(a){if(b.isOrdinal()&&(O=!1),O){N.on("brush",b._brushing);var c=a.append("g").attr("class","brush").attr("transform","translate("+b.margins().left+","+b.margins().top+")").call(N.x(b.x()));c.selectAll("rect").attr("height",g()),c.selectAll(".resize").append("path").attr("d",b.resizeHandlePath),b.hasFilter()&&b.redrawBrush(a)}},b.extendBrush=function(){var a=N.extent();return b.round()&&(a[0]=a.map(b.round())[0],a[1]=a.map(b.round())[1],t.select(".brush").call(N.extent(a))),a},b.brushIsEmpty=function(a){return N.empty()||!a||a[1]<=a[0]},b.brushHasNoLength=function(a){return a[0]instanceof Date&&a[1]instanceof Date?a[0].getTime()==a[1].getTime():a[0]==a[1]},b._brushing=function(){var c=b.extendBrush();b.redrawBrush(t),b.brushHasNoLength(c)||(b.brushIsEmpty(c)?a.events.trigger(function(){b.filter(null),a.redrawAll(b.chartGroup())}):a.events.trigger(function(){b.filter(null),b.filter([c[0],c[1]]),a.redrawAll(b.chartGroup())},a.constants.EVENT_DELAY))},b.redrawBrush=function(a){if(O){b.filter()&&b.brush().empty()&&b.brush().extent(b.filter());var c=a.select("g.brush");c.call(b.brush().x(b.x())),c.selectAll("rect").attr("height",g())}b.fadeDeselectedArea()},b.fadeDeselectedArea=function(){},b.resizeHandlePath=function(a){var b=+("e"==a),c=b?1:-1,d=g()/3;return"M"+.5*c+","+d+"A6,6 0 0 "+b+" "+6.5*c+","+(d+6)+"V"+(2*d-6)+"A6,6 0 0 "+b+" "+.5*c+","+2*d+"Z"+"M"+2.5*c+","+(d+8)+"V"+(2*d-8)+"M"+4.5*c+","+(d+8)+"V"+(2*d-8)},b.clipPadding=function(a){return arguments.length?(V=a,b):V},b.doRender=function(){return b.resetSvg(),b.dataSet()&&(b._generateG(),i(),c(b.g()),e(b.g()),b.plotData(),b.renderXAxis(b.g()),b.renderYAxis(b.g()),b.renderBrush(b.g()),j()),b},b.doRedraw=function(){return c(b.g()),e(b.g()),b.plotData(),b.elasticY()&&b.renderYAxis(b.g()),(b.elasticX()||R)&&b.renderXAxis(b.g()),b.redrawBrush(b.g()),b},b.subRender=function(){return b.dataSet()&&b.plotData(),b},b.brushOn=function(a){return arguments.length?(O=a,b):O},b.focus=function(a){R=!0,l(a)?b.x().domain(a):b.x().domain(b.xOriginalDomain()),b.rescale(),b.redraw(),l(a)||(R=!1)},b.refocused=function(){return R},b.focusChart=function(c){return arguments.length?(D=c,b.on("filtered",function(b){a.events.trigger(function(){D.focus(b.filter()),D.filter(b.filter()),a.redrawAll(b.chartGroup())})}),b):D},b},a.colorChart=function(b){var c=d3.scale.category20c(),d=[0,c.range().length],e=function(e){var f=d;"function"==typeof d&&(f=d.call(b));var g=f[0],h=f[1];if(isNaN(e)&&(e=0),!a.utils.isNumber(h))return c(e);var i=b.colors().range().length,j=(h-g)/i,k=Math.abs(Math.min(i-1,Math.round((e-g)/j)));return b.colors()(k)},f=function(a,b){return b};return b.colors=function(a){if(!arguments.length)return c;if(a instanceof Array){c=d3.scale.ordinal().range(a);for(var e=[],f=0;f=d[0]&&a.x<=d[d.length-1]};b.stackLayers().forEach(function(b){b.points.forEach(function(b){c(b)&&a.push(b)})})}else b.stackLayers().forEach(function(b){a=a.concat(b.points)});return a}function d(a,c){return b.getKeyAccessorByIndex(a)(c)}function e(a,c){return b.getValueAccessorByIndex(a)(c)}function f(a,b){for(var c=0;cg)&&(c=g)}return a.utils.subtract(c,b.xAxisPadding())},b.xAxisMax=function(){for(var c=null,d=b.allGroups(),e=0;ec)&&(c=g)}return a.utils.add(c,b.xAxisPadding())},b.calculateDataPointMatrixForAll=function(){k.clearDataLayers();for(var a=b.allGroups(),c=0;c=c)&&(d=0),d};var g=function(a){return b.label()(a)},h=function(a){return b.bubbleR(a)>d?1:0};b.doRenderLabel=function(c){if(b.renderLabel()){var d=c.select("text");d.empty()&&(d=c.append("text").attr("text-anchor","middle").attr("dy",".3em").on("click",b.onClick)),d.attr("opacity",0).text(g),a.transition(d,b.transitionDuration()).attr("opacity",h)}},b.doUpdateLabels=function(c){if(b.renderLabel()){var d=c.selectAll("text").text(g);a.transition(d,b.transitionDuration()).attr("opacity",h)}};var i=function(a){return b.title()(a)};return b.doRenderTitles=function(a){if(b.renderTitle()){var c=a.select("title");c.empty()&&a.append("title").text(i)}},b.doUpdateTitles=function(a){b.renderTitle()&&a.selectAll("title").text(i)},b.minRadiusWithLabel=function(a){return arguments.length?(d=a,b):d},b.maxBubbleRelativeSize=function(a){return arguments.length?(c=a,b):c},b.initBubbleColor=function(c,d){return this[a.constants.NODE_INDEX_NAME]=d,b.getColor(c,d)},b.updateBubbleColor=function(c){return b.getColor(c,this[a.constants.NODE_INDEX_NAME])},b.fadeDeselectedArea=function(){b.hasFilter()?b.selectAll("g."+b.BUBBLE_NODE_CLASS).each(function(a){b.isSelectedNode(a)?b.highlightSelected(this):b.fadeDeselected(this)}):b.selectAll("g."+b.BUBBLE_NODE_CLASS).each(function(){b.resetHighlight(this)})},b.isSelectedNode=function(a){return b.hasFilter(a.key)},b.onClick=function(c){var d=c.key;a.events.trigger(function(){b.filter(d),a.redrawAll(b.chartGroup())})},b},a.pieChart=function(b,c){function d(){if(C.dataSet()){var a=p();w=w?w:d3.min([C.width(),C.height()])/2;var b=C.buildArcs(),c=a(C._assembleCappedData());if(x){var d=x.selectAll("g."+z).data(c);e(d,b,c),j(c,b),n(d),o()}}}function e(a,b,c){var d=f(a);g(d,b),h(d),i(c,b)}function f(a){var b=a.enter().append("g").attr("class",function(a,b){return z+" _"+b});return b}function g(a,b){var c=a.append("path").attr("fill",function(a,b){return C.getColor(a,b)}).on("click",u).attr("d",function(a,c){return v(a,c,b)});c.transition().duration(C.transitionDuration()).attrTween("d",s)}function h(a){C.renderTitle()&&a.append("title").text(function(a){return C.title()(a)})}function i(b,c){if(C.renderLabel()){var d=x.selectAll("text."+z).data(b);d.exit().remove();var e=d.enter().append("text").attr("class",function(a,b){return z+" _"+b}).on("click",u);a.transition(e,C.transitionDuration()).attr("transform",function(a){a.innerRadius=C.innerRadius(),a.outerRadius=w;var b=c.centroid(a);return isNaN(b[0])||isNaN(b[1])?"translate(0,0)":"translate("+b+")"}).attr("text-anchor","middle").text(function(a){var b=a.data;return r(b)||q(a)?"":C.label()(a)})}}function j(a,b){k(a,b),l(a,b),m(a)}function k(b,c){var d=x.selectAll("g."+z).data(b).select("path").attr("d",function(a,b){return v(a,b,c)});a.transition(d,C.transitionDuration(),function(a){a.attrTween("d",s)}).attr("fill",function(a,b){return C.getColor(a,b)})}function l(b,c){if(C.renderLabel()){var d=x.selectAll("text."+z).data(b);a.transition(d,C.transitionDuration()).attr("transform",function(a){a.innerRadius=C.innerRadius(),a.outerRadius=w;var b=c.centroid(a);return isNaN(b[0])||isNaN(b[1])?"translate(0,0)":"translate("+b+")"}).attr("text-anchor","middle").text(function(a){var b=a.data;return r(b)||q(a)?"":C.label()(a)})}}function m(a){C.renderTitle()&&x.selectAll("g."+z).data(a).select("title").text(function(a){return C.title()(a)})}function n(a){a.exit().remove()}function o(){C.hasFilter()?C.selectAll("g."+z).each(function(a){C.isSelectedSlice(a)?C.highlightSelected(this):C.fadeDeselected(this)}):C.selectAll("g."+z).each(function(){C.resetHighlight(this)})}function p(){return d3.layout.pie().sort(null).value(function(a){return C.valueAccessor()(a)})}function q(a){var b=a.endAngle-a.startAngle;return isNaN(b)||B>b}function r(a){return 0===C.valueAccessor()(a)}function s(a){a.innerRadius=C.innerRadius();var b=this._current;t(b)&&(b={startAngle:0,endAngle:0});var c=d3.interpolate(b,a);return this._current=c(0),function(a){return v(c(a),0,C.buildArcs())}}function t(a){return!a||isNaN(a.startAngle)||isNaN(a.endAngle)}function u(a){C.onClick(a.data)}function v(a,b,c){var d=c(a,b);return d.indexOf("NaN")>=0&&(d="M0,0"),d}var w,x,y=.5,z="pie-slice",A=0,B=y,C=a.capped(a.colorChart(a.baseChart({})));return C.slicesCap=C.cap,C.label(function(a){return C.keyAccessor()(a.data)}),C.renderLabel(!0),C.title(function(a){return C.keyAccessor()(a.data)+": "+C.valueAccessor()(a.data)}),C.transitionDuration(350),C.doRender=function(){return C.resetSvg(),x=C.svg().append("g").attr("transform","translate("+C.cx()+","+C.cy()+")"),d(),C},C.innerRadius=function(a){return arguments.length?(A=a,C):A},C.radius=function(a){return arguments.length?(w=a,C):w},C.cx=function(){return C.width()/2},C.cy=function(){return C.height()/2},C.buildArcs=function(){return d3.svg.arc().outerRadius(w).innerRadius(A) +},C.isSelectedSlice=function(a){return C.hasFilter(C.keyAccessor()(a.data))},C.doRedraw=function(){return d(),C},C.minAngleForLabel=function(a){return arguments.length?(B=a,C):B},C.anchor(b,c)},a.barChart=function(b,c){function d(b){return a.utils.safeNumber(Math.abs(m.y()(b.y+b.y0)-m.y()(b.y0)))}function e(b,c){var e=b.selectAll("rect.bar").data(c.points);e.enter().append("rect").attr("class","bar").attr("fill",m.getColor).append("title").text(m.title()),m.isOrdinal()&&e.on("click",h),a.transition(e,m.transitionDuration()).attr("x",function(b){var c=m.x()(b.x);return(o||m.isOrdinal())&&(c-=j/2),a.utils.safeNumber(c)}).attr("y",function(b){var c=m.y()(b.y+b.y0);return b.y<0&&(c-=d(b)),a.utils.safeNumber(c)}).attr("width",j).attr("height",function(a){return d(a)}).select("title").text(m.title()),a.transition(e.exit(),m.transitionDuration()).attr("height",0).remove()}function f(){if(void 0===j){var a=m.isOrdinal()?g()+1:g(),b=Math.floor((m.xAxisLength()-(a-1)*n)/a);(1/0==b||isNaN(b)||k>b)&&(b=k),j=b}}function g(){return void 0===i&&(i=m.xUnitCount()),i}function h(a){m.onClick(a.data)}var i,j,k=1,l=2,m=a.stackableChart(a.coordinateGridChart({})),n=l,o=!1;return a.override(m,"rescale",function(){m._rescale(),i=void 0,j=void 0,g()}),m.plotData=function(){var a=m.chartBodyG().selectAll("g.stack").data(m.stackLayers());f(),a.enter().append("g").attr("class",function(a,b){return"stack _"+b}),a.each(function(a,b){var c=d3.select(this);e(c,a,b)}),m.stackLayers(null)},m.fadeDeselectedArea=function(){var b=m.chartBodyG().selectAll("rect.bar"),c=m.brush().extent();if(m.isOrdinal())m.hasFilter()?(b.classed(a.constants.SELECTED_CLASS,function(a){return m.hasFilter(m.keyAccessor()(a.data))}),b.classed(a.constants.DESELECTED_CLASS,function(a){return!m.hasFilter(m.keyAccessor()(a.data))})):(b.classed(a.constants.SELECTED_CLASS,!1),b.classed(a.constants.DESELECTED_CLASS,!1));else if(m.brushIsEmpty(c))b.classed(a.constants.DESELECTED_CLASS,!1);else{var d=c[0],e=c[1];b.classed(a.constants.DESELECTED_CLASS,function(a){var b=m.keyAccessor()(a.data);return d>b||b>=e})}},m.centerBar=function(a){return arguments.length?(o=a,m):o},m.gap=function(a){return arguments.length?(n=a,m):n},m.extendBrush=function(){var a=m.brush().extent();return m.round()&&!o&&(a[0]=a.map(m.round())[0],a[1]=a.map(m.round())[1],m.chartBodyG().select(".brush").call(m.brush().extent(a))),a},m.legendHighlight=function(a){m.select(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!0),m.select(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!0)},m.legendReset=function(a){m.selectAll(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!1),m.selectAll(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!1)},m.anchor(b,c)},a.lineChart=function(b,c){function d(b,c){var d=d3.svg.line().x(function(a){return s.x()(a.x)}).y(function(a){return s.y()(a.y+a.y0)}).interpolate(v).tension(w);m&&d.defined(m),b.append("path").attr("class","line").attr("stroke",s.getColor).attr("fill",s.getColor),a.transition(c.select("path.line"),s.transitionDuration()).attr("d",function(a){return f(d(a.points))})}function e(b,c){if(t){var d=d3.svg.area().x(function(a){return s.x()(a.x)}).y(function(a){return s.y()(a.y+a.y0)}).y0(function(a){return s.y()(a.y0)}).interpolate(v).tension(w);m&&d.defined(m),b.append("path").attr("class","area").attr("fill",s.getColor).attr("d",function(a){return f(d(a.points))}),a.transition(c.select("path.area"),s.transitionDuration()).attr("d",function(a){return f(d(a.points))})}}function f(a){return!a||a.indexOf("NaN")>=0?"M0,0":a}function g(b,c){if(!s.brushOn()){var d=o+"-list",e=b.select("g."+d);e.empty()&&(e=b.append("g").attr("class",d)),c.each(function(b,c){var d=d3.select(this),f=d.datum().points,g=e.select("g."+o+"._"+c);g.empty()&&(g=e.append("g").attr("class",o+" _"+c)),h(g);var m=g.selectAll("circle."+p).data(f);m.enter().append("circle").attr("class",p).attr("r",u).attr("fill",s.getColor).style("fill-opacity",1e-6).style("stroke-opacity",1e-6).on("mousemove",function(){var a=d3.select(this);i(a),j(a,g)}).on("mouseout",function(){var a=d3.select(this);k(a),l(g)}).append("title").text(s.title()),m.attr("cx",function(b){return a.utils.safeNumber(s.x()(b.x))}).attr("cy",function(b){return a.utils.safeNumber(s.y()(b.y+b.y0))}).select("title").text(s.title()),m.exit().remove()})}}function h(a){var b=a.select("path."+q).empty()?a.append("path").attr("class",q):a.select("path."+q);b.style("display","none").attr("stroke-dasharray","5,5");var c=a.select("path."+r).empty()?a.append("path").attr("class",r):a.select("path."+r);c.style("display","none").attr("stroke-dasharray","5,5")}function i(a){return a.style("fill-opacity",.8),a.style("stroke-opacity",.8),a}function j(a,b){var c=a.attr("cx"),d=a.attr("cy");b.select("path."+q).style("display","").attr("d","M0 "+d+"L"+c+" "+d),b.select("path."+r).style("display","").attr("d","M"+c+" "+s.yAxisHeight()+"L"+c+" "+d)}function k(a){a.style("fill-opacity",1e-6).style("stroke-opacity",1e-6)}function l(a){a.select("path."+q).style("display","none"),a.select("path."+r).style("display","none")}var m,n=5,o="dc-tooltip",p="dot",q="yRef",r="xRef",s=a.stackableChart(a.coordinateGridChart({})),t=!1,u=n,v="linear",w=.7;return s.transitionDuration(500),s.plotData=function(){var a=s.chartBodyG(),b=a.selectAll("g.stack-list");b.empty()&&(b=a.append("g").attr("class","stack-list"));var c=b.selectAll("g.stack").data(s.stackLayers()),f=c.enter().append("g").attr("class",function(a,b){return"stack _"+b});d(f,c),e(f,c),g(a,c),s.stackLayers(null)},s.interpolate=function(a){return arguments.length?(v=a,s):v},s.tension=function(a){return arguments.length?(w=a,s):w},s.defined=function(a){return arguments.length?(m=a,s):m},s.renderArea=function(a){return arguments.length?(t=a,s):t},s.dotRadius=function(a){return arguments.length?(u=a,s):u},s.legendHighlight=function(a){s.selectAll(".chart-body").selectAll("path").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!0),s.selectAll(".chart-body").selectAll("path").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!0)},s.legendReset=function(a){s.selectAll(".chart-body").selectAll("path").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!1),s.selectAll(".chart-body").selectAll("path").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!1)},s.anchor(b,c)},a.dataCount=function(b,c){var d=d3.format(",d"),e=a.baseChart({});return e.doRender=function(){return e.selectAll(".total-count").text(d(e.dimension().size())),e.selectAll(".filter-count").text(d(e.group().value())),e},e.doRedraw=function(){return e.doRender()},e.anchor(b,c)},a.dataTable=function(b,c){function d(){var a=l.root().selectAll("tbody").data(e(),function(a){return l.keyAccessor()(a)}),b=a.enter().append("tbody");return b.append("tr").attr("class",k).append("td").attr("class",h).attr("colspan",n.length).html(function(a){return l.keyAccessor()(a)}),a.exit().remove(),b}function e(){g||(g=crossfilter.quicksort.by(o));var a=l.dimension().top(m);return d3.nest().key(l.group()).sortKeys(p).sortValues(p).entries(g(a,0,a.length))}function f(a){var b=a.order().selectAll("tr."+i).data(function(a){return a.values}),c=b.enter().append("tr").attr("class",i);return n.forEach(function(a,b){c.append("td").attr("class",j+" _"+b).html(a)}),b.exit().remove(),b}var g,h="dc-table-label",i="dc-table-row",j="dc-table-column",k="dc-table-group",l=a.baseChart({}),m=25,n=[],o=function(a){return a},p=d3.ascending;return l.doRender=function(){return l.selectAll("tbody").remove(),f(d()),l},l.doRedraw=function(){return l.doRender()},l.size=function(a){return arguments.length?(m=a,l):m},l.columns=function(a){return arguments.length?(n=a,l):n},l.sortBy=function(a){return arguments.length?(o=a,l):o},l.order=function(a){return arguments.length?(p=a,l):p},l.anchor(b,c)},a.bubbleChart=function(b,c){function d(b){var c=b.enter().append("g");c.attr("class",i.BUBBLE_NODE_CLASS).attr("transform",k).append("circle").attr("class",function(a,b){return i.BUBBLE_CLASS+" _"+b}).on("click",i.onClick).attr("fill",i.initBubbleColor).attr("r",0),a.transition(b,i.transitionDuration()).attr("r",function(a){return i.bubbleR(a)}).attr("opacity",function(a){return i.bubbleR(a)>0?1:0}),i.doRenderLabel(c),i.doRenderTitles(c)}function e(b){a.transition(b,i.transitionDuration()).attr("transform",k).selectAll("circle."+i.BUBBLE_CLASS).attr("fill",i.updateBubbleColor).attr("r",function(a){return i.bubbleR(a)}).attr("opacity",function(a){return i.bubbleR(a)>0?1:0}),i.doUpdateLabels(b),i.doUpdateTitles(b)}function f(a){a.exit().remove()}function g(a){var b=i.x()(i.keyAccessor()(a));return isNaN(b)&&(b=0),b}function h(a){var b=i.y()(i.valueAccessor()(a));return isNaN(b)&&(b=0),b}var i=a.abstractBubbleChart(a.coordinateGridChart({})),j=!1;i.transitionDuration(750);var k=function(a){return"translate("+g(a)+","+h(a)+")"};return i.elasticRadius=function(a){return arguments.length?(j=a,i):j},i.plotData=function(){j&&i.r().domain([i.rMin(),i.rMax()]),i.r().range([i.MIN_RADIUS,i.xAxisLength()*i.maxBubbleRelativeSize()]);var a=i.chartBodyG().selectAll("g."+i.BUBBLE_NODE_CLASS).data(i.data());d(a),e(a),f(a),i.fadeDeselectedArea()},i.renderBrush=function(){},i.redrawBrush=function(){i.fadeDeselectedArea()},i.anchor(b,c)},a.compositeChart=function(b,c){function d(a,b){a._generateG(j.g()),a.g().attr("class",i+" _"+b)}function e(){for(var a=[],b=0;b1?b.push.apply(b,e):b.push(a.utils.createLegendable(c,c.group(),d,c.valueAccessor()))}),b},j.legendHighlight=function(a){for(var b=0;b0&&(a[0]=0),q=d3.scale.linear().domain(a).range([0,x.effectiveWidth()]),y.scale(q)}}function e(){var b=p.select("g.axis");d(),b.empty()&&(b=p.append("g").attr("class","axis").attr("transform","translate(0, "+x.effectiveHeight()+")")),a.transition(b,x.transitionDuration()).call(y)}function f(){p.selectAll("g.tick").select("line.grid-line").remove(),p.selectAll("g.tick").append("line").attr("class","grid-line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",function(){return-x.effectiveHeight()})}function g(){s=x._assembleCappedData(),e(),f();var a=p.selectAll("g."+w).data(s);h(a),i(a),j(a)}function h(a){var b=a.enter().append("g").attr("class",function(a,b){return w+" _"+b});b.append("rect").attr("width",0),l(b),m(a)}function i(a){a.exit().remove()}function j(b){var c=s.length,d=(x.effectiveHeight()-(c+1)*v)/c,e=b.attr("transform",function(a,b){return"translate(0,"+((b+1)*v+b*d)+")"}).select("rect").attr("height",d).attr("fill",x.getColor).on("click",n).classed("deselected",function(a){return x.hasFilter()?!x.isSelectedRow(a):!1}).classed("selected",function(a){return x.hasFilter()?x.isSelectedRow(a):!1});a.transition(e,x.transitionDuration()).attr("width",function(a){var b=q(0)==-1/0?q(1):q(0);return Math.abs(b-q(x.valueAccessor()(a)))}).attr("transform",o),k(b),m(b)}function k(a){x.renderTitle()&&(a.selectAll("title").remove(),a.append("title").text(function(a){return x.title()(a)}))}function l(a){x.renderLabel()&&a.append("text").on("click",n)}function m(b){if(x.renderLabel()){var c=b.select("text").attr("x",t).attr("y",u).on("click",n).attr("class",function(a,b){return w+" _"+b}).text(function(a){return x.label()(a)});a.transition(c,x.transitionDuration()).attr("transform",o)}}function n(a){x.onClick(a)}function o(a){var b=q(x.valueAccessor()(a)),c=q(0),d=b>c?c:b;return"translate("+d+",0)"}var p,q,r,s,t=10,u=15,v=5,w="row",x=a.capped(a.marginable(a.colorChart(a.baseChart({})))),y=d3.svg.axis().orient("bottom");return x.rowsCap=x.cap,x.doRender=function(){return x.resetSvg(),p=x.svg().append("g").attr("transform","translate("+x.margins().left+","+x.margins().top+")"),g(),x},x.title(function(a){return x.keyAccessor()(a)+": "+x.valueAccessor()(a)}),x.label(function(a){return x.keyAccessor()(a)}),x.x=function(a){return arguments.length?(q=a,x):q},x.doRedraw=function(){return g(),x},x.xAxis=function(){return y},x.gap=function(a){return arguments.length?(v=a,x):v},x.elasticX=function(a){return arguments.length?(r=a,x):r},x.labelOffsetX=function(a){return arguments.length?(t=a,x):t},x.labelOffsetY=function(a){return arguments.length?(u=a,x):u},x.isSelectedRow=function(a){return x.hasFilter(x.keyAccessor()(a))},x.anchor(b,c)},a.legend=function(){function a(){return i+h}var b,c,d=2,e={},f=0,g=0,h=12,i=5;return e.parent=function(a){return arguments.length?(b=a,e):b},e.render=function(){c=b.svg().append("g").attr("class","dc-legend").attr("transform","translate("+f+","+g+")");var e=c.selectAll("g.dc-legend-item").data(b.legendables()).enter().append("g").attr("class","dc-legend-item").attr("transform",function(b,c){return"translate(0,"+c*a()+")"}).on("mouseover",function(a){b.legendHighlight(a)}).on("mouseout",function(a){b.legendReset(a)});e.append("rect").attr("width",h).attr("height",h).attr("fill",function(a){return a.color}),e.append("text").text(function(a){return a.name}).attr("x",h+d).attr("y",function(){return h/2+(this.clientHeight?this.clientHeight:13)/2-2})},e.x=function(a){return arguments.length?(f=a,e):f},e.y=function(a){return arguments.length?(g=a,e):g},e.gap=function(a){return arguments.length?(i=a,e):i},e.itemHeight=function(a){return arguments.length?(h=a,e):h},e},a.capped=function(b){var c=1/0,d="Others",e=function(a){var c=d3.sum(a,b.valueAccessor()),e=b.data(),f=d3.sum(e,b.valueAccessor()),g=a.map(b.keyAccessor()),h=e.map(b.keyAccessor()),i=d3.set(g),j=h.filter(function(a){return!i.has(a)});f>c&&a.push({others:j,key:d,value:f-c})};return b._assembleCappedData=function(){if(1/0==c)return b.computeOrderedGroups();var a=b.group().top(c);return a=b.computeOrderedGroups(a),e&&e(a),a},b.cap=function(a){return arguments.length?(c=a,b):c},b.othersLabel=function(a){return arguments.length?(d=a,b):d},b.othersGrouper=function(a){return arguments.length?(e=a,b):e},a.override(b,"onClick",function(a){a.others&&a.others.forEach(function(a){b.filter(a)}),b._onClick(a)}),b},a.scatterPlot=function(b,c){var d=a.coordinateGridChart({});return d.plotData=function(){d.chartBodyG().selectAll("path.dc-symbol").data(d.data()).enter().append("path").attr("class","dc-symbol").attr("transform",function(a){return"translate("+d.x()(d.keyAccessor()(a))+","+d.y()(d.valueAccessor()(a))+")"}).attr("d",d3.svg.symbol())},d.anchor(b,c)},a.numberDisplay=function(b,c){var d="number-display",e=d3.format(".2s"),f=a.baseChart({});return f._mandatoryAttributes(["group"]),f.value=function(){return f.data()},f.data(function(){var a=f.group().all&&f.group().all()[0]||f.group().value();return f.valueAccessor()(a)}),f.transitionDuration(250),f.doRender=function(){var a=f.value(),b=f.selectAll("."+d);return b.empty()&&(b=b.data([0]).enter().append("span").attr("class",d)),b.transition().duration(f.transitionDuration()).ease("quad-out-in").tween("text",function(){var b=d3.interpolateNumber(this.lastValue||0,a);return this.lastValue=a,function(a){this.textContent=f.formatNumber()(b(a))}}),f},f.doRedraw=function(){return f.doRender()},f.formatNumber=function(a){return arguments.length?(e=a,f):e},f.anchor(b,c)},a.heatMap=function(b,c){function d(a,b,c){return!b||c[b-1]!=a}var e,f,g,h,i=function(a,b){return b},j=d3.scale.quantize().range(["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]),k=a.coordinateGridChart({});return k._mandatoryAttributes(["group"]),k.title(i),k.boxOnClick=function(){},k.xAxisOnClick=function(){},k.yAxisOnClick=function(){},k.rows=function(a){if(arguments.length)return g=a,k;if(g)return g;var b=k.data().map(k.valueAccessor());return b.sort(d3.ascending),d3.scale.ordinal().domain(b.filter(d))},k.cols=function(a){if(arguments.length)return f=a,k;if(f)return f;var b=k.data().map(k.keyAccessor());return b.sort(d3.ascending),d3.scale.ordinal().domain(b.filter(d))},k.fill=function(a){return arguments.length?(h=a,k):h?h:j.domain(d3.extent(k.data(),i))},k.fillAccessor=function(a){return arguments.length?(i=a,k):i},k.doRender=function(){return k.resetSvg(),e=k.svg().append("g").attr("class","heatmap").attr("transform","translate("+k.margins().left+","+k.margins().top+")"),k.doRedraw()},k.doRedraw=function(){var b=k.rows(),c=k.cols(),d=k.fill(),f=b.domain().length,g=c.domain().length,h=Math.floor(k.effectiveWidth()/g),j=Math.floor(k.effectiveHeight()/f);c.rangeRoundBands([0,k.effectiveWidth()]),b.rangeRoundBands([k.effectiveHeight(),0]);var l=e.selectAll("g.box-group").data(k.data(),function(a,b){return k.keyAccessor()(a,b)+"\x00"+k.valueAccessor()(a,b)}),m=l.enter().append("g").attr("class","box-group");m.append("rect").attr("fill","white").on("click",k.boxOnClick),m.append("title").text(function(a){return k.title()(a)}),a.transition(l.select("rect"),k.transitionDuration()).attr("class","heat-box").attr("x",function(a,b){return c(k.keyAccessor()(a,b))}).attr("y",function(a,c){return b(k.valueAccessor()(a,c))}).attr("rx",.15*h).attr("ry",.15*j).attr("fill",function(a,b){return d(i(a,b))}).attr("width",h).attr("height",j),l.exit().remove();var n=e.selectAll("g.cols");n.empty()&&(n=e.append("g").attr("class","cols axis")),n.selectAll("text").data(c.domain()).enter().append("text").attr("x",function(a){return c(a)+h/2}).style("text-anchor","middle").attr("y",k.effectiveHeight()).attr("dy",12).on("click",k.xAxisOnClick).text(function(a){return a});var o=e.selectAll("g.rows");o.empty()&&(o=e.append("g").attr("class","rows axis")),o.selectAll("text").data(b.domain()).enter().append("text").attr("y",function(a){return b(a)+j/2}).attr("dy",6).style("text-anchor","end").attr("x",0).attr("dx",-2).on("click",k.yAxisOnClick).text(function(a){return a})},k.anchor(b,c)},function(){function a(a){return[0,a.length-1]}function b(a){return[d3.quantile(a,.25),d3.quantile(a,.5),d3.quantile(a,.75)]}d3.box=function(){function c(a){a.each(function(a,b){a=a.map(h).sort(d3.ascending);var c=d3.select(this),l=a.length,m=a[0],n=a[l-1],o=a.quartiles=j(a),p=i&&i.call(this,a,b),q=p&&p.map(function(b){return a[b]}),r=p?d3.range(0,p[0]).concat(d3.range(p[1]+1,l)):d3.range(l),s=d3.scale.linear().domain(g&&g.call(this,a,b)||[m,n]).range([e,0]),t=this.__chart__||d3.scale.linear().domain([0,1/0]).range(s.range());this.__chart__=s;var u=c.selectAll("line.center").data(q?[q]:[]);u.enter().insert("line","rect").attr("class","center").attr("x1",d/2).attr("y1",function(a){return t(a[0])}).attr("x2",d/2).attr("y2",function(a){return t(a[1])}).style("opacity",1e-6).transition().duration(f).style("opacity",1).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}),u.transition().duration(f).style("opacity",1).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}),u.exit().transition().duration(f).style("opacity",1e-6).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}).remove();var v=c.selectAll("rect.box").data([o]);v.enter().append("rect").attr("class","box").attr("x",0).attr("y",function(a){return t(a[2])}).attr("width",d).attr("height",function(a){return t(a[0])-t(a[2])}).transition().duration(f).attr("y",function(a){return s(a[2])}).attr("height",function(a){return s(a[0])-s(a[2])}),v.transition().duration(f).attr("y",function(a){return s(a[2])}).attr("height",function(a){return s(a[0])-s(a[2])});var w=c.selectAll("line.median").data([o[1]]);w.enter().append("line").attr("class","median").attr("x1",0).attr("y1",t).attr("x2",d).attr("y2",t).transition().duration(f).attr("y1",s).attr("y2",s),w.transition().duration(f).attr("y1",s).attr("y2",s);var x=c.selectAll("line.whisker").data(q||[]);x.enter().insert("line","circle, text").attr("class","whisker").attr("x1",0).attr("y1",t).attr("x2",d).attr("y2",t).style("opacity",1e-6).transition().duration(f).attr("y1",s).attr("y2",s).style("opacity",1),x.transition().duration(f).attr("y1",s).attr("y2",s).style("opacity",1),x.exit().transition().duration(f).attr("y1",s).attr("y2",s).style("opacity",1e-6).remove();var y=c.selectAll("circle.outlier").data(r,Number);y.enter().insert("circle","text").attr("class","outlier").attr("r",5).attr("cx",d/2).attr("cy",function(b){return t(a[b])}).style("opacity",1e-6).transition().duration(f).attr("cy",function(b){return s(a[b])}).style("opacity",1),y.transition().duration(f).attr("cy",function(b){return s(a[b])}).style("opacity",1),y.exit().transition().duration(f).attr("cy",function(b){return s(a[b])}).style("opacity",1e-6).remove();var z=k||s.tickFormat(8),A=c.selectAll("text.box").data(o);A.enter().append("text").attr("class","box").attr("dy",".3em").attr("dx",function(a,b){return 1&b?6:-6}).attr("x",function(a,b){return 1&b?d:0}).attr("y",t).attr("text-anchor",function(a,b){return 1&b?"start":"end"}).text(z).transition().duration(f).attr("y",s),A.transition().duration(f).text(z).attr("y",s);var B=c.selectAll("text.whisker").data(q||[]);B.enter().append("text").attr("class","whisker").attr("dy",".3em").attr("dx",6).attr("x",d).attr("y",t).text(z).style("opacity",1e-6).transition().duration(f).attr("y",s).style("opacity",1),B.transition().duration(f).text(z).attr("y",s).style("opacity",1),B.exit().transition().duration(f).attr("y",s).style("opacity",1e-6).remove()}),d3.timer.flush()}var d=1,e=1,f=0,g=null,h=Number,i=a,j=b,k=null;return c.width=function(a){return arguments.length?(d=a,c):d},c.height=function(a){return arguments.length?(e=a,c):e},c.tickFormat=function(a){return arguments.length?(k=a,c):k},c.duration=function(a){return arguments.length?(f=a,c):f},c.domain=function(a){return arguments.length?(g=null==a?a:d3.functor(a),c):g},c.value=function(a){return arguments.length?(h=a,c):h},c.whiskers=function(a){return arguments.length?(i=a,c):i},c.quartiles=function(a){return arguments.length?(j=a,c):j},c}}(),a.boxPlot=function(b,c){function d(){return g.group().all().map(function(a){return a.map=function(){return g.valueAccessor()(a)},a})}function e(a){return function(b){for(var c=b.quartiles[0],d=b.quartiles[2],e=(d-c)*a,f=-1,g=b.length;b[++f]d+e;);return[f,g]}}var f,g=a.coordinateGridChart({}),h=1.5,i=e,j=i(h),k=d3.box();return g.yAxisPadding(12),g.plotData=function(){f=.2*g.effectiveWidth()/(g.xUnitCount()+1),k.whiskers(j).width(f).height(g.effectiveHeight()).domain(g.y().domain());var a=Array.prototype.slice.call(g.x().domain(),0);g.chartBodyG().selectAll("g.box").data(d()).enter().append("g").attr("class","box").attr("transform",function(a,b){return"translate("+(g.x()(b)-f/2)+",0)"}).call(k),g.x().domain(a)},g.yAxisMin=function(){var b=d3.min(g.group().all(),function(a){return d3.min(g.valueAccessor()(a))});return b=a.utils.subtract(b,g.yAxisPadding())},g.yAxisMax=function(){var b=d3.max(g.group().all(),function(a){return d3.max(g.valueAccessor()(a))});return b=a.utils.add(b,g.yAxisPadding())},g.anchor(b,c)},a}(); //# sourceMappingURL=dc.min.js.map \ No newline at end of file diff --git a/dc.min.js.map b/dc.min.js.map index 2db2cd498..5ae2aaa85 100644 --- a/dc.min.js.map +++ b/dc.min.js.map @@ -1 +1 @@ -{"version":3,"file":"dc.min.js","sources":["dc.js"],"names":["dc","version","constants","CHART_CLASS","DEBUG_GROUP_CLASS","STACK_CLASS","DESELECTED_CLASS","SELECTED_CLASS","NODE_INDEX_NAME","GROUP_INDEX_NAME","DEFAULT_CHART_GROUP","EVENT_DELAY","NEGLIGIBLE_NUMBER","_renderlet","chartRegistry","initializeChartGroup","group","_chartMap","has","chart","e","indexOf","register","push","clear","list","registerChart","hasChart","deregisterAllCharts","filterAll","charts","i","length","renderAll","render","redrawAll","redraw","transition","selections","duration","callback","undefined","s","Function","units","integers","Math","abs","ordinal","domain","fp","precision","_f","d","resolution","utils","isNegligible","floor","ceil","round","n","override","obj","functionName","newFunction","existingFunction","renderlet","_","arguments","instanceOfChart","o","Object","__dc_flag__","errors","Exception","msg","_msg","this","message","toString","InvalidStateException","apply","dateFormat","d3","time","format","printers","filters","filter","Array","printSingleValue","Date","isFloat","fformat","isInteger","add","l","r","replace","setTime","getTime","setDate","getDate","percentage","subtract","GroupStack","initializeDataLayer","_dataLayers","_defaultAccessor","_groups","setDataPoint","layerIndex","pointIndex","data","getDataPoint","x","y","dataPoint","addGroup","accessor","getGroupByIndex","index","getAccessorByIndex","size","setDefaultAccessor","retriever","getDataLayers","clearDataLayers","toLayers","layers","layer","points","dataPoints","j","isNumber","max","groupMax","all","groupMin","min","nameToId","name","toLowerCase","appendOrSelect","parent","element","select","empty","append","createLegendable","legendable","_getGroupName","colors","color","safeNumber","events","current","trigger","closure","delay","setTimeout","cumulative","Base","_keyIndex","_map","sanitizeKey","key","getValueByKey","value","setValueByKey","indexOfKey","addToIndex","getKeyByIndex","Sum","minus","cumulativeSum","keyIndex","cumulativeValue","k","prototype","CountUnique","hashSize","hash","hasOwnProperty","count","cumulativeCount","baseChart","_chart","groupName","g","c","anchor","valueAccessor","a","generateSvg","_svg","root","attr","width","height","checkForMandatoryAttributes","anchorName","removeFilter","_filters","splice","applyFilters","_invokeFilteredListener","addFilter","resetFilters","dataSet","dimension","fs","_filterHandler","runAllRenderlets","_renderlets","_dimension","_group","_anchor","_root","_legend","_width","_height","_keyAccessor","_valueAccessor","_ordering","p","_label","_renderLabel","_title","_renderTitle","_transitionDuration","_filterPrinter","_mandatoryAttributes","_chartGroup","NULL_LISTENER","_listeners","preRender","postRender","preRedraw","postRedraw","filtered","zoomed","filterFunction","_data","w","h","expireCache","functor","_setGroupName","ordering","computeOrderedGroups","arr","slice","sort","crossfilter","quicksort","by","selectAll","chartGroup","classed","id","svg","resetSvg","remove","filterPrinter","turnOnControls","style","text","turnOffControls","transitionDuration","forEach","result","doRender","activateRenderlets","event","each","doRedraw","f","_invokeZoomedListener","hasFilter","highlightSelected","fadeDeselected","resetHighlight","onClick","keyAccessor","filterHandler","legendables","legendHighlight","legendReset","label","renderLabel","title","renderTitle","legend","on","listener","marginable","_margin","top","right","bottom","left","margins","m","effectiveWidth","effectiveHeight","coordinateGridChart","prepareXAxis","elasticX","isOrdinal","_x","xAxisMin","xAxisMax","map","kv","prepareOrdinalXAxis","range","xAxisLength","_xAxis","scale","orient","renderVerticalGridLines","gridLineG","VERTICAL_CLASS","_renderVerticalGridLine","insert","GRID_LINE_CLASS","yAxisX","ticks","tickValues","lines","linesGEnter","enter","xAxisY","exit","prepareYAxis","_y","elasticY","linear","yAxisMin","yAxisMax","rangeRound","yAxisHeight","_yAxis","renderHorizontalGridLines","HORIZONTAL_CLASS","_renderHorizontalGridLine","brushHeight","getClipPathId","generateClipPath","defs","_parent","chartBodyClip","padding","_clipPadding","enableMouseZoom","_mouseZoomable","call","behavior","zoom","scaleExtent","_zoomScale","focus","updateRangeSelChart","_rangeChart","refDom","_zoomOutRestrict","origDom","xOriginalDomain","newDom","hasRangeSelected","Y_AXIS_LABEL_CLASS","X_AXIS_LABEL_CLASS","DEFAULT_AXIS_LABLEL_PADDING","colorChart","category10","_g","_chartBodyG","_xOriginalDomain","_xAxisLabel","_yAxisLabel","_round","_unitCount","_focusChart","axis","_xUnits","_xAxisPadding","_xElasticity","_xAxisLabelPadding","_yAxisPadding","_yElasticity","_yAxisLabelPadding","_brush","brush","_brushOn","_refocused","rescale","xUnitCount","rangeChart","focusChart","zoomScale","zoomOutRestrict","_generateG","mouseZoomable","z","chartBodyG","xUnits","xAxis","xAxisPadding","increment","currentPosition","renderXAxis","axisXG","axisXLab","xAxisLabel","axisYLab","pad","renderYAxis","axisYG","yAxisLabel","yAxis","yAxisPadding","_filter","extent","renderBrush","_brushing","gBrush","resizeHandlePath","redrawBrush","extendBrush","brushIsEmpty","brushHasNoLength","fadeDeselectedArea","clipPadding","plotData","subRender","brushOn","refocused","_colors","category20c","_colorDomain","_colorCalculator","minValue","maxValue","isNaN","colorsLength","denominator","colorValue","_colorAccessor","colorCalculator","getColor","colorAccessor","colorDomain","stackableChart","flattenStack","test","xDomain","domainSet","set","stackLayers","concat","getKeyFromData","groupIndex","getKeyAccessorByIndex","getValueFromData","getValueAccessorByIndex","calculateDataPointMatrix","dataIndex","_groupStack","_allGroups","_allValueAccessors","_allKeyAccessors","_stackLayers","_stackLayout","layout","stack","offset","order","values","p2","allGroups","allValueAccessors","y0","allKeyAccessors","calculateDataPointMatrixForAll","groups","getChartStack","stackLayout","items","abstractBubbleChart","_maxBubbleRelativeSize","_minRadiusWithLabel","BUBBLE_NODE_CLASS","BUBBLE_CLASS","MIN_RADIUS","Infinity","_r","_rValueAccessor","radiusValueAccessor","rMin","rMax","bubbleR","labelFunction","labelOpacity","doRenderLabel","bubbleGEnter","doUpdateLabels","labels","titleFunction","doRenderTitles","doUpdateTitles","minRadiusWithLabel","maxBubbleRelativeSize","initBubbleColor","updateBubbleColor","isSelectedNode","pieChart","drawChart","pie","calculateDataPie","_radius","arc","buildArcs","pieData","_assembleCappedData","slices","_sliceCssClass","createElements","updateElements","removeElements","highlightFilter","slicesEnter","createSliceNodes","createSlicePath","createTitles","createLabels","slicePath","safeArc","attrTween","tweenPie","labelsEnter","innerRadius","outerRadius","centroid","sliceHasNoData","sliceTooSmall","updateSlicePaths","updateLabels","updateTitles","slicePaths","isSelectedSlice","angle","endAngle","startAngle","_minAngleForLabel","b","_current","isOffCanvas","interpolate","t","path","DEFAULT_MIN_ANGLE_FOR_LABEL","_innerRadius","capped","slicesCap","cap","cx","cy","radius","minAngleForLabel","barChart","barHeight","renderBars","bars","_centerBar","_barWidth","calculateBarWidth","numberOfBars","getNumberOfBars","_gap","MIN_BAR_WIDTH","_numberOfBars","DEFAULT_GAP_BETWEEN_BARS","_rescale","start","end","xValue","centerBar","gap","lineChart","drawLine","layersEnter","line","_interpolate","tension","_tension","_defined","defined","safeD","drawArea","_renderArea","area","drawDots","chartBody","tooltipListClass","TOOLTIP_G_CLASS","tooltips","datum","createRefLines","dots","DOT_CIRCLE_CLASS","_dotRadius","dot","showDot","showRefLines","hideDot","hideRefLines","yRefLine","Y_AXIS_REF_LINE_CLASS","xRefLine","X_AXIS_REF_LINE_CLASS","DEFAULT_DOT_RADIUS","layersList","renderArea","dotRadius","dataCount","_formatNumber","dataTable","renderGroups","nestEntries","rowGroup","GROUP_CSS_CLASS","LABEL_CSS_CLASS","_columns","html","_sort","_sortBy","entries","_size","nest","sortKeys","_order","sortValues","renderRows","rows","ROW_CSS_CLASS","rowEnter","COLUMN_CSS_CLASS","ascending","columns","sortBy","bubbleChart","renderNodes","bubbleG","bubbleLocator","updateNodes","removeNodes","bubbleX","bubbleY","_elasticRadius","elasticRadius","compositeChart","generateChildG","child","SUB_CHART_CLASS","getAllYAxisMinFromChildCharts","allMins","_children","getAllYAxisMaxFromChildCharts","allMaxes","getAllXAxisMinFromChildCharts","getAllXAxisMaxFromChildCharts","__generateG","compose","children","childChart","childLegendables","geoChoroplethChart","generateLayeredData","isDataLayer","regionG","renderRegionG","renderPaths","groupAll","geoJson","layerSelector","isSelected","isDeselected","layerNameClass","regionClass","baseClasses","getKey","_geoJsons","paths","currentFill","_projectionFlag","_geoPath","geo","states","selectedRegion","overlayGeoJson","json","projection","geoJsons","removeGeoJson","bubbleOverlay","initOverlayG","BUBBLE_OVERLAY_CLASS","initializeBubbles","mapData","_points","point","nodeG","getNodeG","circle","bubbleNodeClass","updateBubbles","debug","flag","debugG","debugText","position","mouse","node","rowChart","calculateAxisScale","_elasticX","_rowData","drawAxis","axisG","drawGridLines","_rowCssClass","rect","isSelectedRow","translateX","lab","_labelOffsetX","_labelOffsetY","x0","rowsCap","labelOffsetX","labelOffsetY","legendItemHeight","_itemHeight","LABEL_GAP","itemEnter","clientHeight","itemHeight","_cap","_othersLabel","_othersGrouper","topRows","topRowsSum","sum","allRows","allRowsSum","topKeys","allKeys","topSet","others","othersLabel","othersGrouper","_onClick","scatterPlot","symbol","numberDisplay","SPAN_CLASS","valObj","newValue","span","ease","tween","interp","interpolateNumber","lastValue","textContent","formatNumber","heatMap","uniq","_chartBody","_cols","_rows","_fill","_fillAccessor","_fillDefault","quantize","boxOnClick","xAxisOnClick","yAxisOnClick","rowValues","cols","colValues","fill","fillAccessor","rowCount","colCount","boxWidth","boxHeight","rangeRoundBands","boxes","gEnter","gCols","gRows","boxWhiskers","boxQuartiles","quantile","box","quartileData","quartiles","whiskerIndices","whiskers","whiskerData","outlierIndices","x1","__chart__","center","medianLine","whisker","outlier","Number","tickFormat","boxTick","whiskerTick","timer","flush","boxPlot","groupData","default_whiskers_iqr","q1","q3","iqr","_boxWidth","_whisker_iqr_factor","_whiskers_iqr","_whiskers","_box","saveDomain"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dc.min.js","sources":["dc.js"],"names":["dc","version","constants","CHART_CLASS","DEBUG_GROUP_CLASS","STACK_CLASS","DESELECTED_CLASS","SELECTED_CLASS","NODE_INDEX_NAME","GROUP_INDEX_NAME","DEFAULT_CHART_GROUP","EVENT_DELAY","NEGLIGIBLE_NUMBER","_renderlet","chartRegistry","initializeChartGroup","group","_chartMap","has","chart","e","indexOf","register","push","clear","list","registerChart","hasChart","deregisterAllCharts","filterAll","charts","i","length","renderAll","render","redrawAll","redraw","transition","selections","duration","callback","undefined","s","Function","units","integers","Math","abs","ordinal","domain","fp","precision","_f","d","resolution","utils","isNegligible","floor","ceil","round","n","override","obj","functionName","newFunction","existingFunction","renderlet","_","arguments","instanceOfChart","o","Object","__dc_flag__","errors","Exception","msg","_msg","this","message","toString","InvalidStateException","apply","dateFormat","d3","time","format","printers","filters","filter","Array","printSingleValue","Date","isFloat","fformat","isInteger","add","l","r","replace","setTime","getTime","setDate","getDate","percentage","subtract","GroupStack","initializeDataLayer","_dataLayers","_defaultAccessor","_hideChartGroup","_groups","setDataPoint","layerIndex","pointIndex","data","getDataPoint","x","y","dataPoint","addGroup","accessor","addNamedGroup","name","groupIndex","getGroupByIndex","index","getAccessorByIndex","size","setDefaultAccessor","retriever","getDataLayers","clearDataLayers","showGroups","showChartGroup","toggleGroups","hideGroups","hideChartGroup","value","hidden","toLayers","layers","layer","points","dataPoints","j","isNumber","max","groupMax","all","groupMin","min","nameToId","toLowerCase","appendOrSelect","parent","element","select","empty","append","createLegendable","legendable","_getGroupName","colors","color","safeNumber","events","current","trigger","closure","delay","setTimeout","cumulative","Base","_keyIndex","_map","sanitizeKey","key","getValueByKey","setValueByKey","indexOfKey","addToIndex","getKeyByIndex","Sum","minus","cumulativeSum","keyIndex","cumulativeValue","k","prototype","CountUnique","hashSize","hash","hasOwnProperty","count","cumulativeCount","baseChart","_chart","groupName","g","c","anchor","valueAccessor","a","generateSvg","_svg","root","attr","width","height","checkForMandatoryAttributes","anchorName","removeFilter","_filters","splice","applyFilters","_invokeFilteredListener","addFilter","resetFilters","dataSet","dimension","fs","_filterHandler","runAllRenderlets","_renderlets","_dimension","_group","_anchor","_root","_legend","_default_width","getBoundingClientRect","_width","_default_height","_height","_keyAccessor","_valueAccessor","_ordering","p","_label","_renderLabel","_title","_renderTitle","_transitionDuration","_filterPrinter","_mandatoryAttributes","_chartGroup","NULL_LISTENER","_listeners","preRender","postRender","preRedraw","postRedraw","filtered","zoomed","filterFunction","_data","w","functor","node","h","expireCache","_setGroupName","ordering","computeOrderedGroups","arr","slice","sort","crossfilter","quicksort","by","selectAll","chartGroup","classed","id","svg","resetSvg","remove","filterPrinter","turnOnControls","style","text","turnOffControls","transitionDuration","forEach","result","doRender","activateRenderlets","event","each","doRedraw","f","_invokeZoomedListener","hasFilter","highlightSelected","fadeDeselected","resetHighlight","onClick","keyAccessor","filterHandler","legendables","legendHighlight","legendReset","label","renderLabel","title","renderTitle","legend","on","listener","marginable","_margin","top","right","bottom","left","margins","m","effectiveWidth","effectiveHeight","coordinateGridChart","prepareXAxis","elasticX","isOrdinal","_x","xAxisMin","xAxisMax","map","kv","prepareOrdinalXAxis","range","xAxisLength","_xAxis","scale","orient","renderVerticalGridLines","gridLineG","VERTICAL_CLASS","_renderVerticalGridLine","insert","GRID_LINE_CLASS","yAxisX","ticks","tickValues","lines","linesGEnter","enter","xAxisY","exit","prepareYAxis","_y","elasticY","linear","yAxisMin","yAxisMax","rangeRound","yAxisHeight","_yAxis","renderHorizontalGridLines","HORIZONTAL_CLASS","_renderHorizontalGridLine","brushHeight","getClipPathId","generateClipPath","defs","_parent","chartBodyClip","padding","_clipPadding","enableMouseZoom","_mouseZoomable","call","behavior","zoom","scaleExtent","_zoomScale","focus","updateRangeSelChart","_rangeChart","refDom","_zoomOutRestrict","origDom","xOriginalDomain","newDom","hasRangeSelected","Y_AXIS_LABEL_CLASS","X_AXIS_LABEL_CLASS","DEFAULT_AXIS_LABLEL_PADDING","colorChart","category10","_g","_chartBodyG","_xOriginalDomain","_xAxisLabel","_yAxisLabel","_round","_unitCount","_focusChart","axis","_xUnits","_xAxisPadding","_xElasticity","_xAxisLabelPadding","_yAxisPadding","_yElasticity","_yAxisLabelPadding","_brush","brush","_brushOn","_refocused","rescale","xUnitCount","rangeChart","focusChart","zoomScale","zoomOutRestrict","_generateG","mouseZoomable","z","chartBodyG","xUnits","xAxis","xAxisPadding","increment","currentPosition","renderXAxis","axisXG","axisXLab","xAxisLabel","axisYLab","pad","renderYAxis","axisYG","yAxisLabel","yAxis","yAxisPadding","_filter","extent","renderBrush","_brushing","gBrush","resizeHandlePath","redrawBrush","extendBrush","brushIsEmpty","brushHasNoLength","fadeDeselectedArea","clipPadding","plotData","subRender","brushOn","refocused","_colors","category20c","_colorDomain","_colorCalculator","minValue","maxValue","isNaN","colorsLength","denominator","colorValue","_colorAccessor","colorCalculator","getColor","colorAccessor","colorDomain","stackableChart","flattenStack","test","xDomain","domainSet","set","stackLayers","concat","getKeyFromData","getKeyAccessorByIndex","getValueFromData","getValueAccessorByIndex","calculateDataPointMatrix","dataIndex","_groupStack","_allGroups","_allValueAccessors","_allKeyAccessors","_stackLayers","_stackLayout","layout","stack","offset","order","values","hideStack","stackName","showStack","allGroups","allValueAccessors","y0","allKeyAccessors","calculateDataPointMatrixForAll","groups","getChartStack","stackLayout","items","abstractBubbleChart","_maxBubbleRelativeSize","_minRadiusWithLabel","BUBBLE_NODE_CLASS","BUBBLE_CLASS","MIN_RADIUS","Infinity","_r","_rValueAccessor","radiusValueAccessor","rMin","rMax","bubbleR","labelFunction","labelOpacity","doRenderLabel","bubbleGEnter","doUpdateLabels","labels","titleFunction","doRenderTitles","doUpdateTitles","minRadiusWithLabel","maxBubbleRelativeSize","initBubbleColor","updateBubbleColor","isSelectedNode","pieChart","drawChart","pie","calculateDataPie","_radius","arc","buildArcs","pieData","_assembleCappedData","slices","_sliceCssClass","createElements","updateElements","removeElements","highlightFilter","slicesEnter","createSliceNodes","createSlicePath","createTitles","createLabels","slicePath","safeArc","attrTween","tweenPie","labelsEnter","innerRadius","outerRadius","centroid","sliceHasNoData","sliceTooSmall","updateSlicePaths","updateLabels","updateTitles","slicePaths","isSelectedSlice","angle","endAngle","startAngle","_minAngleForLabel","b","_current","isOffCanvas","interpolate","t","path","DEFAULT_MIN_ANGLE_FOR_LABEL","_innerRadius","capped","slicesCap","cap","cx","cy","radius","minAngleForLabel","barChart","barHeight","renderBars","bars","_centerBar","_barWidth","calculateBarWidth","numberOfBars","getNumberOfBars","_gap","MIN_BAR_WIDTH","_numberOfBars","DEFAULT_GAP_BETWEEN_BARS","_rescale","start","end","xValue","centerBar","gap","lineChart","drawLine","layersEnter","line","_interpolate","tension","_tension","_defined","defined","safeD","drawArea","_renderArea","area","drawDots","chartBody","tooltipListClass","TOOLTIP_G_CLASS","tooltips","datum","createRefLines","dots","DOT_CIRCLE_CLASS","_dotRadius","dot","showDot","showRefLines","hideDot","hideRefLines","yRefLine","Y_AXIS_REF_LINE_CLASS","xRefLine","X_AXIS_REF_LINE_CLASS","DEFAULT_DOT_RADIUS","layersList","renderArea","dotRadius","dataCount","_formatNumber","dataTable","renderGroups","nestEntries","rowGroup","GROUP_CSS_CLASS","LABEL_CSS_CLASS","_columns","html","_sort","_sortBy","entries","_size","nest","sortKeys","_order","sortValues","renderRows","rows","ROW_CSS_CLASS","rowEnter","COLUMN_CSS_CLASS","ascending","columns","sortBy","bubbleChart","renderNodes","bubbleG","bubbleLocator","updateNodes","removeNodes","bubbleX","bubbleY","_elasticRadius","elasticRadius","compositeChart","generateChildG","child","SUB_CHART_CLASS","getAllYAxisMinFromChildCharts","allMins","_children","getAllYAxisMaxFromChildCharts","allMaxes","getAllXAxisMinFromChildCharts","getAllXAxisMaxFromChildCharts","__generateG","compose","children","childChart","childLegendables","geoChoroplethChart","generateLayeredData","isDataLayer","regionG","renderRegionG","renderPaths","groupAll","geoJson","layerSelector","isSelected","isDeselected","layerNameClass","regionClass","baseClasses","getKey","_geoJsons","paths","currentFill","_projectionFlag","_geoPath","geo","states","selectedRegion","overlayGeoJson","json","projection","geoJsons","removeGeoJson","bubbleOverlay","initOverlayG","BUBBLE_OVERLAY_CLASS","initializeBubbles","mapData","_points","point","nodeG","getNodeG","circle","bubbleNodeClass","updateBubbles","debug","flag","debugG","debugText","position","mouse","rowChart","calculateAxisScale","_elasticX","_rowData","drawAxis","axisG","drawGridLines","_rowCssClass","rect","isSelectedRow","translateX","lab","_labelOffsetX","_labelOffsetY","x0","rowsCap","labelOffsetX","labelOffsetY","legendItemHeight","_itemHeight","LABEL_GAP","itemEnter","clientHeight","itemHeight","_cap","_othersLabel","_othersGrouper","topRows","topRowsSum","sum","allRows","allRowsSum","topKeys","allKeys","topSet","others","othersLabel","othersGrouper","_onClick","scatterPlot","symbol","numberDisplay","SPAN_CLASS","valObj","newValue","span","ease","tween","interp","interpolateNumber","lastValue","textContent","formatNumber","heatMap","uniq","_chartBody","_cols","_rows","_fill","_fillAccessor","_fillDefault","quantize","boxOnClick","xAxisOnClick","yAxisOnClick","rowValues","cols","colValues","fill","fillAccessor","rowCount","colCount","boxWidth","boxHeight","rangeRoundBands","boxes","gEnter","gCols","gRows","boxWhiskers","boxQuartiles","quantile","box","quartileData","quartiles","whiskerIndices","whiskers","whiskerData","outlierIndices","x1","__chart__","center","medianLine","whisker","outlier","Number","tickFormat","boxTick","whiskerTick","timer","flush","boxPlot","groupData","default_whiskers_iqr","q1","q3","iqr","_boxWidth","_whisker_iqr_factor","_whiskers_iqr","_whiskers","_box","saveDomain"],"mappings":"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"} \ No newline at end of file diff --git a/src/base-chart.js b/src/base-chart.js index 6e7660e81..6f6b3e5fc 100644 --- a/src/base-chart.js +++ b/src/base-chart.js @@ -14,14 +14,15 @@ dc.baseChart = function (_chart) { var _root; var _svg; - var _width = 200, _height = 200; - var _calculateWidth = false, _calculateHeight = false; - var _widthCalculation = function (element) { - return element.getBoundingClientRect().width; + var _default_width = function (element) { + return element && element.getBoundingClientRect && element.getBoundingClientRect().width || 200; }; - var _heightCalculation = function (element) { - return element.getBoundingClientRect().height; + var _width = _default_width; + + var _default_height = function (element) { + return element && element.getBoundingClientRect && element.getBoundingClientRect().height || 200; }; + var _height = _default_height; var _keyAccessor = function (d) { return d.key; @@ -87,94 +88,40 @@ dc.baseChart = function (_chart) { /** #### .width([value]) - Set or get width attribute of a chart. If the value is given, then it will be used as the new width. - - If no value specified then value of the current width attribute will be returned. + Set or get width attribute of a chart. See `.height` below for further description of the behavior. **/ _chart.width = function (w) { - if (!arguments.length) return _width; - _width = w; + if (!arguments.length) return _width(_root.node()); + _width = d3.functor(w || _default_width); return _chart; }; /** #### .height([value]) - Set or get height attribute of a chart. If the value is given, then it will be used as the new height. - - If no value specified then value of the current height attribute will be returned. - - **/ - _chart.height = function (h) { - if (!arguments.length) return _height; - _height = h; - return _chart; - }; - - /** - #### .calculateWidth([value]) - Set or get chart's auto-width flag. - If set to a truthy value, chart width will be automatically calculated each time chart is rendered. - Calculation is determined by widthCalculation(), and by default is width of anchor element. - - If no value is specified then the current setting will be returned. - **/ - _chart.calculateWidth = function (d) { - if (!arguments.length) return _calculateWidth; - _calculateWidth = d; - return _chart; - }; - - /** - #### .calculateHeight([value]) - Set or get chart's auto-height function. - If set to a truthy value, chart height will be automatically calculated each time chart is rendered. - Calculation is determined by heightCalculation(), and by default is height of anchor element. - - If no value is specified then the current setting will be returned. - **/ - _chart.calculateHeight = function (d) { - if (!arguments.length) return _calculateHeight; - _calculateHeight = d; - return _chart; - }; + Set or get height attribute of a chart. The height is applied to the SVG element + generated by the chart when rendered (or rerendered). If a value is given, then it + will be used to calculate the new height and the chart returned for method chaining. + The value can either be a numeric, a function, or falsy. If no value specified then + value of the current height attribute will be returned. - /** - #### .widthCalculation - Set or get chart's auto-width function, which will be used to set width on render if calculateWidth is true. + By default, without an explicit height being given, the chart will select the width + of its anchor element. If that isn't possible it defaults to 200; - This function will be passed the anchor element as an argument. + Examples: - Defaults to returning the anchor element's width. - - Example which sets width to be 30px greater than parent element: ```js - chart.widthCalculation(function (element) { - return element.parentNode.offsetWidth + 30; - }); + chart.height(250); // Set the chart's height to 250px; + chart.height(function(anchor) { return doSomethingWith(anchor); }); // set the chart's height with a function + chart.height(null); // reset the height to the default auto calculation ``` - **/ - _chart.widthCalculation = function(_) { - if (!arguments.length) return _widthCalculation; - _widthCalculation = _; - return _chart; - } - - /** - #### .heightCalculation - Set or get chart's auto-height function, which will be used to set height on render if calculateHeight is true. - This function will be passed the anchor element height and anchor element itself as arguments - Defaults to: - ```js - return elementHeight - ``` **/ - _chart.heightCalculation = function(_) { - if (!arguments.length) return _heightCalculation; - _heightCalculation = _; - return _chart; - } + _chart.height = function (h) { + if (!arguments.length) return _height(_root.node()); + _height = d3.functor(h || _default_height); + return _chart; + }; /** #### .dimension([value]) - **mandatory** @@ -445,16 +392,6 @@ dc.baseChart = function (_chart) { _mandatoryAttributes.forEach(checkForMandatoryAttributes); - if (_calculateWidth) { - var element = d3.select(_chart.anchorName()).node(); - _chart.width(_widthCalculation(element)); - }; - - if (_calculateHeight) { - var element = d3.select(_chart.anchorName()).node(); - _chart.height(_heightCalculation(element)); - }; - var result = _chart.doRender(); if (_legend) _legend.render(); diff --git a/test/base-chart-test.js b/test/base-chart-test.js index 6e61d690c..5e95d3927 100644 --- a/test/base-chart-test.js +++ b/test/base-chart-test.js @@ -20,6 +20,7 @@ suite.addBatch({ teardown: function (topic) { resetAllFilters(); resetBody(); + dc.chartRegistry.clear(); } }); @@ -48,6 +49,7 @@ suite.addBatch({ teardown: function (topic) { resetAllFilters(); resetBody(); + dc.chartRegistry.clear(); } }); @@ -77,6 +79,7 @@ suite.addBatch({ teardown: function (topic) { resetAllFilters(); resetBody(); + dc.chartRegistry.clear(); } }); @@ -106,6 +109,7 @@ suite.addBatch({ teardown: function (topic) { resetAllFilters(); resetBody(); + dc.chartRegistry.clear(); } }); @@ -129,6 +133,7 @@ suite.addBatch({ teardown: function (topic) { resetAllFilters(); resetBody(); + dc.chartRegistry.clear(); } }); @@ -152,6 +157,7 @@ suite.addBatch({ teardown: function (topic) { resetAllFilters(); resetBody(); + dc.chartRegistry.clear(); } }); @@ -182,48 +188,33 @@ suite.addBatch({ suite.addBatch({ 'calculation of dimensions': { topic: function () { - var chart = dc.baseChart({}); - d3.select("body").append("div").attr("id", "ele").node(); - chart.anchor("#ele").dimension(valueDimension).group(valueGroup); - return chart; - }, - - 'height is determined using supplied function when height calculation is enabled': function (chart) { - var calculation = sinon.stub().returns(800); - chart.calculateHeight(true).heightCalculation(calculation); - chart.render(); - - assert.isTrue(calculation.called) - assert.equal(chart.height(), 800); + d3.select("body").append("div").attr("id", "ele"); + return dc.baseChart({}).anchor('#ele').dimension(valueDimension).group(valueGroup); }, - 'width is determined using supplied function when width calculation is enabled': function (chart) { - var calculation = sinon.stub().returns(800); - chart.calculateWidth(true).widthCalculation(calculation); + 'set automatically': function (chart) { + chart.height(null); + chart.width(null); chart.render(); - - assert.isTrue(calculation.called) - assert.equal(chart.width(), 800); + assert.equal(chart.height(), 200); + assert.equal(chart.width(), 200); }, - 'height not calculated when height calculation is disabled': function (chart) { - var calculation = sinon.stub().returns(800); - chart.height(400); - chart.calculateHeight(false).heightCalculation(calculation); + 'set to a specific number': function (chart) { + chart.height(300); + chart.width(500); chart.render(); - - assert.isFalse(calculation.called) - assert.equal(chart.height(), 400); + assert.equal(chart.height(), 300); + assert.equal(chart.width(), 500); }, - 'width not calculated when width calculation is disabled': function (chart) { + 'set to a callback': function (chart) { var calculation = sinon.stub().returns(800); - chart.width(400); - chart.calculateWidth(false).widthCalculation(calculation); + chart.width(calculation); chart.render(); - assert.isFalse(calculation.called) - assert.equal(chart.width(), 400); + assert.equal(chart.width(), 800); + assert.isTrue(calculation.called) } }, @@ -235,4 +226,3 @@ suite.addBatch({ }); suite.export(module); - diff --git a/web/docs/api-1.7.0-dev.md b/web/docs/api-1.7.0-dev.md index 4172cbf46..74ededd25 100644 --- a/web/docs/api-1.7.0-dev.md +++ b/web/docs/api-1.7.0-dev.md @@ -82,14 +82,25 @@ Base chart is an abstract functional object representing a basic dc chart object Every function on base chart are also inherited available on all concrete chart implementation in dc library. #### .width([value]) -Set or get width attribute of a chart. If the value is given, then it will be used as the new width. - -If no value specified then value of the current width attribute will be returned. +Set or get width attribute of a chart. See `.height` below for further description of the behavior. #### .height([value]) -Set or get height attribute of a chart. If the value is given, then it will be used as the new height. +Set or get height attribute of a chart. The height is applied to the SVG element +generated by the chart when rendered (or rerendered). If a value is given, then it +will be used to calculate the new height and the chart returned for method chaining. +The value can either be a numeric, a function, or falsy. If no value specified then +value of the current height attribute will be returned. + +By default, without an explicit height being given, the chart will select the width +of its anchor element. If that isn't possible it defaults to 200; + +Examples: -If no value specified then value of the current height attribute will be returned. +```js +chart.height(250); // Set the chart's height to 250px; +chart.height(function(anchor) { return doSomethingWith(anchor); }); // set the chart's height with a function +chart.height(null); // reset the height to the default auto calculation +``` #### .dimension([value]) - **mandatory** Set or get dimension attribute of a chart. In dc a dimension can be any valid @@ -531,8 +542,8 @@ chart.colorDomain(function() { Stackable chart is an abstract chart introduced to provide cross-chart support of stackability. Concrete implementation of charts can then selectively mix-in this capability. -#### .stack(group[, name, retriever]) -Stack a new crossfilter group into this chart with optionally a custom value retriever. All stacks in the same chart will +#### .stack(group[, name, accessor]) +Stack a new crossfilter group into this chart with optionally a custom value accessor. All stacks in the same chart will share the same key accessor therefore share the same set of keys. In more concrete words, imagine in a stacked bar chart all bars will be positioned using the same set of keys on the x axis while stacked vertically. If name is specified then it will be used to generate legend label. @@ -543,6 +554,14 @@ chart.stack(valueSumGroup) .stack(avgByDayGroup, function(d){return d.value.avgByDay;}); ``` +#### .hideStack(name) +Hide all stacks on the chart with the given name. +The chart must be re-rendered for this change to appear. + +#### .showStack(name) +Show all stacks on the chart with the given name. +The chart must be re-rendered for this change to appear. + ## # Abstract Bubble Chart [Abstract] < [Color Chart](#color-chart) An abstraction provides reusable functionalities for any chart that needs to visualize data using bubbles. diff --git a/web/docs/index.html b/web/docs/index.html index fb3cc1288..2c45c21c1 100644 --- a/web/docs/index.html +++ b/web/docs/index.html @@ -180,11 +180,19 @@

# Base Chart [Abstract]

Base chart is an abstract functional object representing a basic dc chart object for all chart and widget implementation. Every function on base chart are also inherited available on all concrete chart implementation in dc library.

.width([value])

-

Set or get width attribute of a chart. If the value is given, then it will be used as the new width.

-

If no value specified then value of the current width attribute will be returned.

+

Set or get width attribute of a chart. See .height below for further description of the behavior.

.height([value])

-

Set or get height attribute of a chart. If the value is given, then it will be used as the new height.

-

If no value specified then value of the current height attribute will be returned.

+

Set or get height attribute of a chart. The height is applied to the SVG element +generated by the chart when rendered (or rerendered). If a value is given, then it +will be used to calculate the new height and the chart returned for method chaining. +The value can either be a numeric, a function, or falsy. If no value specified then +value of the current height attribute will be returned.

+

By default, without an explicit height being given, the chart will select the width +of its anchor element. If that isn't possible it defaults to 200;

+

Examples:

+
chart.height(250); // Set the chart's height to 250px;
+chart.height(function(anchor) { return doSomethingWith(anchor); }); // set the chart's height with a function
+chart.height(null); // reset the height to the default auto calculation

.dimension([value]) - mandatory

Set or get dimension attribute of a chart. In dc a dimension can be any valid crossfilter dimension. If the value is given, @@ -516,8 +524,8 @@

.colorDomain([domain])

# Stackable Chart [Abstract]

Stackable chart is an abstract chart introduced to provide cross-chart support of stackability. Concrete implementation of charts can then selectively mix-in this capability.

-

.stack(group[, name, retriever])

-

Stack a new crossfilter group into this chart with optionally a custom value retriever. All stacks in the same chart will +

.stack(group[, name, accessor])

+

Stack a new crossfilter group into this chart with optionally a custom value accessor. All stacks in the same chart will share the same key accessor therefore share the same set of keys. In more concrete words, imagine in a stacked bar chart all bars will be positioned using the same set of keys on the x axis while stacked vertically. If name is specified then it will be used to generate legend label.

@@ -525,6 +533,12 @@

.stack(group[, name, retriever])

chart.stack(valueSumGroup) // stack group using custom accessor .stack(avgByDayGroup, function(d){return d.value.avgByDay;}); +

.hideStack(name)

+

Hide all stacks on the chart with the given name. +The chart must be re-rendered for this change to appear.

+

.showStack(name)

+

Show all stacks on the chart with the given name. +The chart must be re-rendered for this change to appear.

# Abstract Bubble Chart [Abstract] < Color Chart

An abstraction provides reusable functionalities for any chart that needs to visualize data using bubbles.

.r([bubbleRadiusScale])

diff --git a/web/js/dc.js b/web/js/dc.js index 2650fb1e5..11a6d2d2a 100644 --- a/web/js/dc.js +++ b/web/js/dc.js @@ -691,7 +691,15 @@ dc.baseChart = function (_chart) { var _root; var _svg; - var _width = 200, _height = 200; + var _default_width = function (element) { + return element && element.getBoundingClientRect && element.getBoundingClientRect().width || 200; + }; + var _width = _default_width; + + var _default_height = function (element) { + return element && element.getBoundingClientRect && element.getBoundingClientRect().height || 200; + }; + var _height = _default_height; var _keyAccessor = function (d) { return d.key; @@ -757,27 +765,38 @@ dc.baseChart = function (_chart) { /** #### .width([value]) - Set or get width attribute of a chart. If the value is given, then it will be used as the new width. - - If no value specified then value of the current width attribute will be returned. + Set or get width attribute of a chart. See `.height` below for further description of the behavior. **/ _chart.width = function (w) { - if (!arguments.length) return _width; - _width = w; + if (!arguments.length) return _width(_root.node()); + _width = d3.functor(w || _default_width); return _chart; }; /** #### .height([value]) - Set or get height attribute of a chart. If the value is given, then it will be used as the new height. + Set or get height attribute of a chart. The height is applied to the SVG element + generated by the chart when rendered (or rerendered). If a value is given, then it + will be used to calculate the new height and the chart returned for method chaining. + The value can either be a numeric, a function, or falsy. If no value specified then + value of the current height attribute will be returned. - If no value specified then value of the current height attribute will be returned. + By default, without an explicit height being given, the chart will select the width + of its anchor element. If that isn't possible it defaults to 200; + + Examples: + + ```js + chart.height(250); // Set the chart's height to 250px; + chart.height(function(anchor) { return doSomethingWith(anchor); }); // set the chart's height with a function + chart.height(null); // reset the height to the default auto calculation + ``` **/ _chart.height = function (h) { - if (!arguments.length) return _height; - _height = h; + if (!arguments.length) return _height(_root.node()); + _height = d3.functor(h || _default_height); return _chart; };