From bb20d4581ac5cd81d46e3c13fb6462e2f78aaf10 Mon Sep 17 00:00:00 2001 From: Jacob Rideout Date: Mon, 14 Oct 2013 18:10:02 -0400 Subject: [PATCH] fix #338 --- dc.js | 157 +++++++++++++++++++---------------- dc.min.js | 4 +- dc.min.js.map | 2 +- src/base-chart.js | 4 +- src/capped.js | 43 +++++++--- src/coordinate-grid-chart.js | 3 +- src/pie-chart.js | 81 +++++++++--------- src/row-chart.js | 26 +++--- test/pie-chart-test.js | 72 +++++++++++----- test/row-chart-test.js | 4 +- web/docs/api-1.7.0-dev.md | 26 ++++-- web/docs/index.html | 26 ++++-- web/examples/pie.html | 1 + web/js/dc.js | 157 +++++++++++++++++++---------------- 14 files changed, 341 insertions(+), 265 deletions(-) diff --git a/dc.js b/dc.js index 61cd1dc5f..6cf0467f7 100644 --- a/dc.js +++ b/dc.js @@ -872,8 +872,8 @@ dc.baseChart = function (_chart) { return _chart; }; - _chart.computeOrderedGroups = function(arr) { - var data = arr ? arr : _chart.data().slice(0); // clone + _chart.computeOrderedGroups = function(ga) { + var data = ga.slice(0); // clone if(data.length < 2) return data; var sort = crossfilter.quicksort.by(_chart.ordering()); @@ -1804,7 +1804,8 @@ dc.coordinateGridChart = function (_chart) { _x.domain([_chart.xAxisMin(), _chart.xAxisMax()]); } else if (_chart.isOrdinal() && _x.domain().length===0) { - _x.domain(_chart.computeOrderedGroups().map(function(kv) { return kv.key; })); + var orderedData = _chart.computeOrderedGroups(_chart.data()); + _x.domain(orderedData.map(_chart.keyAccessor())); } if (_chart.isOrdinal()) { @@ -2999,7 +3000,7 @@ dc.abstractBubbleChart = function (_chart) { ## # Pie Chart [Concrete] < [Color Chart](#color-chart) < [Base Chart](#base-chart) This chart is a concrete pie chart implementation usually used to visualize small number of categorical distributions. Pie chart implementation uses keyAccessor to generate slices, and valueAccessor to calculate the size of each slice(key) -relatively to the total sum of all values. +relatively to the total sum of all values. Slices are ordered by `.ordering` which defaults to sorting by key. Examples: @@ -3041,26 +3042,24 @@ dc.pieChart = function (parent, chartGroup) { var _chart = dc.capped(dc.colorChart(dc.baseChart({}))); - _chart.colorAccessor(function(d) { return _chart.keyAccessor()(d.data); }); + _chart.colorAccessor(_chart.cappedKeyAccessor); + + _chart.title(function (d) { + return _chart.cappedKeyAccessor(d) + ": " + _chart.cappedValueAccessor(d); + }); /** #### .slicesCap([cap]) - Get or set the maximum number of slices the pie chart will generate. Slices are ordered by its value from high to low. - Other slices exeeding the cap will be rolled up into one single *Others* slice. + Get or set the maximum number of slices the pie chart will generate. The top slices are determined by + value from high to low. Other slices exeeding the cap will be rolled up into one single *Others* slice. + The resulting data will still be sorted by .ordering (default by key). **/ _chart.slicesCap = _chart.cap; - _chart.label(function (d) { - return _chart.keyAccessor()(d.data); - }); - + _chart.label(_chart.cappedKeyAccessor); _chart.renderLabel(true); - _chart.title(function (d) { - return _chart.keyAccessor()(d.data) + ": " + _chart.valueAccessor()(d.data); - }); - _chart.transitionDuration(350); _chart.doRender = function () { @@ -3076,14 +3075,13 @@ dc.pieChart = function (parent, chartGroup) { }; function drawChart() { - var pie = calculateDataPie(); - // set radius on basis of chart dimension if missing _radius = _radius ? _radius : d3.min([_chart.width(), _chart.height()]) /2; - var arc = _chart.buildArcs(); + var arc = buildArcs(); - var pieData = pie(_chart._assembleCappedData()); + var pie = pieLayout(); + var pieData = pie(_chart.data()); if (_g) { var slices = _g.selectAll("g." + _sliceCssClass) @@ -3121,9 +3119,7 @@ dc.pieChart = function (parent, chartGroup) { function createSlicePath(slicesEnter, arc) { var slicePath = slicesEnter.append("path") - .attr("fill", function (d, i) { - return _chart.getColor(d, i); - }) + .attr("fill", fill) .on("click", onClick) .attr("d", function (d, i) { return safeArc(d, i, arc); @@ -3158,7 +3154,7 @@ dc.pieChart = function (parent, chartGroup) { dc.transition(labelsEnter, _chart.transitionDuration()) .attr("transform", function (d) { d.innerRadius = _chart.innerRadius(); - d.outerRadius = _radius; + d.outerRadius = _chart.radius(); var centroid = arc.centroid(d); if (isNaN(centroid[0]) || isNaN(centroid[1])) { return "translate(0,0)"; @@ -3171,7 +3167,7 @@ dc.pieChart = function (parent, chartGroup) { var data = d.data; if (sliceHasNoData(data) || sliceTooSmall(d)) return ""; - return _chart.label()(d); + return _chart.label()(d.data); }); } } @@ -3192,9 +3188,7 @@ dc.pieChart = function (parent, chartGroup) { dc.transition(slicePaths, _chart.transitionDuration(), function (s) { s.attrTween("d", tweenPie); - }).attr("fill", function (d, i) { - return _chart.getColor(d, i); - }); + }).attr("fill", fill); } function updateLabels(pieData, arc) { @@ -3203,7 +3197,7 @@ dc.pieChart = function (parent, chartGroup) { .data(pieData); dc.transition(labels, _chart.transitionDuration()) .attr("transform", function (d) { - d.innerRadius = _chart.innerRadius(); + d.innerRadius = _innerRadius; d.outerRadius = _radius; var centroid = arc.centroid(d); if (isNaN(centroid[0]) || isNaN(centroid[1])) { @@ -3217,7 +3211,7 @@ dc.pieChart = function (parent, chartGroup) { var data = d.data; if (sliceHasNoData(data) || sliceTooSmall(d)) return ""; - return _chart.label()(d); + return _chart.label()(d.data); }); } } @@ -3228,7 +3222,7 @@ dc.pieChart = function (parent, chartGroup) { .data(pieData) .select("title") .text(function (d) { - return _chart.title()(d); + return _chart.title()(d.data); }); } } @@ -3240,7 +3234,7 @@ dc.pieChart = function (parent, chartGroup) { function highlightFilter() { if (_chart.hasFilter()) { _chart.selectAll("g." + _sliceCssClass).each(function (d) { - if (_chart.isSelectedSlice(d)) { + if (isSelectedSlice(d)) { _chart.highlightSelected(this); } else { _chart.fadeDeselected(this); @@ -3294,13 +3288,13 @@ dc.pieChart = function (parent, chartGroup) { return _chart.height() / 2; }; - _chart.buildArcs = function () { + function buildArcs() { return d3.svg.arc().outerRadius(_radius).innerRadius(_innerRadius); - }; + } - _chart.isSelectedSlice = function (d) { - return _chart.hasFilter(_chart.keyAccessor()(d.data)); - }; + function isSelectedSlice(d) { + return _chart.hasFilter(_chart.cappedKeyAccessor(d.data)); + } _chart.doRedraw = function () { drawChart(); @@ -3318,10 +3312,8 @@ dc.pieChart = function (parent, chartGroup) { return _chart; }; - function calculateDataPie() { - return d3.layout.pie().sort(null).value(function (d) { - return _chart.valueAccessor()(d); - }); + function pieLayout() { + return d3.layout.pie().sort(null).value(_chart.cappedValueAccessor); } function sliceTooSmall(d) { @@ -3329,19 +3321,19 @@ dc.pieChart = function (parent, chartGroup) { return isNaN(angle) || angle < _minAngleForLabel; } - function sliceHasNoData(data) { - return _chart.valueAccessor()(data) === 0; + function sliceHasNoData(d) { + return _chart.cappedValueAccessor(d) === 0; } function tweenPie(b) { - b.innerRadius = _chart.innerRadius(); + b.innerRadius = _innerRadius; var current = this._current; if (isOffCanvas(current)) current = {startAngle: 0, endAngle: 0}; var i = d3.interpolate(current, b); this._current = i(0); return function (t) { - return safeArc(i(t), 0, _chart.buildArcs()); + return safeArc(i(t), 0, buildArcs()); }; } @@ -3349,8 +3341,12 @@ dc.pieChart = function (parent, chartGroup) { return !current || isNaN(current.startAngle) || isNaN(current.endAngle); } - function onClick(d) { - _chart.onClick(d.data); + function fill(d, i) { + return _chart.getColor(d.data, i); + } + + function onClick(d, i) { + _chart.onClick(d.data, i); } function safeArc(d, i, arc) { @@ -5075,7 +5071,7 @@ dc.rowChart = function (parent, chartGroup) { function calculateAxisScale() { if (!_x || _elasticX) { - var extent = d3.extent(_rowData, _chart.valueAccessor()); + var extent = d3.extent(_rowData, _chart.cappedValueAccessor); if (extent[0] > 0) extent[0] = 0; _x = d3.scale.linear().domain(extent) .range([0, _chart.effectiveWidth()]); @@ -5109,12 +5105,10 @@ dc.rowChart = function (parent, chartGroup) { }; _chart.title(function (d) { - return _chart.keyAccessor()(d) + ": " + _chart.valueAccessor()(d); + return _chart.cappedKeyAccessor(d) + ": " + _chart.cappedValueAccessor(d); }); - _chart.label(function (d) { - return _chart.keyAccessor()(d); - }); + _chart.label(_chart.cappedKeyAccessor); _chart.x = function(x){ if(!arguments.length) return _x; @@ -5139,7 +5133,7 @@ dc.rowChart = function (parent, chartGroup) { } function drawChart() { - _rowData = _chart._assembleCappedData(); + _rowData = _chart.data(); drawAxis(); drawGridLines(); @@ -5181,10 +5175,10 @@ dc.rowChart = function (parent, chartGroup) { .attr("fill", _chart.getColor) .on("click", onClick) .classed("deselected", function (d) { - return (_chart.hasFilter()) ? !_chart.isSelectedRow(d) : false; + return (_chart.hasFilter()) ? !isSelectedRow(d) : false; }) .classed("selected", function (d) { - return (_chart.hasFilter()) ? _chart.isSelectedRow(d) : false; + return (_chart.hasFilter()) ? isSelectedRow(d) : false; }); dc.transition(rect, _chart.transitionDuration()) @@ -5201,9 +5195,7 @@ dc.rowChart = function (parent, chartGroup) { function createTitles(rows) { if (_chart.renderTitle()) { rows.selectAll("title").remove(); - rows.append("title").text(function (d) { - return _chart.title()(d); - }); + rows.append("title").text(_chart.title()); } } @@ -5236,7 +5228,7 @@ dc.rowChart = function (parent, chartGroup) { } function translateX(d) { - var x = _x(_chart.valueAccessor()(d)), + var x = _x(_chart.cappedValueAccessor(d)), x0 = _x(0), s = x > x0 ? x0 : x; return "translate("+s+",0)"; @@ -5296,9 +5288,9 @@ dc.rowChart = function (parent, chartGroup) { return _chart; }; - _chart.isSelectedRow = function (d) { - return _chart.hasFilter(_chart.keyAccessor()(d)); - }; + function isSelectedRow (d) { + return _chart.hasFilter(_chart.cappedKeyAccessor(d)); + } return _chart.anchor(parent, chartGroup); }; @@ -5431,26 +5423,38 @@ dc.capped = function (_chart) { var _othersGrouper = function (topRows) { var topRowsSum = d3.sum(topRows, _chart.valueAccessor()), - allRows = _chart.data(), + allRows = _chart.group().all(), allRowsSum = d3.sum(allRows, _chart.valueAccessor()), topKeys = topRows.map(_chart.keyAccessor()), allKeys = allRows.map(_chart.keyAccessor()), topSet = d3.set(topKeys), others = allKeys.filter(function(d){return !topSet.has(d);}); if (allRowsSum > topRowsSum) - topRows.push({"others": others,"key": _othersLabel, "value": allRowsSum - topRowsSum }); + topRows.push({"others": others, "key": _othersLabel, "value": allRowsSum - topRowsSum}); }; - _chart._assembleCappedData = function() { + _chart.cappedKeyAccessor = function(d,i) { + if (d.others) + return d.key; + return _chart.keyAccessor()(d,i); + }; + + _chart.cappedValueAccessor = function(d,i) { + if (d.others) + return d.value; + return _chart.valueAccessor()(d,i); + }; + + _chart.data(function(group) { if (_cap == Infinity) { - return _chart.computeOrderedGroups(); + return _chart.computeOrderedGroups(group.all()); } else { - var topRows = _chart.group().top(_cap); // ordered by value + var topRows = group.top(_cap); // ordered by value topRows = _chart.computeOrderedGroups(topRows); // re-order by key if (_othersGrouper) _othersGrouper(topRows); return topRows; } - }; + }); /** #### .cap([count]) @@ -5474,13 +5478,20 @@ dc.capped = function (_chart) { /** #### .othersGrouper([grouperFunction]) - Get or set the grouper funciton that will perform the insersion of data for the *Others* slice if the slices cap is - specified. If set to a falsy value, no others will be added. By default the grouper function implements the following - logic, you will need change this function to match your data structure if you are not using the a crossfilter group. + Get or set the grouper function that will perform the insertion of data for the *Others* slice if the slices cap is + specified. If set to a falsy value, no others will be added. By default the grouper function computes the sum of all + values below the cap. ```js - function (data, sum) { - data.push({"key": _othersLabel, "value": sum }); - }; + chart.othersGrouper(function (data) { + // compute the value for others, presumably the sum of all values below the cap + var othersSum = yourComputeOthersValueLogic(data) + + // the keys are needed to properly filter when the others element is clicked + var othersKeys = yourComputeOthersKeysArrayLogic(data); + + // add the others row to the dataset + data.push({"key": "Others", "value": othersSum, "others": othersKeys }); + }); ``` **/ _chart.othersGrouper = function (_) { diff --git a/dc.min.js b/dc.min.js index 9498c5b85..bacecb68b 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.pluck=function(a,b){return function(c){return b?b.call(this,c[a]):c[a]}},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(),c);return a.utils.isNegligible(d)&&(d=0),d},a.utils.groupMin=function(b,c){var d=d3.min(b.all(),c);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,c),data:b};return d&&(e.color=d),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.dimension()&&b.dimension().filter){var a=J(b.dimension(),I);I=a?a:I}}function j(){for(var a=0;a=0}),b},K=function(a){return a.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(l)},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&&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 b.keyAccessor()(a.data)+": "+b.valueAccessor()(a.data)}),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._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.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(a){var b=d3.scale.category20c(),c=function(b){return a.keyAccessor()(b)},d=function(c){return b(c,a)};return a.colors=function(c){return arguments.length?(b=c instanceof Array?d3.scale.quantize().range(c):c,a):b},a.ordinalColors=function(b){return a.colors(d3.scale.ordinal().range(b))},a.linearColors=function(b){return a.colors(d3.scale.linear().range(b).interpolate(d3.interpolateHcl))},a.colorAccessor=function(b){return arguments.length?(c=b,a):c},a.colorDomain=function(c){return arguments.length?(b.domain(c),a):b.domain()},a.calculateColorDomain=function(){var c=[d3.min(a.data(),a.colorAccessor()),d3.max(a.data(),a.colorAccessor())];b.domain(c)},a.getColor=function(a,b){return d(c(a,b))},a.colorCalculator=function(b){return arguments.length?(d=b,a):d},a},a.stackableChart=function(b){function c(){var a=[];if(b.x()){var c,d=b.x().domain();if(b.isOrdinal()){var e=d3.set(d);c=function(a){return e.has(a.x)}}else c=function(a){return a.x>=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){a.all().forEach(function(a,d){var e=b.getKeyAccessorByIndex(c)(a),f=b.getValueAccessorByIndex(c)(a);i.setDataPoint(c,d,{data:a,x:e,y:f,layer:c})})}var e,f,g,h,i=new a.utils.GroupStack,j=d3.layout.stack().offset("zero").order("default").values(function(a){return a.points});return b.stack=function(a,c,d){return arguments.length||i.clear(),i.setDefaultAccessor(b.valueAccessor()),"string"==typeof c?(b._setGroupName(a,c,d),i.addNamedGroup(a,c,d)):(d=c,i.addGroup(a,d)),b.expireCache(),b},b.hideStack=function(a){i.hideGroups(a,b._getGroupName(b.group())==a)},b.showStack=function(a){i.showGroups(a,b._getGroupName(b.group())==a)},b.expireCache=function(){return e=null,f=null,g=null,h=null,b},b.allGroups=function(){if(null===e){e=[],e.push(b.group());for(var a=0;af?f:c},null);return a.utils.subtract(c,b.xAxisPadding())},b.xAxisMax=function(){var c=b.allGroups().reduce(function(c,d,e){var f=a.utils.groupMax(d,b.getKeyAccessorByIndex(e));return null===c||f>c?f:c},null);return a.utils.add(c,b.xAxisPadding())},b.calculateDataPointMatrixForAll=function(){i.clearDataLayers(),b.allGroups().forEach(d)},b.getChartStack=function(){return i},a.override(b,"valueAccessor",function(a){return arguments.length?(b.expireCache(),b._valueAccessor(a)):b._valueAccessor()}),a.override(b,"keyAccessor",function(a){return arguments.length?(b.expireCache(),b._keyAccessor(a)):b._keyAccessor()}),b.stackLayout=function(a){return arguments.length?(j=a,b):j},b.stackLayers=function(a){return arguments.length?(h=a,void 0):(null===h&&(b.calculateDataPointMatrixForAll(),h=b.stackLayout()(i.toLayers())),h)},b._layerColorAccessor=function(a){return void 0===a.layer?a.index:a.layer},b.colorAccessor(b._layerColorAccessor),b.legendables=function(){return b.allGroups().map(function(c,d){return a.utils.createLegendable(b,c,b.getValueAccessorByIndex(d),b.colorCalculator()(d))})},b},a.abstractBubbleChart=function(b){var c=.3,d=10;b.BUBBLE_NODE_CLASS="node",b.BUBBLE_CLASS="bubble",b.MIN_RADIUS=10,b=a.colorChart(b),b.renderLabel(!0),b.renderTitle(!1),b.data(function(){return b.group().top(1/0)});var e=d3.scale.linear().domain([0,100]),f=function(a){return a.r};b.r=function(a){return arguments.length?(e=a,b):e},b.radiusValueAccessor=function(a){return arguments.length?(f=a,b):f},b.rMin=function(){var a=d3.min(b.data(),function(a){return b.radiusValueAccessor()(a)});return a},b.rMax=function(){var a=d3.max(b.data(),function(a){return b.radiusValueAccessor()(a)});return a},b.bubbleR=function(a){var c=b.radiusValueAccessor()(a),d=b.r()(c);return(isNaN(d)||0>=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.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(){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.colorAccessor(function(a){return C.keyAccessor()(a.data)}),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,a.pluck("data",m.keyAccessor()));e.enter().append("rect").attr("class","bar").attr("fill",m.getColor),m.renderTitle()&&e.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){var b=d3.select(this);e(b,a)}),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)},a.override(m,"xAxisMax",function(){var a=this._xAxisMax();if("resolution"in m.xUnits()){var b=m.xUnits().resolution;a+=b}return a}),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;m&&(f=f.filter(m));var g=e.select("g."+o+"._"+c);g.empty()&&(g=e.append("g").attr("class",o+" _"+c)),h(g);var n=g.selectAll("circle."+p).data(f);n.enter().append("circle").attr("class",p).attr("r",u).attr("fill",function(){return s.colorCalculator()(c)}).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()),n.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()),n.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.getColor).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.getColor).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(),i.keyAccessor());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;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(a){var b=a.value&&a.value()||a.top(1)[0];return f.valueAccessor()(b)}),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=a.colorChart(a.marginable(a.baseChart({})));return h._mandatoryAttributes(["group"]),h.title(h.colorAccessor()),h.boxOnClick=function(){},h.xAxisOnClick=function(){},h.yAxisOnClick=function(){},h.rows=function(a){if(arguments.length)return g=a,h;if(g)return g;var b=h.data().map(h.valueAccessor());return b.sort(d3.ascending),d3.scale.ordinal().domain(b.filter(d))},h.cols=function(a){if(arguments.length)return f=a,h;if(f)return f;var b=h.data().map(h.keyAccessor());return b.sort(d3.ascending),d3.scale.ordinal().domain(b.filter(d))},h.doRender=function(){return h.resetSvg(),e=h.svg().append("g").attr("class","heatmap").attr("transform","translate("+h.margins().left+","+h.margins().top+")"),h.doRedraw()},h.doRedraw=function(){var b=h.rows(),c=h.cols(),d=b.domain().length,f=c.domain().length,g=Math.floor(h.effectiveWidth()/f),i=Math.floor(h.effectiveHeight()/d);c.rangeRoundBands([0,h.effectiveWidth()]),b.rangeRoundBands([h.effectiveHeight(),0]);var j=e.selectAll("g.box-group").data(h.data(),function(a,b){return h.keyAccessor()(a,b)+"\x00"+h.valueAccessor()(a,b)}),k=j.enter().append("g").attr("class","box-group");k.append("rect").attr("fill","white").on("click",h.boxOnClick),k.append("title").text(function(a){return h.title()(a)}),a.transition(j.select("rect"),h.transitionDuration()).attr("class","heat-box").attr("x",function(a,b){return c(h.keyAccessor()(a,b))}).attr("y",function(a,c){return b(h.valueAccessor()(a,c))}).attr("rx",.15*g).attr("ry",.15*i).attr("fill",h.getColor).attr("width",g).attr("height",i),j.exit().remove();var l=e.selectAll("g.cols");l.empty()&&(l=e.append("g").attr("class","cols axis")),l.selectAll("text").data(c.domain()).enter().append("text").attr("x",function(a){return c(a)+g/2}).style("text-anchor","middle").attr("y",h.effectiveHeight()).attr("dy",12).on("click",h.xAxisOnClick).text(function(a){return a});var m=e.selectAll("g.rows");m.empty()&&(m=e.append("g").attr("class","rows axis")),m.selectAll("text").data(b.domain()).enter().append("text").attr("y",function(a){return b(a)+i/2}).attr("dy",6).style("text-anchor","end").attr("x",0).attr("dx",-2).on("click",h.yAxisOnClick).text(function(a){return a})},h.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.pluck=function(a,b){return function(c){return b?b.call(this,c[a]):c[a]}},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(),c);return a.utils.isNegligible(d)&&(d=0),d},a.utils.groupMin=function(b,c){var d=d3.min(b.all(),c);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,c),data:b};return d&&(e.color=d),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.dimension()&&b.dimension().filter){var a=J(b.dimension(),I);I=a?a:I}}function j(){for(var a=0;a=0}),b},K=function(a){return a.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(l)},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.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&&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){if(b.elasticX()&&!b.isOrdinal())v.domain([b.xAxisMin(),b.xAxisMax()]);else if(b.isOrdinal()&&0===v.domain().length){var c=b.computeOrderedGroups(b.data());v.domain(c.map(b.keyAccessor()))}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 b.keyAccessor()(a.data)+": "+b.valueAccessor()(a.data)}),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._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.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(a){var b=d3.scale.category20c(),c=function(b){return a.keyAccessor()(b)},d=function(c){return b(c,a)};return a.colors=function(c){return arguments.length?(b=c instanceof Array?d3.scale.quantize().range(c):c,a):b},a.ordinalColors=function(b){return a.colors(d3.scale.ordinal().range(b))},a.linearColors=function(b){return a.colors(d3.scale.linear().range(b).interpolate(d3.interpolateHcl))},a.colorAccessor=function(b){return arguments.length?(c=b,a):c},a.colorDomain=function(c){return arguments.length?(b.domain(c),a):b.domain()},a.calculateColorDomain=function(){var c=[d3.min(a.data(),a.colorAccessor()),d3.max(a.data(),a.colorAccessor())];b.domain(c)},a.getColor=function(a,b){return d(c(a,b))},a.colorCalculator=function(b){return arguments.length?(d=b,a):d},a},a.stackableChart=function(b){function c(){var a=[];if(b.x()){var c,d=b.x().domain();if(b.isOrdinal()){var e=d3.set(d);c=function(a){return e.has(a.x)}}else c=function(a){return a.x>=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){a.all().forEach(function(a,d){var e=b.getKeyAccessorByIndex(c)(a),f=b.getValueAccessorByIndex(c)(a);i.setDataPoint(c,d,{data:a,x:e,y:f,layer:c})})}var e,f,g,h,i=new a.utils.GroupStack,j=d3.layout.stack().offset("zero").order("default").values(function(a){return a.points});return b.stack=function(a,c,d){return arguments.length||i.clear(),i.setDefaultAccessor(b.valueAccessor()),"string"==typeof c?(b._setGroupName(a,c,d),i.addNamedGroup(a,c,d)):(d=c,i.addGroup(a,d)),b.expireCache(),b},b.hideStack=function(a){i.hideGroups(a,b._getGroupName(b.group())==a)},b.showStack=function(a){i.showGroups(a,b._getGroupName(b.group())==a)},b.expireCache=function(){return e=null,f=null,g=null,h=null,b},b.allGroups=function(){if(null===e){e=[],e.push(b.group());for(var a=0;af?f:c},null);return a.utils.subtract(c,b.xAxisPadding())},b.xAxisMax=function(){var c=b.allGroups().reduce(function(c,d,e){var f=a.utils.groupMax(d,b.getKeyAccessorByIndex(e));return null===c||f>c?f:c},null);return a.utils.add(c,b.xAxisPadding())},b.calculateDataPointMatrixForAll=function(){i.clearDataLayers(),b.allGroups().forEach(d)},b.getChartStack=function(){return i},a.override(b,"valueAccessor",function(a){return arguments.length?(b.expireCache(),b._valueAccessor(a)):b._valueAccessor()}),a.override(b,"keyAccessor",function(a){return arguments.length?(b.expireCache(),b._keyAccessor(a)):b._keyAccessor()}),b.stackLayout=function(a){return arguments.length?(j=a,b):j},b.stackLayers=function(a){return arguments.length?(h=a,void 0):(null===h&&(b.calculateDataPointMatrixForAll(),h=b.stackLayout()(i.toLayers())),h)},b._layerColorAccessor=function(a){return void 0===a.layer?a.index:a.layer},b.colorAccessor(b._layerColorAccessor),b.legendables=function(){return b.allGroups().map(function(c,d){return a.utils.createLegendable(b,c,b.getValueAccessorByIndex(d),b.colorCalculator()(d))})},b},a.abstractBubbleChart=function(b){var c=.3,d=10;b.BUBBLE_NODE_CLASS="node",b.BUBBLE_CLASS="bubble",b.MIN_RADIUS=10,b=a.colorChart(b),b.renderLabel(!0),b.renderTitle(!1),b.data(function(){return b.group().top(1/0)});var e=d3.scale.linear().domain([0,100]),f=function(a){return a.r};b.r=function(a){return arguments.length?(e=a,b):e},b.radiusValueAccessor=function(a){return arguments.length?(f=a,b):f},b.rMin=function(){var a=d3.min(b.data(),function(a){return b.radiusValueAccessor()(a)});return a},b.rMax=function(){var a=d3.max(b.data(),function(a){return b.radiusValueAccessor()(a)});return a},b.bubbleR=function(a){var c=b.radiusValueAccessor()(a),d=b.r()(c);return(isNaN(d)||0>=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.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(){z=z?z:d3.min([F.width(),F.height()])/2;var a=p(),b=r(),c=b(F.data());if(A){var d=A.selectAll("g."+C).data(c);e(d,a,c),j(c,a),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 C+" _"+b});return b}function g(a,b){var c=a.append("path").attr("fill",w).on("click",x).attr("d",function(a,c){return y(a,c,b)});c.transition().duration(F.transitionDuration()).attrTween("d",u)}function h(a){F.renderTitle()&&a.append("title").text(function(a){return F.title()(a)})}function i(b,c){if(F.renderLabel()){var d=A.selectAll("text."+C).data(b);d.exit().remove();var e=d.enter().append("text").attr("class",function(a,b){return C+" _"+b}).on("click",x);a.transition(e,F.transitionDuration()).attr("transform",function(a){a.innerRadius=F.innerRadius(),a.outerRadius=F.radius();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 t(b)||s(a)?"":F.label()(a.data)})}}function j(a,b){k(a,b),l(a,b),m(a)}function k(b,c){var d=A.selectAll("g."+C).data(b).select("path").attr("d",function(a,b){return y(a,b,c)});a.transition(d,F.transitionDuration(),function(a){a.attrTween("d",u)}).attr("fill",w)}function l(b,c){if(F.renderLabel()){var d=A.selectAll("text."+C).data(b);a.transition(d,F.transitionDuration()).attr("transform",function(a){a.innerRadius=D,a.outerRadius=z;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 t(b)||s(a)?"":F.label()(a.data)})}}function m(a){F.renderTitle()&&A.selectAll("g."+C).data(a).select("title").text(function(a){return F.title()(a.data)})}function n(a){a.exit().remove()}function o(){F.hasFilter()?F.selectAll("g."+C).each(function(a){q(a)?F.highlightSelected(this):F.fadeDeselected(this)}):F.selectAll("g."+C).each(function(){F.resetHighlight(this)})}function p(){return d3.svg.arc().outerRadius(z).innerRadius(D)}function q(a){return F.hasFilter(F.cappedKeyAccessor(a.data))}function r(){return d3.layout.pie().sort(null).value(F.cappedValueAccessor)}function s(a){var b=a.endAngle-a.startAngle;return isNaN(b)||E>b}function t(a){return 0===F.cappedValueAccessor(a)}function u(a){a.innerRadius=D;var b=this._current;v(b)&&(b={startAngle:0,endAngle:0});var c=d3.interpolate(b,a);return this._current=c(0),function(a){return y(c(a),0,p())}}function v(a){return!a||isNaN(a.startAngle)||isNaN(a.endAngle)}function w(a,b){return F.getColor(a.data,b)}function x(a,b){F.onClick(a.data,b)}function y(a,b,c){var d=c(a,b);return d.indexOf("NaN")>=0&&(d="M0,0"),d}var z,A,B=.5,C="pie-slice",D=0,E=B,F=a.capped(a.colorChart(a.baseChart({})));return F.colorAccessor(F.cappedKeyAccessor),F.title(function(a){return F.cappedKeyAccessor(a)+": "+F.cappedValueAccessor(a)}),F.slicesCap=F.cap,F.label(F.cappedKeyAccessor),F.renderLabel(!0),F.transitionDuration(350),F.doRender=function(){return F.resetSvg(),A=F.svg().append("g").attr("transform","translate("+F.cx()+","+F.cy()+")"),d(),F},F.innerRadius=function(a){return arguments.length?(D=a,F):D},F.radius=function(a){return arguments.length?(z=a,F):z},F.cx=function(){return F.width()/2},F.cy=function(){return F.height()/2},F.doRedraw=function(){return d(),F},F.minAngleForLabel=function(a){return arguments.length?(E=a,F):E},F.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,a.pluck("data",m.keyAccessor())); +e.enter().append("rect").attr("class","bar").attr("fill",m.getColor),m.renderTitle()&&e.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){var b=d3.select(this);e(b,a)}),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)},a.override(m,"xAxisMax",function(){var a=this._xAxisMax();if("resolution"in m.xUnits()){var b=m.xUnits().resolution;a+=b}return a}),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;m&&(f=f.filter(m));var g=e.select("g."+o+"._"+c);g.empty()&&(g=e.append("g").attr("class",o+" _"+c)),h(g);var n=g.selectAll("circle."+p).data(f);n.enter().append("circle").attr("class",p).attr("r",u).attr("fill",function(){return s.colorCalculator()(c)}).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()),n.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()),n.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.getColor).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.getColor).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(),i.keyAccessor());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;b0&&(a[0]=0),r=d3.scale.linear().domain(a).range([0,y.effectiveWidth()])}z.scale(r)}function e(){var b=q.select("g.axis");d(),b.empty()&&(b=q.append("g").attr("class","axis").attr("transform","translate(0, "+y.effectiveHeight()+")")),a.transition(b,y.transitionDuration()).call(z)}function f(){q.selectAll("g.tick").select("line.grid-line").remove(),q.selectAll("g.tick").append("line").attr("class","grid-line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",function(){return-y.effectiveHeight()})}function g(){t=y.data(),e(),f();var a=q.selectAll("g."+x).data(t);h(a),i(a),j(a)}function h(a){var b=a.enter().append("g").attr("class",function(a,b){return x+" _"+b});b.append("rect").attr("width",0),l(b),m(a)}function i(a){a.exit().remove()}function j(b){var c=t.length,d=(y.effectiveHeight()-(c+1)*w)/c,e=b.attr("transform",function(a,b){return"translate(0,"+((b+1)*w+b*d)+")"}).select("rect").attr("height",d).attr("fill",y.getColor).on("click",n).classed("deselected",function(a){return y.hasFilter()?!p(a):!1}).classed("selected",function(a){return y.hasFilter()?p(a):!1});a.transition(e,y.transitionDuration()).attr("width",function(a){var b=r(0)==-1/0?r(1):r(0);return Math.abs(b-r(y.valueAccessor()(a)))}).attr("transform",o),k(b),m(b)}function k(a){y.renderTitle()&&(a.selectAll("title").remove(),a.append("title").text(y.title()))}function l(a){y.renderLabel()&&a.append("text").on("click",n)}function m(b){if(y.renderLabel()){var c=b.select("text").attr("x",u).attr("y",v).on("click",n).attr("class",function(a,b){return x+" _"+b}).text(function(a){return y.label()(a)});a.transition(c,y.transitionDuration()).attr("transform",o)}}function n(a){y.onClick(a)}function o(a){var b=r(y.cappedValueAccessor(a)),c=r(0),d=b>c?c:b;return"translate("+d+",0)"}function p(a){return y.hasFilter(y.cappedKeyAccessor(a))}var q,r,s,t,u=10,v=15,w=5,x="row",y=a.capped(a.marginable(a.colorChart(a.baseChart({})))),z=d3.svg.axis().orient("bottom");return y.rowsCap=y.cap,y.doRender=function(){return y.resetSvg(),q=y.svg().append("g").attr("transform","translate("+y.margins().left+","+y.margins().top+")"),g(),y},y.title(function(a){return y.cappedKeyAccessor(a)+": "+y.cappedValueAccessor(a)}),y.label(y.cappedKeyAccessor),y.x=function(a){return arguments.length?(r=a,y):r},y.doRedraw=function(){return g(),y},y.xAxis=function(){return z},y.gap=function(a){return arguments.length?(w=a,y):w},y.elasticX=function(a){return arguments.length?(s=a,y):s},y.labelOffsetX=function(a){return arguments.length?(u=a,y):u},y.labelOffsetY=function(a){return arguments.length?(v=a,y):v},y.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.group().all(),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.cappedKeyAccessor=function(a,c){return a.others?a.key:b.keyAccessor()(a,c)},b.cappedValueAccessor=function(a,c){return a.others?a.value:b.valueAccessor()(a,c)},b.data(function(a){if(1/0==c)return b.computeOrderedGroups(a.all());var d=a.top(c);return d=b.computeOrderedGroups(d),e&&e(d),d}),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(a){var b=a.value&&a.value()||a.top(1)[0];return f.valueAccessor()(b)}),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=a.colorChart(a.marginable(a.baseChart({})));return h._mandatoryAttributes(["group"]),h.title(h.colorAccessor()),h.boxOnClick=function(){},h.xAxisOnClick=function(){},h.yAxisOnClick=function(){},h.rows=function(a){if(arguments.length)return g=a,h;if(g)return g;var b=h.data().map(h.valueAccessor());return b.sort(d3.ascending),d3.scale.ordinal().domain(b.filter(d))},h.cols=function(a){if(arguments.length)return f=a,h;if(f)return f;var b=h.data().map(h.keyAccessor());return b.sort(d3.ascending),d3.scale.ordinal().domain(b.filter(d))},h.doRender=function(){return h.resetSvg(),e=h.svg().append("g").attr("class","heatmap").attr("transform","translate("+h.margins().left+","+h.margins().top+")"),h.doRedraw()},h.doRedraw=function(){var b=h.rows(),c=h.cols(),d=b.domain().length,f=c.domain().length,g=Math.floor(h.effectiveWidth()/f),i=Math.floor(h.effectiveHeight()/d);c.rangeRoundBands([0,h.effectiveWidth()]),b.rangeRoundBands([h.effectiveHeight(),0]);var j=e.selectAll("g.box-group").data(h.data(),function(a,b){return h.keyAccessor()(a,b)+"\x00"+h.valueAccessor()(a,b)}),k=j.enter().append("g").attr("class","box-group");k.append("rect").attr("fill","white").on("click",h.boxOnClick),k.append("title").text(function(a){return h.title()(a)}),a.transition(j.select("rect"),h.transitionDuration()).attr("class","heat-box").attr("x",function(a,b){return c(h.keyAccessor()(a,b))}).attr("y",function(a,c){return b(h.valueAccessor()(a,c))}).attr("rx",.15*g).attr("ry",.15*i).attr("fill",h.getColor).attr("width",g).attr("height",i),j.exit().remove();var l=e.selectAll("g.cols");l.empty()&&(l=e.append("g").attr("class","cols axis")),l.selectAll("text").data(c.domain()).enter().append("text").attr("x",function(a){return c(a)+g/2}).style("text-anchor","middle").attr("y",h.effectiveHeight()).attr("dy",12).on("click",h.xAxisOnClick).text(function(a){return a});var m=e.selectAll("g.rows");m.empty()&&(m=e.append("g").attr("class","rows axis")),m.selectAll("text").data(b.domain()).enter().append("text").attr("y",function(a){return b(a)+i/2}).attr("dy",6).style("text-anchor","end").attr("x",0).attr("dx",-2).on("click",h.yAxisOnClick).text(function(a){return a})},h.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 e78d86ba6..6a2a03bd3 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","pluck","f","call","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","color","legendable","_getGroupName","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","dimension","fs","_filterHandler","runAllRenderlets","_renderlets","_dimension","_group","_anchor","_root","_legend","_default_width","getBoundingClientRect","_width","_default_height","_height","_keyAccessor","_valueAccessor","_ordering","_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","dataSet","selectAll","chartGroup","classed","id","svg","resetSvg","remove","filterPrinter","turnOnControls","style","text","turnOffControls","transitionDuration","forEach","result","doRender","activateRenderlets","event","each","doRedraw","_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","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","colors","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","p","plotData","subRender","brushOn","refocused","_colors","category20c","_colorAccessor","_colorCalculator","quantize","ordinalColors","linearColors","interpolate","interpolateHcl","colorAccessor","colorDomain","calculateColorDomain","newDomain","getColor","colorCalculator","stackableChart","flattenStack","test","xDomain","domainSet","set","stackLayers","concat","calculateDataPointMatrix","dataIndex","getKeyAccessorByIndex","getValueAccessorByIndex","_groupStack","_allGroups","_allValueAccessors","_allKeyAccessors","_stackLayers","_stackLayout","layout","stack","offset","order","values","hideStack","stackName","showStack","allGroups","allValueAccessors","y0","allKeyAccessors","reduce","calculateDataPointMatrixForAll","getChartStack","stackLayout","_layerColorAccessor","abstractBubbleChart","_maxBubbleRelativeSize","_minRadiusWithLabel","BUBBLE_NODE_CLASS","BUBBLE_CLASS","MIN_RADIUS","Infinity","_r","_rValueAccessor","radiusValueAccessor","rMin","rMax","bubbleR","isNaN","labelFunction","labelOpacity","doRenderLabel","bubbleGEnter","doUpdateLabels","labels","titleFunction","doRenderTitles","doUpdateTitles","minRadiusWithLabel","maxBubbleRelativeSize","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","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","_xAxisMax","res","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","groups","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","_shareColors","__generateG","compose","children","shareColors","items","childLegendables","seriesChart","clearChart","_charts","resetChildren","keys","_seriesAccessor","_chartFunction","keep","sub","subChart","_compose","_plotData","seriesAccessor","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","boxOnClick","xAxisOnClick","yAxisOnClick","rowValues","cols","colValues","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","pluck","f","call","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","color","legendable","_getGroupName","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","dimension","fs","_filterHandler","runAllRenderlets","_renderlets","_dimension","_group","_anchor","_root","_legend","_default_width","getBoundingClientRect","_width","_default_height","_height","_keyAccessor","_valueAccessor","_ordering","_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","ga","slice","sort","crossfilter","quicksort","by","dataSet","selectAll","chartGroup","classed","id","svg","resetSvg","remove","filterPrinter","turnOnControls","style","text","turnOffControls","transitionDuration","forEach","result","doRender","activateRenderlets","event","each","doRedraw","_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","orderedData","map","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","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","colors","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","p","plotData","subRender","brushOn","refocused","_colors","category20c","_colorAccessor","_colorCalculator","quantize","ordinalColors","linearColors","interpolate","interpolateHcl","colorAccessor","colorDomain","calculateColorDomain","newDomain","getColor","colorCalculator","stackableChart","flattenStack","test","xDomain","domainSet","set","stackLayers","concat","calculateDataPointMatrix","dataIndex","getKeyAccessorByIndex","getValueAccessorByIndex","_groupStack","_allGroups","_allValueAccessors","_allKeyAccessors","_stackLayers","_stackLayout","layout","stack","offset","order","values","hideStack","stackName","showStack","allGroups","allValueAccessors","y0","allKeyAccessors","reduce","calculateDataPointMatrixForAll","getChartStack","stackLayout","_layerColorAccessor","abstractBubbleChart","_maxBubbleRelativeSize","_minRadiusWithLabel","BUBBLE_NODE_CLASS","BUBBLE_CLASS","MIN_RADIUS","Infinity","_r","_rValueAccessor","radiusValueAccessor","rMin","rMax","bubbleR","isNaN","labelFunction","labelOpacity","doRenderLabel","bubbleGEnter","doUpdateLabels","labels","titleFunction","doRenderTitles","doUpdateTitles","minRadiusWithLabel","maxBubbleRelativeSize","isSelectedNode","pieChart","drawChart","_radius","arc","buildArcs","pie","pieLayout","pieData","slices","_sliceCssClass","createElements","updateElements","removeElements","highlightFilter","slicesEnter","createSliceNodes","createSlicePath","createTitles","createLabels","slicePath","fill","safeArc","attrTween","tweenPie","labelsEnter","innerRadius","outerRadius","radius","centroid","sliceHasNoData","sliceTooSmall","updateSlicePaths","updateLabels","updateTitles","slicePaths","_innerRadius","isSelectedSlice","cappedKeyAccessor","cappedValueAccessor","angle","endAngle","startAngle","_minAngleForLabel","b","_current","isOffCanvas","t","path","DEFAULT_MIN_ANGLE_FOR_LABEL","capped","slicesCap","cap","cx","cy","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","_xAxisMax","res","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","groups","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","_shareColors","__generateG","compose","children","shareColors","items","childLegendables","seriesChart","clearChart","_charts","resetChildren","keys","_seriesAccessor","_chartFunction","keep","sub","subChart","_compose","_plotData","seriesAccessor","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","boxOnClick","xAxisOnClick","yAxisOnClick","rowValues","cols","colValues","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","kv","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 cd17d80a5..b9b59bfad 100644 --- a/src/base-chart.js +++ b/src/base-chart.js @@ -193,8 +193,8 @@ dc.baseChart = function (_chart) { return _chart; }; - _chart.computeOrderedGroups = function(arr) { - var data = arr ? arr : _chart.data().slice(0); // clone + _chart.computeOrderedGroups = function(ga) { + var data = ga.slice(0); // clone if(data.length < 2) return data; var sort = crossfilter.quicksort.by(_chart.ordering()); diff --git a/src/capped.js b/src/capped.js index fc74c4983..b695a11bb 100644 --- a/src/capped.js +++ b/src/capped.js @@ -16,26 +16,38 @@ dc.capped = function (_chart) { var _othersGrouper = function (topRows) { var topRowsSum = d3.sum(topRows, _chart.valueAccessor()), - allRows = _chart.data(), + allRows = _chart.group().all(), allRowsSum = d3.sum(allRows, _chart.valueAccessor()), topKeys = topRows.map(_chart.keyAccessor()), allKeys = allRows.map(_chart.keyAccessor()), topSet = d3.set(topKeys), others = allKeys.filter(function(d){return !topSet.has(d);}); if (allRowsSum > topRowsSum) - topRows.push({"others": others,"key": _othersLabel, "value": allRowsSum - topRowsSum }); + topRows.push({"others": others, "key": _othersLabel, "value": allRowsSum - topRowsSum}); }; - _chart._assembleCappedData = function() { + _chart.cappedKeyAccessor = function(d,i) { + if (d.others) + return d.key; + return _chart.keyAccessor()(d,i); + }; + + _chart.cappedValueAccessor = function(d,i) { + if (d.others) + return d.value; + return _chart.valueAccessor()(d,i); + }; + + _chart.data(function(group) { if (_cap == Infinity) { - return _chart.computeOrderedGroups(); + return _chart.computeOrderedGroups(group.all()); } else { - var topRows = _chart.group().top(_cap); // ordered by value + var topRows = group.top(_cap); // ordered by value topRows = _chart.computeOrderedGroups(topRows); // re-order by key if (_othersGrouper) _othersGrouper(topRows); return topRows; } - }; + }); /** #### .cap([count]) @@ -59,13 +71,20 @@ dc.capped = function (_chart) { /** #### .othersGrouper([grouperFunction]) - Get or set the grouper funciton that will perform the insersion of data for the *Others* slice if the slices cap is - specified. If set to a falsy value, no others will be added. By default the grouper function implements the following - logic, you will need change this function to match your data structure if you are not using the a crossfilter group. + Get or set the grouper function that will perform the insertion of data for the *Others* slice if the slices cap is + specified. If set to a falsy value, no others will be added. By default the grouper function computes the sum of all + values below the cap. ```js - function (data, sum) { - data.push({"key": _othersLabel, "value": sum }); - }; + chart.othersGrouper(function (data) { + // compute the value for others, presumably the sum of all values below the cap + var othersSum = yourComputeOthersValueLogic(data) + + // the keys are needed to properly filter when the others element is clicked + var othersKeys = yourComputeOthersKeysArrayLogic(data); + + // add the others row to the dataset + data.push({"key": "Others", "value": othersSum, "others": othersKeys }); + }); ``` **/ _chart.othersGrouper = function (_) { diff --git a/src/coordinate-grid-chart.js b/src/coordinate-grid-chart.js index 5f7e0b6d0..180759a0e 100644 --- a/src/coordinate-grid-chart.js +++ b/src/coordinate-grid-chart.js @@ -293,7 +293,8 @@ dc.coordinateGridChart = function (_chart) { _x.domain([_chart.xAxisMin(), _chart.xAxisMax()]); } else if (_chart.isOrdinal() && _x.domain().length===0) { - _x.domain(_chart.computeOrderedGroups().map(function(kv) { return kv.key; })); + var orderedData = _chart.computeOrderedGroups(_chart.data()); + _x.domain(orderedData.map(_chart.keyAccessor())); } if (_chart.isOrdinal()) { diff --git a/src/pie-chart.js b/src/pie-chart.js index 02a7cb516..3d5fd5080 100644 --- a/src/pie-chart.js +++ b/src/pie-chart.js @@ -2,7 +2,7 @@ ## # Pie Chart [Concrete] < [Color Chart](#color-chart) < [Base Chart](#base-chart) This chart is a concrete pie chart implementation usually used to visualize small number of categorical distributions. Pie chart implementation uses keyAccessor to generate slices, and valueAccessor to calculate the size of each slice(key) -relatively to the total sum of all values. +relatively to the total sum of all values. Slices are ordered by `.ordering` which defaults to sorting by key. Examples: @@ -44,26 +44,24 @@ dc.pieChart = function (parent, chartGroup) { var _chart = dc.capped(dc.colorChart(dc.baseChart({}))); - _chart.colorAccessor(function(d) { return _chart.keyAccessor()(d.data); }); + _chart.colorAccessor(_chart.cappedKeyAccessor); + + _chart.title(function (d) { + return _chart.cappedKeyAccessor(d) + ": " + _chart.cappedValueAccessor(d); + }); /** #### .slicesCap([cap]) - Get or set the maximum number of slices the pie chart will generate. Slices are ordered by its value from high to low. - Other slices exeeding the cap will be rolled up into one single *Others* slice. + Get or set the maximum number of slices the pie chart will generate. The top slices are determined by + value from high to low. Other slices exeeding the cap will be rolled up into one single *Others* slice. + The resulting data will still be sorted by .ordering (default by key). **/ _chart.slicesCap = _chart.cap; - _chart.label(function (d) { - return _chart.keyAccessor()(d.data); - }); - + _chart.label(_chart.cappedKeyAccessor); _chart.renderLabel(true); - _chart.title(function (d) { - return _chart.keyAccessor()(d.data) + ": " + _chart.valueAccessor()(d.data); - }); - _chart.transitionDuration(350); _chart.doRender = function () { @@ -79,14 +77,13 @@ dc.pieChart = function (parent, chartGroup) { }; function drawChart() { - var pie = calculateDataPie(); - // set radius on basis of chart dimension if missing _radius = _radius ? _radius : d3.min([_chart.width(), _chart.height()]) /2; - var arc = _chart.buildArcs(); + var arc = buildArcs(); - var pieData = pie(_chart._assembleCappedData()); + var pie = pieLayout(); + var pieData = pie(_chart.data()); if (_g) { var slices = _g.selectAll("g." + _sliceCssClass) @@ -124,9 +121,7 @@ dc.pieChart = function (parent, chartGroup) { function createSlicePath(slicesEnter, arc) { var slicePath = slicesEnter.append("path") - .attr("fill", function (d, i) { - return _chart.getColor(d, i); - }) + .attr("fill", fill) .on("click", onClick) .attr("d", function (d, i) { return safeArc(d, i, arc); @@ -161,7 +156,7 @@ dc.pieChart = function (parent, chartGroup) { dc.transition(labelsEnter, _chart.transitionDuration()) .attr("transform", function (d) { d.innerRadius = _chart.innerRadius(); - d.outerRadius = _radius; + d.outerRadius = _chart.radius(); var centroid = arc.centroid(d); if (isNaN(centroid[0]) || isNaN(centroid[1])) { return "translate(0,0)"; @@ -174,7 +169,7 @@ dc.pieChart = function (parent, chartGroup) { var data = d.data; if (sliceHasNoData(data) || sliceTooSmall(d)) return ""; - return _chart.label()(d); + return _chart.label()(d.data); }); } } @@ -195,9 +190,7 @@ dc.pieChart = function (parent, chartGroup) { dc.transition(slicePaths, _chart.transitionDuration(), function (s) { s.attrTween("d", tweenPie); - }).attr("fill", function (d, i) { - return _chart.getColor(d, i); - }); + }).attr("fill", fill); } function updateLabels(pieData, arc) { @@ -206,7 +199,7 @@ dc.pieChart = function (parent, chartGroup) { .data(pieData); dc.transition(labels, _chart.transitionDuration()) .attr("transform", function (d) { - d.innerRadius = _chart.innerRadius(); + d.innerRadius = _innerRadius; d.outerRadius = _radius; var centroid = arc.centroid(d); if (isNaN(centroid[0]) || isNaN(centroid[1])) { @@ -220,7 +213,7 @@ dc.pieChart = function (parent, chartGroup) { var data = d.data; if (sliceHasNoData(data) || sliceTooSmall(d)) return ""; - return _chart.label()(d); + return _chart.label()(d.data); }); } } @@ -231,7 +224,7 @@ dc.pieChart = function (parent, chartGroup) { .data(pieData) .select("title") .text(function (d) { - return _chart.title()(d); + return _chart.title()(d.data); }); } } @@ -243,7 +236,7 @@ dc.pieChart = function (parent, chartGroup) { function highlightFilter() { if (_chart.hasFilter()) { _chart.selectAll("g." + _sliceCssClass).each(function (d) { - if (_chart.isSelectedSlice(d)) { + if (isSelectedSlice(d)) { _chart.highlightSelected(this); } else { _chart.fadeDeselected(this); @@ -297,13 +290,13 @@ dc.pieChart = function (parent, chartGroup) { return _chart.height() / 2; }; - _chart.buildArcs = function () { + function buildArcs() { return d3.svg.arc().outerRadius(_radius).innerRadius(_innerRadius); - }; + } - _chart.isSelectedSlice = function (d) { - return _chart.hasFilter(_chart.keyAccessor()(d.data)); - }; + function isSelectedSlice(d) { + return _chart.hasFilter(_chart.cappedKeyAccessor(d.data)); + } _chart.doRedraw = function () { drawChart(); @@ -321,10 +314,8 @@ dc.pieChart = function (parent, chartGroup) { return _chart; }; - function calculateDataPie() { - return d3.layout.pie().sort(null).value(function (d) { - return _chart.valueAccessor()(d); - }); + function pieLayout() { + return d3.layout.pie().sort(null).value(_chart.cappedValueAccessor); } function sliceTooSmall(d) { @@ -332,19 +323,19 @@ dc.pieChart = function (parent, chartGroup) { return isNaN(angle) || angle < _minAngleForLabel; } - function sliceHasNoData(data) { - return _chart.valueAccessor()(data) === 0; + function sliceHasNoData(d) { + return _chart.cappedValueAccessor(d) === 0; } function tweenPie(b) { - b.innerRadius = _chart.innerRadius(); + b.innerRadius = _innerRadius; var current = this._current; if (isOffCanvas(current)) current = {startAngle: 0, endAngle: 0}; var i = d3.interpolate(current, b); this._current = i(0); return function (t) { - return safeArc(i(t), 0, _chart.buildArcs()); + return safeArc(i(t), 0, buildArcs()); }; } @@ -352,8 +343,12 @@ dc.pieChart = function (parent, chartGroup) { return !current || isNaN(current.startAngle) || isNaN(current.endAngle); } - function onClick(d) { - _chart.onClick(d.data); + function fill(d, i) { + return _chart.getColor(d.data, i); + } + + function onClick(d, i) { + _chart.onClick(d.data, i); } function safeArc(d, i, arc) { diff --git a/src/row-chart.js b/src/row-chart.js index 1b4d135d1..171689749 100644 --- a/src/row-chart.js +++ b/src/row-chart.js @@ -46,7 +46,7 @@ dc.rowChart = function (parent, chartGroup) { function calculateAxisScale() { if (!_x || _elasticX) { - var extent = d3.extent(_rowData, _chart.valueAccessor()); + var extent = d3.extent(_rowData, _chart.cappedValueAccessor); if (extent[0] > 0) extent[0] = 0; _x = d3.scale.linear().domain(extent) .range([0, _chart.effectiveWidth()]); @@ -80,12 +80,10 @@ dc.rowChart = function (parent, chartGroup) { }; _chart.title(function (d) { - return _chart.keyAccessor()(d) + ": " + _chart.valueAccessor()(d); + return _chart.cappedKeyAccessor(d) + ": " + _chart.cappedValueAccessor(d); }); - _chart.label(function (d) { - return _chart.keyAccessor()(d); - }); + _chart.label(_chart.cappedKeyAccessor); _chart.x = function(x){ if(!arguments.length) return _x; @@ -110,7 +108,7 @@ dc.rowChart = function (parent, chartGroup) { } function drawChart() { - _rowData = _chart._assembleCappedData(); + _rowData = _chart.data(); drawAxis(); drawGridLines(); @@ -152,10 +150,10 @@ dc.rowChart = function (parent, chartGroup) { .attr("fill", _chart.getColor) .on("click", onClick) .classed("deselected", function (d) { - return (_chart.hasFilter()) ? !_chart.isSelectedRow(d) : false; + return (_chart.hasFilter()) ? !isSelectedRow(d) : false; }) .classed("selected", function (d) { - return (_chart.hasFilter()) ? _chart.isSelectedRow(d) : false; + return (_chart.hasFilter()) ? isSelectedRow(d) : false; }); dc.transition(rect, _chart.transitionDuration()) @@ -172,9 +170,7 @@ dc.rowChart = function (parent, chartGroup) { function createTitles(rows) { if (_chart.renderTitle()) { rows.selectAll("title").remove(); - rows.append("title").text(function (d) { - return _chart.title()(d); - }); + rows.append("title").text(_chart.title()); } } @@ -207,7 +203,7 @@ dc.rowChart = function (parent, chartGroup) { } function translateX(d) { - var x = _x(_chart.valueAccessor()(d)), + var x = _x(_chart.cappedValueAccessor(d)), x0 = _x(0), s = x > x0 ? x0 : x; return "translate("+s+",0)"; @@ -267,9 +263,9 @@ dc.rowChart = function (parent, chartGroup) { return _chart; }; - _chart.isSelectedRow = function (d) { - return _chart.hasFilter(_chart.keyAccessor()(d)); - }; + function isSelectedRow (d) { + return _chart.hasFilter(_chart.cappedKeyAccessor(d)); + } return _chart.anchor(parent, chartGroup); }; diff --git a/test/pie-chart-test.js b/test/pie-chart-test.js index c6de9cfdd..ceae9e25c 100644 --- a/test/pie-chart-test.js +++ b/test/pie-chart-test.js @@ -265,10 +265,10 @@ suite.addBatch({ topic: function (chart) { return chart; }, - 'group should be order': function (chart) { - var group = chart.computeOrderedGroups(); + 'group should be orderd': function (chart) { + var group = chart.computeOrderedGroups(chart.group().all()); countryDimension.filter("US"); - var group2 = chart.computeOrderedGroups(); + var group2 = chart.computeOrderedGroups(chart.group().all()); assert.equal(group2[0].key, group[0].key); } } @@ -333,33 +333,59 @@ suite.addBatch({ } }); suite.addBatch({ - 'pie chart slices cap': { + 'pie chart slices cap and group switching': { topic: function () { var chart = buildChart("pie-chart4"); - chart.slicesCap(3) + chart.slicesCap(2) .renderTitle(true) .othersLabel("small"); chart.render(); return chart; }, - 'produce expected number of slices': function(chart) { - assert.lengthOf(chart.selectAll("text.pie-slice")[0], 4); - }, - 'others slice should use custom name': function(chart) { - assert.equal(d3.select(chart.selectAll("text.pie-slice")[0][3]).text(), "small"); - }, - 'remaining slices should be in numerical order': function(chart) { - assert.deepEqual(chart.selectAll("text.pie-slice").data().map(function(slice) { return slice.data.key; }), - ["22","33","44","small"]); - }, - 'clicking others sclice should filter all groups slices': function(chart) { - var event = document.createEvent("SVGEvents"); - event.initEvent("click",true,true); - chart.selectAll(".pie-slice path")[0][3].dispatchEvent(event); - assert.deepEqual(chart.filters(),["55","66","small"]); - chart.selectAll(".pie-slice path")[0][3].dispatchEvent(event); - assert.deepEqual(chart.filters(),[]); - }, + 'with normal valueAccessor': { + topic: function (chart) { + chart.dimension(valueDimension).group(valueGroup) + .valueAccessor(dc.pluck('value')) + .render(); + return chart; + }, + 'produce expected number of slices': function(chart) { + assert.lengthOf(chart.selectAll("text.pie-slice")[0], 3); + }, + 'others slice should use custom name': function(chart) { + assert.equal(d3.select(chart.selectAll("text.pie-slice")[0][2]).text(), "small"); + }, + 'remaining slices should be in numerical order': function(chart) { + assert.deepEqual(chart.selectAll("text.pie-slice").data().map(dc.pluck('value')), + [2,3,5]); + }, + 'clicking others slice should filter all groups slices': function(chart) { + var event = document.createEvent("SVGEvents"); + event.initEvent("click",true,true); + chart.selectAll(".pie-slice path")[0][2].dispatchEvent(event); + assert.deepEqual(chart.filters(),["22","55","66","small"]); + chart.selectAll(".pie-slice path")[0][2].dispatchEvent(event); + assert.deepEqual(chart.filters(),[]); + } + },/* + 'with custom valueAccessor': { + topic: function (chart) { + chart.dimension(statusDimension).group(statusMultiGroup) + .valueAccessor(function(d) {return d.value.value;}) + .render(); + return chart; + }, + 'correct values, no others row': function(chart) { + assert.deepEqual(chart.selectAll("g.pie-slice").data().map(dc.pluck('value')), + [220, 198]); + }, + 'correct values, others row': function(chart) { + chart.cap(1).render(); + assert.deepEqual(chart.selectAll("title")[0].map(function(t) {return d3.select(t).text();}), + [ 'F: 220', 'small: 198' ]); + chart.cap(3); //teardown + } + },*/ teardown: function (chart) { resetAllFilters(); resetBody(); diff --git a/test/row-chart-test.js b/test/row-chart-test.js index 946575221..28a6fb9e9 100644 --- a/test/row-chart-test.js +++ b/test/row-chart-test.js @@ -155,9 +155,9 @@ var rowChartVows = function(group) { return chart; }, 'group should be order': function (chart) { - var group = chart.computeOrderedGroups(); + var group = chart.computeOrderedGroups(chart.group().all()); countryDimension.filter("US"); - var group2 = chart.computeOrderedGroups(); + var group2 = chart.computeOrderedGroups(chart.group().all()); assert.equal(group2[0].key, group[0].key); } } diff --git a/web/docs/api-1.7.0-dev.md b/web/docs/api-1.7.0-dev.md index 7d7f375a7..c15722e52 100644 --- a/web/docs/api-1.7.0-dev.md +++ b/web/docs/api-1.7.0-dev.md @@ -591,7 +591,7 @@ different bubbles are too great. Default value: 0.3 ## # Pie Chart [Concrete] < [Color Chart](#color-chart) < [Base Chart](#base-chart) This chart is a concrete pie chart implementation usually used to visualize small number of categorical distributions. Pie chart implementation uses keyAccessor to generate slices, and valueAccessor to calculate the size of each slice(key) -relatively to the total sum of all values. +relatively to the total sum of all values. Slices are ordered by `.ordering` which defaults to sorting by key. Examples: @@ -619,8 +619,9 @@ var chart2 = dc.pieChart("#chart-container2", "chartGroupA"); ``` #### .slicesCap([cap]) -Get or set the maximum number of slices the pie chart will generate. Slices are ordered by its value from high to low. - Other slices exeeding the cap will be rolled up into one single *Others* slice. +Get or set the maximum number of slices the pie chart will generate. The top slices are determined by +value from high to low. Other slices exeeding the cap will be rolled up into one single *Others* slice. +The resulting data will still be sorted by .ordering (default by key). #### .innerRadius([innerRadius]) Get or set the inner radius on a particular pie chart instance. If inner radius is greater than 0px then the pie chart @@ -1088,13 +1089,20 @@ Get or set the count of elements to that will be included in the cap. Get or set the label for *Others* slice when slices cap is specified. Default label is **Others**. #### .othersGrouper([grouperFunction]) -Get or set the grouper funciton that will perform the insersion of data for the *Others* slice if the slices cap is -specified. If set to a falsy value, no others will be added. By default the grouper function implements the following -logic, you will need change this function to match your data structure if you are not using the a crossfilter group. +Get or set the grouper function that will perform the insertion of data for the *Others* slice if the slices cap is +specified. If set to a falsy value, no others will be added. By default the grouper function computes the sum of all +values below the cap. ```js -function (data, sum) { - data.push({"key": _othersLabel, "value": sum }); -}; +chart.othersGrouper(function (data) { + // compute the value for others, presumably the sum of all values below the cap + var othersSum = yourComputeOthersValueLogic(data) + + // the keys are needed to properly filter when the others element is clicked + var othersKeys = yourComputeOthersKeysArrayLogic(data); + + // add the others row to the dataset + data.push({"key": "Others", "value": othersSum, "others": othersKeys }); +}); ``` ## # Number Display [Concrete] < [Base Chart](#base-chart) diff --git a/web/docs/index.html b/web/docs/index.html index e2e53186b..225eebbd6 100644 --- a/web/docs/index.html +++ b/web/docs/index.html @@ -560,7 +560,7 @@

