-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcharicharts.min.js
1 lines (1 loc) · 28.8 KB
/
charicharts.min.js
1
!function(){function a(a,b){return"translate("+[a,b]+")"}function b(a){var b=a.node(),c=b.getBBox(),d=[c.x+c.width/2,c.y+c.height/2];return d}function c(a,b){var c,d;if(0!==a&&0!==b){if(d=Math.atan(b/a),d+=0>d?Math.PI/2:0,a>=0&&b>=0)c=d;else if(0>=a&&b>=0)c=d+Math.PI/2;else if(0>=a&&0>=b)c=d+Math.PI;else{if(!(a>=0&&0>=b))return;c=d+3*(Math.PI/2)}return c}}function e(a){return{en:{decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],nodata:["No data available"]},es:{decimal:",",thousands:".",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],shortDays:["Dom","Lun","Mar","Mie","Jue","Vie","Sab"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],shortMonths:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],nodata:["No hay datos disponibles"]}}[a||"en"]}var f={version:"1.3.9"};String.prototype.format||(String.prototype.format=function(){var a=arguments;return this.replace(/{(\d+)}/g,function(b,c){return"undefined"!=typeof a[c]?a[c]:b})}),function(){var a=!1,b=/xyz/.test(function(){xyz})?/\b_super\b/:/.*/;this.Class=function(){},Class.extend=function(c){function d(){return!a&&this.init?this.init.apply(this,arguments):void 0}var e=this.prototype;a=!0;var f=new this;a=!1;for(var g in c)f[g]="function"==typeof c[g]&&"function"==typeof e[g]&&b.test(c[g])?function(a,b){return function(){var c=this._super;this._super=e[a];var d=b.apply(this,arguments);return this._super=c,d}}(g,c[g]):c[g];return d.prototype=f,d.prototype.constructor=d,d.extend=arguments.callee,d}}.call(window);var g=Class.extend({init:function(a,b){return this.$scope={opts:this.parseOptions(a),data:b},_.extend(this.$scope,h()),this._loadModules(),_.extend(this.getInstanceProperties(),{on:this.$scope.on,trigger:this.$scope.trigger,unbind:this.$scope.unbind,remove:_.bind(this.remove,this)})},_loadModules:function(){for(var a=0;a<this.modules.length;a++)_.extend(this.$scope,new this.modules[a](this.$scope))},remove:function(){this.$scope.$svg.remove(),this.$scope.trigger("svg/removed")}}),h=function(){var a={},b=a.c_||{};return a.trigger=function(c,d){for(var e=b[c],f=e?e.length:0;f--;)e[f].apply(a,d||[])},a.on=function(a,c){return b[a]||(b[a]=[]),b[a].push(c),[a,c]},a.unbind=function(a,c){var d=b[c?a:a[0]],e=d?d.length:0;for(c=c||a[1];e--;)d[e]===c&&d.splice(e,1)},a},i=Class.extend({init:function(a){return this._$scope=a,this._loadModules(),_.each(this._subscriptions,this._subscribe,this),this.initialize()},_loadModules:function(){this.$svg=this._$scope.$svg,this.opts=this._$scope.opts,this.on=this._$scope.on,this.trigger=this._$scope.trigger,this.data=this._$scope.data;for(var a=this.deps.length-1;a>=0;a--)this[this.deps[a]]=this._$scope[this.deps[a]]},_subscribe:function(a){_.each(a,_.bind(function(a,b){this.on(b,_.bind(a,this))},this))}}),j=i.extend({deps:["scale"],_subscriptions:[{"Scale/updated":function(){_.each(this._status.axes,this._updateAxis,this)}}],initialize:function(){this._status={axes:this._initAxesModel()},_.each(this._status.axes,this._renderAxis,this)},_renderAxis:function(a,b){switch(b){case"bottom":this._renderBottom(a);break;case"left":this._renderLeft(a);break;case"right":this._renderRight(a)}this._afterAxisChanges()},_getDataResolution:function(){var a,b=function(a){for(var b,c=a.length-1;c>=0;c--){var d=a[c],e=d.length;e>24&&(e=24);for(var f=1;e>f;f++){var g=d[f].x-d[f-1].x;(!b||b>g)&&(b=g)}}return b};return _.each(this.data,function(c){var d=b(c.values?[c.values]:_.pluck(c.data,"values"));(!a||a>d)&&(a=d)}),a/1e3},_renderBottom:function(a){var b=d3.locale(e(this.opts.locale)),c=[[".%L",function(a){return a.getMilliseconds()}],[":%S",function(a){return a.getSeconds()}],["%H:%M",function(a){return a.getMinutes()}],["%H",function(a){return a.getHours()}],["%a %d",function(a){return a.getDay()&&1!==a.getDate()}],["%b %d",function(a){return 1!==a.getDate()}],["%B",function(a){return a.getMonth()}],["%Y",function(){return!0}]],f=b.timeFormat.multi(c);a.axis=d3.svg.axis().scale(this.scale.x).orient("bottom").tickSize(this.opts.xaxis.bottom.tickLines?14:5,0).tickFormat(this.opts.xaxis.bottom.tickFormat||f);var g=this.opts.xaxis.ticks;if(g)a.axis.ticks.apply(a.axis,g);else{var h=this.scale.x.domain(),i=h[0].getTime()/1e3,j=h[1].getTime()/1e3,k=j-i,l=k/7,m=[],n=0,o=function(a){var b=moment(a);return d=moment(a).startOf("year"),Math.abs(d.diff(b,"seconds"))<=l/2?(n+=b.diff(d,"miliseconds"),d.toDate()):(d=moment(a).startOf("month"),Math.abs(d.diff(b,"seconds"))<=l/2?(n+=b.diff(d,"miliseconds"),d.toDate()):(d=moment(a).startOf("quarter"),Math.abs(d.diff(b,"seconds"))<=l/2?(n+=b.diff(d,"miliseconds"),d.toDate()):(d=moment(a).startOf("week"),Math.abs(d.diff(b,"seconds"))<=l/2?(n+=b.diff(d,"miliseconds"),d.toDate()):(d=moment(a).startOf("day"),Math.abs(d.diff(b,"seconds"))<=l/2?(n+=b.diff(d,"miliseconds"),d.toDate()):(d=moment(a).startOf("hour"),Math.abs(d.diff(b,"seconds"))<=l/2?(n+=b.diff(d,"miliseconds"),d.toDate()):(d=moment(a).startOf("minute"),Math.abs(d.diff(b,"seconds"))<=l/2?(n+=b.diff(d,"miliseconds"),d.toDate()):(d=moment(a).startOf("second"),Math.abs(d.diff(b,"seconds"))<=l/2?(n+=b.diff(d,"miliseconds"),d.toDate()):b.toDate())))))))};_.each(_.range(i,j+l,l),function(a){var b=1e3*a,c=o(b);m.push(c)}),a.axis.tickValues(m)}a.el=this.$svg.append("g").attr("class","xaxis bottom").attr("transform","translate(0,"+(this.opts.height+1)+")").call(a.axis),this.opts.xaxis.bottom.tickLines?a.el.selectAll("text").attr("y",0).attr("x",6).style("text-anchor","start"):a.el.selectAll("text").attr("y",9),a.el.append("rect").attr("class","baseline").attr("y",-1).attr("x",-this.opts.margin.left).attr("height",1).attr("width",this.opts.fullWidth),this._renderXLabel("bottom")},_renderLeft:function(a){var b=this.opts.yaxis.left.tickFormat,c=this.opts.yaxis.ticks||[];a.axis=d3.svg.axis().scale(this.scale.y).orient("left").tickSize(-this.opts.width).tickPadding(this.opts.margin.left).tickFormat(b),a.axis.ticks.apply(a.axis,c),a.el=this.$svg.append("g").attr("class","yaxis left").call(a.axis),this._renderYLabel("left")},_renderRight:function(a){var b=this.opts.yaxis.right.tickFormat,c=this.opts.yaxis.ticks||[],d=this;a.axis=d3.svg.axis().scale(this.scale.y).orient("right").tickSize(this.opts.width,10).tickPadding(0).tickFormat(function(a){if(d.scale.y2){var c=d.scale.y(a),e=Math.round(d.scale.y2.invert(c)).toLocaleString();return e}return b(a)}),a.axis.ticks.apply(a.axis,c),a.el=this.$svg.append("g").attr("class","yaxis right").call(a.axis),this._renderYLabel("right")},_updateAxis:function(a,b){var c="top"===b||"bottom"===b?this.scale.x:this.scale.y;a.el.call(a.axis.scale(c)),this._afterAxisChanges(a)},_initAxesModel:function(){var a={},b={left:this.opts.yaxis.left.enabled,right:this.opts.yaxis.right.enabled||!!this.scale.y2,top:this.opts.xaxis.top.enabled,bottom:this.opts.xaxis.bottom.enabled};return _.each(b,function(b,c){b&&(a[c]={})}),a},_renderXLabel:function(b){this.opts.xaxis[b].label&&this.$svg.select(".xaxis."+b).append("text").attr("class","label").attr("transform",a(-this.opts.margin.left,0)).attr("y",16).attr("x",0).attr("text-anchor","start").text(this.opts.xaxis[b].label)},_renderYLabel:function(b){var c,d=this._$scope.scaleUnits.y;"left"===b?(d="default"===d?!1:d,c=d||this.opts.yaxis[b].label):"right"===b&&(c=this._$scope.scaleUnits.y2||this.opts.yaxis[b].label),c&&"default"!==c&&this.$svg.select(".yaxis."+b).append("text").attr("class","label").attr("transform",a("left"===b?-this.opts.margin.left:this.opts.width+this.opts.margin.right,this.opts.yaxis.textMarginTop)).attr("y",-10).attr("x",0).attr("text-anchor","left"===b?"start":"end").text(c)},_afterAxisChanges:function(){this.$svg.select(".yaxis .domain").remove(),this.$svg.select(".xaxis .domain").remove(),this.$svg.selectAll(".yaxis.left .tick text").style("text-anchor","start","important"),this.$svg.selectAll(".yaxis.right .tick text").style("text-anchor","end","important").attr("transform",a(this.opts.margin.right,this.opts.yaxis.textMarginTop)),this.opts.yaxis.textMarginTop&&this.$svg.selectAll(".yaxis.left .tick text").attr("transform",a(0,this.opts.yaxis.textMarginTop)),this.opts.xaxis.bottom.tickLines?this.$svg.selectAll(".xaxis.bottom .tick text").attr("transform",a(0,4)).attr("y",0).attr("x",6).style("text-anchor","start"):this.$svg.selectAll(".xaxis.bottom .tick text").attr("y",9),this.opts.yaxis.fullGrid&&this.$svg.selectAll(".yaxis line").attr("transform",a(+this.opts.margin.left,0)).attr("x1",2*-this.opts.margin.left),this.$svg.selectAll(".yaxis line").each(function(a){0===a&&d3.select(this).attr("class","zeroline")})}}),k=i.extend({deps:[],_subscriptions:[{}],initialize:function(){switch(this.opts.gridTicks&&this._renderGrid(),this.opts.orientation){case"vertical":this._renderVertical();break;case"horizontal":this._renderHorizontal()}return this._setEvents(),{bar:{path:this.path,triggerMouseover:_.bind(this.triggerMouseover,this)}}},_setEvents:function(){var a=this;this.path.on("mousemove",function(b){a._onMouseover(this,b)}),this.$svg.on("mouseleave",function(){a.path.style("opacity",1)})},_renderHorizontal:function(){var a=d3.sum(_.pluck(this.data,"value")),b=0,c=_.map(this.data,function(c){var d=_.extend(c,{x0:b,x1:100*c.value/a});return b+=d.x1,d});this.path=this.$svg.selectAll("rect").data(c).enter().append("rect").attr("x",function(a){return a.x0+"%"}).attr("y",0).attr("width",function(a){return a.x1+"%"}).attr("height",this.opts.fullHeight).style("fill",function(a){return a.color})},_renderVertical:function(){var a=d3.sum(_.pluck(this.data,"value")),b=100*(this.opts.margin.top+this.opts.margin.bottom)/this.opts.height,c=100-b,d=0,e=_.map(this.data,function(b){var e=_.extend(b,{y0:d,y1:b.value*c/a});return d+=e.y1,e});this.path=this.$svg.selectAll("rect").data(e).enter().append("rect").attr("x",0).attr("y",function(a){return a.y0+"%"}).attr("width",this.opts.width).attr("height",function(a){return a.y1+"%"}).style("fill",function(a){return a.color})},_renderGrid:function(){var b=this.opts.fullHeight/(this.opts.gridTicks-1)-1/this.opts.gridTicks;this.grid=this.$svg.append("g").attr("transform",a(-this.opts.margin.left,-this.opts.margin.top)).attr("class","bargrid");for(var c=0;c<this.opts.gridTicks;c++)this.grid.append("line").attr("x1",0).attr("x2",this.opts.fullWidth).attr("y1",b*c).attr("y2",b*c).attr("stroke","red")},_onMouseover:function(a,c){this.path.style("opacity",this.opts.hoverFade),d3.select(a).style("opacity",1);var d;try{d=d3.mouse(a)}catch(e){d=b(d3.select(a))}this.trigger("Bar-piece/mouseover",[c,d])},triggerMouseover:function(a){var b=this;this.path.each(function(c){c.id===a&&b._onMouseover(this,c)})}}),l=i.extend({deps:["pie"],_subscriptions:[{"Pie-piece/mouseover":function(a){this._moveArrow(a)}},{"Pie/updated":function(){this._update()}}],initialize:function(){if(this.pie&&this.opts.innerArrow){var a=this;return this._drawArrow(),setTimeout(function(){for(var b,c=a.pie.path.data(),d=0;d<c.length;d++)if(c[d].value>0){b=c[d];break}a.moveToId(b.data.id)},0),{innerArrow:{moveTo:_.bind(this.moveToId,this)}}}},_drawArrow:function(){var a=this.opts.radius*this.opts.innerArrowSize*(1-this.opts.innerRadius);this.$svg.append("svg:marker").attr("id","innerArrow").attr("viewBox","0 {0} {1} {2}".format(-(a/2),a,a)).attr("refX",this.opts.radius*(1-this.opts.innerRadius)+5).attr("refY",0).attr("fill","white").attr("markerWidth",a).attr("markerHeight",a).attr("orient","auto").append("svg:path").attr("d","M0,{0}L{1},0L0,{2}".format(-(a/2),a,a/2)),this.innerArrow=this.$svg.append("svg:line").attr("x1",0).attr("y1",0).attr("x2",this.opts.radius).attr("y2",0).attr("class","inner-arrow").style("stroke","transparent").attr("marker-end","url(#innerArrow)")},_moveArrow:function(a){var b=this.pie.arc.centroid(a),d=c.apply(this,b),e=d*(180/Math.PI);a.value>0?this.innerArrow.attr("visibility","visible").transition().duration(200).attr("transform","translate(0) rotate("+e+")"):this.innerArrow.attr("visibility","hidden"),this._current=a},moveToId:function(a){var b=this;this.pie.path.each(function(c){c.data.id===a&&b.trigger("Pie-piece/mouseover",[c])})},_update:function(){this._current&&this.moveToId(this._current.data.id)}}),m=i.extend({deps:[],_subscriptions:[{}],initialize:function(){var a=d3.sum(this.data,function(a){return a.value>=0?a.value:0});return 0>=a?void(this.opts.onNoData&&this.opts.onNoData()):(this.pie=d3.layout.pie().value(function(a){return a.value>=0?a.value:0}).sort(null),this.arc=d3.svg.arc().innerRadius(this.opts.radius*this.opts.innerRadius).outerRadius(this.opts.radius),this.path=this.$svg.selectAll("path"),this.update(),this._setEvents(),{series:{update:_.bind(this.update,this)},pie:{path:this.path,arc:this.arc}})},update:function(){function a(a){var c=d3.interpolate(this._current,a);return this._current=c(0),function(a){return b.arc(c(a))}}var b=this,c=this.pie(this.data);this.path=this.path.data(c),this.path.enter().append("path").each(function(a){this._current=a}).attr("class","pie-piece"),this.path.attr("fill",function(a){return a.data.color}),this.path.exit().remove();var d=0;this.path.transition().duration(300).attrTween("d",a).each(function(){++d}).each("end",function(){--d||b.trigger("Pie/updated",[])})},_setEvents:function(){var a=this;this.path.on("mouseover",function(b){a.path.exit(),a.path.style("opacity",a.opts.hoverFade),d3.select(this).style("opacity",1),a.trigger("Pie-piece/mouseover",[b])}),this.$svg.on("mouseleave",function(){a.path.style("opacity",1)})}}),n=i.extend({deps:[],_d3Scales:{time:d3.time.scale.utc,ordinal:d3.scale.ordinal,linear:d3.scale.linear},_subscriptions:[{"Serie/update":function(){this._updateScales(),this.trigger("Scale/updated",[])},"Scale/update":function(a){this._updateScales(a),this.trigger("Scale/updated",[])}}],initialize:function(){return this._status={scale:{x:null,y:null,y2:null},scaleUnits:{y:null,y2:null}},this.dataAvailable=!0,this._updateScales(),{scale:this._status.scale,scaleUnits:this._status.scaleUnits,dataAvailable:this.dataAvailable}},_updateScales:function(a){a=a||{},this._setFlattenedData(),this._status.scale.x=this._updateScale("x",a),this._status.scale.y=this._updateScale("y",a),this._status.scaleUnits.y2&&(this._status.scale.y2=this._updateScale("y2",a))},_updateScale:function(a,b){var c=this.opts[a.replace(/\d/,"")+"axis"],d=this.opts[a+"axis"].domain?this.opts.xaxis.domain:this._getExtent(a,c.fit,b),e="x"===a?[0,this.opts.width]:[this.opts.height,0];return this._d3Scales[c.scale]().domain(d).range(e)},_getExtent:function(a,b,c){c=c||{};var d;if("x"===a){var e=_.flatten(_.values(this._dataFlattened));d=d3.extent(e,function(a){return a.x})}else{var f=this._status.scaleUnits[a];d=d3.extent(this._dataFlattened[f],function(a){return a.y1||a.y})}var g=c[a];if(g&&g.extent){var h=g.min?d3.min([d[0],g.extent[0]]):g.extent[0],i=g.min?d3.max([d[1],g.extent[1]]):g.extent[1];d=[h,i]}var j=d[1]-d[0],k=.05*j;if(0>=j&&(k=1),g&&!g.min)return d;if("y"===a&&b&&(d[0]=d[0]-k,d[1]=d[1]+k),b)return d;if(d[0]>=0)return[0,d[1]];if(d[0]>=0)return[0,d[1]];var l=Math.abs(d[0]),m=Math.abs(d[1]),n=l>m?l:m;return[-n,n]},_setFlattenedData:function(){var a={},b=[];_.each(this.data,function(c){var d,e;c.value?(e=c.unit,d=[c.value]):c.data?(e=c.data[0].unit,d=_.flatten(_.pluck(c.data,"values"))):c.values?(e=c.unit,d=c.values):console.warn("No present values on series provided.\[email protected]"),e||(e="default"),d&&(a[e]||(a[e]=[],b.push(e)),a[e].push(d))});var c={};_.each(a,function(a,b){c[b]=_.flatten(a)});var d=b[0],f=b[1];this._status.scaleUnits.y=d,this._status.scaleUnits.y2=f,this._dataFlattened=c;var g=c[d]&&c[d].length>0||c[f]&&c[f].length>0;g||(this.$svg.append("text").attr("text-achor","middle").attr("x",this.opts.width/2-10).attr("y",this.opts.height/2-8).attr("text-anchor","middle").style("fill","#777").attr("font-size","18px").text(e(this.opts.locale).nodata),this.dataAvailable=!1,this.$svg.node().parentNode.style.background="#f7f7f7")}}),o=i.extend({deps:["scale"],_subscriptions:[{}],initialize:function(){return this.$series=this.$svg.append("g").attr("class","series"),this._addFakeLastValue(),_.each(this.data,this._renderSerie,this),{series:{list:this.data,update:_.bind(this.updateSerie,this),add:_.bind(this.addSerie,this),remove:_.bind(this.removeSerie,this),removeAll:_.bind(this.removeSeries,this),updateAll:_.bind(this.updateSeries,this),toggle:_.bind(this.toggleSerie,this)}}},_addFakeLastValue:function(){_.each(this.data,function(a){if("line"===a.type||"area"===a.type){var b;if(a.interpolation)b=a.interpolation;else if(a.data){var c=_.pluck(a.data,"interpolation");c&&(b=_.uniq(c)[0])}if(b){var d=a.values?[a.values]:_.pluck(a.data,"values"),e=b.match("step")?this._getDataResolution(d):1;e&&_.each(d,function(a){if(a.length){var b=a[a.length-1];if(b&&b.x){var c;if(b.x instanceof Date?c=new Date(b.x.getTime()+e):_.isNumber(b.x)&&(c=b.x+e),c){var d={y:b.y,x:c,fake:!0};a.push(d)}}}})}}},this)},_getDataResolution:function(a){for(var b,c=a.length-1;c>=0;c--){var d=a[c],e=d.length;e>24&&(e=24);for(var f=1;e>f;f++){var g=d[f].x-d[f-1].x;(!b||b>g)&&(b=g)}}return b?b:null},addSerie:function(a){this.data.push(a),this.trigger("Serie/update",[]),this._renderSerie(a)},removeSerie:function(a){var b=_.findWhere(this.data,{id:a});b.path.remove(),this.data.splice(this.data.indexOf(b),1),this.trigger("Serie/update",[])},removeSeries:function(){_.each(this.data,function(a){a.path.remove()}),this.data.splice(0,this.data.length)},_renderSerie:function(a){switch(a.type){case"line":a.path=this._renderLineSerie(a);break;case"bar":a.path=this._renderBarSerie(a);break;case"arearange":a.path=this._renderAreaRangeSerie(a);break;case"area":a.path=this._renderStackedAreaSerie(a);break;case"constant":a.path=this._renderConstantSerie(a)}},updateSerie:function(){},updateSeries:function(a){var b=this;this.removeSeries(),_.each(a,function(a){b.addSerie(a)})},_renderLineSerie:function(a){a.id=a.id||parseInt(_.uniqueId());var b=this._getLineFunc(a),c=this.$series.append("path").attr("id","serie-"+a.id).attr("class","serie-line").attr("stroke",a.color).attr("type","line").style("opacity",a.opacity).attr("active",1);return c.datum(a.values),c.attr("d",b.interpolate(a.interpolation)),d3.select("#serie-"+a.id+"-dots").remove(),a.dots&&(a.dotsGroup=this.$svg.append("g").attr("id","serie-"+a.id+"-dots").selectAll(".dot"),a.dotsGroup=a.dotsGroup.data(a.values.filter(function(a){return a.y})),a.dotsGroup.enter().append("circle").attr("class","dot"),a.dotsGroup.exit().remove(),a.dotsGroup.attr("cx",b.x()).attr("cy",b.y()).attr("fill",a.color).attr("stroke",a.color).attr("stroke-width","2px").attr("r",3)),a.path=c,c},_renderAreaRangeSerie:function(a){var b=this,c=this._getYScale(a);this._renderLineSerie({id:a.data[0].id,color:a.displayLines?a.color:"transparent",values:a.data[0].values}),this._renderLineSerie({id:a.data[1].id,color:a.displayLines?a.color:"transparent",values:a.data[1].values});var d=d3.svg.area().x(function(a){return b.scale.x(a.x)}).y0(function(b,d){return c(a.data[1].values[d].y)}).y1(function(a){return c(a.y)});return a.path=this.$series.append("path").datum(a.data[0].values).attr("class","area").attr("d",d).attr("fill",a.color||"#ccc").attr("opacity",a.bgOpacity||.4),a.path},_renderStackedAreaSerie:function(a){var b,c=this,d=a.data,e=d3.svg.area().x(function(a){return c.scale.x(a.x)});if(a.stacking){var f=d3.layout.stack().values(function(a){return a.values});d=f(a.data),e.y0(function(a){return b(a.y0)}).y1(function(a){return b(a.y+a.y0)})}else _.each(a.data,this._renderLineSerie,this),e.y0(function(){return b(0)}).y1(function(a){return b(a.y)});var g=((new Date).getTime(),_.flatten(_.map(a.data,function(a){return a.values}))),h=d3.min(g,function(a){return a.y0}),i=d3.max(g,function(a){return a.y0+a.y}),j=[h,i];this.trigger("Scale/update",[{y:{extent:j,min:!1}}]),_.each(a.data,function(a){a.id=a.id||parseInt(_.uniqueId()),b=c._getYScale(a)}),this.$series.selectAll("g").attr("class","area").data(d).enter().insert("path",":first-child").attr("id",function(a){return"area-"+a.id}).attr("active",1).attr("d",function(a){return e.interpolate(a.interpolation)(a.values)}).style("fill",function(a){return a.fill||a.color}).style("opacity",function(a){return a.areaOpacity})},_renderConstantSerie:function(a){var b,c,d=this,e={label:a.label},f=this._getYScale(a);return a.id=a.id||parseInt(_.uniqueId()),e[a.cteAxis]=a.value,a.value?(c=this.$series.append("g").datum(e),b=c.append("svg:line").attr("id","serie-"+a.id).attr("class","serie-constant").attr("stroke",a.color).style("stroke-width",(a.strokeWidth||1)+"px").attr("type","line").attr("active",1).attr("x1",function(a){return a.x?d.scale.x(a.x):d.scale.x.range()[0]}).attr("x2",function(a){return a.x?d.scale.x(a.x):d.scale.x.range()[1]}).attr("y1",function(a){return a.y?f(a.y):f.range()[0]}).attr("y2",function(a){return a.y?f(a.y):f.range()[1]}),e.label&&c.append("text").attr("transform",function(b){var c="x"===a.cteAxis?d.scale.x(b.x):d.scale.x.range()[0],g="y"===a.cteAxis?f(b.y):f.range()[0];return"x"===a.cteAxis?c-=a.strokeWidth:g-=a.strokeWidth,e.label.offset&&("string"==typeof e.label.offset.y&&e.label.offset.y.match("%")?g+=d.opts.height*(parseInt(e.label.offset.y)/100):"number"==typeof e.label.offset.y&&(g+=e.label.offset.y),"string"==typeof e.label.offset.x&&e.label.offset.x.match("%")?c+=d.opts.height*(parseInt(e.label.offset.x)/100):"number"==typeof e.label.offset.x&&(c+=e.label.offset.x)),"translate("+c+","+g+") rotate("+("y"===a.cteAxis?"0":"-90")+")"}).text(e.label.text),b):void 0},_renderBarSerie:function(a){var b=this,c=a.grouped,d=Math.floor(this._getBarWidth(a)),e=this._getYScale(a);if(a.id=a.id||parseInt(_.uniqueId()),c){var f={},g={};_.each(a.data,function(a){_.each(a.values,function(a){var b=a.y>=0?f:g;a.y0=b[a.x]||0,a.y1=a.y0+a.y,a.w=-d/2,b[a.x]=a.y1})})}else{var h={};_.each(a.data,function(a){a.values.length*d;_.each(a.values,function(a){a.y0=0,a.y1=a.y,a.w="number"==typeof h[a.x]?h[a.x]:1.5*-d,a.w+=d,h[a.x]=a.w})})}this.trigger("Scale/update",[]);{var i=this.$series.selectAll(".serie-bar").data(a.data).enter().append("g").attr("class","serie-bar").style("fill",function(a){return a.color});i.selectAll("rect").data(function(a){return a.values}).enter().append("rect").attr("x",function(a){return b.scale.x(a.x)+(a.w||0)}).attr("y",function(a){return e(a.y0<a.y1?a.y1:a.y0)}).attr("width",d).attr("height",function(a){return e(Math.abs(a.y0))-e(Math.abs(a.y1))})}return i},_getLineFunc:function(a){var b=this,c=this._getYScale(a);return d3.svg.line().defined(function(a){return!!a.y}).x(function(a){return b.scale.x(a.x)}).y(function(a){return c(a.y)})},_getYScale:function(a){return a.unit&&this._$scope.scaleUnits.y!==a.unit?this.scale.y2:this.scale.y},_updateBarSerie:function(){},toggleSerie:function(a){var b=this.$svg.select("#serie-"+a),c=this.$svg.select("#area-"+a);c.empty()||(c.attr("active",Number(c.attr("active"))?0:1),c.transition().duration(200).style("opacity",c.attr("active"))),b.empty()||(b.attr("active",Number(b.attr("active"))?0:1),b.transition().duration(200).style("opacity",b.attr("active")))},_getBarWidth:function(a){var b,c,d=13;return a.grouped?(c=d3.max(_.map(a.data,function(a){return a.values.length})),b=this.opts.width/c-2):b=d/a.data.length,1>b&&(b=1),b}}),p=i.extend({deps:[],initialize:function(){return this.$svg=this.drawSvg(),{$svg:this.$svg}},drawSvg:function(){return d3.select(this.opts.target).append("svg").attr("width",this.opts.fullWidth).attr("height",this.opts.fullHeight).append("g").attr("class","g-main").attr("transform",this.opts.gmainTranslate)}}),q=i.extend({deps:["scale"],_subscriptions:[{"Scale/updated":function(){this._status.x&&this._moveToValue(this._status.xvalue)}}],initialize:function(){var a=this;this.opts.trail.enabled&&(this._status={xvalue:null,x:null},this._renderTrail(),setTimeout(function(){a._moveToValue(a.opts.trail.initXValue(a.scale.x))},0))},_renderTrail:function(){{var b=this.$svg.append("g").attr("class","trail"),c=11;this.$svg.append("svg:marker").attr("id","trailArrow").attr("viewBox","0 0 20 20").attr("refX","20").attr("refY",c).attr("markerUnits","strokeWidth").attr("markerWidth","15").attr("markerHeight",c).attr("orient","auto").append("svg:path").attr("class","trail-arrow").attr("d","M 0 0 L 20 10 L 0 20 z").attr("fill","#777")}this.trailLine=b.append("svg:line").attr("class","trail-line").attr("x1",this.opts.width).attr("x2",this.opts.width).attr("y1",0).attr("y2",this.opts.height).attr("marker-start","url(#trailArrow)"),this.brush=d3.svg.brush().x(this.scale.x).extent([0,0]),this.bisector=d3.bisector(function(a){return a.x}).right,this.sliderZone=this.$svg.append("g").attr("transform",a(0,-c)).attr("class","trail-slider-zone").call(this.brush),this.sliderZone.select(".background").attr("height",this.opts.fullHeight).attr("width",this.opts.width).style("cursor","pointer"),this.$svg.selectAll(".extent,.resize").remove(),this._setEvents()},_setEvents:function(){var a=this;this.brush.on("brush",function(){a._onBrush(this)})},_onBrush:function(a){var b;b=d3.event.sourceEvent?this.scale.x.invert(d3.mouse(a)[0]):brush.extent()[0],this._moveToValue(b)},_moveToValue:function(a){var b=this.scale.x.domain(),c=!!a.getMonth;c?Date.parse(a)>Date.parse(b[1])?a=b[1]:Date.parse(a)<Date.parse(b[0])&&(a=b[0]):a>b[1]?a=b[1]:a<b[0]&&(a=b[0]),a=this.opts.trail.parseStep(a);var d=Math.round(this.scale.x(a));if(d!==this._status.x){var e=this._getDataFromValue(a);this._status.x=d,this._status.xvalue=a,this._moveTrail(d),this.trigger("Trail/moved",[e,a])}},_getDataFromValue:function(a){var b=this,c=_.map(this.data,function(c){var d;if("line"===c.type){var e=b.bisector(c.values,a);if(c.values.length===e)d={x:null,y:null};else{var f=e-1;0>f&&(f=0),d=c.values[f]}return d||(d={x:null,y:null}),_.extend({},d,{id:c.id},_.omit(c,"values","path"))}return"bar"===c.type||"area"===c.type?_.map(c.data,function(c){var d=c.values[b.bisector(c.values,a)];return d||(d={x:null,y:null}),_.extend(d,{id:c.id},_.omit(c,"values"))}):void 0});return c},_moveTrail:function(a){this.trailLine.attr("x1",a).attr("x2",a)}});f.Chart=g.extend({modules:[p,n,j,o,q],getInstanceProperties:function(){return _.pick(this.$scope,"series")},defaults:{locale:"en",margin:"0 0 0 0",trail:{enabled:!1,parseStep:function(a){return a},initXValue:function(a){return a.domain()[1]}},xaxis:{scale:"time",fit:!0,ticks:!1,domain:null,top:{enabled:!1,label:!1,tickFormat:null},bottom:{enabled:!0,label:!1,tickLines:!1,ticks:null,tickFormat:null}},yaxis:{scale:"linear",fit:!1,fullGrid:!0,textMarginTop:0,ticks:!1,left:{enabled:!0,label:!1,width:10,tickFormat:function(a){return a}},right:{enabled:!1,label:!1,width:10,tickFormat:function(a){return a}}},y2axis:{}},parseOptions:function(b){var c=_.extend({},this.defaults,b);return c.trail=_.extend({},this.defaults.trail,c.trail),c.xaxis=_.extend({},this.defaults.xaxis,c.xaxis),c.xaxis.bottom=_.extend({},this.defaults.xaxis.bottom,c.xaxis.bottom),c.xaxis.top=_.extend({},this.defaults.xaxis.top,c.xaxis.top),c.yaxis=_.extend({},this.defaults.yaxis,c.yaxis),c.yaxis.left=_.extend({},this.defaults.yaxis.left,c.yaxis.left),c.yaxis.right=_.extend({},this.defaults.yaxis.right,c.yaxis.right),c.margin=_.object(["top","right","bottom","left"],c.margin.split(" ").map(Number)),(c.yaxis.left.label||c.yaxis.right.label)&&(c.margin.top+=Math.abs(c.yaxis.textMarginTop-30)),c.fullWidth=c.target.offsetWidth,c.fullHeight=c.target.offsetHeight,c.width=c.fullWidth-c.margin.left-c.margin.right,c.height=c.fullHeight-c.margin.top-c.margin.bottom,c.gmainTranslate=a(c.margin.left,c.margin.top),c}}),f.PercentageBar=g.extend({modules:[p,k],getInstanceProperties:function(){return _.pick(this.$scope,"bar")},defaults:{margin:"0 0 0 0",orientation:"horizontal",hoverFade:1,gridTicks:0},parseOptions:function(b){var c=_.extend({},this.defaults,b);c.margin=_.object(["top","right","bottom","left"],c.margin.split(" ").map(Number));var d=!c.margin.left&&!c.margin.right;return c.fullWidth=d?"100%":c.target.offsetWidth,c.fullHeight=c.target.offsetHeight,d||(c.width=c.fullWidth-c.margin.left-c.margin.right),c.height=c.fullHeight-c.margin.top-c.margin.bottom,c.gmainTranslate=a(c.margin.left,c.margin.top),c}}),f.Pie=g.extend({modules:[p,m,l],getInstanceProperties:function(){return _.pick(this.$scope,"series","innerArrow")},defaults:{margin:"0 0 0 0",innerRadius:.6,hoverFade:1,innerArrow:!1,innerArrowSize:.5},parseOptions:function(b){var c=_.extend({},this.defaults,b);return c.margin=_.object(["top","right","bottom","left"],c.margin.split(" ").map(Number)),c.fullWidth=c.target.offsetWidth,c.fullHeight=c.target.offsetHeight,c.width=c.fullWidth-c.margin.left-c.margin.right,c.height=c.fullHeight-c.margin.top-c.margin.bottom,c.gmainTranslate=a(c.fullWidth/2,c.fullHeight/2),c.radius=Math.min(c.fullWidth,c.fullHeight)/2,c}}),"function"==typeof define&&define.amd?define(f):"object"==typeof module&&module.exports&&(module.exports=f),this.Charicharts=f}.call(window);