drilldown.src.min.js 5.5 KB

1
  1. (function(l){var n=function(){},c=l.getOptions(),i=l.each,g=l.extend,b=l.wrap,e=l.Chart,d=l.seriesTypes,a=d.pie,k=d.column,j=HighchartsAdapter.fireEvent;function m(q,p,r){var o=[Math.round(q[0]+(p[0]-q[0])*r),Math.round(q[1]+(p[1]-q[1])*r),Math.round(q[2]+(p[2]-q[2])*r),q[3]+(p[3]-q[3])*r];return"rgba("+o.join(",")+")"}g(c.lang,{drillUpText:"◁ Back to {series.name}"});c.drilldown={activeAxisLabelStyle:{cursor:"pointer",color:"#039",fontWeight:"bold",textDecoration:"underline"},activeDataLabelStyle:{cursor:"pointer",color:"#039",fontWeight:"bold",textDecoration:"underline"},animation:{duration:500},drillUpButton:{position:{align:"right",x:-10,y:10}}};l.SVGRenderer.prototype.Element.prototype.fadeIn=function(){this.attr({opacity:0.1,visibility:"visible"}).animate({opacity:1},{duration:250})};e.prototype.drilldownLevels=[];e.prototype.addSeriesAsDrilldown=function(v,w){var s=v.series,q=s.xAxis,p=s.yAxis,t,r=v.color||s.color,u,o;w=g({color:r},w);u=HighchartsAdapter.inArray(this,s.points);o={seriesOptions:s.userOptions,shapeArgs:v.shapeArgs,bBox:v.graphic.getBBox(),color:r,newSeries:w,pointOptions:s.options.data[u],pointIndex:u,oldExtremes:{xMin:q&&q.userMin,xMax:q&&q.userMax,yMin:p&&p.userMin,yMax:p&&p.userMax}};this.drilldownLevels.push(o);t=this.addSeries(w,false);if(q){q.oldPos=q.pos;q.userMin=q.userMax=null;p.userMin=p.userMax=null}if(s.type===t.type){t.animate=t.animateDrilldown||n;t.options.animation=true}s.remove(false);this.redraw();this.showDrillUpButton()};e.prototype.getDrilldownBackText=function(){var o=this.drilldownLevels[this.drilldownLevels.length-1];return this.options.lang.drillUpText.replace("{series.name}",o.seriesOptions.name)};e.prototype.showDrillUpButton=function(){var o=this,p=this.getDrilldownBackText(),q=o.options.drilldown.drillUpButton;if(!this.drillUpButton){this.drillUpButton=this.renderer.button(p,null,null,function(){o.drillUp()}).attr(g({align:q.position.align,zIndex:9},q.theme)).add().align(q.position,false,q.relativeTo||"plotBox")}else{this.drillUpButton.attr({text:p}).align()}};e.prototype.drillUp=function(){var r=this,s=r.drilldownLevels.pop(),o=r.series[0],p=s.oldExtremes,q=r.addSeries(s.seriesOptions,false);j(r,"drillup",{seriesOptions:s.seriesOptions});if(q.type===o.type){q.drilldownLevel=s;q.animate=q.animateDrillupTo||n;q.options.animation=true;if(o.animateDrillupFrom){o.animateDrillupFrom(s)}}o.remove(false);if(q.xAxis){q.xAxis.setExtremes(p.xMin,p.xMax,false);q.yAxis.setExtremes(p.yMin,p.yMax,false)}this.redraw();if(this.drilldownLevels.length===0){this.drillUpButton=this.drillUpButton.destroy()}else{this.drillUpButton.attr({text:this.getDrilldownBackText()}).align()}};a.prototype.animateDrilldown=function(t){var v=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1],r=this.chart.options.drilldown.animation,p=v.shapeArgs,u=p.start,s=p.end-u,o=s/this.points.length,q=l.Color(v.color).rgba;if(!t){i(this.points,function(w,x){var y=l.Color(w.color).rgba;w.graphic.attr(l.merge(p,{start:u+x*o,end:u+(x+1)*o})).animate(w.shapeArgs,l.merge(r,{step:function(A,z){if(z.prop==="start"){this.attr({fill:m(q,y,z.pos)})}}}))})}};a.prototype.animateDrillupTo=k.prototype.animateDrillupTo=function(p){if(!p){var o=this,q=o.drilldownLevel;i(this.points,function(r){r.graphic.hide();if(r.dataLabel){r.dataLabel.hide()}if(r.connector){r.connector.hide()}});setTimeout(function(){i(o.points,function(r,s){var t=s===q.pointIndex?"show":"fadeIn";r.graphic[t]();if(r.dataLabel){r.dataLabel[t]()}if(r.connector){r.connector[t]()}})},Math.max(this.chart.options.drilldown.animation.duration-50,0));this.animate=n}};k.prototype.animateDrilldown=function(q){var o=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1].shapeArgs,p=this.chart.options.drilldown.animation;if(!q){o.x+=(this.xAxis.oldPos-this.xAxis.pos);i(this.points,function(r){r.graphic.attr(o).animate(r.shapeArgs,p)})}};k.prototype.animateDrillupFrom=a.prototype.animateDrillupFrom=function(q){var p=this.chart.options.drilldown.animation,o=this.group;delete this.group;i(this.points,function(r){var t=r.graphic,s=l.Color(r.color).rgba;delete r.graphic;t.animate(q.shapeArgs,l.merge(p,{step:function(v,u){if(u.prop==="start"){this.attr({fill:m(s,l.Color(q.color).rgba,u.pos)})}},complete:function(){t.destroy();if(o){o=o.destroy()}}}))})};l.Point.prototype.doDrilldown=function(){var r=this.series,s=r.chart,o=s.options.drilldown,q=o.series.length,p;while(q--&&!p){if(o.series[q].id===this.drilldown){p=o.series[q]}}j(s,"drilldown",{point:this,seriesOptions:p});if(p){s.addSeriesAsDrilldown(this,p)}};b(l.Point.prototype,"init",function(u,s,q,p){var o=u.call(this,s,q,p),t=s.chart,r=s.xAxis&&s.xAxis.ticks[p],v=r&&r.label;if(o.drilldown){l.addEvent(o,"click",function(){o.doDrilldown()});if(v){if(!v._basicStyle){v._basicStyle=v.element.getAttribute("style")}v.addClass("highcharts-drilldown-axis-label").css(t.options.drilldown.activeAxisLabelStyle).on("click",function(){if(o.doDrilldown){o.doDrilldown()}})}}else{if(v&&v._basicStyle){v.element.setAttribute("style",v._basicStyle)}}return o});b(l.Series.prototype,"drawDataLabels",function(p){var o=this.chart.options.drilldown.activeDataLabelStyle;p.call(this);i(this.points,function(q){if(q.drilldown&&q.dataLabel){q.dataLabel.attr({"class":"highcharts-drilldown-data-label"}).css(o).on("click",function(){q.doDrilldown()})}})});k.prototype.supportsDrilldown=true;a.prototype.supportsDrilldown=true;var h,f=function(o){o.call(this);i(this.points,function(p){if(p.drilldown&&p.graphic){p.graphic.attr({"class":"highcharts-drilldown-point"}).css({cursor:"pointer"})}})};for(h in d){if(d[h].prototype.supportsDrilldown){b(d[h].prototype,"drawTracker",f)}}}(Highcharts));