dcjs-rails 1.2.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,3 @@
1
- dc={version:"1.2.0",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};dc.chartRegistry=function(){var _chartMap={};this.has=function(chart){for(var e in _chartMap){if(_chartMap[e].indexOf(chart)>=0)return true}return false};function initializeChartGroup(group){if(!group)group=dc.constants.DEFAULT_CHART_GROUP;if(!_chartMap[group])_chartMap[group]=[];return group}this.register=function(chart,group){group=initializeChartGroup(group);_chartMap[group].push(chart)};this.clear=function(){_chartMap={}};this.list=function(group){group=initializeChartGroup(group);return _chartMap[group]};return this}();dc.registerChart=function(chart,group){dc.chartRegistry.register(chart,group)};dc.hasChart=function(chart){return dc.chartRegistry.has(chart)};dc.deregisterAllCharts=function(){dc.chartRegistry.clear()};dc.filterAll=function(group){var charts=dc.chartRegistry.list(group);for(var i=0;i<charts.length;++i){charts[i].filterAll()}};dc.renderAll=function(group){var charts=dc.chartRegistry.list(group);for(var i=0;i<charts.length;++i){charts[i].render()}if(dc._renderlet!==null)dc._renderlet(group)};dc.redrawAll=function(group){var charts=dc.chartRegistry.list(group);for(var i=0;i<charts.length;++i){charts[i].redraw()}if(dc._renderlet!==null)dc._renderlet(group)};dc.transition=function(selections,duration,callback){if(duration<=0||duration===undefined)return selections;var s=selections.transition().duration(duration);if(callback instanceof Function){callback(s)}return s};dc.units={};dc.units.integers=function(s,e){return Math.abs(e-s)};dc.units.ordinal=function(s,e,domain){return domain};dc.units.float={};dc.units.float.precision=function(precision){var _f=function(s,e,domain){return Math.ceil(Math.abs((e-s)/_f.resolution))};_f.resolution=precision;return _f};dc.round={};dc.round.floor=function(n){return Math.floor(n)};dc.round.ceil=function(n){return Math.ceil(n)};dc.round.round=function(n){return Math.round(n)};dc.override=function(obj,functionName,newFunction){var existingFunction=obj[functionName];obj["_"+functionName]=existingFunction;obj[functionName]=newFunction};dc.renderlet=function(_){if(!arguments.length)return dc._renderlet;dc._renderlet=_;return dc};dc.instanceOfChart=function(o){return o instanceof Object&&o.__dc_flag__};dc.errors={};dc.errors.Exception=function(msg){var _msg=msg!=null?msg:"Unexpected internal error";this.message=_msg;this.toString=function(){return _msg}};dc.errors.InvalidStateException=function(){dc.errors.Exception.apply(this,arguments)};dc.dateFormat=d3.time.format("%m/%d/%Y");dc.printers={};dc.printers.filter=function(filter){var s="";if(filter){if(filter instanceof Array){if(filter.length>=2)s="["+printSingleValue(filter[0])+" -> "+printSingleValue(filter[1])+"]";else if(filter.length>=1)s=printSingleValue(filter[0])}else{s=printSingleValue(filter)}}return s};function printSingleValue(filter){var s=""+filter;if(filter instanceof Date)s=dc.dateFormat(filter);else if(typeof filter=="string")s=filter;else if(typeof filter=="number")s=Math.round(filter);return s}dc.utils={};dc.utils.add=function(l,r){if(typeof r==="string")r=r.replace("%","");if(l instanceof Date){if(typeof r==="string")r=+r;var d=new Date;d.setTime(l.getTime());d.setDate(l.getDate()+r);return d}else if(typeof r==="string"){var percentage=+r/100;return l>0?l*(1+percentage):l*(1-percentage)}else{return l+r}};dc.utils.subtract=function(l,r){if(typeof r==="string")r=r.replace("%","");if(l instanceof Date){if(typeof r==="string")r=+r;var d=new Date;d.setTime(l.getTime());d.setDate(l.getDate()-r);return d}else if(typeof r==="string"){var percentage=+r/100;return l<0?l*(1+percentage):l*(1-percentage)}else{return l-r}};dc.utils.GroupStack=function(){var _dataPointMatrix=[];var _groups=[];var _defaultAccessor;function initializeDataPointRow(x){if(!_dataPointMatrix[x])_dataPointMatrix[x]=[]}this.setDataPoint=function(x,y,data){initializeDataPointRow(x);_dataPointMatrix[x][y]=data};this.getDataPoint=function(x,y){initializeDataPointRow(x);var dataPoint=_dataPointMatrix[x][y];if(dataPoint==undefined)dataPoint=0;return dataPoint};this.addGroup=function(group,retriever){if(!retriever)retriever=_defaultAccessor;_groups.push([group,retriever]);return _groups.length-1};this.getGroupByIndex=function(index){return _groups[index][0]};this.getAccessorByIndex=function(index){return _groups[index][1]};this.size=function(){return _groups.length};this.clear=function(){_dataPointMatrix=[];_groups=[]};this.setDefaultAccessor=function(retriever){_defaultAccessor=retriever};this.getDataPoints=function(){return _dataPointMatrix}};function isNegligible(max){return max===undefined||max<dc.constants.NEGLIGIBLE_NUMBER&&max>-dc.constants.NEGLIGIBLE_NUMBER}dc.utils.groupMax=function(group,accessor){var max=d3.max(group.all(),function(e){return accessor(e)});if(isNegligible(max))max=0;return max};dc.utils.groupMin=function(group,accessor){var min=d3.min(group.all(),function(e){return accessor(e)});if(isNegligible(min))min=0;return min};dc.utils.nameToId=function(name){return name.toLowerCase().replace(/[\s]/g,"_").replace(/[\.']/g,"")};dc.utils.appendOrSelect=function(parent,name){var element=parent.select(name);if(element.empty())element=parent.append(name);return element};dc.events={current:null};dc.events.trigger=function(closure,delay){if(!delay){closure();return}dc.events.current=closure;setTimeout(function(){if(closure==dc.events.current)closure()},delay)};dc.cumulative={};dc.cumulative.Base=function(){this._keyIndex=[];this._map={};this.sanitizeKey=function(key){key=key+"";return key};this.clear=function(){this._keyIndex=[];this._map={}};this.size=function(){return this._keyIndex.length};this.getValueByKey=function(key){key=this.sanitizeKey(key);var value=this._map[key];return value};this.setValueByKey=function(key,value){key=this.sanitizeKey(key);return this._map[key]=value};this.indexOfKey=function(key){key=this.sanitizeKey(key);return this._keyIndex.indexOf(key)};this.addToIndex=function(key){key=this.sanitizeKey(key);this._keyIndex.push(key)};this.getKeyByIndex=function(index){return this._keyIndex[index]}};dc.cumulative.Sum=function(){dc.cumulative.Base.apply(this,arguments);this.add=function(key,value){if(value==null)value=0;if(this.getValueByKey(key)==null){this.addToIndex(key);this.setValueByKey(key,value)}else{this.setValueByKey(key,this.getValueByKey(key)+value)}};this.minus=function(key,value){this.setValueByKey(key,this.getValueByKey(key)-value)};this.cumulativeSum=function(key){var keyIndex=this.indexOfKey(key);if(keyIndex<0)return 0;var cumulativeValue=0;for(var i=0;i<=keyIndex;++i){var k=this.getKeyByIndex(i);cumulativeValue+=this.getValueByKey(k)}return cumulativeValue}};dc.cumulative.Sum.prototype=new dc.cumulative.Base;dc.cumulative.CountUnique=function(){dc.cumulative.Base.apply(this,arguments);function hashSize(hash){var size=0,key;for(key in hash){if(hash.hasOwnProperty(key))size++}return size}this.add=function(key,e){if(this.getValueByKey(key)==null){this.setValueByKey(key,{});this.addToIndex(key)}if(e!=null){if(this.getValueByKey(key)[e]==null)this.getValueByKey(key)[e]=0;this.getValueByKey(key)[e]+=1}};this.minus=function(key,e){this.getValueByKey(key)[e]-=1;if(this.getValueByKey(key)[e]<=0)delete this.getValueByKey(key)[e]};this.count=function(key){return hashSize(this.getValueByKey(key))};this.cumulativeCount=function(key){var keyIndex=this.indexOfKey(key);if(keyIndex<0)return 0;var cumulativeCount=0;for(var i=0;i<=keyIndex;++i){var k=this.getKeyByIndex(i);cumulativeCount+=this.count(k)}return cumulativeCount}};dc.cumulative.CountUnique.prototype=new dc.cumulative.Base;dc.baseChart=function(_chart){_chart.__dc_flag__=true;var _dimension;var _group;var _anchor;var _root;var _svg;var _width=200,_height=200;var _keyAccessor=function(d){return d.key};var _valueAccessor=function(d){return d.value};var _label=function(d){return d.key};var _renderLabel=false;var _title=function(d){return d.key+": "+d.value};var _renderTitle=false;var _transitionDuration=750;var _filterPrinter=dc.printers.filter;var _renderlets=[];var _chartGroup=dc.constants.DEFAULT_CHART_GROUP;var NULL_LISTENER=function(chart){};var _listeners={preRender:NULL_LISTENER,postRender:NULL_LISTENER,preRedraw:NULL_LISTENER,postRedraw:NULL_LISTENER,filtered:NULL_LISTENER};_chart.width=function(w){if(!arguments.length)return _width;_width=w;return _chart};_chart.height=function(h){if(!arguments.length)return _height;_height=h;return _chart};_chart.dimension=function(d){if(!arguments.length)return _dimension;_dimension=d;return _chart};_chart.group=function(g){if(!arguments.length)return _group;_group=g;return _chart};_chart.orderedGroup=function(){return _group.order(function(p){return p.key})};_chart.filterAll=function(){return _chart.filter(null)};_chart.dataSet=function(){return _dimension!=undefined&&_group!=undefined};_chart.select=function(s){return _root.select(s)};_chart.selectAll=function(s){return _root.selectAll(s)};_chart.anchor=function(a,chartGroup){if(!arguments.length)return _anchor;if(dc.instanceOfChart(a)){_anchor=a.anchor();_root=a.root()}else{_anchor=a;_root=d3.select(_anchor);_root.classed(dc.constants.CHART_CLASS,true);dc.registerChart(_chart,chartGroup)}_chartGroup=chartGroup;return _chart};_chart.root=function(r){if(!arguments.length)return _root;_root=r;return _chart};_chart.svg=function(_){if(!arguments.length)return _svg;_svg=_;return _chart};_chart.resetSvg=function(){_chart.select("svg").remove();return _chart.generateSvg()};_chart.generateSvg=function(){_svg=_chart.root().append("svg").attr("width",_chart.width()).attr("height",_chart.height());return _svg};_chart.filterPrinter=function(_){if(!arguments.length)return _filterPrinter;_filterPrinter=_;return _chart};_chart.turnOnControls=function(){_chart.selectAll(".reset").style("display",null);_chart.selectAll(".filter").text(_filterPrinter(_chart.filter())).style("display",null);return _chart};_chart.turnOffControls=function(){_chart.selectAll(".reset").style("display","none");_chart.selectAll(".filter").style("display","none").text(_chart.filter());return _chart};_chart.transitionDuration=function(d){if(!arguments.length)return _transitionDuration;_transitionDuration=d;return _chart};_chart.render=function(){_listeners.preRender(_chart);if(_dimension==null)throw new dc.errors.InvalidStateException("Mandatory attribute chart.dimension is missing on chart["+_chart.anchor()+"]");if(_group==null)throw new dc.errors.InvalidStateException("Mandatory attribute chart.group is missing on chart["+_chart.anchor()+"]");var result=_chart.doRender();if(_chart.transitionDuration()>0){setTimeout(function(){_chart.invokeRenderlet(_chart);_listeners.postRender(_chart)},_chart.transitionDuration())}else{_chart.invokeRenderlet(_chart);_listeners.postRender(_chart)}return result};_chart.redraw=function(){_listeners.preRedraw(_chart);var result=_chart.doRedraw();_chart.invokeRenderlet(_chart);_listeners.postRedraw(_chart);return result};_chart.invokeFilteredListener=function(chart,f){if(f!==undefined)_listeners.filtered(_chart,f)};_chart.filter=function(f){_chart.invokeFilteredListener(_chart,f);return _chart};_chart.doRender=function(){return _chart};_chart.doRedraw=function(){return _chart};_chart.keyAccessor=function(_){if(!arguments.length)return _keyAccessor;_keyAccessor=_;return _chart};_chart.valueAccessor=function(_){if(!arguments.length)return _valueAccessor;_valueAccessor=_;return _chart};_chart.label=function(_){if(!arguments.length)return _label;_label=_;_renderLabel=true;return _chart};_chart.renderLabel=function(_){if(!arguments.length)return _renderLabel;_renderLabel=_;return _chart};_chart.title=function(_){if(!arguments.length)return _title;_title=_;_renderTitle=true;return _chart};_chart.renderTitle=function(_){if(!arguments.length)return _renderTitle;_renderTitle=_;return _chart};_chart.renderlet=function(_){_renderlets.push(_);return _chart};_chart.invokeRenderlet=function(chart){for(var i=0;i<_renderlets.length;++i){_renderlets[i](chart)}};_chart.chartGroup=function(_){if(!arguments.length)return _chartGroup;_chartGroup=_;return _chart};_chart.on=function(event,listener){_listeners[event]=listener;return _chart};return _chart};dc.coordinateGridChart=function(_chart){var DEFAULT_Y_AXIS_TICKS=5;var GRID_LINE_CLASS="grid-line";var HORIZONTAL_CLASS="horizontal";var VERTICAL_CLASS="vertical";_chart=dc.baseChart(_chart);var _margin={top:10,right:50,bottom:30,left:30};var _parent;var _g;var _chartBodyG;var _x;var _xOriginalDomain;var _xAxis=d3.svg.axis();var _xUnits=dc.units.integers;var _xAxisPadding=0;var _xElasticity=false;var _y;var _yAxis=d3.svg.axis();var _yAxisPadding=0;var _yElasticity=false;var _filter;var _brush=d3.svg.brush();var _brushOn=true;var _round;var _renderHorizontalGridLine=false;var _renderVerticalGridLine=false;var _refocused=false;var _unitCount;_chart.generateG=function(parent){if(parent==null)_parent=_chart.svg();else _parent=parent;_g=_parent.append("g");_chartBodyG=_g.append("g").attr("class","chartBody").attr("clip-path","url(#"+getClipPathId()+")");return _g};_chart.g=function(_){if(!arguments.length)return _g;_g=_;return _chart};_chart.chartBodyG=function(_){if(!arguments.length)return _chartBodyG;_chartBodyG=_;return _chart};_chart.margins=function(m){if(!arguments.length)return _margin;_margin=m;return _chart};_chart.x=function(_){if(!arguments.length)return _x;_x=_;_xOriginalDomain=_x.domain();return _chart};_chart.xOriginalDomain=function(){return _xOriginalDomain};_chart.xUnits=function(_){if(!arguments.length)return _xUnits;_xUnits=_;return _chart};_chart.xAxis=function(_){if(!arguments.length)return _xAxis;_xAxis=_;return _chart};_chart.elasticX=function(_){if(!arguments.length)return _xElasticity;_xElasticity=_;return _chart};_chart.xAxisPadding=function(_){if(!arguments.length)return _xAxisPadding;_xAxisPadding=_;return _chart};_chart.xUnitCount=function(){if(_unitCount==null||_chart.refocused()){var units=_chart.xUnits()(_chart.x().domain()[0],_chart.x().domain()[1],_chart.x().domain());if(units instanceof Array)_unitCount=units.length;else _unitCount=units}return _unitCount};_chart.isOrdinal=function(){return _chart.xUnits()===dc.units.ordinal};_chart.prepareOrdinalXAxis=function(count){if(!count)count=_chart.xUnitCount();var range=[];var currentPosition=0;var increment=_chart.xAxisLength()/count;for(var i=0;i<count;i++){range[i]=currentPosition;currentPosition+=increment}_x.range(range)};function prepareXAxis(g){if(_chart.elasticX()&&!_chart.isOrdinal()){_x.domain([_chart.xAxisMin(),_chart.xAxisMax()])}if(_chart.isOrdinal()){_chart.prepareOrdinalXAxis()}else{_x.range([0,_chart.xAxisLength()])}_xAxis=_xAxis.scale(_chart.x()).orient("bottom");renderVerticalGridLines(g)}_chart.renderXAxis=function(g){var axisXG=g.selectAll("g.x");if(axisXG.empty())axisXG=g.append("g").attr("class","axis x").attr("transform","translate("+_chart.margins().left+","+_chart.xAxisY()+")");dc.transition(axisXG,_chart.transitionDuration()).call(_xAxis)};function renderVerticalGridLines(g){if(_renderVerticalGridLine){var gridLineG=g.selectAll("g."+VERTICAL_CLASS);if(gridLineG.empty())gridLineG=g.insert("g",":first-child").attr("class",GRID_LINE_CLASS+" "+VERTICAL_CLASS).attr("transform","translate("+_chart.yAxisX()+","+_chart.margins().top+")");var ticks=_xAxis.tickValues()?_xAxis.tickValues():_x.ticks(_xAxis.ticks()[0]);var lines=gridLineG.selectAll("line").data(ticks);var linesGEnter=lines.enter().append("line").attr("x1",function(d){return _x(d)}).attr("y1",_chart.xAxisY()-_chart.margins().top).attr("x2",function(d){return _x(d)}).attr("y2",0).attr("opacity",0);dc.transition(linesGEnter,_chart.transitionDuration()).attr("opacity",1);dc.transition(lines,_chart.transitionDuration()).attr("x1",function(d){return _x(d)}).attr("y1",_chart.xAxisY()-_chart.margins().top).attr("x2",function(d){return _x(d)}).attr("y2",0);lines.exit().remove()}}_chart.xAxisY=function(){return _chart.height()-_chart.margins().bottom};_chart.xAxisLength=function(){return _chart.width()-_chart.margins().left-_chart.margins().right};function prepareYAxis(g){if(_y==null||_chart.elasticY()){_y=d3.scale.linear();_y.domain([_chart.yAxisMin(),_chart.yAxisMax()]).rangeRound([_chart.yAxisHeight(),0])}_y.range([_chart.yAxisHeight(),0]);_yAxis=_yAxis.scale(_y).orient("left").ticks(DEFAULT_Y_AXIS_TICKS);renderHorizontalGridLines(g)}_chart.renderYAxis=function(g){var axisYG=g.selectAll("g.y");if(axisYG.empty())axisYG=g.append("g").attr("class","axis y").attr("transform","translate("+_chart.yAxisX()+","+_chart.margins().top+")");dc.transition(axisYG,_chart.transitionDuration()).call(_yAxis)};function renderHorizontalGridLines(g){if(_renderHorizontalGridLine){var gridLineG=g.selectAll("g."+HORIZONTAL_CLASS);var ticks=_yAxis.tickValues()?_yAxis.tickValues():_y.ticks(_yAxis.ticks()[0]);if(gridLineG.empty())gridLineG=g.insert("g",":first-child").attr("class",GRID_LINE_CLASS+" "+HORIZONTAL_CLASS).attr("transform","translate("+_chart.yAxisX()+","+_chart.margins().top+")");var lines=gridLineG.selectAll("line").data(ticks);var linesGEnter=lines.enter().append("line").attr("x1",1).attr("y1",function(d){return _y(d)}).attr("x2",_chart.xAxisLength()).attr("y2",function(d){return _y(d)}).attr("opacity",0);dc.transition(linesGEnter,_chart.transitionDuration()).attr("opacity",1);dc.transition(lines,_chart.transitionDuration()).attr("x1",1).attr("y1",function(d){return _y(d)}).attr("x2",_chart.xAxisLength()).attr("y2",function(d){return _y(d)});lines.exit().remove()}}_chart.yAxisX=function(){return _chart.margins().left};_chart.y=function(_){if(!arguments.length)return _y;_y=_;return _chart};_chart.yAxis=function(y){if(!arguments.length)return _yAxis;_yAxis=y;return _chart};_chart.elasticY=function(_){if(!arguments.length)return _yElasticity;_yElasticity=_;return _chart};_chart.renderHorizontalGridLines=function(_){if(!arguments.length)return _renderHorizontalGridLine;_renderHorizontalGridLine=_;return _chart};_chart.renderVerticalGridLines=function(_){if(!arguments.length)return _renderVerticalGridLine;_renderVerticalGridLine=_;return _chart};_chart.xAxisMin=function(){var min=d3.min(_chart.group().all(),function(e){return _chart.keyAccessor()(e)});return dc.utils.subtract(min,_xAxisPadding)};_chart.xAxisMax=function(){var max=d3.max(_chart.group().all(),function(e){return _chart.keyAccessor()(e)});return dc.utils.add(max,_xAxisPadding)};_chart.yAxisMin=function(){var min=d3.min(_chart.group().all(),function(e){return _chart.valueAccessor()(e)});min=dc.utils.subtract(min,_yAxisPadding);return min};_chart.yAxisMax=function(){var max=d3.max(_chart.group().all(),function(e){return _chart.valueAccessor()(e)});max=dc.utils.add(max,_yAxisPadding);return max};_chart.yAxisPadding=function(_){if(!arguments.length)return _yAxisPadding;_yAxisPadding=_;return _chart};_chart.yAxisHeight=function(){return _chart.height()-_chart.margins().top-_chart.margins().bottom};_chart.round=function(_){if(!arguments.length)return _round;_round=_;return _chart};_chart.filter=function(_){if(!arguments.length)return _filter;if(_){_filter=_;_chart.brush().extent(_);_chart.dimension().filter(_);_chart.turnOnControls()}else{_filter=null;_chart.brush().clear();_chart.dimension().filterAll();_chart.turnOffControls()}_chart.invokeFilteredListener(_chart,_);return _chart};_chart.brush=function(_){if(!arguments.length)return _brush;_brush=_;return _chart};function brushHeight(){return _chart.xAxisY()-_chart.margins().top}_chart.renderBrush=function(g){if(_chart.isOrdinal())_brushOn=false;if(_brushOn){_brush.on("brushstart",brushStart).on("brush",brushing).on("brushend",brushEnd);var gBrush=g.append("g").attr("class","brush").attr("transform","translate("+_chart.margins().left+","+_chart.margins().top+")").call(_brush.x(_chart.x()));gBrush.selectAll("rect").attr("height",brushHeight());gBrush.selectAll(".resize").append("path").attr("d",_chart.resizeHandlePath);if(_filter){_chart.redrawBrush(g)}}};function brushStart(p){}_chart.extendBrush=function(){var extent=_brush.extent();if(_chart.round()){extent[0]=extent.map(_chart.round())[0];extent[1]=extent.map(_chart.round())[1];_g.select(".brush").call(_brush.extent(extent))}return extent};_chart.brushIsEmpty=function(extent){return _brush.empty()||!extent||extent[1]<=extent[0]};function brushing(p){var extent=_chart.extendBrush();_chart.redrawBrush(_g);if(_chart.brushIsEmpty(extent)){dc.events.trigger(function(){_chart.filter(null);dc.redrawAll(_chart.chartGroup())})}else{dc.events.trigger(function(){_chart.filter([extent[0],extent[1]]);dc.redrawAll(_chart.chartGroup())},dc.constants.EVENT_DELAY)}}function brushEnd(p){}_chart.redrawBrush=function(g){if(_brushOn){if(_chart.filter()&&_chart.brush().empty())_chart.brush().extent(_chart.filter());var gBrush=g.select("g.brush");gBrush.call(_chart.brush().x(_chart.x()));gBrush.selectAll("rect").attr("height",brushHeight())}_chart.fadeDeselectedArea()};_chart.fadeDeselectedArea=function(){};_chart.resizeHandlePath=function(d){var e=+(d=="e"),x=e?1:-1,y=brushHeight()/3;return"M"+.5*x+","+y+"A6,6 0 0 "+e+" "+6.5*x+","+(y+6)+"V"+(2*y-6)+"A6,6 0 0 "+e+" "+.5*x+","+2*y+"Z"+"M"+2.5*x+","+(y+8)+"V"+(2*y-8)+"M"+4.5*x+","+(y+8)+"V"+(2*y-8)};function getClipPathId(){return _chart.anchor().replace("#","")+"-clip"}function generateClipPath(){var defs=dc.utils.appendOrSelect(_parent,"defs");var chartBodyClip=dc.utils.appendOrSelect(defs,"clipPath").attr("id",getClipPathId());dc.utils.appendOrSelect(chartBodyClip,"rect").attr("x",_chart.margins().left).attr("y",_chart.margins().top).attr("width",_chart.xAxisLength()).attr("height",_chart.yAxisHeight())}_chart.doRender=function(){if(_x==null)throw new dc.errors.InvalidStateException("Mandatory attribute chart.x is missing on chart["+_chart.anchor()+"]");_chart.resetSvg();if(_chart.dataSet()){_chart.generateG();generateClipPath();prepareXAxis(_chart.g());prepareYAxis(_chart.g());_chart.plotData();_chart.renderXAxis(_chart.g());_chart.renderYAxis(_chart.g());_chart.renderBrush(_chart.g())}return _chart};_chart.doRedraw=function(){prepareXAxis(_chart.g());prepareYAxis(_chart.g());_chart.plotData();if(_chart.elasticY())_chart.renderYAxis(_chart.g());if(_chart.elasticX()||_refocused)_chart.renderXAxis(_chart.g());_chart.redrawBrush(_chart.g());return _chart};_chart.subRender=function(){if(_chart.dataSet()){_chart.plotData()}return _chart};_chart.brushOn=function(_){if(!arguments.length)return _brushOn;_brushOn=_;return _chart};_chart.getDataWithinXDomain=function(group){var data=[];if(_chart.isOrdinal()){data=group.all()}else{group.all().forEach(function(d){var key=_chart.keyAccessor()(d);if(key>=_chart.x().domain()[0]&&key<=_chart.x().domain()[1])data.push(d)})}return data};function hasRangeSelected(range){return range!=null&&range!=undefined&&range instanceof Array&&range.length>1}_chart.focus=function(range){_refocused=true;if(hasRangeSelected(range)){_chart.x().domain(range)}else{_chart.x().domain(_chart.xOriginalDomain())}_chart.redraw();if(!hasRangeSelected(range))_refocused=false};_chart.refocused=function(){return _refocused};return _chart};dc.colorChart=function(_chart){var _colors=d3.scale.category20c();var _colorDomain=[0,_colors.range().length];var _colorCalculator=function(value){var minValue=_colorDomain[0];var maxValue=_colorDomain[1];if(isNaN(value))value=0;if(maxValue==null)return _colors(value);var colorsLength=_chart.colors().range().length;var denominator=(maxValue-minValue)/colorsLength;var colorValue=Math.abs(Math.min(colorsLength-1,Math.round((value-minValue)/denominator)));return _chart.colors()(colorValue)};var _colorAccessor=function(d,i){return i};_chart.colors=function(_){if(!arguments.length)return _colors;if(_ instanceof Array){_colors=d3.scale.ordinal().range(_);var domain=[];for(var i=0;i<_.length;++i){domain.push(i)}_colors.domain(domain)}else{_colors=_}_colorDomain=[0,_colors.range().length];return _chart};_chart.colorCalculator=function(_){if(!arguments.length)return _colorCalculator;_colorCalculator=_;return _chart};_chart.getColor=function(d,i){return _colorCalculator(_colorAccessor(d,i))};_chart.colorAccessor=function(_){if(!arguments.length)return _colorAccessor;_colorAccessor=_;return _chart};_chart.colorDomain=function(_){if(!arguments.length)return _colorDomain;_colorDomain=_;return _chart};return _chart};dc.singleSelectionChart=function(_chart){var _filter;var _filterHandler=function(dimension,filter){dimension.filter(filter);return filter};_chart.hasFilter=function(){return _filter!=null};_chart.filter=function(_){if(!arguments.length)return _filter;_filter=_;if(_chart.dataSet()&&_chart.dimension().filter!=undefined){var f=_filterHandler(_chart.dimension(),_filter);_filter=f?f:_filter}if(_){_chart.turnOnControls()}else{_chart.turnOffControls()}_chart.invokeFilteredListener(_chart,_);return _chart};_chart.highlightSelected=function(e){d3.select(e).classed(dc.constants.SELECTED_CLASS,true);d3.select(e).classed(dc.constants.DESELECTED_CLASS,false)};_chart.fadeDeselected=function(e){d3.select(e).classed(dc.constants.SELECTED_CLASS,false);d3.select(e).classed(dc.constants.DESELECTED_CLASS,true)};_chart.resetHighlight=function(e){d3.select(e).classed(dc.constants.SELECTED_CLASS,false);d3.select(e).classed(dc.constants.DESELECTED_CLASS,false)};_chart.onClick=function(d){var toFilter=_chart.keyAccessor()(d);dc.events.trigger(function(){_chart.filterTo(toFilter==_chart.filter()?null:toFilter)})};_chart.filterTo=function(toFilter){_chart.filter(toFilter);dc.redrawAll(_chart.chartGroup())};_chart.filterHandler=function(_){if(!arguments.length)return _filterHandler;_filterHandler=_;return _chart};return _chart};dc.stackableChart=function(_chart){var MIN_DATA_POINT_HEIGHT=0;var _groupStack=new dc.utils.GroupStack;var _allGroups;var _allValueAccessors;var _allKeyAccessors;_chart.stack=function(group,retriever){_groupStack.setDefaultAccessor(_chart.valueAccessor());_groupStack.addGroup(group,retriever);expireCache();return _chart};function expireCache(){_allGroups=null;_allValueAccessors=null;_allKeyAccessors=null}_chart.allGroups=function(){if(_allGroups==null){_allGroups=[];_allGroups.push(_chart.group());for(var i=0;i<_groupStack.size();++i)_allGroups.push(_groupStack.getGroupByIndex(i))}return _allGroups};_chart.allValueAccessors=function(){if(_allValueAccessors==null){_allValueAccessors=[];_allValueAccessors.push(_chart.valueAccessor());for(var i=0;i<_groupStack.size();++i)_allValueAccessors.push(_groupStack.getAccessorByIndex(i))}return _allValueAccessors};_chart.getValueAccessorByIndex=function(groupIndex){return _chart.allValueAccessors()[groupIndex]};_chart.yAxisMin=function(){var min=0;var allGroups=_chart.allGroups();for(var groupIndex=0;groupIndex<allGroups.length;++groupIndex){var group=allGroups[groupIndex];var m=dc.utils.groupMin(group,_chart.getValueAccessorByIndex(groupIndex));if(m<min)min=m}if(min<0){min=0;for(var groupIndex=0;groupIndex<allGroups.length;++groupIndex){var group=allGroups[groupIndex];min+=dc.utils.groupMin(group,_chart.getValueAccessorByIndex(groupIndex))}}min=dc.utils.subtract(min,_chart.yAxisPadding());return min};_chart.yAxisMax=function(){var max=0;var allGroups=_chart.allGroups();for(var groupIndex=0;groupIndex<allGroups.length;++groupIndex){var group=allGroups[groupIndex];max+=dc.utils.groupMax(group,_chart.getValueAccessorByIndex(groupIndex))}max=dc.utils.add(max,_chart.yAxisPadding());return max};_chart.allKeyAccessors=function(){if(_allKeyAccessors==null){_allKeyAccessors=[];_allKeyAccessors.push(_chart.keyAccessor());for(var i=0;i<_groupStack.size();++i)_allKeyAccessors.push(_chart.keyAccessor())}return _allKeyAccessors};_chart.getKeyAccessorByIndex=function(groupIndex){return _chart.allKeyAccessors()[groupIndex]};_chart.xAxisMin=function(){var min=null;var allGroups=_chart.allGroups();for(var groupIndex=0;groupIndex<allGroups.length;++groupIndex){var group=allGroups[groupIndex];var m=dc.utils.groupMin(group,_chart.getKeyAccessorByIndex(groupIndex));if(min==null||min>m)min=m}return dc.utils.subtract(min,_chart.xAxisPadding())};_chart.xAxisMax=function(){var max=null;var allGroups=_chart.allGroups();for(var groupIndex=0;groupIndex<allGroups.length;++groupIndex){var group=allGroups[groupIndex];var m=dc.utils.groupMax(group,_chart.getKeyAccessorByIndex(groupIndex));if(max==null||max<m)max=m}return dc.utils.add(max,_chart.xAxisPadding())};_chart.baseLineY=function(){return _chart.y()(0)};_chart.dataPointBaseline=function(){return _chart.margins().top+_chart.baseLineY()};function getValueFromData(groupIndex,d){return _chart.getValueAccessorByIndex(groupIndex)(d)}_chart.dataPointHeight=function(d,groupIndex){var value=getValueFromData(groupIndex,d);var yPosition=_chart.y()(value);var zeroPosition=_chart.baseLineY();var h=0;if(value>0)h=zeroPosition-yPosition;else h=yPosition-zeroPosition;if(isNaN(h)||h<MIN_DATA_POINT_HEIGHT)h=MIN_DATA_POINT_HEIGHT;return h};function calculateDataPointMatrix(data,groupIndex){for(var dataIndex=0;dataIndex<data.length;++dataIndex){var d=data[dataIndex];var value=getValueFromData(groupIndex,d);if(groupIndex==0){if(value>0)_groupStack.setDataPoint(groupIndex,dataIndex,_chart.dataPointBaseline()-_chart.dataPointHeight(d,groupIndex));else _groupStack.setDataPoint(groupIndex,dataIndex,_chart.dataPointBaseline())}else{if(value>0)_groupStack.setDataPoint(groupIndex,dataIndex,_groupStack.getDataPoint(groupIndex-1,dataIndex)-_chart.dataPointHeight(d,groupIndex));else if(value<0)_groupStack.setDataPoint(groupIndex,dataIndex,_groupStack.getDataPoint(groupIndex-1,dataIndex)+_chart.dataPointHeight(d,groupIndex-1));else _groupStack.setDataPoint(groupIndex,dataIndex,_groupStack.getDataPoint(groupIndex-1,dataIndex))}}}_chart.calculateDataPointMatrixForAll=function(groups){for(var groupIndex=0;groupIndex<groups.length;++groupIndex){var group=groups[groupIndex];var data=group.all();calculateDataPointMatrix(data,groupIndex)}};_chart.calculateDataPointMatrixWithinXDomain=function(groups){for(var groupIndex=0;groupIndex<groups.length;++groupIndex){var group=groups[groupIndex];var data=_chart.getDataWithinXDomain(group);calculateDataPointMatrix(data,groupIndex)}};_chart.getChartStack=function(){return _groupStack};dc.override(_chart,"valueAccessor",function(_){if(!arguments.length)return _chart._valueAccessor();expireCache();return _chart._valueAccessor(_)});dc.override(_chart,"keyAccessor",function(_){if(!arguments.length)return _chart._keyAccessor();expireCache();return _chart._keyAccessor(_)});return _chart};dc.abstractBubbleChart=function(_chart){var _maxBubbleRelativeSize=.3;var _minRadiusWithLabel=10;_chart.BUBBLE_NODE_CLASS="node";_chart.BUBBLE_CLASS="bubble";_chart.MIN_RADIUS=10;_chart=dc.singleSelectionChart(dc.colorChart(_chart));_chart.renderLabel(true);_chart.renderTitle(false);var _r=d3.scale.linear().domain([0,100]);var _rValueAccessor=function(d){return d.r};_chart.r=function(_){if(!arguments.length)return _r;_r=_;return _chart};_chart.radiusValueAccessor=function(_){if(!arguments.length)return _rValueAccessor;_rValueAccessor=_;return _chart};_chart.rMin=function(){var min=d3.min(_chart.group().all(),function(e){return _chart.radiusValueAccessor()(e)});return min};_chart.rMax=function(){var max=d3.max(_chart.group().all(),function(e){return _chart.radiusValueAccessor()(e)});return max};_chart.bubbleR=function(d){var value=_chart.radiusValueAccessor()(d);var r=_chart.r()(value);if(isNaN(r)||value<=0)r=0;return r};var labelFunction=function(d){return _chart.label()(d)};var labelOpacity=function(d){return _chart.bubbleR(d)>_minRadiusWithLabel?1:0};_chart.doRenderLabel=function(bubbleGEnter){if(_chart.renderLabel()){var label=bubbleGEnter.select("text");if(label.empty()){label=bubbleGEnter.append("text").attr("text-anchor","middle").attr("dy",".3em").on("click",_chart.onClick)}label.attr("opacity",0).text(labelFunction);
2
- dc.transition(label,_chart.transitionDuration()).attr("opacity",labelOpacity)}};_chart.doUpdateLabels=function(bubbleGEnter){if(_chart.renderLabel()){var labels=bubbleGEnter.selectAll("text").text(labelFunction);dc.transition(labels,_chart.transitionDuration()).attr("opacity",labelOpacity)}};var titleFunction=function(d){return _chart.title()(d)};_chart.doRenderTitles=function(g){if(_chart.renderTitle()){var title=g.select("title");if(title.empty())g.append("title").text(titleFunction)}};_chart.doUpdateTitles=function(g){if(_chart.renderTitle()){g.selectAll("title").text(titleFunction)}};_chart.minRadiusWithLabel=function(_){if(!arguments.length)return _minRadiusWithLabel;_minRadiusWithLabel=_;return _chart};_chart.maxBubbleRelativeSize=function(_){if(!arguments.length)return _maxBubbleRelativeSize;_maxBubbleRelativeSize=_;return _chart};_chart.initBubbleColor=function(d,i){this[dc.constants.NODE_INDEX_NAME]=i;return _chart.getColor(d,i)};_chart.updateBubbleColor=function(d,i){return _chart.getColor(d,this[dc.constants.NODE_INDEX_NAME])};_chart.fadeDeselectedArea=function(){if(_chart.hasFilter()){_chart.selectAll("g."+_chart.BUBBLE_NODE_CLASS).each(function(d){if(_chart.isSelectedNode(d)){_chart.highlightSelected(this)}else{_chart.fadeDeselected(this)}})}else{_chart.selectAll("g."+_chart.BUBBLE_NODE_CLASS).each(function(d){_chart.resetHighlight(this)})}};_chart.isSelectedNode=function(d){return _chart.filter()==d.key};_chart.onClick=function(d){var toFilter=d.key;if(toFilter==_chart.filter()){dc.events.trigger(function(){_chart.filter(null);dc.redrawAll(_chart.chartGroup())})}else{dc.events.trigger(function(){_chart.filter(toFilter);dc.redrawAll(_chart.chartGroup())})}};return _chart};dc.pieChart=function(parent,chartGroup){var DEFAULT_MIN_ANGLE_FOR_LABEL=.5;var _sliceCssClass="pie-slice";var _radius=90,_innerRadius=0;var _g;var _minAngleForLabel=DEFAULT_MIN_ANGLE_FOR_LABEL;var _chart=dc.singleSelectionChart(dc.colorChart(dc.baseChart({})));_chart.label(function(d){return _chart.keyAccessor()(d.data)});_chart.renderLabel(true);_chart.title(function(d){return _chart.keyAccessor()(d.data)+": "+_chart.valueAccessor()(d.data)});_chart.transitionDuration(350);_chart.doRender=function(){_chart.resetSvg();_g=_chart.svg().append("g").attr("transform","translate("+_chart.cx()+","+_chart.cy()+")");drawChart();return _chart};function drawChart(){if(_chart.dataSet()){var pie=calculateDataPie();var arc=_chart.buildArcs();var pieData=pie(_chart.orderedGroup().top(Infinity));var slices=_g.selectAll("g."+_sliceCssClass).data(pieData);createElements(slices,arc,pieData);updateElements(pieData,arc);removeElements(slices);highlightFilter()}}function createElements(slices,arc,pieData){var slicesEnter=createSliceNodes(slices);createSlicePath(slicesEnter,arc);createTitles(slicesEnter);createLabels(pieData,arc)}function createSliceNodes(slices){var slicesEnter=slices.enter().append("g").attr("class",function(d,i){return _sliceCssClass+" _"+i});return slicesEnter}function createSlicePath(slicesEnter,arc){var slicePath=slicesEnter.append("path").attr("fill",function(d,i){return _chart.getColor(d,i)}).on("click",onClick).attr("d",function(d,i){return safeArc(d,i,arc)});slicePath.transition().duration(_chart.transitionDuration()).attrTween("d",tweenPie)}function createTitles(slicesEnter){if(_chart.renderTitle()){slicesEnter.append("title").text(function(d){return _chart.title()(d)})}}function createLabels(pieData,arc){if(_chart.renderLabel()){var labels=_g.selectAll("text."+_sliceCssClass).data(pieData);var labelsEnter=labels.enter().append("text").attr("class",function(d,i){return _sliceCssClass+" _"+i}).on("click",onClick);dc.transition(labelsEnter,_chart.transitionDuration()).attr("transform",function(d){d.innerRadius=_chart.innerRadius();d.outerRadius=_radius;var centroid=arc.centroid(d);if(isNaN(centroid[0])||isNaN(centroid[1])){return"translate(0,0)"}else{return"translate("+centroid+")"}}).attr("text-anchor","middle").text(function(d){var data=d.data;if(sliceHasNoData(data)||sliceTooSmall(d))return"";return _chart.label()(d)})}}function updateElements(pieData,arc){updateSlicePaths(pieData,arc);updateLabels(pieData,arc);updateTitles(pieData)}function updateSlicePaths(pieData,arc){var slicePaths=_g.selectAll("g."+_sliceCssClass).data(pieData).select("path").attr("d",function(d,i){return safeArc(d,i,arc)});dc.transition(slicePaths,_chart.transitionDuration(),function(s){s.attrTween("d",tweenPie)}).attr("fill",function(d,i){return _chart.getColor(d,i)})}function updateLabels(pieData,arc){if(_chart.renderLabel()){var labels=_g.selectAll("text."+_sliceCssClass).data(pieData);dc.transition(labels,_chart.transitionDuration()).attr("transform",function(d){d.innerRadius=_chart.innerRadius();d.outerRadius=_radius;var centroid=arc.centroid(d);if(isNaN(centroid[0])||isNaN(centroid[1])){return"translate(0,0)"}else{return"translate("+centroid+")"}}).attr("text-anchor","middle").text(function(d){var data=d.data;if(sliceHasNoData(data)||sliceTooSmall(d))return"";return _chart.label()(d)})}}function updateTitles(pieData){if(_chart.renderTitle()){_g.selectAll("g."+_sliceCssClass).data(pieData).select("title").text(function(d){return _chart.title()(d)})}}function removeElements(slices){slices.exit().remove()}function highlightFilter(){if(_chart.hasFilter()){_chart.selectAll("g."+_sliceCssClass).each(function(d){if(_chart.isSelectedSlice(d)){_chart.highlightSelected(this)}else{_chart.fadeDeselected(this)}})}else{_chart.selectAll("g."+_sliceCssClass).each(function(d){_chart.resetHighlight(this)})}}_chart.innerRadius=function(r){if(!arguments.length)return _innerRadius;_innerRadius=r;return _chart};_chart.radius=function(r){if(!arguments.length)return _radius;_radius=r;return _chart};_chart.cx=function(){return _chart.width()/2};_chart.cy=function(){return _chart.height()/2};_chart.buildArcs=function(){return d3.svg.arc().outerRadius(_radius).innerRadius(_innerRadius)};_chart.isSelectedSlice=function(d){return _chart.filter()==_chart.keyAccessor()(d.data)};_chart.doRedraw=function(){drawChart();return _chart};_chart.minAngleForLabel=function(_){if(!arguments.length)return _minAngleForLabel;_minAngleForLabel=_;return _chart};function calculateDataPie(){return d3.layout.pie().sort(null).value(function(d){return _chart.valueAccessor()(d)})}function sliceTooSmall(d){var angle=d.endAngle-d.startAngle;return isNaN(angle)||angle<_minAngleForLabel}function sliceHasNoData(data){return _chart.valueAccessor()(data)==0}function tweenPie(b){b.innerRadius=_chart.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())}}function isOffCanvas(current){return current==null||isNaN(current.startAngle)||isNaN(current.endAngle)}function onClick(d){_chart.onClick(d.data)}function safeArc(d,i,arc){var path=arc(d,i);if(path.indexOf("NaN")>=0)path="M0,0";return path}return _chart.anchor(parent,chartGroup)};dc.barChart=function(parent,chartGroup){var MIN_BAR_WIDTH=1;var DEFAULT_GAP_BETWEEN_BARS=2;var _chart=dc.stackableChart(dc.coordinateGridChart(dc.singleSelectionChart({})));var _gap=DEFAULT_GAP_BETWEEN_BARS;var _centerBar=false;var _numberOfBars;var _barWidth;_chart.plotData=function(){var groups=_chart.allGroups();_chart.calculateDataPointMatrixWithinXDomain(groups);for(var groupIndex=0;groupIndex<groups.length;++groupIndex){generateBarsPerGroup(groupIndex,groups[groupIndex])}};function generateBarsPerGroup(groupIndex,group){var bars=_chart.chartBodyG().selectAll("rect."+dc.constants.STACK_CLASS+groupIndex).data(_chart.getDataWithinXDomain(group));addNewBars(bars,groupIndex);updateBars(bars,groupIndex);deleteBars(bars)}function addNewBars(bars,groupIndex){var bars=bars.enter().append("rect");bars.attr("class","bar "+dc.constants.STACK_CLASS+groupIndex).attr("x",function(data,dataIndex){return barX(this,data,groupIndex,dataIndex)}).attr("y",_chart.baseLineY()).attr("width",barWidth);if(_chart.isOrdinal())bars.on("click",_chart.onClick);if(_chart.renderTitle()){bars.append("title").text(_chart.title())}dc.transition(bars,_chart.transitionDuration()).attr("y",function(data,dataIndex){return barY(this,data,dataIndex)}).attr("height",function(data){return _chart.dataPointHeight(data,getGroupIndexFromBar(this))})}function updateBars(bars,groupIndex){if(_chart.renderTitle()){bars.select("title").text(_chart.title())}dc.transition(bars,_chart.transitionDuration()).attr("x",function(data,dataIndex){return barX(this,data,groupIndex,dataIndex)}).attr("y",function(data,dataIndex){return barY(this,data,dataIndex)}).attr("height",function(data){return _chart.dataPointHeight(data,getGroupIndexFromBar(this))}).attr("width",barWidth)}function deleteBars(bars){dc.transition(bars.exit(),_chart.transitionDuration()).attr("y",_chart.xAxisY()).attr("height",0)}function getNumberOfBars(){if(_numberOfBars==null||_chart.refocused()){_numberOfBars=_chart.xUnitCount()}return _numberOfBars}function barWidth(d){if(_barWidth==null||_chart.refocused()){var numberOfBars=getNumberOfBars();var w=MIN_BAR_WIDTH;if(_chart.isOrdinal())w=Math.floor(_chart.xAxisLength()/(numberOfBars+1));else w=Math.floor(_chart.xAxisLength()/numberOfBars);w-=_gap;if(isNaN(w)||w<MIN_BAR_WIDTH)w=MIN_BAR_WIDTH;_barWidth=w}return _barWidth}function setGroupIndexToBar(bar,groupIndex){bar[dc.constants.GROUP_INDEX_NAME]=groupIndex}function barX(bar,data,groupIndex,dataIndex){setGroupIndexToBar(bar,groupIndex);var position=_chart.x()(_chart.keyAccessor()(data))+_chart.margins().left;if(_centerBar)position=position-barWidth(data)/2;return position}function getGroupIndexFromBar(bar){var groupIndex=bar[dc.constants.GROUP_INDEX_NAME];return groupIndex}function barY(bar,data,dataIndex){var groupIndex=getGroupIndexFromBar(bar);return _chart.getChartStack().getDataPoint(groupIndex,dataIndex)}_chart.fadeDeselectedArea=function(){var bars=_chart.chartBodyG().selectAll("rect.bar");var extent=_chart.brush().extent();if(_chart.isOrdinal()){if(_chart.filter()!=null)bars.classed(dc.constants.DESELECTED_CLASS,function(d){var key=_chart.keyAccessor()(d);return key!=_chart.filter()});else bars.classed(dc.constants.DESELECTED_CLASS,false)}else{if(!_chart.brushIsEmpty(extent)){var start=extent[0];var end=extent[1];bars.classed(dc.constants.DESELECTED_CLASS,function(d){var xValue=_chart.keyAccessor()(d);return xValue<start||xValue>=end})}else{bars.classed(dc.constants.DESELECTED_CLASS,false)}}};_chart.centerBar=function(_){if(!arguments.length)return _centerBar;_centerBar=_;return _chart};_chart.gap=function(_){if(!arguments.length)return _gap;_gap=_;return _chart};_chart.extendBrush=function(){var extent=_chart.brush().extent();if(_chart.round()&&!_centerBar){extent[0]=extent.map(_chart.round())[0];extent[1]=extent.map(_chart.round())[1];_chart.chartBodyG().select(".brush").call(_chart.brush().extent(extent))}return extent};dc.override(_chart,"prepareOrdinalXAxis",function(){return this._prepareOrdinalXAxis(_chart.xUnitCount()+1)});return _chart.anchor(parent,chartGroup)};dc.lineChart=function(parent,chartGroup){var AREA_BOTTOM_PADDING=1;var DEFAULT_DOT_RADIUS=5;var TOOLTIP_G_CLASS="dc-tooltip";var DOT_CIRCLE_CLASS="dot";var Y_AXIS_REF_LINE_CLASS="yRef";var X_AXIS_REF_LINE_CLASS="xRef";var _chart=dc.stackableChart(dc.coordinateGridChart({}));var _renderArea=false;var _dotRadius=DEFAULT_DOT_RADIUS;_chart.transitionDuration(500);_chart.plotData=function(){var groups=_chart.allGroups();_chart.calculateDataPointMatrixForAll(groups);for(var groupIndex=0;groupIndex<groups.length;++groupIndex){var group=groups[groupIndex];plotDataByGroup(groupIndex,group)}};function plotDataByGroup(groupIndex,group){var stackedCssClass=getStackedCssClass(groupIndex);var g=createGrouping(stackedCssClass,group);var line=drawLine(g,stackedCssClass,groupIndex);if(_renderArea)drawArea(g,stackedCssClass,groupIndex,line);if(_chart.renderTitle())drawDots(g,groupIndex)}function getStackedCssClass(groupIndex){return dc.constants.STACK_CLASS+groupIndex}function createGrouping(stackedCssClass,group){var g=_chart.chartBodyG().select("g."+stackedCssClass);if(g.empty())g=_chart.chartBodyG().append("g").attr("class",stackedCssClass);g.datum(group.all());return g}function drawLine(g,stackedCssClass,groupIndex){var linePath=g.select("path.line");if(linePath.empty())linePath=g.append("path").attr("class","line "+stackedCssClass);linePath[0][0][dc.constants.GROUP_INDEX_NAME]=groupIndex;var line=d3.svg.line().x(lineX).y(function(d,dataIndex){var groupIndex=this[dc.constants.GROUP_INDEX_NAME];return lineY(d,dataIndex,groupIndex)});dc.transition(linePath,_chart.transitionDuration(),function(t){t.ease("linear")}).attr("d",line);return line}var lineX=function(d){return _chart.margins().left+_chart.x()(_chart.keyAccessor()(d))};var lineY=function(d,dataIndex,groupIndex){var y=_chart.getChartStack().getDataPoint(groupIndex,dataIndex);if(y>=_chart.dataPointBaseline())y+=_chart.dataPointHeight(d,groupIndex);return y};function drawArea(g,stackedCssClass,groupIndex,line){var areaPath=g.select("path.area");if(areaPath.empty())areaPath=g.append("path").attr("class","area "+stackedCssClass);areaPath[0][0][dc.constants.GROUP_INDEX_NAME]=groupIndex;var area=d3.svg.area().x(line.x()).y1(line.y()).y0(function(d,dataIndex){var groupIndex=this[dc.constants.GROUP_INDEX_NAME];if(groupIndex==0)return _chart.dataPointBaseline()-AREA_BOTTOM_PADDING;var y=_chart.getChartStack().getDataPoint(groupIndex-1,dataIndex);if(y<_chart.dataPointBaseline())return y-AREA_BOTTOM_PADDING;else return y+_chart.dataPointHeight(d,groupIndex-1)});dc.transition(areaPath,_chart.transitionDuration(),function(t){t.ease("linear")}).attr("d",area)}_chart.renderArea=function(_){if(!arguments.length)return _renderArea;_renderArea=_;return _chart};function drawDots(parentG,groupIndex){var g=parentG.select("g."+TOOLTIP_G_CLASS);if(g.empty())g=parentG.append("g").attr("class",TOOLTIP_G_CLASS);createRefLines(g);var dots=g.selectAll("circle."+DOT_CIRCLE_CLASS).data(g.datum());dots.enter().append("circle").attr("class",DOT_CIRCLE_CLASS).attr("r",_dotRadius).style("fill-opacity",1e-6).style("stroke-opacity",1e-6).on("mousemove",function(d){var dot=d3.select(this);showDot(dot);showRefLines(dot,g)}).on("mouseout",function(d){var dot=d3.select(this);hideDot(dot);hideRefLines(g)}).append("title").text(_chart.title());dots.attr("cx",lineX).attr("cy",function(d,dataIndex){return lineY(d,dataIndex,groupIndex)}).select("title").text(_chart.title());dots.exit().remove()}function createRefLines(g){var yRefLine=g.select("path."+Y_AXIS_REF_LINE_CLASS).empty()?g.append("path").attr("class",Y_AXIS_REF_LINE_CLASS):g.select("path."+Y_AXIS_REF_LINE_CLASS);yRefLine.style("display","none").attr("stroke-dasharray","5,5");var xRefLine=g.select("path."+X_AXIS_REF_LINE_CLASS).empty()?g.append("path").attr("class",X_AXIS_REF_LINE_CLASS):g.select("path."+X_AXIS_REF_LINE_CLASS);xRefLine.style("display","none").attr("stroke-dasharray","5,5")}function showDot(dot){dot.style("fill-opacity",.8);dot.style("stroke-opacity",.8);return dot}function showRefLines(dot,g){var x=dot.attr("cx");var y=dot.attr("cy");g.select("path."+Y_AXIS_REF_LINE_CLASS).style("display","").attr("d","M"+_chart.margins().left+" "+y+"L"+x+" "+y);g.select("path."+X_AXIS_REF_LINE_CLASS).style("display","").attr("d","M"+x+" "+(_chart.height()-_chart.margins().bottom)+"L"+x+" "+y)}function hideDot(dot){dot.style("fill-opacity",1e-6).style("stroke-opacity",1e-6)}function hideRefLines(g){g.select("path."+Y_AXIS_REF_LINE_CLASS).style("display","none");g.select("path."+X_AXIS_REF_LINE_CLASS).style("display","none")}_chart.dotRadius=function(_){if(!arguments.length)return _dotRadius;_dotRadius=_;return _chart};return _chart.anchor(parent,chartGroup)};dc.dataCount=function(parent,chartGroup){var _formatNumber=d3.format(",d");var _chart=dc.baseChart({});_chart.doRender=function(){_chart.selectAll(".total-count").text(_formatNumber(_chart.dimension().size()));_chart.selectAll(".filter-count").text(_formatNumber(_chart.group().value()));return _chart};_chart.doRedraw=function(){return _chart.doRender()};return _chart.anchor(parent,chartGroup)};dc.dataTable=function(parent,chartGroup){var LABEL_CSS_CLASS="dc-table-label";var ROW_CSS_CLASS="dc-table-row";var COLUMN_CSS_CLASS="dc-table-column";var GROUP_CSS_CLASS="dc-table-group";var _chart=dc.baseChart({});var _size=25;var _columns=[];var _sortBy=function(d){return d};var _order=d3.ascending;var _sort;_chart.doRender=function(){_chart.selectAll("tbody").remove();renderRows(renderGroups());return _chart};function renderGroups(){var groups=_chart.root().selectAll("tbody").data(nestEntries(),function(d){return _chart.keyAccessor()(d)});var rowGroup=groups.enter().append("tbody");rowGroup.append("tr").attr("class",GROUP_CSS_CLASS).append("td").attr("class",LABEL_CSS_CLASS).attr("colspan",_columns.length).html(function(d){return _chart.keyAccessor()(d)});groups.exit().remove();return rowGroup}function nestEntries(){if(!_sort)_sort=crossfilter.quicksort.by(_sortBy);var entries=_chart.dimension().top(_size);return d3.nest().key(_chart.group()).sortKeys(_order).entries(_sort(entries,0,entries.length))}function renderRows(groups){var rows=groups.order().selectAll("tr."+ROW_CSS_CLASS).data(function(d){return d.values});var rowEnter=rows.enter().append("tr").attr("class",ROW_CSS_CLASS);for(var i=0;i<_columns.length;++i){var f=_columns[i];rowEnter.append("td").attr("class",COLUMN_CSS_CLASS+" _"+i).html(function(d){return f(d)})}rows.exit().remove();return rows}_chart.doRedraw=function(){return _chart.doRender()};_chart.size=function(s){if(!arguments.length)return _size;_size=s;return _chart};_chart.columns=function(_){if(!arguments.length)return _columns;_columns=_;return _chart};_chart.sortBy=function(_){if(!arguments.length)return _sortBy;_sortBy=_;return _chart};_chart.order=function(_){if(!arguments.length)return _order;_order=_;return _chart};return _chart.anchor(parent,chartGroup)};dc.bubbleChart=function(parent,chartGroup){var _chart=dc.abstractBubbleChart(dc.coordinateGridChart({}));var _elasticRadius=false;_chart.transitionDuration(750);var bubbleLocator=function(d){return"translate("+bubbleX(d)+","+bubbleY(d)+")"};_chart.elasticRadius=function(_){if(!arguments.length)return _elasticRadius;_elasticRadius=_;return _chart};_chart.plotData=function(){if(_elasticRadius)_chart.r().domain([_chart.rMin(),_chart.rMax()]);_chart.r().range([_chart.MIN_RADIUS,_chart.xAxisLength()*_chart.maxBubbleRelativeSize()]);var bubbleG=_chart.chartBodyG().selectAll("g."+_chart.BUBBLE_NODE_CLASS).data(_chart.group().all());renderNodes(bubbleG);updateNodes(bubbleG);removeNodes(bubbleG);_chart.fadeDeselectedArea()};function renderNodes(bubbleG){var bubbleGEnter=bubbleG.enter().append("g");bubbleGEnter.attr("class",_chart.BUBBLE_NODE_CLASS).attr("transform",bubbleLocator).append("circle").attr("class",function(d,i){return _chart.BUBBLE_CLASS+" _"+i}).on("click",_chart.onClick).attr("fill",_chart.initBubbleColor).attr("r",0);dc.transition(bubbleG,_chart.transitionDuration()).attr("r",function(d){return _chart.bubbleR(d)}).attr("opacity",function(d){return _chart.bubbleR(d)>0?1:0});_chart.doRenderLabel(bubbleGEnter);_chart.doRenderTitles(bubbleGEnter)}function updateNodes(bubbleG){dc.transition(bubbleG,_chart.transitionDuration()).attr("transform",bubbleLocator).selectAll("circle."+_chart.BUBBLE_CLASS).attr("fill",_chart.updateBubbleColor).attr("r",function(d){return _chart.bubbleR(d)}).attr("opacity",function(d){return _chart.bubbleR(d)>0?1:0});_chart.doUpdateLabels(bubbleG);_chart.doUpdateTitles(bubbleG)}function removeNodes(bubbleG){bubbleG.exit().remove()}function bubbleX(d){var x=_chart.x()(_chart.keyAccessor()(d))+_chart.margins().left;if(isNaN(x))x=0;return x}function bubbleY(d){var y=_chart.margins().top+_chart.y()(_chart.valueAccessor()(d));if(isNaN(y))y=0;return y}_chart.renderBrush=function(g){};_chart.redrawBrush=function(g){_chart.fadeDeselectedArea()};return _chart.anchor(parent,chartGroup)};dc.compositeChart=function(parent,chartGroup){var SUB_CHART_CLASS="sub";var _chart=dc.coordinateGridChart({});var _children=[];_chart.transitionDuration(500);dc.override(_chart,"generateG",function(){var g=this._generateG();for(var i=0;i<_children.length;++i){var child=_children[i];generateChildG(child,i);if(child.dimension()==null)child.dimension(_chart.dimension());if(child.group()==null)child.group(_chart.group());child.chartGroup(_chart.chartGroup());child.svg(_chart.svg());child.height(_chart.height());child.width(_chart.width());child.margins(_chart.margins());child.xUnits(_chart.xUnits());child.transitionDuration(_chart.transitionDuration())}return g});function generateChildG(child,i){child.generateG(_chart.g());child.g().attr("class",SUB_CHART_CLASS+" _"+i)}_chart.plotData=function(){for(var i=0;i<_children.length;++i){var child=_children[i];if(child.g()==null){generateChildG(child,i)}child.x(_chart.x());child.y(_chart.y());child.xAxis(_chart.xAxis());child.yAxis(_chart.yAxis());child.plotData();child.invokeRenderlet(child)}};_chart.fadeDeselectedArea=function(){for(var i=0;i<_children.length;++i){var child=_children[i];child.brush(_chart.brush());child.fadeDeselectedArea()}};_chart.compose=function(charts){_children=charts;return _chart};_chart.children=function(){return _children};function getAllYAxisMinFromChildCharts(){var allMins=[];for(var i=0;i<_children.length;++i){allMins.push(_children[i].yAxisMin())}return allMins}_chart.yAxisMin=function(){return d3.min(getAllYAxisMinFromChildCharts())};function getAllYAxisMaxFromChildCharts(){var allMaxes=[];for(var i=0;i<_children.length;++i){allMaxes.push(_children[i].yAxisMax())}return allMaxes}_chart.yAxisMax=function(){return dc.utils.add(d3.max(getAllYAxisMaxFromChildCharts()),_chart.yAxisPadding())};function getAllXAxisMinFromChildCharts(){var allMins=[];for(var i=0;i<_children.length;++i){allMins.push(_children[i].xAxisMin())}return allMins}_chart.xAxisMin=function(){return dc.utils.subtract(d3.min(getAllXAxisMinFromChildCharts()),_chart.xAxisPadding())};function getAllXAxisMaxFromChildCharts(){var allMaxes=[];for(var i=0;i<_children.length;++i){allMaxes.push(_children[i].xAxisMax())}return allMaxes}_chart.xAxisMax=function(){return dc.utils.add(d3.max(getAllXAxisMaxFromChildCharts()),_chart.xAxisPadding())};return _chart.anchor(parent,chartGroup)};dc.geoChoroplethChart=function(parent,chartGroup){var _chart=dc.singleSelectionChart(dc.colorChart(dc.baseChart({})));_chart.colorAccessor(function(d,i){return d});var _geoPath=d3.geo.path();var _geoJsons=[];_chart.doRender=function(){_chart.resetSvg();for(var layerIndex=0;layerIndex<_geoJsons.length;++layerIndex){var states=_chart.svg().append("g").attr("class","layer"+layerIndex);var regionG=states.selectAll("g."+geoJson(layerIndex).name).data(geoJson(layerIndex).data).enter().append("g").attr("class",geoJson(layerIndex).name);regionG.append("path").attr("fill","white").attr("d",_geoPath);regionG.append("title");plotData(layerIndex)}};function plotData(layerIndex){var maxValue=dc.utils.groupMax(_chart.group(),_chart.valueAccessor());var data=generateLayeredData();if(isDataLayer(layerIndex)){var regionG=renderRegionG(layerIndex);renderPaths(regionG,layerIndex,data,maxValue);renderTitle(regionG,layerIndex,data)}}function generateLayeredData(){var data={};var groupAll=_chart.group().all();for(var i=0;i<groupAll.length;++i){data[_chart.keyAccessor()(groupAll[i])]=_chart.valueAccessor()(groupAll[i])}return data}function isDataLayer(layerIndex){return geoJson(layerIndex).keyAccessor}function renderRegionG(layerIndex){var regionG=_chart.svg().selectAll(layerSelector(layerIndex)).classed("selected",function(d){return isSelected(layerIndex,d)}).classed("deselected",function(d){return isDeselected(layerIndex,d)}).attr("class",function(d){var layerNameClass=geoJson(layerIndex).name;var regionClass=dc.utils.nameToId(geoJson(layerIndex).keyAccessor(d));var baseClasses=layerNameClass+" "+regionClass;if(isSelected(layerIndex,d))baseClasses+=" selected";if(isDeselected(layerIndex,d))baseClasses+=" deselected";return baseClasses});return regionG}function layerSelector(layerIndex){return"g.layer"+layerIndex+" g."+geoJson(layerIndex).name}function isSelected(layerIndex,d){return _chart.hasFilter()&&_chart.filter()==getKey(layerIndex,d)}function isDeselected(layerIndex,d){return _chart.hasFilter()&&_chart.filter()!=getKey(layerIndex,d)}function getKey(layerIndex,d){return geoJson(layerIndex).keyAccessor(d)}function geoJson(index){return _geoJsons[index]}function renderPaths(regionG,layerIndex,data,maxValue){var paths=regionG.select("path").attr("fill",function(d){var currentFill=d3.select(this).attr("fill");if(currentFill)return currentFill;return"none"}).on("click",function(d){return _chart.onClick(d,layerIndex)});dc.transition(paths,_chart.transitionDuration()).attr("fill",function(d,i){return _chart.getColor(data[geoJson(layerIndex).keyAccessor(d)],i)})}_chart.onClick=function(d,layerIndex){var selectedRegion=geoJson(layerIndex).keyAccessor(d);if(selectedRegion==_chart.filter()){dc.events.trigger(function(){_chart.filter(null);dc.redrawAll(_chart.chartGroup())})}else{dc.events.trigger(function(){_chart.filter(selectedRegion);dc.redrawAll(_chart.chartGroup())})}};function renderTitle(regionG,layerIndex,data){if(_chart.renderTitle()){regionG.selectAll("title").text(function(d){var key=getKey(layerIndex,d);var value=data[key];return _chart.title()({key:key,value:value})})}}_chart.doRedraw=function(){for(var layerIndex=0;layerIndex<_geoJsons.length;++layerIndex){plotData(layerIndex)}};_chart.overlayGeoJson=function(json,name,keyAccessor){for(var i=0;i<_geoJsons.length;++i){if(_geoJsons[i].name==name){_geoJsons[i].data=json;_geoJsons[i].keyAccessor=keyAccessor;return _chart}}_geoJsons.push({name:name,data:json,keyAccessor:keyAccessor});return _chart};_chart.projection=function(projection){_geoPath.projection(projection);return _chart};_chart.geoJsons=function(){return _geoJsons};_chart.removeGeoJson=function(name){var geoJsons=[];for(var i=0;i<_geoJsons.length;++i){var layer=_geoJsons[i];if(layer.name!=name){geoJsons.push(layer)}}_geoJsons=geoJsons;return _chart};return _chart.anchor(parent,chartGroup)};dc.bubbleOverlay=function(root,chartGroup){var BUBBLE_OVERLAY_CLASS="bubble-overlay";var BUBBLE_NODE_CLASS="node";var BUBBLE_CLASS="bubble";var _chart=dc.abstractBubbleChart(dc.baseChart({}));var _g;var _points=[];_chart.transitionDuration(750);_chart.radiusValueAccessor(function(d){return d.value});_chart.point=function(name,x,y){_points.push({name:name,x:x,y:y});return _chart};_chart.doRender=function(){_g=initOverlayG();_chart.r().range([_chart.MIN_RADIUS,_chart.width()*_chart.maxBubbleRelativeSize()]);initializeBubbles();_chart.fadeDeselectedArea();return _chart};function initOverlayG(){_g=_chart.select("g."+BUBBLE_OVERLAY_CLASS);if(_g.empty())_g=_chart.svg().append("g").attr("class",BUBBLE_OVERLAY_CLASS);return _g}function initializeBubbles(){var data=mapData();_points.forEach(function(point){var nodeG=getNodeG(point,data);var circle=nodeG.select("circle."+BUBBLE_CLASS);if(circle.empty())circle=nodeG.append("circle").attr("class",BUBBLE_CLASS).attr("r",0).attr("fill",_chart.initBubbleColor).on("click",_chart.onClick);dc.transition(circle,_chart.transitionDuration()).attr("r",function(d){return _chart.bubbleR(d)});_chart.doRenderLabel(nodeG);_chart.doRenderTitles(nodeG)})}function mapData(){var data={};_chart.group().all().forEach(function(datum){data[_chart.keyAccessor()(datum)]=datum});return data}function getNodeG(point,data){var bubbleNodeClass=BUBBLE_NODE_CLASS+" "+dc.utils.nameToId(point.name);var nodeG=_g.select("g."+dc.utils.nameToId(point.name));if(nodeG.empty()){nodeG=_g.append("g").attr("class",bubbleNodeClass).attr("transform","translate("+point.x+","+point.y+")")}nodeG.datum(data[point.name]);return nodeG}_chart.doRedraw=function(){updateBubbles();_chart.fadeDeselectedArea();return _chart};function updateBubbles(){var data=mapData();_points.forEach(function(point){var nodeG=getNodeG(point,data);var circle=nodeG.select("circle."+BUBBLE_CLASS);dc.transition(circle,_chart.transitionDuration()).attr("r",function(d){return _chart.bubbleR(d)}).attr("fill",_chart.updateBubbleColor);_chart.doUpdateLabels(nodeG);_chart.doUpdateTitles(nodeG)})}_chart.debug=function(flag){if(flag){var debugG=_chart.select("g."+dc.constants.DEBUG_GROUP_CLASS);if(debugG.empty())debugG=_chart.svg().append("g").attr("class",dc.constants.DEBUG_GROUP_CLASS);var debugText=debugG.append("text").attr("x",10).attr("y",20);debugG.append("rect").attr("width",_chart.width()).attr("height",_chart.height()).on("mousemove",function(){var position=d3.mouse(debugG.node());var msg=position[0]+", "+position[1];debugText.text(msg)})}else{_chart.selectAll(".debug").remove()}return _chart};_chart.anchor(root,chartGroup);return _chart};
1
+ dc=function(){"use strict";var a={version:"1.6.0",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(){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(){a.chartRegistry.clear()},a.filterAll=function(b){for(var c=a.chartRegistry.list(b),d=0;d<c.length;++d)c[d].filterAll()},a.renderAll=function(b){for(var c=a.chartRegistry.list(b),d=0;d<c.length;++d)c[d].render();null!==a._renderlet&&a._renderlet(b)},a.redrawAll=function(b){for(var c=a.chartRegistry.list(b),d=0;d<c.length;++d)c[d].redraw();null!==a._renderlet&&a._renderlet(b)},a.transition=function(a,b,c){if(0>=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=void 0!==a?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;d<b.length;++d)d>0&&(c+=", "),c+=a.printers.filter(b[d]);return c},a.printers.filter=function(b){var c="";return b&&(b instanceof Array?b.length>=2?c="["+a.utils.printSingleValue(b[0])+" -> "+a.utils.printSingleValue(b[1])+"]":b.length>=1&&(c=a.utils.printSingleValue(b[0])):c=a.utils.printSingleValue(b)),c},a.utils={},a.utils.printSingleValue=function(b){var c=""+b;return b instanceof Date?c=a.dateFormat(b):"string"==typeof b?c=b:a.utils.isFloat(b)?c=a.utils.printSingleValue.fformat(b):a.utils.isInteger(b)&&(c=Math.round(b)),c},a.utils.printSingleValue.fformat=d3.format(".2f"),a.utils.add=function(a,b){if("string"==typeof b&&(b=b.replace("%","")),a instanceof Date){"string"==typeof b&&(b=+b);var c=new Date;return c.setTime(a.getTime()),c.setDate(a.getDate()+b),c}if("string"==typeof b){var d=+b/100;return a>0?a*(1+d):a*(1-d)}return a+b},a.utils.subtract=function(a,b){if("string"==typeof b&&(b=b.replace("%","")),a instanceof Date){"string"==typeof b&&(b=+b);var c=new Date;return c.setTime(a.getTime()),c.setDate(a.getDate()-b),c}if("string"==typeof b){var d=+b/100;return 0>a?a*(1+d):a*(1-d)}return a-b},a.utils.GroupStack=function(){function a(a){c[a]||(c[a]=[])}var b,c=[[]],d=[];this.setDataPoint=function(b,d,e){a(b),c[b][d]=e},this.getDataPoint=function(b,d){a(b);var e=c[b][d];return void 0===e&&(e=0),e},this.addGroup=function(a,c){return c||(c=b),d.push([a,c]),d.length-1},this.getGroupByIndex=function(a){return d[a][0]},this.getAccessorByIndex=function(a){return d[a][1]},this.size=function(){return d.length},this.clear=function(){c=[],d=[]},this.setDefaultAccessor=function(a){b=a},this.getDataLayers=function(){return c},this.toLayers=function(){for(var a=[],b=0;b<c.length;++b){for(var d={index:b,points:[]},e=c[b],f=0;f<e.length;++f)d.points.push(e[f]);a.push(d)}return a}},a.utils.isNumber=function(a){return a===+a},a.utils.isFloat=function(a){return a===+a&&a!==(0|a)},a.utils.isInteger=function(a){return a===+a&&a===(0|a)},a.utils.isNegligible=function(b){return void 0===b||b<a.constants.NEGLIGIBLE_NUMBER&&b>-a.constants.NEGLIGIBLE_NUMBER},a.utils.groupMax=function(b,c){var d=d3.max(b.all(),function(a){return c(a)});return a.utils.isNegligible(d)&&(d=0),d},a.utils.groupMin=function(b,c){var d=d3.min(b.all(),function(a){return c(a)});return a.utils.isNegligible(d)&&(d=0),d},a.utils.nameToId=function(a){return a.toLowerCase().replace(/[\s]/g,"_").replace(/[\.']/g,"")},a.utils.appendOrSelect=function(a,b){var c=a.select(b);return c.empty()&&(c=a.append(b)),c},a.utils.createLegendable=function(a,b,c,d){var e={name:a._getGroupName(b,d),data:b};return"function"==typeof a.colors&&(e.color=a.colors()(c)),e},a.utils.safeNumber=function(b){return a.utils.isNumber(+b)?+b:0},a.events={current:null},a.events.trigger=function(b,c){return c?(a.events.current=b,setTimeout(function(){b==a.events.current&&b()},c),void 0):(b(),void 0)},a.cumulative={},a.cumulative.Base=function(){this._keyIndex=[],this._map={},this.sanitizeKey=function(a){return a+=""},this.clear=function(){this._keyIndex=[],this._map={}},this.size=function(){return this._keyIndex.length},this.getValueByKey=function(a){a=this.sanitizeKey(a);var b=this._map[a];return b},this.setValueByKey=function(a,b){return a=this.sanitizeKey(a),this._map[a]=b},this.indexOfKey=function(a){return a=this.sanitizeKey(a),this._keyIndex.indexOf(a)},this.addToIndex=function(a){a=this.sanitizeKey(a),this._keyIndex.push(a)},this.getKeyByIndex=function(a){return this._keyIndex[a]}},a.cumulative.Sum=function(){a.cumulative.Base.apply(this,arguments),this.add=function(a,b){b||(b=0),void 0===this.getValueByKey(a)?(this.addToIndex(a),this.setValueByKey(a,b)):this.setValueByKey(a,this.getValueByKey(a)+b)},this.minus=function(a,b){this.setValueByKey(a,this.getValueByKey(a)-b)},this.cumulativeSum=function(a){var b=this.indexOfKey(a);if(0>b)return 0;for(var c=0,d=0;b>=d;++d){var e=this.getKeyByIndex(d);c+=this.getValueByKey(e)}return c}},a.cumulative.Sum.prototype=new a.cumulative.Base,a.cumulative.CountUnique=function(){function b(a){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}a.cumulative.Base.apply(this,arguments),this.add=function(a,b){void 0===this.getValueByKey(a)&&(this.setValueByKey(a,{}),this.addToIndex(a)),void 0!==b&&(void 0===this.getValueByKey(a)[b]&&(this.getValueByKey(a)[b]=0),this.getValueByKey(a)[b]+=1)},this.minus=function(a,b){this.getValueByKey(a)[b]-=1,this.getValueByKey(a)[b]<=0&&delete this.getValueByKey(a)[b]},this.count=function(a){return b(this.getValueByKey(a))},this.cumulativeCount=function(a){var b=this.indexOfKey(a);if(0>b)return 0;for(var c=0,d=0;b>=d;++d){var e=this.getKeyByIndex(d);c+=this.count(e)}return c}},a.cumulative.CountUnique.prototype=new a.cumulative.Base,a.baseChart=function(b){function c(a,b,c){var d=a.anchor(),e="__names__";c&&c!=a.valueAccessor()||(c="default"),b[e]||(b[e]={}),b[e][d]||(b[e][d]={a:[],n:[]});var f=b[e][d].a.indexOf(c);return-1==f&&(f=b[e][d].a.length,b[e][d].a[f]=c,b[e][d].n[f]={name:""}),b[e][d].n[f]}function d(){return n=b.root().append("svg").attr("width",b.width()).attr("height",b.height())}function e(a){E.splice(E.indexOf(a),1),h(),b._invokeFilteredListener(a)}function f(a){E.push(a),h(),b._invokeFilteredListener(a)}function g(){E=[],h(),b._invokeFilteredListener(null)}function h(){if(b.dataSet()&&void 0!==b.dimension().filter){var a=F(b.dimension(),E);E=a?a:E}}function i(){for(var a=0;a<A.length;++a)A[a](b)}b.__dc_flag__=!0;var j,k,l,m,n,o,p=200,q=200,r=function(a){return a.key},s=function(a){return a.value},t=function(a){return a.key},u=function(a){return a.key},v=!1,w=function(a){return a.key+": "+a.value},x=!1,y=750,z=a.printers.filters,A=[],B=a.constants.DEFAULT_CHART_GROUP,C=function(){},D={preRender:C,postRender:C,preRedraw:C,postRedraw:C,filtered:C,zoomed:C},E=[],F=function(a,b){return a.filter(null),0===b.length?a.filter(null):1===b.length?a.filter(b[0]):a.filterFunction(function(a){return b.indexOf(a)>=0}),b};return b.width=function(a){return arguments.length?(p=a,b):p},b.height=function(a){return arguments.length?(q=a,b):q},b.dimension=function(a){return arguments.length?(j=a,b.expireCache(),b):j},b.group=function(a,c){return arguments.length?(k=a,b.expireCache(),"string"==typeof c&&b._setGroupName(k,c),b):k},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?(t=a,b.expireCache(),b):t},b.computeOrderedGroups=function(a){var c=a?a:b.group().all().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!==j&&void 0!==k},b.select=function(a){return m.select(a)},b.selectAll=function(a){return m?m.selectAll(a):null},b.anchor=function(c,d){return arguments.length?(a.instanceOfChart(c)?(l=c.anchor(),m=c.root()):(l=c,m=d3.select(l),m.classed(a.constants.CHART_CLASS,!0),a.registerChart(b,d)),B=d,b):l},b.anchorName=function(){var a=b.anchor();return a&&a.id?a.id:a?a.replace("#",""):""},b.root=function(a){return arguments.length?(m=a,b):m},b.svg=function(a){return arguments.length?(n=a,b):n},b.resetSvg=function(){return b.select("svg").remove(),d()},b.filterPrinter=function(a){return arguments.length?(z=a,b):z},b.turnOnControls=function(){return m&&(b.selectAll(".reset").style("display",null),b.selectAll(".filter").text(z(b.filters())).style("display",null)),b},b.turnOffControls=function(){return m&&(b.selectAll(".reset").style("display","none"),b.selectAll(".filter").style("display","none").text(b.filter())),b},b.transitionDuration=function(a){return arguments.length?(y=a,b):y},b.render=function(){if(D.preRender(b),void 0===j)throw new a.errors.InvalidStateException("Mandatory attribute chart.dimension is missing on chart[#"+b.anchorName()+"]");if(void 0===k)throw new a.errors.InvalidStateException("Mandatory attribute chart.group is missing on chart[#"+b.anchorName()+"]");var c=b.doRender();return o&&o.render(),b.activateRenderlets("postRender"),c},b.activateRenderlets=function(a){b.transitionDuration()>0&&n?n.transition().duration(b.transitionDuration()).each("end",function(){i(),a&&D[a](b)}):(i(),a&&D[a](b))},b.redraw=function(){D.preRedraw(b);var a=b.doRedraw();return b.activateRenderlets("postRedraw"),a},b._invokeFilteredListener=function(a){void 0!==a&&D.filtered(b,a)},b._invokeZoomedListener=function(){D.zoomed(b)},b.hasFilter=function(a){return arguments.length?E.indexOf(a)>=0:E.length>0},b.filter=function(a){return arguments.length?(null===a?g():b.hasFilter(a)?e(a):f(a),null!==m&&b.hasFilter()?b.turnOnControls():b.turnOffControls(),b):E.length>0?E[0]:null},b.filters=function(){return E},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?(F=a,b):F},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?(r=a,b):r},b.valueAccessor=function(a){return arguments.length?(s=a,b):s},b.label=function(a){return arguments.length?(u=a,v=!0,b):u},b.renderLabel=function(a){return arguments.length?(v=a,b):v},b.title=function(a){return arguments.length?(w=a,x=!0,b):w},b.renderTitle=function(a){return arguments.length?(x=a,b):x},b.renderlet=function(a){return A.push(a),b},b.chartGroup=function(a){return arguments.length?(B=a,b):B},b.expireCache=function(){return b},b.legend=function(a){return arguments.length?(o=a,o.parent(b),b):o},b.on=function(a,c){return D[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()?w.domain([b.xAxisMin(),b.xAxisMax()]):b.isOrdinal()&&0===w.domain().length&&w.domain(b.computeOrderedGroups().map(function(a){return a.key})),b.isOrdinal()?b.prepareOrdinalXAxis():w.range([0,b.xAxisLength()]),F=F.scale(b.x()).orient("bottom"),d(a)}function d(c){var d=c.selectAll("g."+p);if(R){d.empty()&&(d=c.insert("g",":first-child").attr("class",n+" "+p).attr("transform","translate("+b.yAxisX()+","+b.margins().top+")"));var e=F.tickValues()?F.tickValues():w.ticks(F.ticks()[0]),f=d.selectAll("line").data(e),g=f.enter().append("line").attr("x1",function(a){return w(a)}).attr("y1",b.xAxisY()-b.margins().top).attr("x2",function(a){return w(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 w(a)}).attr("y1",b.xAxisY()-b.margins().top).attr("x2",function(a){return w(a)}).attr("y2",0),f.exit().remove()}else d.selectAll("line").remove()}function e(a){(void 0===z||b.elasticY())&&(z=d3.scale.linear(),z.domain([b.yAxisMin(),b.yAxisMax()]).rangeRound([b.yAxisHeight(),0])),z.range([b.yAxisHeight(),0]),K=K.scale(z).orient("left"),f(a)}function f(c){var d=c.selectAll("g."+o);if(Q){var e=K.tickValues()?K.tickValues():z.ticks(K.ticks()[0]);d.empty()&&(d=c.insert("g",":first-child").attr("class",n+" "+o).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 z(a)}).attr("x2",b.xAxisLength()).attr("y2",function(a){return z(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 z(a)}).attr("x2",b.xAxisLength()).attr("y2",function(a){return z(a)}),f.exit().remove()}else d.selectAll("line").remove()}function g(){return b.xAxisY()-b.margins().top}function h(){var c=b.extendBrush();b.redrawBrush(u),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)}function i(){return b.anchorName()+"-clip"}function j(){var c=a.utils.appendOrSelect(t,"defs"),d=a.utils.appendOrSelect(c,"clipPath").attr("id",i()),e=2*W;a.utils.appendOrSelect(d,"rect").attr("width",b.xAxisLength()+e).attr("height",b.yAxisHeight()+e)}function k(){V&&b.root().call(d3.behavior.zoom().x(b.x()).scaleExtent(T).on("zoom",function(){b.focus(b.x().domain()),b._invokeZoomedListener(),l()}))}function l(){if(D){var c=b.x().domain();if(U){var d=D.xOriginalDomain(),e=[c[0]<d[0]?c[0]:d[0],c[1]>d[1]?c[1]:d[1]];D.focus(e)}else D.focus(c);D.filter(null),D.filter(c),a.events.trigger(function(){a.redrawAll(b.chartGroup())})}}function m(a){return a instanceof Array&&a.length>1}var n="grid-line",o="horizontal",p="vertical",q="y-axis-label",r="x-axis-label",s=12;b=a.colorChart(a.marginable(a.baseChart(b))),b.colors(d3.scale.category10());var t,u,v,w,x,y,z,A,B,C,D,E,F=d3.svg.axis(),G=a.units.integers,H=0,I=!1,J=0,K=d3.svg.axis(),L=0,M=!1,N=0,O=d3.svg.brush(),P=!0,Q=!1,R=!1,S=!1,T=[-10,100],U=!0,V=!1,W=0;return b.title(function(a){return a.data.key+": "+a.data.value}),b.rescale=function(){C=void 0,b.xUnitCount()},b.rangeChart=function(a){return arguments.length?(D=a,D.focusChart(b),b):D},b.zoomScale=function(a){return arguments.length?(T=a,b):T},b.zoomOutRestrict=function(a){return arguments.length?(U=a,b):U},b._generateG=function(a){return t=void 0===a?b.svg():a,u=t.append("g"),v=u.append("g").attr("class","chart-body").attr("transform","translate("+b.margins().left+", "+b.margins().top+")").attr("clip-path","url(#"+i()+")"),u},b.g=function(a){return arguments.length?(u=a,b):u},b.mouseZoomable=function(a){return arguments.length?(V=a,b):V},b.chartBodyG=function(a){return arguments.length?(v=a,b):v},b.x=function(a){return arguments.length?(w=a,x=w.domain(),b):w},b.xOriginalDomain=function(){return x},b.xUnits=function(a){return arguments.length?(G=a,b):G},b.xAxis=function(a){return arguments.length?(F=a,b):F},b.elasticX=function(a){return arguments.length?(I=a,b):I},b.xAxisPadding=function(a){return arguments.length?(H=a,b):H},b.xUnitCount=function(){if(void 0===C){var a=b.xUnits()(b.x().domain()[0],b.x().domain()[1],b.x().domain());C=a instanceof Array?a.length:a}return C},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;w.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."+r);e.empty()&&b.xAxisLabel()&&(e=c.append("text").attr("transform","translate("+b.xAxisLength()/2+","+(b.height()-J)+")").attr("class",r).attr("text-anchor","middle").text(b.xAxisLabel())),b.xAxisLabel()&&e.text()!=b.xAxisLabel()&&axisYLab.text(b.xAxisLabel()),a.transition(d,b.transitionDuration()).call(F)},b.xAxisY=function(){return b.height()-b.margins().bottom},b.xAxisLength=function(){return b.effectiveWidth()},b.xAxisLabel=function(a,c){return arguments.length?(y=a,b.margins().bottom-=J,J=void 0===c?s:c,b.margins().bottom+=J,b):y},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."+q);e.empty()&&b.yAxisLabel()&&(e=c.append("text").attr("transform","translate("+N+","+b.yAxisHeight()/2+"),rotate(-90)").attr("class",q).attr("text-anchor","middle").text(b.yAxisLabel())),b.yAxisLabel()&&e.text()!=b.yAxisLabel()&&e.text(b.yAxisLabel()),a.transition(d,b.transitionDuration()).call(K)},b.yAxisX=function(){return b.margins().left},b.yAxisLabel=function(a,c){return arguments.length?(A=a,b.margins().left-=N,N=void 0===c?s:c,b.margins().left+=N,b):A},b.y=function(a){return arguments.length?(z=a,b):z},b.yAxis=function(a){return arguments.length?(K=a,b):K},b.elasticY=function(a){return arguments.length?(M=a,b):M},b.renderHorizontalGridLines=function(a){return arguments.length?(Q=a,b):Q},b.renderVerticalGridLines=function(a){return arguments.length?(R=a,b):R},b.xAxisMin=function(){var c=d3.min(b.group().all(),function(a){return b.keyAccessor()(a)});return a.utils.subtract(c,H)},b.xAxisMax=function(){var c=d3.max(b.group().all(),function(a){return b.keyAccessor()(a)});return a.utils.add(c,H)},b.yAxisMin=function(){var c=d3.min(b.group().all(),function(a){return b.valueAccessor()(a)});return c=a.utils.subtract(c,L)},b.yAxisMax=function(){var c=d3.max(b.group().all(),function(a){return b.valueAccessor()(a)});return c=a.utils.add(c,L)},b.yAxisPadding=function(a){return arguments.length?(L=a,b):L},b.yAxisHeight=function(){return b.effectiveHeight()},b.round=function(a){return arguments.length?(B=a,b):B},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?(O=a,b):O},b.renderBrush=function(a){if(b.isOrdinal()&&(P=!1),P){O.on("brush",h);var c=a.append("g").attr("class","brush").attr("transform","translate("+b.margins().left+","+b.margins().top+")").call(O.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=O.extent();return b.round()&&(a[0]=a.map(b.round())[0],a[1]=a.map(b.round())[1],u.select(".brush").call(O.extent(a))),a},b.brushIsEmpty=function(a){return O.empty()||!a||a[1]<=a[0]},b.redrawBrush=function(a){if(P){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?(W=a,b):W},b.doRender=function(){if(void 0===w)throw new a.errors.InvalidStateException("Mandatory attribute chart.x is missing on chart[#"+b.anchorName()+"]");return b.resetSvg(),b.dataSet()&&(b._generateG(),j(),c(b.g()),e(b.g()),b.plotData(),b.renderXAxis(b.g()),b.renderYAxis(b.g()),b.renderBrush(b.g()),k()),b},b.doRedraw=function(){return c(b.g()),e(b.g()),b.plotData(),b.elasticY()&&b.renderYAxis(b.g()),(b.elasticX()||S)&&b.renderXAxis(b.g()),b.redrawBrush(b.g()),b},b.subRender=function(){return b.dataSet()&&b.plotData(),b},b.brushOn=function(a){return arguments.length?(P=a,b):P},b.focus=function(a){S=!0,m(a)?b.x().domain(a):b.x().domain(b.xOriginalDomain()),b.rescale(),b.redraw(),m(a)||(S=!1)},b.refocused=function(){return S},b.focusChart=function(c){return arguments.length?(E=c,b.on("filtered",function(b){a.events.trigger(function(){E.focus(b.filter()),E.filter(b.filter()),a.redrawAll(b.chartGroup())})}),b):E},b},a.colorChart=function(b){var c=d3.scale.category20c(),d=[0,c.range().length],e=function(e){var f=d;"function"==typeof d&&(f=d.call(b));var g=f[0],h=f[1];if(isNaN(e)&&(e=0),!a.utils.isNumber(h))return c(e);var i=b.colors().range().length,j=(h-g)/i,k=Math.abs(Math.min(i-1,Math.round((e-g)/j)));return b.colors()(k)},f=function(a,b){return b};return b.colors=function(a){if(!arguments.length)return c;if(a instanceof Array){c=d3.scale.ordinal().range(a);for(var e=[],f=0;f<a.length;++f)e.push(f);c.domain(e)}else c=a;return d=[0,c.range().length],b},b.colorCalculator=function(a){return arguments.length?(e=a,b):e},b.getColor=function(a,b){return e(f(a,b))},b.colorAccessor=function(a){return arguments.length?(f=a,b):f},b.colorDomain=function(a){return arguments.length?(d=a,b):d},b},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){return b.getKeyAccessorByIndex(a)(c)}function e(a,c){return b.getValueAccessorByIndex(a)(c)}function f(a,b){for(var c=0;c<a.length;++c){var f=a[c],g=d(b,f),h=e(b,f);k.setDataPoint(b,c,{data:f,x:g,y:h,layer:b})}}var g,h,i,j,k=new a.utils.GroupStack,l=d3.layout.stack().offset("zero").order("default").values(function(a){return a.points});return b.stack=function(a,c,d){return arguments.length||k.clear(),"string"==typeof c?b._setGroupName(a,c,d):"function"==typeof c&&(d=c),k.setDefaultAccessor(b.valueAccessor()),k.addGroup(a,d),b.expireCache(),b},b.expireCache=function(){return g=null,h=null,i=null,j=null,b},b.allGroups=function(){if(null===g){g=[],g.push(b.group());for(var a=0;a<k.size();++a)g.push(k.getGroupByIndex(a))}return g},b.allValueAccessors=function(){if(null===h){h=[],h.push(b.valueAccessor());for(var a=0;a<k.size();++a)h.push(k.getAccessorByIndex(a))}return h},b.getValueAccessorByIndex=function(a){return b.allValueAccessors()[a]},b.yAxisMin=function(){var d,e=c();return d=d3.min(e,function(a){return a.y+a.y0<a.y0?a.y+a.y0:a.y0}),d=a.utils.subtract(d,b.yAxisPadding())},b.yAxisMax=function(){var d,e=c();return d=d3.max(e,function(a){return a.y+a.y0}),d=a.utils.add(d,b.yAxisPadding())},b.allKeyAccessors=function(){if(null===i){i=[],i.push(b.keyAccessor());for(var a=0;a<k.size();++a)i.push(b.keyAccessor())}return i},b.getKeyAccessorByIndex=function(a){return b.allKeyAccessors()[a]},b.xAxisMin=function(){for(var c=null,d=b.allGroups(),e=0;e<d.length;++e){var f=d[e],g=a.utils.groupMin(f,b.getKeyAccessorByIndex(e));(null===c||c>g)&&(c=g)}return a.utils.subtract(c,b.xAxisPadding())},b.xAxisMax=function(){for(var c=null,d=b.allGroups(),e=0;e<d.length;++e){var f=d[e],g=a.utils.groupMax(f,b.getKeyAccessorByIndex(e));(null===c||g>c)&&(c=g)}return a.utils.add(c,b.xAxisPadding())},b.calculateDataPointMatrixForAll=function(){for(var a=b.allGroups(),c=0;c<a.length;++c){var d=a[c],e=d.all();f(e,c)}},b.getChartStack=function(){return k},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?(l=a,b):l},b.stackLayers=function(a){return arguments.length?(j=a,void 0):(null===j&&(b.calculateDataPointMatrixForAll(),j=b.stackLayout()(k.toLayers())),j)},b.colorAccessor(function(a){return a.layer||a.index}),b.legendables=function(){var c=[];return g.forEach(function(d,e){c.push(a.utils.createLegendable(b,d,e,b.getValueAccessorByIndex(e)))}),c},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);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.group().all(),function(a){return b.radiusValueAccessor()(a)});return a},b.rMax=function(){var a=d3.max(b.group().all(),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.initBubbleColor=function(c,d){return this[a.constants.NODE_INDEX_NAME]=d,b.getColor(c,d)},b.updateBubbleColor=function(c){return b.getColor(c,this[a.constants.NODE_INDEX_NAME])},b.fadeDeselectedArea=function(){b.hasFilter()?b.selectAll("g."+b.BUBBLE_NODE_CLASS).each(function(a){b.isSelectedNode(a)?b.highlightSelected(this):b.fadeDeselected(this)}):b.selectAll("g."+b.BUBBLE_NODE_CLASS).each(function(){b.resetHighlight(this)})},b.isSelectedNode=function(a){return b.hasFilter(a.key)},b.onClick=function(c){var d=c.key;a.events.trigger(function(){b.filter(d),a.redrawAll(b.chartGroup())})},b},a.pieChart=function(b,c){function d(){if(C.dataSet()){var a=p();w=w?w:d3.min([C.width(),C.height()])/2;var b=C.buildArcs(),c=a(C.assembleCappedData());if(x){var d=x.selectAll("g."+z).data(c);e(d,b,c),j(c,b),n(d),o()}}}function e(a,b,c){var d=f(a);g(d,b),h(d),i(c,b)}function f(a){var b=a.enter().append("g").attr("class",function(a,b){return z+" _"+b});return b}function g(a,b){var c=a.append("path").attr("fill",function(a,b){return C.getColor(a,b)}).on("click",u).attr("d",function(a,c){return v(a,c,b)});c.transition().duration(C.transitionDuration()).attrTween("d",s)}function h(a){C.renderTitle()&&a.append("title").text(function(a){return C.title()(a)})}function i(b,c){if(C.renderLabel()){var d=x.selectAll("text."+z).data(b);d.exit().remove();var e=d.enter().append("text").attr("class",function(a,b){return z+" _"+b}).on("click",u);a.transition(e,C.transitionDuration()).attr("transform",function(a){a.innerRadius=C.innerRadius(),a.outerRadius=w;var b=c.centroid(a);return isNaN(b[0])||isNaN(b[1])?"translate(0,0)":"translate("+b+")"}).attr("text-anchor","middle").text(function(a){var b=a.data;return r(b)||q(a)?"":C.label()(a)})}}function j(a,b){k(a,b),l(a,b),m(a)}function k(b,c){var d=x.selectAll("g."+z).data(b).select("path").attr("d",function(a,b){return v(a,b,c)});a.transition(d,C.transitionDuration(),function(a){a.attrTween("d",s)}).attr("fill",function(a,b){return C.getColor(a,b)})}function l(b,c){if(C.renderLabel()){var d=x.selectAll("text."+z).data(b);a.transition(d,C.transitionDuration()).attr("transform",function(a){a.innerRadius=C.innerRadius(),a.outerRadius=w;var b=c.centroid(a);return isNaN(b[0])||isNaN(b[1])?"translate(0,0)":"translate("+b+")"}).attr("text-anchor","middle").text(function(a){var b=a.data;return r(b)||q(a)?"":C.label()(a)})}}function m(a){C.renderTitle()&&x.selectAll("g."+z).data(a).select("title").text(function(a){return C.title()(a)})}function n(a){a.exit().remove()}function o(){C.hasFilter()?C.selectAll("g."+z).each(function(a){C.isSelectedSlice(a)?C.highlightSelected(this):C.fadeDeselected(this)}):C.selectAll("g."+z).each(function(){C.resetHighlight(this)})}function p(){return d3.layout.pie().sort(null).value(function(a){return C.valueAccessor()(a)})}function q(a){var b=a.endAngle-a.startAngle;return isNaN(b)||B>b}function r(a){return 0===C.valueAccessor()(a)}function s(a){a.innerRadius=C.innerRadius();var b=this._current;t(b)&&(b={startAngle:0,endAngle:0});var c=d3.interpolate(b,a);return this._current=c(0),function(a){return v(c(a),0,C.buildArcs())}}function t(a){return!a||isNaN(a.startAngle)||isNaN(a.endAngle)}function u(a){C.onClick(a.data)}function v(a,b,c){var d=c(a,b);return d.indexOf("NaN")>=0&&(d="M0,0"),d}var w,x,y=.5,z="pie-slice",A=0,B=y,C=a.capped(a.colorChart(a.baseChart({})));return C.slicesCap=C.cap,C.label(function(a){return C.keyAccessor()(a.data)}),C.renderLabel(!0),C.title(function(a){return C.keyAccessor()(a.data)+": "+C.valueAccessor()(a.data)}),C.transitionDuration(350),C.doRender=function(){return C.resetSvg(),x=C.svg().append("g").attr("transform","translate("+C.cx()+","+C.cy()+")"),d(),C},C.innerRadius=function(a){return arguments.length?(A=a,C):A},C.radius=function(a){return arguments.length?(w=a,C):w},C.cx=function(){return C.width()/2},C.cy=function(){return C.height()/2},C.buildArcs=function(){return d3.svg.arc().outerRadius(w).innerRadius(A)},C.isSelectedSlice=function(a){return C.hasFilter(C.keyAccessor()(a.data))},C.doRedraw=function(){return d(),C},C.minAngleForLabel=function(a){return arguments.length?(B=a,C):B},C.anchor(b,c)},a.barChart=function(b,c){function d(b){return a.utils.safeNumber(Math.abs(m.y()(b.y+b.y0)-m.y()(b.y0)))}function e(b,c){var e=b.selectAll("rect.bar").data(c.points);e.enter().append("rect").attr("class","bar").attr("fill",m.getColor).append("title").text(m.title()),m.isOrdinal()&&e.on("click",h),a.transition(e,m.transitionDuration()).attr("x",function(b){var c=m.x()(b.x);return(o||m.isOrdinal())&&(c-=j/2),a.utils.safeNumber(c)}).attr("y",function(b){var c=m.y()(b.y+b.y0);return b.y<0&&(c-=d(b)),a.utils.safeNumber(c)}).attr("width",j).attr("height",function(a){return d(a)}).select("title").text(m.title()),a.transition(e.exit(),m.transitionDuration()).attr("height",0).remove()}function f(){if(void 0===j){var a=m.isOrdinal()?g()+1:g(),b=Math.floor((m.xAxisLength()-(a-1)*n)/a);
2
+ (1/0==b||isNaN(b)||k>b)&&(b=k),j=b}}function g(){return void 0===i&&(i=m.xUnitCount()),i}function h(a){m.onClick(a.data)}var i,j,k=1,l=2,m=a.stackableChart(a.coordinateGridChart({})),n=l,o=!1;return a.override(m,"rescale",function(){m._rescale(),i=void 0,j=void 0,g()}),m.plotData=function(){var a=m.chartBodyG().selectAll("g.stack").data(m.stackLayers());f(),a.enter().append("g").attr("class",function(a,b){return"stack _"+b}),a.each(function(a,b){var c=d3.select(this);e(c,a,b)}),m.stackLayers(null)},m.fadeDeselectedArea=function(){var b=m.chartBodyG().selectAll("rect.bar"),c=m.brush().extent();if(m.isOrdinal())m.hasFilter()?(b.classed(a.constants.SELECTED_CLASS,function(a){return m.hasFilter(m.keyAccessor()(a.data))}),b.classed(a.constants.DESELECTED_CLASS,function(a){return!m.hasFilter(m.keyAccessor()(a.data))})):(b.classed(a.constants.SELECTED_CLASS,!1),b.classed(a.constants.DESELECTED_CLASS,!1));else if(m.brushIsEmpty(c))b.classed(a.constants.DESELECTED_CLASS,!1);else{var d=c[0],e=c[1];b.classed(a.constants.DESELECTED_CLASS,function(a){var b=m.keyAccessor()(a.data);return d>b||b>=e})}},m.centerBar=function(a){return arguments.length?(o=a,m):o},m.gap=function(a){return arguments.length?(n=a,m):n},m.extendBrush=function(){var a=m.brush().extent();return m.round()&&!o&&(a[0]=a.map(m.round())[0],a[1]=a.map(m.round())[1],m.chartBodyG().select(".brush").call(m.brush().extent(a))),a},m.legendHighlight=function(a){m.select(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!0),m.select(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!0)},m.legendReset=function(a){m.selectAll(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")==a.color}).classed("highlight",!1),m.selectAll(".chart-body").selectAll("rect.bar").filter(function(){return d3.select(this).attr("fill")!=a.color}).classed("fadeout",!1)},m.anchor(b,c)},a.lineChart=function(b,c){function d(b,c){var d=d3.svg.line().x(function(a){return s.x()(a.x)}).y(function(a){return s.y()(a.y+a.y0)}).interpolate(v).tension(w);m&&d.defined(m),b.append("path").attr("class","line").attr("stroke",s.getColor).attr("fill",s.getColor),a.transition(c.select("path.line"),s.transitionDuration()).attr("d",function(a){return f(d(a.points))})}function e(b,c){if(t){var d=d3.svg.area().x(function(a){return s.x()(a.x)}).y(function(a){return s.y()(a.y+a.y0)}).y0(function(a){return s.y()(a.y0)}).interpolate(v).tension(w);m&&d.defined(m),b.append("path").attr("class","area").attr("fill",s.getColor).attr("d",function(a){return f(d(a.points))}),a.transition(c.select("path.area"),s.transitionDuration()).attr("d",function(a){return f(d(a.points))})}}function f(a){return!a||a.indexOf("NaN")>=0?"M0,0":a}function g(b){s.brushOn()||b.each(function(){var b=d3.select(this),c=b.select("g."+o);c.empty()&&(c=b.append("g").attr("class",o)),h(c);var d=c.selectAll("circle."+p).data(c.datum().points);d.enter().append("circle").attr("class",p).attr("r",u).attr("fill",s.getColor).style("fill-opacity",1e-6).style("stroke-opacity",1e-6).on("mousemove",function(){var a=d3.select(this);i(a),j(a,c)}).on("mouseout",function(){var a=d3.select(this);k(a),l(c)}).append("title").text(s.title()),d.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()),d.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().selectAll("g.stack").data(s.stackLayers()),b=a.enter().append("g").attr("class",function(a,b){return"stack _"+b});d(b,a),e(b,a),g(a),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){for(var b=a.order().selectAll("tr."+i).data(function(a){return a.values}),c=b.enter().append("tr").attr("class",i),d=0;d<n.length;++d){var e=n[d];c.append("td").attr("class",j+" _"+d).html(function(a){return e(a)})}return b.exit().remove(),b}var g,h="dc-table-label",i="dc-table-row",j="dc-table-column",k="dc-table-group",l=a.baseChart({}),m=25,n=[],o=function(a){return a},p=d3.ascending;return l.doRender=function(){return l.selectAll("tbody").remove(),f(d()),l},l.doRedraw=function(){return l.doRender()},l.size=function(a){return arguments.length?(m=a,l):m},l.columns=function(a){return arguments.length?(n=a,l):n},l.sortBy=function(a){return arguments.length?(o=a,l):o},l.order=function(a){return arguments.length?(p=a,l):p},l.anchor(b,c)},a.bubbleChart=function(b,c){function d(b){var c=b.enter().append("g");c.attr("class",i.BUBBLE_NODE_CLASS).attr("transform",k).append("circle").attr("class",function(a,b){return i.BUBBLE_CLASS+" _"+b}).on("click",i.onClick).attr("fill",i.initBubbleColor).attr("r",0),a.transition(b,i.transitionDuration()).attr("r",function(a){return i.bubbleR(a)}).attr("opacity",function(a){return i.bubbleR(a)>0?1:0}),i.doRenderLabel(c),i.doRenderTitles(c)}function e(b){a.transition(b,i.transitionDuration()).attr("transform",k).selectAll("circle."+i.BUBBLE_CLASS).attr("fill",i.updateBubbleColor).attr("r",function(a){return i.bubbleR(a)}).attr("opacity",function(a){return i.bubbleR(a)>0?1:0}),i.doUpdateLabels(b),i.doUpdateTitles(b)}function f(a){a.exit().remove()}function g(a){var b=i.x()(i.keyAccessor()(a));return isNaN(b)&&(b=0),b}function h(a){var b=i.y()(i.valueAccessor()(a));return isNaN(b)&&(b=0),b}var i=a.abstractBubbleChart(a.coordinateGridChart({})),j=!1;i.transitionDuration(750);var k=function(a){return"translate("+g(a)+","+h(a)+")"};return i.elasticRadius=function(a){return arguments.length?(j=a,i):j},i.plotData=function(){j&&i.r().domain([i.rMin(),i.rMax()]),i.r().range([i.MIN_RADIUS,i.xAxisLength()*i.maxBubbleRelativeSize()]);var a=i.chartBodyG().selectAll("g."+i.BUBBLE_NODE_CLASS).data(i.group().all());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;b<k.length;++b)a.push(k[b].yAxisMin());return a}function f(){for(var a=[],b=0;b<k.length;++b)a.push(k[b].yAxisMax());return a}function g(){for(var a=[],b=0;b<k.length;++b)a.push(k[b].xAxisMin());return a}function h(){for(var a=[],b=0;b<k.length;++b)a.push(k[b].xAxisMax());return a}var i="sub",j=a.coordinateGridChart({}),k=[];return j.transitionDuration(500),j.group({}),a.override(j,"_generateG",function(){for(var a=this.__generateG(),b=0;b<k.length;++b){var c=k[b];d(c,b),void 0===c.dimension()&&c.dimension(j.dimension()),void 0===c.group()&&c.group(j.group()),c.chartGroup(j.chartGroup()),c.svg(j.svg()),c.xUnits(j.xUnits()),c.transitionDuration(j.transitionDuration()),c.brushOn(j.brushOn())}return a}),j.plotData=function(){for(var a=0;a<k.length;++a){var b=k[a];void 0===b.g()&&d(b,a),b.x(j.x()),b.y(j.y()),b.xAxis(j.xAxis()),b.yAxis(j.yAxis()),b.plotData(),b.activateRenderlets()}},j.fadeDeselectedArea=function(){for(var a=0;a<k.length;++a){var b=k[a];b.brush(j.brush()),b.fadeDeselectedArea()}},j.compose=function(a){k=a;for(var b=0;b<k.length;++b){var c=k[b];c.height(j.height()),c.width(j.width()),c.margins(j.margins())}return j},j.children=function(){return k},j.yAxisMin=function(){return d3.min(e())},j.yAxisMax=function(){return a.utils.add(d3.max(f()),j.yAxisPadding())},j.xAxisMin=function(){return a.utils.subtract(d3.min(g()),j.xAxisPadding())},j.xAxisMax=function(){return a.utils.add(d3.max(h()),j.xAxisPadding())},j.legendables=function(){var b=[];return k.forEach(function(c,d){var e=c.legendables();e.length>1?b.push.apply(b,e):b.push(a.utils.createLegendable(c,c.group(),d,c.valueAccessor()))}),b},j.legendHighlight=function(a){for(var b=0;b<k.length;++b){var c=k[b];c.legendHighlight(a)}},j.legendReset=function(a){for(var b=0;b<k.length;++b){var c=k[b];c.legendReset(a)}},j.anchor(b,c)},a.geoChoroplethChart=function(b,c){function d(a){var b=e();if(f(a)){var c=g(a);m(c,a,b),n(c,a,b)}}function e(){for(var a={},b=o.group().all(),c=0;c<b.length;++c)a[o.keyAccessor()(b[c])]=o.valueAccessor()(b[c]);return a}function f(a){return l(a).keyAccessor}function g(b){var c=o.svg().selectAll(h(b)).classed("selected",function(a){return i(b,a)}).classed("deselected",function(a){return j(b,a)}).attr("class",function(c){var d=l(b).name,e=a.utils.nameToId(l(b).keyAccessor(c)),f=d+" "+e;return i(b,c)&&(f+=" selected"),j(b,c)&&(f+=" deselected"),f});return c}function h(a){return"g.layer"+a+" g."+l(a).name}function i(a,b){return o.hasFilter()&&o.hasFilter(k(a,b))}function j(a,b){return o.hasFilter()&&!o.hasFilter(k(a,b))}function k(a,b){return l(a).keyAccessor(b)}function l(a){return r[a]}function m(b,c,d){var e=b.select("path").attr("fill",function(){var a=d3.select(this).attr("fill");return a?a:"none"}).on("click",function(a){return o.onClick(a,c)});a.transition(e,o.transitionDuration()).attr("fill",function(a,b){return o.getColor(d[l(c).keyAccessor(a)],b)})}function n(a,b,c){o.renderTitle()&&a.selectAll("title").text(function(a){var d=k(b,a),e=c[d];return o.title()({key:d,value:e})})}var o=a.colorChart(a.baseChart({}));o.colorAccessor(function(a){return a});var p,q=d3.geo.path(),r=[];return o.doRender=function(){o.resetSvg();for(var a=0;a<r.length;++a){var b=o.svg().append("g").attr("class","layer"+a),c=b.selectAll("g."+l(a).name).data(l(a).data).enter().append("g").attr("class",l(a).name);c.append("path").attr("fill","white").attr("d",q),c.append("title"),d(a)}p=!1},o.onClick=function(b,c){var d=l(c).keyAccessor(b);a.events.trigger(function(){o.filter(d),a.redrawAll(o.chartGroup())})},o.doRedraw=function(){for(var a=0;a<r.length;++a)d(a),p&&o.svg().selectAll("g."+l(a).name+" path").attr("d",q);p=!1},o.overlayGeoJson=function(a,b,c){for(var d=0;d<r.length;++d)if(r[d].name==b)return r[d].data=a,r[d].keyAccessor=c,o;return r.push({name:b,data:a,keyAccessor:c}),o},o.projection=function(a){return q.projection(a),p=!0,o},o.geoJsons=function(){return r},o.removeGeoJson=function(a){for(var b=[],c=0;c<r.length;++c){var d=r[c];d.name!=a&&b.push(d)}return r=b,o},o.anchor(b,c)},a.bubbleOverlay=function(b,c){function d(){return i=m.select("g."+j),i.empty()&&(i=m.svg().append("g").attr("class",j)),i}function e(){var b=f();n.forEach(function(c){var d=g(c,b),e=d.select("circle."+l);e.empty()&&(e=d.append("circle").attr("class",l).attr("r",0).attr("fill",m.initBubbleColor).on("click",m.onClick)),a.transition(e,m.transitionDuration()).attr("r",function(a){return m.bubbleR(a)}),m.doRenderLabel(d),m.doRenderTitles(d)})}function f(){var a={};return m.group().all().forEach(function(b){a[m.keyAccessor()(b)]=b}),a}function g(b,c){var d=k+" "+a.utils.nameToId(b.name),e=i.select("g."+a.utils.nameToId(b.name));return e.empty()&&(e=i.append("g").attr("class",d).attr("transform","translate("+b.x+","+b.y+")")),e.datum(c[b.name]),e}function h(){var b=f();n.forEach(function(c){var d=g(c,b),e=d.select("circle."+l);a.transition(e,m.transitionDuration()).attr("r",function(a){return m.bubbleR(a)}).attr("fill",m.updateBubbleColor),m.doUpdateLabels(d),m.doUpdateTitles(d)})}var i,j="bubble-overlay",k="node",l="bubble",m=a.abstractBubbleChart(a.baseChart({})),n=[];return m.transitionDuration(750),m.radiusValueAccessor(function(a){return a.value}),m.point=function(a,b,c){return n.push({name:a,x:b,y:c}),m},m.doRender=function(){return i=d(),m.r().range([m.MIN_RADIUS,m.width()*m.maxBubbleRelativeSize()]),e(),m.fadeDeselectedArea(),m},m.doRedraw=function(){return h(),m.fadeDeselectedArea(),m},m.debug=function(b){if(b){var c=m.select("g."+a.constants.DEBUG_GROUP_CLASS);c.empty()&&(c=m.svg().append("g").attr("class",a.constants.DEBUG_GROUP_CLASS));var d=c.append("text").attr("x",10).attr("y",20);c.append("rect").attr("width",m.width()).attr("height",m.height()).on("mousemove",function(){var a=d3.mouse(c.node()),b=a[0]+", "+a[1];d.text(b)})}else m.selectAll(".debug").remove();return m},m.anchor(b,c),m},a.rowChart=function(b,c){function d(){if(!q||r){var a=d3.extent(s,x.valueAccessor());a[0]>0&&(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.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)});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.numberDisplay=function(b,c){var d="number-display",e=d3.format(".2s"),f=a.baseChart({});return f.dimension({}),f.value=function(){var a=f.group().all&&f.group().all()[0]||f.group().value();return f.valueAccessor()(a)},f.transitionDuration(250),f.doRender=function(){var a=f.value(),b=f.selectAll("."+d);return b.empty()&&(b=b.data([0]).enter().append("span").attr("class",d)),b.transition().duration(f.transitionDuration()).ease("quad-out-in").tween("text",function(){var b=d3.interpolateNumber(this.lastValue||0,a);return this.lastValue=a,function(a){this.textContent=f.formatNumber()(b(a))}}),f},f.doRedraw=function(){return f.doRender()},f.formatNumber=function(a){return arguments.length?(e=a,f):e},f.anchor(b,c)},a}();
3
+ //# sourceMappingURL=dc.min.js.map
@@ -0,0 +1,237 @@
1
+ .dc-chart {
2
+ float: left;
3
+ }
4
+
5
+ .dc-chart rect.bar {
6
+ stroke: none;
7
+ cursor: pointer;
8
+ }
9
+
10
+ .dc-chart rect.bar:hover {
11
+ fill-opacity: .5;
12
+ }
13
+
14
+ .dc-chart rect.stack1 {
15
+ stroke: none;
16
+ fill: red;
17
+ }
18
+
19
+ .dc-chart rect.stack2 {
20
+ stroke: none;
21
+ fill: green;
22
+ }
23
+
24
+ .dc-chart rect.deselected {
25
+ stroke: none;
26
+ fill: #ccc;
27
+ }
28
+
29
+ .dc-chart .pie-slice {
30
+ fill: white;
31
+ font-size: 12px;
32
+ cursor: pointer;
33
+ }
34
+
35
+ .dc-chart .pie-slice :hover {
36
+ fill-opacity: .8;
37
+ }
38
+
39
+ .dc-chart .selected path {
40
+ stroke-width: 3;
41
+ stroke: #ccc;
42
+ fill-opacity: 1;
43
+ }
44
+
45
+ .dc-chart .deselected path {
46
+ strok: none;
47
+ fill-opacity: .5;
48
+ fill: #ccc;
49
+ }
50
+
51
+ .dc-chart .axis path, .axis line {
52
+ fill: none;
53
+ stroke: #000;
54
+ shape-rendering: crispEdges;
55
+ }
56
+
57
+ .dc-chart .axis text {
58
+ font: 10px sans-serif;
59
+ }
60
+
61
+ .dc-chart .grid-line {
62
+ fill: none;
63
+ stroke: #ccc;
64
+ opacity: .5;
65
+ shape-rendering: crispEdges;
66
+ }
67
+
68
+ .dc-chart .grid-line line {
69
+ fill: none;
70
+ stroke: #ccc;
71
+ opacity: .5;
72
+ shape-rendering: crispEdges;
73
+ }
74
+
75
+ .dc-chart .brush rect.background {
76
+ z-index: -999;
77
+ }
78
+
79
+ .dc-chart .brush rect.extent {
80
+ fill: steelblue;
81
+ fill-opacity: .125;
82
+ }
83
+
84
+ .dc-chart .brush .resize path {
85
+ fill: #eee;
86
+ stroke: #666;
87
+ }
88
+
89
+ .dc-chart path.line {
90
+ fill: none;
91
+ stroke-width: 1.5px;
92
+ }
93
+
94
+ .dc-chart circle.dot {
95
+ stroke: none;
96
+ }
97
+
98
+ .dc-chart g.dc-tooltip path {
99
+ fill: none;
100
+ stroke: grey;
101
+ stroke-opacity: .8;
102
+ }
103
+
104
+ .dc-chart path.area {
105
+ fill-opacity: .3;
106
+ stroke: none;
107
+ }
108
+
109
+ .dc-chart .node {
110
+ font-size: 0.7em;
111
+ cursor: pointer;
112
+ }
113
+
114
+ .dc-chart .node :hover {
115
+ fill-opacity: .8;
116
+ }
117
+
118
+ .dc-chart .selected circle {
119
+ stroke-width: 3;
120
+ stroke: #ccc;
121
+ fill-opacity: 1;
122
+ }
123
+
124
+ .dc-chart .deselected circle {
125
+ strok: none;
126
+ fill-opacity: .5;
127
+ fill: #ccc;
128
+ }
129
+
130
+ .dc-chart .bubble {
131
+ stroke: none;
132
+ fill-opacity: 0.6;
133
+ }
134
+
135
+ .dc-data-count {
136
+ float: right;
137
+ margin-top: 15px;
138
+ margin-right: 15px;
139
+ }
140
+
141
+ .dc-data-count .filter-count {
142
+ color: #3182bd;
143
+ font-weight: bold;
144
+ }
145
+
146
+ .dc-data-count .total-count {
147
+ color: #3182bd;
148
+ font-weight: bold;
149
+ }
150
+
151
+ .dc-data-table {
152
+ }
153
+
154
+ .dc-chart g.state {
155
+ cursor: pointer;
156
+ }
157
+
158
+ .dc-chart g.state :hover {
159
+ fill-opacity: .8;
160
+ }
161
+
162
+ .dc-chart g.state path {
163
+ stroke: white;
164
+ }
165
+
166
+ .dc-chart g.selected path {
167
+ }
168
+
169
+ .dc-chart g.deselected path {
170
+ fill: grey;
171
+ }
172
+
173
+ .dc-chart g.selected text {
174
+ }
175
+
176
+ .dc-chart g.deselected text {
177
+ display: none;
178
+ }
179
+
180
+ .dc-chart g.county path {
181
+ stroke: white;
182
+ fill: none;
183
+ }
184
+
185
+ .dc-chart g.debug rect {
186
+ fill: blue;
187
+ fill-opacity: .2;
188
+ }
189
+
190
+ .dc-chart g.row rect {
191
+ fill-opacity: 0.8;
192
+ cursor: pointer;
193
+ }
194
+
195
+ .dc-chart g.row rect:hover {
196
+ fill-opacity: 0.6;
197
+ }
198
+
199
+ .dc-chart g.row text {
200
+ fill: white;
201
+ font-size: 12px;
202
+ cursor: pointer;
203
+ }
204
+
205
+ .dc-legend {
206
+ font-size: 11px;
207
+ }
208
+
209
+ .dc-legend-item {
210
+ cursor: pointer;
211
+ }
212
+
213
+ .dc-chart g.axis text {
214
+ /* Makes it so the user can't accidentally click and select text that is meant as a label only */
215
+ -webkit-user-select: none; /* Chrome/Safari */
216
+ -moz-user-select: none; /* Firefox */
217
+ -ms-user-select: none; /* IE10 */
218
+ -o-user-select: none;
219
+ user-select: none;
220
+ pointer-events: none;
221
+ }
222
+
223
+ .dc-chart path.highlight {
224
+ stroke-width: 3;
225
+ fill-opacity: 1;
226
+ stroke-opacity: 1;
227
+ }
228
+
229
+ .dc-chart .highlight {
230
+ fill-opacity: 1;
231
+ stroke-opacity: 1;
232
+ }
233
+
234
+ .dc-chart .fadeout {
235
+ fill-opacity: 0.2;
236
+ stroke-opacity: 0.2;
237
+ }
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dcjs-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
5
- prerelease:
4
+ version: 1.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Hrishikesh Huilgolkar
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-20 00:00:00.000000000 Z
11
+ date: 2014-04-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: railties
16
- requirement: &13521540 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -24,7 +22,14 @@ dependencies:
24
22
  version: '5.0'
25
23
  type: :runtime
26
24
  prerelease: false
27
- version_requirements: *13521540
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
28
33
  description: Multi-Dimensional charting built to work natively with crossfilter rendered
29
34
  with d3.js
30
35
  email:
@@ -43,28 +48,28 @@ files:
43
48
  - lib/dcjs-rails/version.rb
44
49
  - vendor/assets/javascripts/dc.js
45
50
  - vendor/assets/javascripts/dc.min.js
51
+ - vendor/assets/stylesheets/dc.css
46
52
  homepage: https://github.com/hrishikeshio/dcjs-rails
47
53
  licenses: []
54
+ metadata: {}
48
55
  post_install_message:
49
56
  rdoc_options: []
50
57
  require_paths:
51
58
  - lib
52
59
  required_ruby_version: !ruby/object:Gem::Requirement
53
- none: false
54
60
  requirements:
55
61
  - - ! '>='
56
62
  - !ruby/object:Gem::Version
57
63
  version: '0'
58
64
  required_rubygems_version: !ruby/object:Gem::Requirement
59
- none: false
60
65
  requirements:
61
66
  - - ! '>='
62
67
  - !ruby/object:Gem::Version
63
68
  version: '0'
64
69
  requirements: []
65
70
  rubyforge_project:
66
- rubygems_version: 1.8.11
71
+ rubygems_version: 2.1.11
67
72
  signing_key:
68
- specification_version: 3
73
+ specification_version: 4
69
74
  summary: Gemified dc.js asset for Rails
70
75
  test_files: []