drilldown.min.js 5.4 KB

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