.maxBubbleRelativeSize([relativeSize])

# Pie Chart [Concrete] < Color Chart < Base Chart

This chart is a concrete pie chart implementation usually used to visualize small number of categorical distributions. Pie chart implementation uses keyAccessor to generate slices, and valueAccessor to calculate the size of each slice(key) -relatively to the total sum of all values.

+relatively to the total sum of all values. Slices are ordered by .ordering which defaults to sorting by key.

Examples:

  • Nasdaq 100 Index
  • @@ -582,8 +582,9 @@

    dc.pieChart(parent[, chartGroup])

    // create a pie chart under #chart-container2 element using chart group A var chart2 = dc.pieChart("#chart-container2", "chartGroupA");

    .slicesCap([cap])

    -

    Get or set the maximum number of slices the pie chart will generate. Slices are ordered by its value from high to low. - Other slices exeeding the cap will be rolled up into one single Others slice.

    +

    Get or set the maximum number of slices the pie chart will generate. The top slices are determined by +value from high to low. Other slices exeeding the cap will be rolled up into one single Others slice. +The resulting data will still be sorted by .ordering (default by key).

    .innerRadius([innerRadius])

    Get or set the inner radius on a particular pie chart instance. If inner radius is greater than 0px then the pie chart will be essentially rendered as a doughnut chart. Default inner radius is 0px.

    @@ -925,12 +926,19 @@

    .cap([count])

    .othersLabel([label])

    Get or set the label for Others slice when slices cap is specified. Default label is Others.

    .othersGrouper([grouperFunction])

    -

    Get or set the grouper funciton that will perform the insersion of data for the Others slice if the slices cap is -specified. If set to a falsy value, no others will be added. By default the grouper function implements the following -logic, you will need change this function to match your data structure if you are not using the a crossfilter group.

    -
    function (data, sum) {
    -    data.push({"key": _othersLabel, "value": sum });
    -};
    +

    Get or set the grouper function that will perform the insertion of data for the Others slice if the slices cap is +specified. If set to a falsy value, no others will be added. By default the grouper function computes the sum of all +values below the cap.

    +
    chart.othersGrouper(function (data) {
    +    // compute the value for others, presumably the sum of all values below the cap
    +    var othersSum  = yourComputeOthersValueLogic(data)
    +
    +    // the keys are needed to properly filter when the others element is clicked
    +    var othersKeys = yourComputeOthersKeysArrayLogic(data);
    +
    +    // add the others row to the dataset
    +    data.push({"key": "Others", "value": othersSum, "others": othersKeys });
    +});

    # Number Display [Concrete] < Base Chart

    A display of a single numeric value.

    Examples:

    diff --git a/web/examples/pie.html b/web/examples/pie.html index 375a14c79..7b5c08b6b 100644 --- a/web/examples/pie.html +++ b/web/examples/pie.html @@ -29,6 +29,7 @@ .width(768) .height(480) .slicesCap(4) + .innerRadius(100) .dimension(runDimension) .group(speedSumGroup) .renderlet(function (chart) { diff --git a/web/js/dc.js b/web/js/dc.js index 61cd1dc5f..6cf0467f7 100644 --- a/web/js/dc.js +++ b/web/js/dc.js @@ -872,8 +872,8 @@ dc.baseChart = function (_chart) { return _chart; }; - _chart.computeOrderedGroups = function(arr) { - var data = arr ? arr : _chart.data().slice(0); // clone + _chart.computeOrderedGroups = function(ga) { + var data = ga.slice(0); // clone if(data.length < 2) return data; var sort = crossfilter.quicksort.by(_chart.ordering()); @@ -1804,7 +1804,8 @@ dc.coordinateGridChart = function (_chart) { _x.domain([_chart.xAxisMin(), _chart.xAxisMax()]); } else if (_chart.isOrdinal() && _x.domain().length===0) { - _x.domain(_chart.computeOrderedGroups().map(function(kv) { return kv.key; })); + var orderedData = _chart.computeOrderedGroups(_chart.data()); + _x.domain(orderedData.map(_chart.keyAccessor())); } if (_chart.isOrdinal()) { @@ -2999,7 +3000,7 @@ dc.abstractBubbleChart = function (_chart) { ## # Pie Chart [Concrete] < [Color Chart](#color-chart) < [Base Chart](#base-chart) This chart is a concrete pie chart implementation usually used to visualize small number of categorical distributions. Pie chart implementation uses keyAccessor to generate slices, and valueAccessor to calculate the size of each slice(key) -relatively to the total sum of all values. +relatively to the total sum of all values. Slices are ordered by `.ordering` which defaults to sorting by key. Examples: @@ -3041,26 +3042,24 @@ dc.pieChart = function (parent, chartGroup) { var _chart = dc.capped(dc.colorChart(dc.baseChart({}))); - _chart.colorAccessor(function(d) { return _chart.keyAccessor()(d.data); }); + _chart.colorAccessor(_chart.cappedKeyAccessor); + + _chart.title(function (d) { + return _chart.cappedKeyAccessor(d) + ": " + _chart.cappedValueAccessor(d); + }); /** #### .slicesCap([cap]) - Get or set the maximum number of slices the pie chart will generate. Slices are ordered by its value from high to low. - Other slices exeeding the cap will be rolled up into one single *Others* slice. + Get or set the maximum number of slices the pie chart will generate. The top slices are determined by + value from high to low. Other slices exeeding the cap will be rolled up into one single *Others* slice. + The resulting data will still be sorted by .ordering (default by key). **/ _chart.slicesCap = _chart.cap; - _chart.label(function (d) { - return _chart.keyAccessor()(d.data); - }); - + _chart.label(_chart.cappedKeyAccessor); _chart.renderLabel(true); - _chart.title(function (d) { - return _chart.keyAccessor()(d.data) + ": " + _chart.valueAccessor()(d.data); - }); - _chart.transitionDuration(350); _chart.doRender = function () { @@ -3076,14 +3075,13 @@ dc.pieChart = function (parent, chartGroup) { }; function drawChart() { - var pie = calculateDataPie(); - // set radius on basis of chart dimension if missing _radius = _radius ? _radius : d3.min([_chart.width(), _chart.height()]) /2; - var arc = _chart.buildArcs(); + var arc = buildArcs(); - var pieData = pie(_chart._assembleCappedData()); + var pie = pieLayout(); + var pieData = pie(_chart.data()); if (_g) { var slices = _g.selectAll("g." + _sliceCssClass) @@ -3121,9 +3119,7 @@ dc.pieChart = function (parent, chartGroup) { function createSlicePath(slicesEnter, arc) { var slicePath = slicesEnter.append("path") - .attr("fill", function (d, i) { - return _chart.getColor(d, i); - }) + .attr("fill", fill) .on("click", onClick) .attr("d", function (d, i) { return safeArc(d, i, arc); @@ -3158,7 +3154,7 @@ dc.pieChart = function (parent, chartGroup) { dc.transition(labelsEnter, _chart.transitionDuration()) .attr("transform", function (d) { d.innerRadius = _chart.innerRadius(); - d.outerRadius = _radius; + d.outerRadius = _chart.radius(); var centroid = arc.centroid(d); if (isNaN(centroid[0]) || isNaN(centroid[1])) { return "translate(0,0)"; @@ -3171,7 +3167,7 @@ dc.pieChart = function (parent, chartGroup) { var data = d.data; if (sliceHasNoData(data) || sliceTooSmall(d)) return ""; - return _chart.label()(d); + return _chart.label()(d.data); }); } } @@ -3192,9 +3188,7 @@ dc.pieChart = function (parent, chartGroup) { dc.transition(slicePaths, _chart.transitionDuration(), function (s) { s.attrTween("d", tweenPie); - }).attr("fill", function (d, i) { - return _chart.getColor(d, i); - }); + }).attr("fill", fill); } function updateLabels(pieData, arc) { @@ -3203,7 +3197,7 @@ dc.pieChart = function (parent, chartGroup) { .data(pieData); dc.transition(labels, _chart.transitionDuration()) .attr("transform", function (d) { - d.innerRadius = _chart.innerRadius(); + d.innerRadius = _innerRadius; d.outerRadius = _radius; var centroid = arc.centroid(d); if (isNaN(centroid[0]) || isNaN(centroid[1])) { @@ -3217,7 +3211,7 @@ dc.pieChart = function (parent, chartGroup) { var data = d.data; if (sliceHasNoData(data) || sliceTooSmall(d)) return ""; - return _chart.label()(d); + return _chart.label()(d.data); }); } } @@ -3228,7 +3222,7 @@ dc.pieChart = function (parent, chartGroup) { .data(pieData) .select("title") .text(function (d) { - return _chart.title()(d); + return _chart.title()(d.data); }); } } @@ -3240,7 +3234,7 @@ dc.pieChart = function (parent, chartGroup) { function highlightFilter() { if (_chart.hasFilter()) { _chart.selectAll("g." + _sliceCssClass).each(function (d) { - if (_chart.isSelectedSlice(d)) { + if (isSelectedSlice(d)) { _chart.highlightSelected(this); } else { _chart.fadeDeselected(this); @@ -3294,13 +3288,13 @@ dc.pieChart = function (parent, chartGroup) { return _chart.height() / 2; }; - _chart.buildArcs = function () { + function buildArcs() { return d3.svg.arc().outerRadius(_radius).innerRadius(_innerRadius); - }; + } - _chart.isSelectedSlice = function (d) { - return _chart.hasFilter(_chart.keyAccessor()(d.data)); - }; + function isSelectedSlice(d) { + return _chart.hasFilter(_chart.cappedKeyAccessor(d.data)); + } _chart.doRedraw = function () { drawChart(); @@ -3318,10 +3312,8 @@ dc.pieChart = function (parent, chartGroup) { return _chart; }; - function calculateDataPie() { - return d3.layout.pie().sort(null).value(function (d) { - return _chart.valueAccessor()(d); - }); + function pieLayout() { + return d3.layout.pie().sort(null).value(_chart.cappedValueAccessor); } function sliceTooSmall(d) { @@ -3329,19 +3321,19 @@ dc.pieChart = function (parent, chartGroup) { return isNaN(angle) || angle < _minAngleForLabel; } - function sliceHasNoData(data) { - return _chart.valueAccessor()(data) === 0; + function sliceHasNoData(d) { + return _chart.cappedValueAccessor(d) === 0; } function tweenPie(b) { - b.innerRadius = _chart.innerRadius(); + b.innerRadius = _innerRadius; var current = this._current; if (isOffCanvas(current)) current = {startAngle: 0, endAngle: 0}; var i = d3.interpolate(current, b); this._current = i(0); return function (t) { - return safeArc(i(t), 0, _chart.buildArcs()); + return safeArc(i(t), 0, buildArcs()); }; } @@ -3349,8 +3341,12 @@ dc.pieChart = function (parent, chartGroup) { return !current || isNaN(current.startAngle) || isNaN(current.endAngle); } - function onClick(d) { - _chart.onClick(d.data); + function fill(d, i) { + return _chart.getColor(d.data, i); + } + + function onClick(d, i) { + _chart.onClick(d.data, i); } function safeArc(d, i, arc) { @@ -5075,7 +5071,7 @@ dc.rowChart = function (parent, chartGroup) { function calculateAxisScale() { if (!_x || _elasticX) { - var extent = d3.extent(_rowData, _chart.valueAccessor()); + var extent = d3.extent(_rowData, _chart.cappedValueAccessor); if (extent[0] > 0) extent[0] = 0; _x = d3.scale.linear().domain(extent) .range([0, _chart.effectiveWidth()]); @@ -5109,12 +5105,10 @@ dc.rowChart = function (parent, chartGroup) { }; _chart.title(function (d) { - return _chart.keyAccessor()(d) + ": " + _chart.valueAccessor()(d); + return _chart.cappedKeyAccessor(d) + ": " + _chart.cappedValueAccessor(d); }); - _chart.label(function (d) { - return _chart.keyAccessor()(d); - }); + _chart.label(_chart.cappedKeyAccessor); _chart.x = function(x){ if(!arguments.length) return _x; @@ -5139,7 +5133,7 @@ dc.rowChart = function (parent, chartGroup) { } function drawChart() { - _rowData = _chart._assembleCappedData(); + _rowData = _chart.data(); drawAxis(); drawGridLines(); @@ -5181,10 +5175,10 @@ dc.rowChart = function (parent, chartGroup) { .attr("fill", _chart.getColor) .on("click", onClick) .classed("deselected", function (d) { - return (_chart.hasFilter()) ? !_chart.isSelectedRow(d) : false; + return (_chart.hasFilter()) ? !isSelectedRow(d) : false; }) .classed("selected", function (d) { - return (_chart.hasFilter()) ? _chart.isSelectedRow(d) : false; + return (_chart.hasFilter()) ? isSelectedRow(d) : false; }); dc.transition(rect, _chart.transitionDuration()) @@ -5201,9 +5195,7 @@ dc.rowChart = function (parent, chartGroup) { function createTitles(rows) { if (_chart.renderTitle()) { rows.selectAll("title").remove(); - rows.append("title").text(function (d) { - return _chart.title()(d); - }); + rows.append("title").text(_chart.title()); } } @@ -5236,7 +5228,7 @@ dc.rowChart = function (parent, chartGroup) { } function translateX(d) { - var x = _x(_chart.valueAccessor()(d)), + var x = _x(_chart.cappedValueAccessor(d)), x0 = _x(0), s = x > x0 ? x0 : x; return "translate("+s+",0)"; @@ -5296,9 +5288,9 @@ dc.rowChart = function (parent, chartGroup) { return _chart; }; - _chart.isSelectedRow = function (d) { - return _chart.hasFilter(_chart.keyAccessor()(d)); - }; + function isSelectedRow (d) { + return _chart.hasFilter(_chart.cappedKeyAccessor(d)); + } return _chart.anchor(parent, chartGroup); }; @@ -5431,26 +5423,38 @@ dc.capped = function (_chart) { var _othersGrouper = function (topRows) { var topRowsSum = d3.sum(topRows, _chart.valueAccessor()), - allRows = _chart.data(), + allRows = _chart.group().all(), allRowsSum = d3.sum(allRows, _chart.valueAccessor()), topKeys = topRows.map(_chart.keyAccessor()), allKeys = allRows.map(_chart.keyAccessor()), topSet = d3.set(topKeys), others = allKeys.filter(function(d){return !topSet.has(d);}); if (allRowsSum > topRowsSum) - topRows.push({"others": others,"key": _othersLabel, "value": allRowsSum - topRowsSum }); + topRows.push({"others": others, "key": _othersLabel, "value": allRowsSum - topRowsSum}); }; - _chart._assembleCappedData = function() { + _chart.cappedKeyAccessor = function(d,i) { + if (d.others) + return d.key; + return _chart.keyAccessor()(d,i); + }; + + _chart.cappedValueAccessor = function(d,i) { + if (d.others) + return d.value; + return _chart.valueAccessor()(d,i); + }; + + _chart.data(function(group) { if (_cap == Infinity) { - return _chart.computeOrderedGroups(); + return _chart.computeOrderedGroups(group.all()); } else { - var topRows = _chart.group().top(_cap); // ordered by value + var topRows = group.top(_cap); // ordered by value topRows = _chart.computeOrderedGroups(topRows); // re-order by key if (_othersGrouper) _othersGrouper(topRows); return topRows; } - }; + }); /** #### .cap([count]) @@ -5474,13 +5478,20 @@ dc.capped = function (_chart) { /** #### .othersGrouper([grouperFunction]) - Get or set the grouper funciton that will perform the insersion of data for the *Others* slice if the slices cap is - specified. If set to a falsy value, no others will be added. By default the grouper function implements the following - logic, you will need change this function to match your data structure if you are not using the a crossfilter group. + Get or set the grouper function that will perform the insertion of data for the *Others* slice if the slices cap is + specified. If set to a falsy value, no others will be added. By default the grouper function computes the sum of all + values below the cap. ```js - function (data, sum) { - data.push({"key": _othersLabel, "value": sum }); - }; + chart.othersGrouper(function (data) { + // compute the value for others, presumably the sum of all values below the cap + var othersSum = yourComputeOthersValueLogic(data) + + // the keys are needed to properly filter when the others element is clicked + var othersKeys = yourComputeOthersKeysArrayLogic(data); + + // add the others row to the dataset + data.push({"key": "Others", "value": othersSum, "others": othersKeys }); + }); ``` **/ _chart.othersGrouper = function (_) {