2016-04-12 17:36:56 +02:00
! function t ( e , i , s ) { function a ( n , r ) { if ( ! i [ n ] ) { if ( ! e [ n ] ) { var l = "function" == typeof require && require ; if ( ! r && l ) return l ( n , ! 0 ) ; if ( o ) return o ( n , ! 0 ) ; var h = new Error ( "Cannot find module '" + n + "'" ) ; throw h . code = "MODULE_NOT_FOUND" , h } var c = i [ n ] = { exports : { } } ; e [ n ] [ 0 ] . call ( c . exports , function ( t ) { var i = e [ n ] [ 1 ] [ t ] ; return a ( i ? i : t ) } , c , c . exports , t , e , i , s ) } return i [ n ] . exports } for ( var o = "function" == typeof require && require , n = 0 ; n < s . length ; n ++ ) a ( s [ n ] ) ; return a } ( { 1 : [ function ( t , e , i ) { var s = t ( "color-convert" ) , a = t ( "color-string" ) , o = function ( t ) { if ( t instanceof o ) return t ; if ( ! ( this instanceof o ) ) return new o ( t ) ; if ( this . values = { rgb : [ 0 , 0 , 0 ] , hsl : [ 0 , 0 , 0 ] , hsv : [ 0 , 0 , 0 ] , hwb : [ 0 , 0 , 0 ] , cmyk : [ 0 , 0 , 0 , 0 ] , alpha : 1 } , "string" == typeof t ) { var e = a . getRgba ( t ) ; if ( e ) this . setValues ( "rgb" , e ) ; else if ( e = a . getHsla ( t ) ) this . setValues ( "hsl" , e ) ; else { if ( ! ( e = a . getHwb ( t ) ) ) throw new Error ( 'Unable to parse color from string "' + t + '"' ) ; this . setValues ( "hwb" , e ) } } else if ( "object" == typeof t ) { var e = t ; if ( void 0 !== e . r || void 0 !== e . red ) this . setValues ( "rgb" , e ) ; else if ( void 0 !== e . l || void 0 !== e . lightness ) this . setValues ( "hsl" , e ) ; else if ( void 0 !== e . v || void 0 !== e . value ) this . setValues ( "hsv" , e ) ; else if ( void 0 !== e . w || void 0 !== e . whiteness ) this . setValues ( "hwb" , e ) ; else { if ( void 0 === e . c && void 0 === e . cyan ) throw new Error ( "Unable to parse color from object " + JSON . stringify ( t ) ) ; this . setValues ( "cmyk" , e ) } } } ; o . prototype = { rgb : function ( t ) { return this . setSpace ( "rgb" , arguments ) } , hsl : function ( t ) { return this . setSpace ( "hsl" , arguments ) } , hsv : function ( t ) { return this . setSpace ( "hsv" , arguments ) } , hwb : function ( t ) { return this . setSpace ( "hwb" , arguments ) } , cmyk : function ( t ) { return this . setSpace ( "cmyk" , arguments ) } , rgbArray : function ( ) { return this . values . rgb } , hslArray : function ( ) { return this . values . hsl } , hsvArray : function ( ) { return this . values . hsv } , hwbArray : function ( ) { return 1 !== this . values . alpha ? this . values . hwb . concat ( [ this . values . alpha ] ) : this . values . hwb } , cmykArray : function ( ) { return this . values . cmyk } , rgbaArray : function ( ) { var t = this . values . rgb ; return t . concat ( [ this . values . alpha ] ) } , hslaArray : function ( ) { var t = this . values . hsl ; return t . concat ( [ this . values . alpha ] ) } , alpha : function ( t ) { return void 0 === t ? this . values . alpha : ( this . setValues ( "alpha" , t ) , this ) } , red : function ( t ) { return this . setChannel ( "rgb" , 0 , t ) } , green : function ( t ) { return this . setChannel ( "rgb" , 1 , t ) } , blue : function ( t ) { return this . setChannel ( "rgb" , 2 , t ) } , hue : function ( t ) { return this . setChannel ( "hsl" , 0 , t ) } , saturation : function ( t ) { return this . setChannel ( "hsl" , 1 , t ) } , lightness : function ( t ) { return this . setChannel ( "hsl" , 2 , t ) } , saturationv : function ( t ) { return this . setChannel ( "hsv" , 1 , t ) } , whiteness : function ( t ) { return this . setChannel ( "hwb" , 1 , t ) } , blackness : function ( t ) { return this . setChannel ( "hwb" , 2 , t ) } , value : function ( t ) { return this . setChannel ( "hsv" , 2 , t ) } , cyan : function ( t ) { return this . setChannel ( "cmyk" , 0 , t ) } , magenta : function ( t ) { return this . setChannel ( "cmyk" , 1 , t ) } , yellow : function ( t ) { return this . setChannel ( "cmyk" , 2 , t ) } , black : function ( t ) { return this . setChannel ( "cmyk" , 3 , t ) } , hexString : function ( ) { return a . hexString ( this . values . rgb ) } , rgbString : function ( ) { return a . rgbString ( this . values . rgb , this . values . alpha ) } , rgbaString : function ( ) { return a . rgbaString ( this . values . rgb , this . values . alpha ) } , percentString : function ( ) { return a . percentString ( this . values . rgb , this . values . alpha ) } , hslString : function ( ) { return a . hslString ( this . values . hsl , this . values . alpha ) } , hslaString : function ( ) { return a . hslaString ( this . values . hsl , this . values . alpha ) } , hwbString : function ( ) { return a . hwbString ( this . values . hwb , this . values . alpha ) } , keyword : function ( ) { return a . keyword ( this . values . rgb , this . values . alpha ) } , rgbNumber : function ( ) { return this . values . rgb [ 0 ] << 16 | this . values . rgb [ 1 ] << 8 | this . values . rgb [ 2 ] } , luminosity : function ( ) { for ( var t = this . values . rgb , e = [ ] , i = 0 ; i < t . length ; i ++ ) { var s = t [ i ] / 255 ; e [ i ] = . 03928 >= s ? s / 12.92 : Math . pow ( ( s + . 055 ) / 1.055 , 2.4 ) } return . 2126 * e [ 0 ] + . 7152 * e [ 1 ] + . 0722 * e [ 2 ] } , contrast : function ( t ) { var e = this . luminosity ( ) , i = t . luminosity ( ) ; return e > i ? ( e + . 05 ) / ( i + . 05 ) : ( i + . 05 ) / ( e + . 05 ) } , level : function ( t ) { var e = this . contrast ( t ) ; return e >= 7.1 ? "AAA" : e >= 4.5 ? "AA" : "" } , dark : function ( ) { var t = this . values . rgb , e = ( 299 * t [ 0 ] + 587 * t [ 1 ] + 114 * t [ 2 ] ) / 1e3 ; return 128 > e } , light : function ( ) { return ! this . dark ( )
o [ e ] = K ( o [ e ] ) ; this . _monthsRegex = new RegExp ( "^(" + o . join ( "|" ) + ")" , "i" ) , this . _monthsShortRegex = this . _monthsRegex , this . _monthsStrictRegex = new RegExp ( "^(" + a . join ( "|" ) + ")$" , "i" ) , this . _monthsShortStrictRegex = new RegExp ( "^(" + s . join ( "|" ) + ")$" , "i" ) } function ft ( t ) { var e , i = t . _a ; return i && - 2 === u ( t ) . overflow && ( e = i [ Is ] < 0 || i [ Is ] > 11 ? Is : i [ Fs ] < 1 || i [ Fs ] > st ( i [ Ts ] , i [ Is ] ) ? Fs : i [ Ps ] < 0 || i [ Ps ] > 24 || 24 === i [ Ps ] && ( 0 !== i [ Os ] || 0 !== i [ Vs ] || 0 !== i [ Ws ] ) ? Ps : i [ Os ] < 0 || i [ Os ] > 59 ? Os : i [ Vs ] < 0 || i [ Vs ] > 59 ? Vs : i [ Ws ] < 0 || i [ Ws ] > 999 ? Ws : - 1 , u ( t ) . _overflowDayOfYear && ( Ts > e || e > Fs ) && ( e = Fs ) , u ( t ) . _overflowWeeks && - 1 === e && ( e = Ls ) , u ( t ) . _overflowWeekday && - 1 === e && ( e = Rs ) , u ( t ) . overflow = e ) , t } function mt ( t ) { var e , i , s , a , o , n , r = t . _i , l = Es . exec ( r ) || Us . exec ( r ) ; if ( l ) { for ( u ( t ) . iso = ! 0 , e = 0 , i = Gs . length ; i > e ; e ++ ) if ( Gs [ e ] [ 1 ] . exec ( l [ 1 ] ) ) { a = Gs [ e ] [ 0 ] , s = Gs [ e ] [ 2 ] !== ! 1 ; break } if ( null == a ) return void ( t . _isValid = ! 1 ) ; if ( l [ 3 ] ) { for ( e = 0 , i = qs . length ; i > e ; e ++ ) if ( qs [ e ] [ 1 ] . exec ( l [ 3 ] ) ) { o = ( l [ 2 ] || " " ) + qs [ e ] [ 0 ] ; break } if ( null == o ) return void ( t . _isValid = ! 1 ) } if ( ! s && null != o ) return void ( t . _isValid = ! 1 ) ; if ( l [ 4 ] ) { if ( ! js . exec ( l [ 4 ] ) ) return void ( t . _isValid = ! 1 ) ; n = "Z" } t . _f = a + ( o || "" ) + ( n || "" ) , Tt ( t ) } else t . _isValid = ! 1 } function gt ( t ) { var e = Zs . exec ( t . _i ) ; return null !== e ? void ( t . _d = new Date ( + e [ 1 ] ) ) : ( mt ( t ) , void ( t . _isValid === ! 1 && ( delete t . _isValid , i . createFromInputFallback ( t ) ) ) ) } function pt ( t , e , i , s , a , o , n ) { var r = new Date ( t , e , i , s , a , o , n ) ; return 100 > t && t >= 0 && isFinite ( r . getFullYear ( ) ) && r . setFullYear ( t ) , r } function bt ( t ) { var e = new Date ( Date . UTC . apply ( null , arguments ) ) ; return 100 > t && t >= 0 && isFinite ( e . getUTCFullYear ( ) ) && e . setUTCFullYear ( t ) , e } function vt ( t ) { return xt ( t ) ? 366 : 365 } function xt ( t ) { return t % 4 === 0 && t % 100 !== 0 || t % 400 === 0 } function yt ( ) { return xt ( this . year ( ) ) } function _t ( t , e , i ) { var s = 7 + e - i , a = ( 7 + bt ( t , 0 , s ) . getUTCDay ( ) - e ) % 7 ; return - a + s - 1 } function kt ( t , e , i , s , a ) { var o , n , r = ( 7 + i - s ) % 7 , l = _t ( t , s , a ) , h = 1 + 7 * ( e - 1 ) + r + l ; return 0 >= h ? ( o = t - 1 , n = vt ( o ) + h ) : h > vt ( t ) ? ( o = t + 1 , n = h - vt ( t ) ) : ( o = t , n = h ) , { year : o , dayOfYear : n } } function Dt ( t , e , i ) { var s , a , o = _t ( t . year ( ) , e , i ) , n = Math . floor ( ( t . dayOfYear ( ) - o - 1 ) / 7 ) + 1 ; return 1 > n ? ( a = t . year ( ) - 1 , s = n + St ( a , e , i ) ) : n > St ( t . year ( ) , e , i ) ? ( s = n - St ( t . year ( ) , e , i ) , a = t . year ( ) + 1 ) : ( a = t . year ( ) , s = n ) , { week : s , year : a } } function St ( t , e , i ) { var s = _t ( t , e , i ) , a = _t ( t + 1 , e , i ) ; return ( vt ( t ) - s + a ) / 7 } function wt ( t , e , i ) { return null != t ? t : null != e ? e : i } function Ct ( t ) { var e = new Date ( i . now ( ) ) ; return t . _useUTC ? [ e . getUTCFullYear ( ) , e . getUTCMonth ( ) , e . getUTCDate ( ) ] : [ e . getFullYear ( ) , e . getMonth ( ) , e . getDate ( ) ] } function Mt ( t ) { var e , i , s , a , o = [ ] ; if ( ! t . _d ) { for ( s = Ct ( t ) , t . _w && null == t . _a [ Fs ] && null == t . _a [ Is ] && At ( t ) , t . _dayOfYear && ( a = wt ( t . _a [ Ts ] , s [ Ts ] ) , t . _dayOfYear > vt ( a ) && ( u ( t ) . _overflowDayOfYear = ! 0 ) , i = bt ( a , 0 , t . _dayOfYear ) , t . _a [ Is ] = i . getUTCMonth ( ) , t . _a [ Fs ] = i . getUTCDate ( ) ) , e = 0 ; 3 > e && null == t . _a [ e ] ; ++ e ) t . _a [ e ] = o [ e ] = s [ e ] ; for ( ; 7 > e ; e ++ ) t . _a [ e ] = o [ e ] = null == t . _a [ e ] ? 2 === e ? 1 : 0 : t . _a [ e ] ; 24 === t . _a [ Ps ] && 0 === t . _a [ Os ] && 0 === t . _a [ Vs ] && 0 === t . _a [ Ws ] && ( t . _nextDay = ! 0 , t . _a [ Ps ] = 0 ) , t . _d = ( t . _useUTC ? bt : pt ) . apply ( null , o ) , null != t . _tzm && t . _d . setUTCMinutes ( t . _d . getUTCMinutes ( ) - t . _tzm ) , t . _nextDay && ( t . _a [ Ps ] = 24 ) } } function At ( t ) { var e , i , s , a , o , n , r , l ; e = t . _w , null != e . GG || null != e . W || null != e . E ? ( o = 1 , n = 4 , i = wt ( e . GG , t . _a [ Ts ] , Dt ( Rt ( ) , 1 , 4 ) . year ) , s = wt ( e . W , 1 ) , a = wt ( e . E , 1 ) , ( 1 > a || a > 7 ) && ( l = ! 0 ) ) : ( o = t . _locale . _week . dow , n = t . _locale . _week . doy , i = wt ( e . gg , t . _a [ Ts ] , Dt ( Rt ( ) , o , n ) . year ) , s = wt ( e . w , 1 ) , null != e . d ? ( a = e . d , ( 0 > a || a > 6 ) && ( l = ! 0 ) ) : null != e . e ? ( a = e . e + o , ( e . e < 0 || e . e > 6 ) && ( l = ! 0 ) ) : a = o ) , 1 > s || s > St ( i , o , n ) ? u ( t ) . _overflowWeeks = ! 0 : null != l ? u ( t ) . _overflowWeekday = ! 0 : ( r = kt ( i , s , a , o , n ) , t . _a [ Ts ] = r . year , t . _dayOfYear = r . dayOfYear ) } function Tt ( t ) { if ( t . _f === i . ISO _8601 ) return void mt ( t ) ; t . _a = [ ] , u ( t ) . empty = ! 0 ; var e , s , a , o , n , r = "" + t . _i , l = r . length , h = 0 ; for ( a = Q ( t . _f , t . _locale ) . match ( ns ) || [ ] , e = 0 ; e < a . length ; e ++ ) o = a [ e ] , s = ( r . match ( X ( o , t ) ) || [ ] ) [ 0 ] , s && ( n = r . substr ( 0 , r . indexOf ( s ) ) , n . length > 0 && u ( t ) . unusedInput . push ( n ) , r = r . slice ( r . indexOf ( s ) + s . length ) , h += s . length ) , hs [ o ] ? ( s ? u ( t ) . empty = ! 1 : u ( t ) . unusedTokens . push ( o ) , it ( o , s , t ) ) : t . _strict && ! s && u ( t ) . unusedTokens . push ( o ) ; u ( t ) . charsLeftOver = l - h , r . length > 0 && u ( t ) . unusedInput . push ( r ) , u ( t ) . bigHour === ! 0 && t . _a [ Ps ] <= 12 && t . _a [ Ps ] > 0 && ( u ( t ) . bigHour = void 0 ) , t . _a [ Ps ] = It ( t . _locale , t . _a [ Ps ] , t . _meridiem ) , Mt ( t ) , ft ( t ) } function It ( t , e , i ) { var s ; return null == i ? e : null != t . meridiemHour ? t . meridiemHour ( e ,
Ua . asWeeks = Fa , Ua . asMonths = Pa , Ua . asYears = Oa , Ua . valueOf = Ei , Ua . _bubble = Bi , Ua . get = ji , Ua . milliseconds = Va , Ua . seconds = Wa , Ua . minutes = La , Ua . hours = Ra , Ua . days = za , Ua . weeks = qi , Ua . months = Ba , Ua . years = Ya , Ua . humanize = Xi , Ua . toISOString = $i , Ua . toString = $i , Ua . toJSON = $i , Ua . locale = Ae , Ua . localeData = Te , Ua . toIsoString = k ( "toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)" , $i ) , Ua . lang = aa , j ( "X" , 0 , 0 , "unix" ) , j ( "x" , 0 , 0 , "valueOf" ) , J ( "x" , ks ) , J ( "X" , ws ) , tt ( "X" , function ( t , e , i ) { i . _d = new Date ( 1e3 * parseFloat ( t , 10 ) ) } ) , tt ( "x" , function ( t , e , i ) { i . _d = new Date ( x ( t ) ) } ) , i . version = "2.12.0" , s ( Rt ) , i . fn = ba , i . min = Bt , i . max = Yt , i . now = $s , i . utc = h , i . unix = vi , i . months = Ti , i . isDate = o , i . locale = P , i . invalid = f , i . duration = ae , i . isMoment = b , i . weekdays = Fi , i . parseZone = xi , i . localeData = W , i . isDuration = Ht , i . monthsShort = Ii , i . weekdaysMin = Oi , i . defineLocale = O , i . updateLocale = V , i . locales = L , i . weekdaysShort = Pi , i . normalizeUnits = z , i . relativeTimeThreshold = Ji , i . prototype = ba ; var ja = i ; return ja } ) } , { } ] , 7 : [ function ( t , e , i ) { / * !
2016-02-12 05:29:26 +01:00
* Chart . js
* http : //chartjs.org/
2016-04-09 14:01:01 +02:00
* Version : 2.0 . 0
2016-02-12 05:29:26 +01:00
*
* Copyright 2015 Nick Downie
* Released under the MIT license
* https : //github.com/nnnick/Chart.js/blob/master/LICENSE.md
* /
2016-04-09 14:01:01 +02:00
var s = t ( "./core/core.js" ) ( ) ; t ( "./core/core.helpers" ) ( s ) , t ( "./core/core.element" ) ( s ) , t ( "./core/core.animation" ) ( s ) , t ( "./core/core.controller" ) ( s ) , t ( "./core/core.datasetController" ) ( s ) , t ( "./core/core.layoutService" ) ( s ) , t ( "./core/core.legend" ) ( s ) , t ( "./core/core.scale" ) ( s ) , t ( "./core/core.scaleService" ) ( s ) , t ( "./core/core.title" ) ( s ) , t ( "./core/core.tooltip" ) ( s ) , t ( "./controllers/controller.bar" ) ( s ) , t ( "./controllers/controller.bubble" ) ( s ) , t ( "./controllers/controller.doughnut" ) ( s ) , t ( "./controllers/controller.line" ) ( s ) , t ( "./controllers/controller.polarArea" ) ( s ) , t ( "./controllers/controller.radar" ) ( s ) , t ( "./scales/scale.category" ) ( s ) , t ( "./scales/scale.linear" ) ( s ) , t ( "./scales/scale.logarithmic" ) ( s ) , t ( "./scales/scale.radialLinear" ) ( s ) , t ( "./scales/scale.time" ) ( s ) , t ( "./elements/element.arc" ) ( s ) , t ( "./elements/element.line" ) ( s ) , t ( "./elements/element.point" ) ( s ) , t ( "./elements/element.rectangle" ) ( s ) , t ( "./charts/Chart.Bar" ) ( s ) , t ( "./charts/Chart.Bubble" ) ( s ) , t ( "./charts/Chart.Doughnut" ) ( s ) , t ( "./charts/Chart.Line" ) ( s ) , t ( "./charts/Chart.PolarArea" ) ( s ) , t ( "./charts/Chart.Radar" ) ( s ) , t ( "./charts/Chart.Scatter" ) ( s ) , window . Chart = e . exports = s } , { "./charts/Chart.Bar" : 8 , "./charts/Chart.Bubble" : 9 , "./charts/Chart.Doughnut" : 10 , "./charts/Chart.Line" : 11 , "./charts/Chart.PolarArea" : 12 , "./charts/Chart.Radar" : 13 , "./charts/Chart.Scatter" : 14 , "./controllers/controller.bar" : 15 , "./controllers/controller.bubble" : 16 , "./controllers/controller.doughnut" : 17 , "./controllers/controller.line" : 18 , "./controllers/controller.polarArea" : 19 , "./controllers/controller.radar" : 20 , "./core/core.animation" : 21 , "./core/core.controller" : 22 , "./core/core.datasetController" : 23 , "./core/core.element" : 24 , "./core/core.helpers" : 25 , "./core/core.js" : 26 , "./core/core.layoutService" : 27 , "./core/core.legend" : 28 , "./core/core.scale" : 29 , "./core/core.scaleService" : 30 , "./core/core.title" : 31 , "./core/core.tooltip" : 32 , "./elements/element.arc" : 33 , "./elements/element.line" : 34 , "./elements/element.point" : 35 , "./elements/element.rectangle" : 36 , "./scales/scale.category" : 37 , "./scales/scale.linear" : 38 , "./scales/scale.logarithmic" : 39 , "./scales/scale.radialLinear" : 40 , "./scales/scale.time" : 41 } ] , 8 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Bar = function ( e , i ) { return i . type = "bar" , new t ( e , i ) } } } , { } ] , 9 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Bubble = function ( e , i ) { return i . type = "bubble" , new t ( e , i ) } } } , { } ] , 10 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Doughnut = function ( e , i ) { return i . type = "doughnut" , new t ( e , i ) } } } , { } ] , 11 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Line = function ( e , i ) { return i . type = "line" , new t ( e , i ) } } } , { } ] , 12 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . PolarArea = function ( e , i ) { return i . type = "polarArea" , new t ( e , i ) } } } , { } ] , 13 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers , i = { aspectRatio : 1 } ; t . Radar = function ( s , a ) { return a . options = e . configMerge ( i , a . options ) , a . type = "radar" , new t ( s , a ) } } } , { } ] , 14 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = { hover : { mode : "single" } , scales : { xAxes : [ { type : "linear" , position : "bottom" , id : "x-axis-1" } ] , yAxes : [ { type : "linear" , position : "left" , id : "y-axis-1" } ] } , tooltips : { callbacks : { title : function ( t , e ) { return "" } , label : function ( t , e ) { return "(" + t . xLabel + ", " + t . yLabel + ")" } } } } ; t . defaults . scatter = e , t . controllers . scatter = t . controllers . line , t . Scatter = function ( e , i ) { return i . type = "scatter" , new t ( e , i ) } } } , { } ] , 15 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers ; t . defaults . bar = { hover : { mode : "label" } , scales : { xAxes : [ { type : "category" , categoryPercentage : . 8 , barPercentage : . 9 , gridLines : { offsetGridLines : ! 0 } } ] , yAxes : [ { type : "linear" } ] } } , t . controllers . bar = t . DatasetController . extend ( { initialize : function ( e , i ) { t . DatasetController . prototype . initialize . call ( this , e , i ) , this . getDataset ( ) . bar = ! 0 } , getBarCount : function ( ) { var t = 0 ; return e . each ( this . chart . data . datasets , function ( i ) { e . isDatasetVisible ( i ) && i . bar && ++ t } ) , t } , addElements : function ( ) { this . getDataset ( ) . metaData = this . getDataset ( ) . metaData || [ ] , e . each ( this . getDataset ( ) . data , function ( e , i ) { this . getDataset ( ) . metaData [ i ] = this . getDataset ( ) . metaData [ i ] || new t . elements . Rectangle ( { _chart : this . chart . chart , _da
outerRadius : this . chart . scale . getDistanceFromCenterForValue ( this . getDataset ( ) . data [ i ] ) , startAngle : h , endAngle : c , backgroundColor : t . custom && t . custom . backgroundColor ? t . custom . backgroundColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . backgroundColor , i , this . chart . options . elements . arc . backgroundColor ) , borderWidth : t . custom && t . custom . borderWidth ? t . custom . borderWidth : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderWidth , i , this . chart . options . elements . arc . borderWidth ) , borderColor : t . custom && t . custom . borderColor ? t . custom . borderColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderColor , i , this . chart . options . elements . arc . borderColor ) , label : e . getValueAtIndexOrDefault ( this . chart . data . labels , i , this . chart . data . labels [ i ] ) } } ) , t . pivot ( ) } , draw : function ( t ) { var i = t || 1 ; e . each ( this . getDataset ( ) . metaData , function ( t , e ) { t . transition ( i ) . draw ( ) } ) } , setHoverStyle : function ( t ) { var i = this . chart . data . datasets [ t . _datasetIndex ] , s = t . _index ; t . _model . backgroundColor = t . custom && t . custom . hoverBackgroundColor ? t . custom . hoverBackgroundColor : e . getValueAtIndexOrDefault ( i . hoverBackgroundColor , s , e . color ( t . _model . backgroundColor ) . saturate ( . 5 ) . darken ( . 1 ) . rgbString ( ) ) , t . _model . borderColor = t . custom && t . custom . hoverBorderColor ? t . custom . hoverBorderColor : e . getValueAtIndexOrDefault ( i . hoverBorderColor , s , e . color ( t . _model . borderColor ) . saturate ( . 5 ) . darken ( . 1 ) . rgbString ( ) ) , t . _model . borderWidth = t . custom && t . custom . hoverBorderWidth ? t . custom . hoverBorderWidth : e . getValueAtIndexOrDefault ( i . hoverBorderWidth , s , t . _model . borderWidth ) } , removeHoverStyle : function ( t ) { var i = ( this . chart . data . datasets [ t . _datasetIndex ] , t . _index ) ; t . _model . backgroundColor = t . custom && t . custom . backgroundColor ? t . custom . backgroundColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . backgroundColor , i , this . chart . options . elements . arc . backgroundColor ) , t . _model . borderColor = t . custom && t . custom . borderColor ? t . custom . borderColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderColor , i , this . chart . options . elements . arc . borderColor ) , t . _model . borderWidth = t . custom && t . custom . borderWidth ? t . custom . borderWidth : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderWidth , i , this . chart . options . elements . arc . borderWidth ) } , calculateCircumference : function ( t ) { if ( isNaN ( t ) ) return 0 ; var i = e . where ( this . getDataset ( ) . data , function ( t ) { return isNaN ( t ) } ) . length ; return 2 * Math . PI / ( this . getDataset ( ) . data . length - i ) } } ) } } , { } ] , 20 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers ; t . defaults . radar = { scale : { type : "radialLinear" } , elements : { line : { tension : 0 } } } , t . controllers . radar = t . DatasetController . extend ( { linkScales : function ( ) { } , addElements : function ( ) { this . getDataset ( ) . metaData = this . getDataset ( ) . metaData || [ ] , this . getDataset ( ) . metaDataset = this . getDataset ( ) . metaDataset || new t . elements . Line ( { _chart : this . chart . chart , _datasetIndex : this . index , _points : this . getDataset ( ) . metaData , _loop : ! 0 } ) , e . each ( this . getDataset ( ) . data , function ( e , i ) { this . getDataset ( ) . metaData [ i ] = this . getDataset ( ) . metaData [ i ] || new t . elements . Point ( { _chart : this . chart . chart , _datasetIndex : this . index , _index : i , _model : { x : 0 , y : 0 } } ) } , this ) } , addElementAndReset : function ( e ) { this . getDataset ( ) . metaData = this . getDataset ( ) . metaData || [ ] ; var i = new t . elements . Point ( { _chart : this . chart . chart , _datasetIndex : this . index , _index : e } ) ; this . updateElement ( i , e , ! 0 ) , this . getDataset ( ) . metaData . splice ( e , 0 , i ) , this . updateBezierControlPoints ( ) } , update : function ( t ) { var i , s = this . getDataset ( ) . metaDataset , a = this . getDataset ( ) . metaData , o = this . chart . scale ; i = o . min < 0 && o . max < 0 ? o . getPointPositionForValue ( 0 , o . max ) : o . min > 0 && o . max > 0 ? o . getPointPositionForValue ( 0 , o . min ) : o . getPointPositionForValue ( 0 , 0 ) , e . extend ( this . getDataset ( ) . metaDataset , { _datasetIndex : this . index , _children : this . getDataset ( ) . metaData , _model : { tension : s . custom && s . custom . tension ? s . custom . tension : e . getValueOrDefault ( this . getDataset ( ) . tension , this . chart . options . elements . line . tension ) , backgroundColor : s . custom && s . custom . backgroundColor ? s . custom . backgroundColor : this . getDataset ( ) . backgroundColor || this . chart . options . elements . line . backgroundColor , borderWidth : s . custom && s . custom . borderWidth ? s . custom . borderWidth : this . getDataset ( ) . borderWidth || this . chart . options . elements . line . borderWidth , borderColor : s
2016-04-12 17:36:56 +02:00
} , a . removeEvent = function ( t , e , i ) { t . removeEventListener ? t . removeEventListener ( e , i , ! 1 ) : t . detachEvent ? t . detachEvent ( "on" + e , i ) : t [ "on" + e ] = a . noop } , a . bindEvents = function ( t , e , i ) { t . events || ( t . events = { } ) , a . each ( e , function ( e ) { t . events [ e ] = function ( ) { i . apply ( t , arguments ) } , a . addEvent ( t . chart . canvas , e , t . events [ e ] ) } ) } , a . unbindEvents = function ( t , e ) { a . each ( e , function ( e , i ) { a . removeEvent ( t . chart . canvas , i , e ) } ) } , a . getConstraintWidth = function ( t ) { return i ( t , "max-width" , "clientWidth" ) } , a . getConstraintHeight = function ( t ) { return i ( t , "max-height" , "clientHeight" ) } , a . getMaximumWidth = function ( t ) { var e = t . parentNode , i = parseInt ( a . getStyle ( e , "padding-left" ) ) + parseInt ( a . getStyle ( e , "padding-right" ) ) , s = e . clientWidth - i , o = a . getConstraintWidth ( t ) ; return void 0 !== o && ( s = Math . min ( s , o ) ) , s } , a . getMaximumHeight = function ( t ) { var e = t . parentNode , i = parseInt ( a . getStyle ( e , "padding-top" ) ) + parseInt ( a . getStyle ( e , "padding-bottom" ) ) , s = e . clientHeight - i , o = a . getConstraintHeight ( t ) ; return void 0 !== o && ( s = Math . min ( s , o ) ) , s } , a . getStyle = function ( t , e ) { return t . currentStyle ? t . currentStyle [ e ] : document . defaultView . getComputedStyle ( t , null ) . getPropertyValue ( e ) } , a . retinaScale = function ( t ) { var e = t . ctx , i = t . canvas . width , s = t . canvas . height , a = t . currentDevicePixelRatio = window . devicePixelRatio || 1 ; 1 !== a && ( e . canvas . height = s * a , e . canvas . width = i * a , e . scale ( a , a ) , t . originalDevicePixelRatio = t . originalDevicePixelRatio || a ) , e . canvas . style . width = i + "px" , e . canvas . style . height = s + "px" } , a . clear = function ( t ) { t . ctx . clearRect ( 0 , 0 , t . width , t . height ) } , a . fontString = function ( t , e , i ) { return e + " " + t + "px " + i } , a . longestText = function ( t , e , i , s ) { s = s || { } , s . data = s . data || { } , s . garbageCollect = s . garbageCollect || [ ] , s . font !== e && ( s . data = { } , s . garbageCollect = [ ] , s . font = e ) , t . font = e ; var o = 0 ; a . each ( i , function ( e ) { if ( void 0 !== e && null !== e ) { var i = s . data [ e ] ; i || ( i = s . data [ e ] = t . measureText ( e ) . width , s . garbageCollect . push ( e ) ) , i > o && ( o = i ) } } ) ; var n = s . garbageCollect . length / 2 ; if ( n > i . length ) { for ( var r = 0 ; n > r ; r ++ ) delete s . data [ s . garbageCollect [ r ] ] ; s . garbageCollect . splice ( 0 , n ) } return o } , a . drawRoundedRectangle = function ( t , e , i , s , a , o ) { t . beginPath ( ) , t . moveTo ( e + o , i ) , t . lineTo ( e + s - o , i ) , t . quadraticCurveTo ( e + s , i , e + s , i + o ) , t . lineTo ( e + s , i + a - o ) , t . quadraticCurveTo ( e + s , i + a , e + s - o , i + a ) , t . lineTo ( e + o , i + a ) , t . quadraticCurveTo ( e , i + a , e , i + a - o ) , t . lineTo ( e , i + o ) , t . quadraticCurveTo ( e , i , e + o , i ) , t . closePath ( ) } , a . color = function ( e ) { return s ? s ( e instanceof CanvasGradient ? t . defaults . global . defaultColor : e ) : ( console . log ( "Color.js not found!" ) , e ) } , a . addResizeListener = function ( t , e ) { var i = document . createElement ( "iframe" ) , s = "chartjs-hidden-iframe" ; i . classlist ? i . classlist . add ( s ) : i . setAttribute ( "class" , s ) , i . style . width = "100%" , i . style . display = "block" , i . style . border = 0 , i . style . height = 0 , i . style . margin = 0 , i . style . position = "absolute" , i . style . left = 0 , i . style . right = 0 , i . style . top = 0 , i . style . bottom = 0 , t . insertBefore ( i , t . firstChild ) , ( i . contentWindow || i ) . onresize = function ( ) { e && e ( ) } } , a . removeResizeListener = function ( t ) { var e = t . querySelector ( ".chartjs-hidden-iframe" ) ; e && e . parentNode . removeChild ( e ) } , a . isArray = function ( t ) { return Array . isArray ? Array . isArray ( t ) : "[object Array]" === Object . prototype . toString . call ( t ) } , a . pushAllIfDefined = function ( t , e ) { "undefined" != typeof t && ( a . isArray ( t ) ? e . push . apply ( e , t ) : e . push ( t ) ) } , a . isDatasetVisible = function ( t ) { return ! t . hidden } , a . callCallback = function ( t , e , i ) { t && "function" == typeof t . call && t . apply ( i , e ) } } } , { "chartjs-color" : 1 } ] , 26 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( ) { var t = function ( e , i ) { this . config = i , e . length && e [ 0 ] . getContext && ( e = e [ 0 ] ) , e . getContext && ( e = e . getContext ( "2d" ) ) , this . ctx = e , this . canvas = e . canvas , this . width = e . canvas . width || parseInt ( t . helpers . getStyle ( e . canvas , "width" ) ) || t . helpers . getMaximumWidth ( e . canvas ) , this . height = e . canvas . height || parseInt ( t . helpers . getStyle ( e . canvas , "height" ) ) || t . helpers . getMaximumHeight ( e . canvas ) , this . aspectRatio = this . width / this . height , ( isNaN ( this . aspectRatio ) || isFinite ( this . aspectRatio ) === ! 1 ) && ( this . aspectRatio = void 0 !== i . aspectRatio ? i . aspectRatio : 2 ) , this . originalCanvasStyleWidth = e . canvas . style . width , this . originalCanvasStyleHeight = e . canvas . style . height , t . helpers . retinaScale ( this ) , i && ( this . controller = new t . Controller ( this ) ) ; var s = this ; return t . helpers . addResizeListener ( e
} , this ) , s } , getAfterBody : function ( ) { var t = this . _options . tooltips . callbacks . afterBody . apply ( this , arguments ) ; return i . isArray ( t ) ? t : void 0 !== t ? [ t ] : [ ] } , getFooter : function ( ) { var t = this . _options . tooltips . callbacks . beforeFooter . apply ( this , arguments ) , i = this . _options . tooltips . callbacks . footer . apply ( this , arguments ) , s = this . _options . tooltips . callbacks . afterFooter . apply ( this , arguments ) , a = [ ] ; return a = e ( a , t ) , a = e ( a , i ) , a = e ( a , s ) } , getAveragePosition : function ( t ) { if ( ! t . length ) return ! 1 ; var e = [ ] , s = [ ] ; i . each ( t , function ( t ) { if ( t ) { var i = t . tooltipPosition ( ) ; e . push ( i . x ) , s . push ( i . y ) } } ) ; for ( var a = 0 , o = 0 , n = 0 ; n < e . length ; n ++ ) a += e [ n ] , o += s [ n ] ; return { x : Math . round ( a / e . length ) , y : Math . round ( o / e . length ) } } , update : function ( t ) { if ( this . _active . length ) { this . _model . opacity = 1 ; var e , s = this . _active [ 0 ] , a = [ ] , o = [ ] ; if ( "single" === this . _options . tooltips . mode ) { var n = s . _yScale || s . _scale ; o . push ( { xLabel : s . _xScale ? s . _xScale . getLabelForIndex ( s . _index , s . _datasetIndex ) : "" , yLabel : n ? n . getLabelForIndex ( s . _index , s . _datasetIndex ) : "" , index : s . _index , datasetIndex : s . _datasetIndex } ) , e = this . getAveragePosition ( this . _active ) } else i . each ( this . _data . datasets , function ( t , e ) { if ( i . isDatasetVisible ( t ) ) { var a = t . metaData [ s . _index ] ; if ( a ) { var n = s . _yScale || s . _scale ; o . push ( { xLabel : a . _xScale ? a . _xScale . getLabelForIndex ( a . _index , a . _datasetIndex ) : "" , yLabel : n ? n . getLabelForIndex ( a . _index , a . _datasetIndex ) : "" , index : s . _index , datasetIndex : e } ) } } } , null , s . _yScale . options . stacked ) , i . each ( this . _active , function ( t ) { t && a . push ( { borderColor : t . _view . borderColor , backgroundColor : t . _view . backgroundColor } ) } , null , s . _yScale . options . stacked ) , e = this . getAveragePosition ( this . _active ) , e . y = this . _active [ 0 ] . _yScale . getPixelForDecimal ( . 5 ) ; i . extend ( this . _model , { title : this . getTitle ( o , this . _data ) , beforeBody : this . getBeforeBody ( o , this . _data ) , body : this . getBody ( o , this . _data ) , afterBody : this . getAfterBody ( o , this . _data ) , footer : this . getFooter ( o , this . _data ) } ) , i . extend ( this . _model , { x : Math . round ( e . x ) , y : Math . round ( e . y ) , caretPadding : i . getValueOrDefault ( e . padding , 2 ) , labelColors : a } ) ; var r = this . getTooltipSize ( this . _model ) ; this . determineAlignment ( r ) , i . extend ( this . _model , this . getBackgroundPoint ( this . _model , r ) ) } else this . _model . opacity = 0 ; return t && this . _options . tooltips . custom && this . _options . tooltips . custom . call ( this , this . _model ) , this } , getTooltipSize : function ( t ) { var e = this . _chart . ctx , s = { height : 2 * t . yPadding , width : 0 } , a = t . body . length + t . beforeBody . length + t . afterBody . length ; return s . height += t . title . length * t . titleFontSize , s . height += ( t . title . length - 1 ) * t . titleSpacing , s . height += t . title . length ? t . titleMarginBottom : 0 , s . height += a * t . bodyFontSize , s . height += a ? ( a - 1 ) * t . bodySpacing : 0 , s . height += t . footer . length ? t . footerMarginTop : 0 , s . height += t . footer . length * t . footerFontSize , s . height += t . footer . length ? ( t . footer . length - 1 ) * t . footerSpacing : 0 , e . font = i . fontString ( t . titleFontSize , t . _titleFontStyle , t . _titleFontFamily ) , i . each ( t . title , function ( t ) { s . width = Math . max ( s . width , e . measureText ( t ) . width ) } ) , e . font = i . fontString ( t . bodyFontSize , t . _bodyFontStyle , t . _bodyFontFamily ) , i . each ( t . beforeBody . concat ( t . afterBody ) , function ( t ) { s . width = Math . max ( s . width , e . measureText ( t ) . width ) } ) , i . each ( t . body , function ( i ) { s . width = Math . max ( s . width , e . measureText ( i ) . width + ( "single" !== this . _options . tooltips . mode ? t . bodyFontSize + 2 : 0 ) ) } , this ) , e . font = i . fontString ( t . footerFontSize , t . _footerFontStyle , t . _footerFontFamily ) , i . each ( t . footer , function ( t ) { s . width = Math . max ( s . width , e . measureText ( t ) . width ) } ) , s . width += 2 * t . xPadding , s } , determineAlignment : function ( t ) { this . _model . y < t . height ? this . _model . yAlign = "top" : this . _model . y > this . _chart . height - t . height && ( this . _model . yAlign = "bottom" ) ; var e , i , s , a , o , n = this , r = ( this . _chartInstance . chartArea . left + this . _chartInstance . chartArea . right ) / 2 , l = ( this . _chartInstance . chartArea . top + this . _chartInstance . chartArea . bottom ) / 2 ; "center" === this . _model . yAlign ? ( e = function ( t ) { return r >= t } , i = function ( t ) { return t > r } ) : ( e = function ( e ) { return e <= t . width / 2 } , i = function ( e ) { return e >= n . _chart . width - t . width / 2 } ) , s = function ( e ) { return e + t . width > n . _chart . width } , a = function ( e ) { return e - t . width < 0 } , o = function ( t ) { return l >= t ? "top" : "bottom" } , e ( this . _model . x ) ? ( this . _model . xAlign = "left" , s ( this . _model . x ) && ( this . _model . xAlign = "center" , this . _model . yAlig
t . push ( s ) } , this ) , this . firstTick = s . min . call ( this , t ) , this . lastTick = s . max . call ( this , t ) ) : ( this . firstTick = null , this . lastTick = null ) , e . each ( this . chart . data . datasets , function ( i , a ) { var o = [ ] ; "object" == typeof i . data [ 0 ] ? e . each ( i . data , function ( t , e ) { var i = this . parseTime ( this . getRightValue ( t ) ) ; this . options . time . round && i . startOf ( this . options . time . round ) , o . push ( i ) , this . firstTick = null !== this . firstTick ? s . min ( this . firstTick , i ) : i , this . lastTick = null !== this . lastTick ? s . max ( this . lastTick , i ) : i } , this ) : o = t , this . labelMoments . push ( o ) } , this ) , this . options . time . min && ( this . firstTick = this . parseTime ( this . options . time . min ) ) , this . options . time . max && ( this . lastTick = this . parseTime ( this . options . time . max ) ) , this . firstTick = ( this . firstTick || s ( ) ) . clone ( ) , this . lastTick = ( this . lastTick || s ( ) ) . clone ( ) } , buildTicks : function ( s ) { if ( this . ticks = [ ] , this . unitScale = 1 , this . scaleSizeInUnits = 0 , this . options . time . unit ) this . tickUnit = this . options . time . unit || "day" , this . displayFormat = this . options . time . displayFormats [ this . tickUnit ] , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , 1 ) ; else { var a = e . getValueOrDefault ( this . options . ticks . fontSize , t . defaults . global . defaultFontSize ) , o = this . isHorizontal ( ) ? this . width - ( this . paddingLeft + this . paddingRight ) : this . height - ( this . paddingTop + this . paddingBottom ) , n = this . tickFormatFunction ( this . firstTick , 0 , [ ] ) , r = n . length * a , l = Math . cos ( e . toRadians ( this . options . ticks . maxRotation ) ) , h = Math . sin ( e . toRadians ( this . options . ticks . maxRotation ) ) ; r = r * l + a * h ; var c = o / ( r + 10 ) ; this . tickUnit = "millisecond" , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . displayFormat = this . options . time . displayFormats [ this . tickUnit ] ; for ( var u = 0 , d = i . units [ u ] ; u < i . units . length ; ) { if ( this . unitScale = 1 , e . isArray ( d . steps ) && Math . ceil ( this . scaleSizeInUnits / c ) < e . max ( d . steps ) ) { for ( var f = 0 ; f < d . steps . length ; ++ f ) if ( d . steps [ f ] > Math . ceil ( this . scaleSizeInUnits / c ) ) { this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , d . steps [ f ] ) ; break } break } if ( d . maxStep === ! 1 || Math . ceil ( this . scaleSizeInUnits / c ) < d . maxStep ) { this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , Math . ceil ( this . scaleSizeInUnits / c ) ) ; break } ++ u , d = i . units [ u ] , this . tickUnit = d . name , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . displayFormat = this . options . time . displayFormats [ d . name ] } } var m ; this . options . time . min ? m = this . firstTick . clone ( ) . startOf ( this . tickUnit ) : ( this . firstTick . startOf ( this . tickUnit ) , m = this . firstTick ) , this . options . time . max || this . lastTick . endOf ( this . tickUnit ) , this . smallestLabelSeparation = this . width , e . each ( this . chart . data . datasets , function ( t , e ) { for ( var i = 1 ; i < this . labelMoments [ e ] . length ; i ++ ) this . smallestLabelSeparation = Math . min ( this . smallestLabelSeparation , this . labelMoments [ e ] [ i ] . diff ( this . labelMoments [ e ] [ i - 1 ] , this . tickUnit , ! 0 ) ) } , this ) , this . options . time . displayFormat && ( this . displayFormat = this . options . time . displayFormat ) , this . ticks . push ( this . firstTick . clone ( ) ) ; for ( var g = 1 ; g < this . scaleSizeInUnits ; ++ g ) { var p = m . clone ( ) . add ( g , this . tickUnit ) ; if ( this . options . time . max && p . diff ( this . lastTick , this . tickUnit , ! 0 ) >= 0 ) break ; g % this . unitScale === 0 && this . ticks . push ( p ) } ( 0 !== this . ticks [ this . ticks . length - 1 ] . diff ( this . lastTick , this . tickUnit ) || 0 === this . scaleSizeInUnits ) && ( this . options . time . max ? ( this . ticks . push ( this . lastTick . clone ( ) ) , this . scaleSizeInUnits = this . lastTick . diff ( this . ticks [ 0 ] , this . tickUnit , ! 0 ) ) : ( this . scaleSizeInUnits = Math . ceil ( this . scaleSizeInUnits / this . unitScale ) * this . unitScale , this . ticks . push ( this . firstTick . clone ( ) . add ( this . scaleSizeInUnits , this . tickUnit ) ) , this . lastTick = this . ticks [ this . ticks . length - 1 ] . clone ( ) ) ) } , getLabelForIndex : function ( t , e ) { var i = this . chart . data . labels && t < this . chart . data . labels . length ? this . chart . data . labels [ t ] : "" ; return "object" == typeof this . chart . data . datasets [ e ] . data [ 0 ] && ( i = this . getRightValue ( this . chart . data . datasets [ e ] . data [ t ] ) ) , this . options . time . tooltipFormat && ( i = this . parseTime ( i ) . format ( this . options . time . tooltipFormat ) ) , i } , tickFormatFunction : function ( t , e , i ) { var s = t . format ( this . displayFormat ) ; return this . options . ticks . userCallback ? this . options . ticks . userCallback ( s , e , i ) : s } , c