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