2016-02-28 21:55:05 +01:00
! function t ( e , i , a ) { function s ( 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 s ( i ? i : t ) } , c , c . exports , t , e , i , a ) } return i [ n ] . exports } for ( var o = "function" == typeof require && require , n = 0 ; n < a . length ; n ++ ) s ( a [ n ] ) ; return s } ( { 1 : [ function ( t , e , i ) { } , { } ] , 2 : [ function ( t , e , i ) { var a = t ( "color-convert" ) , s = 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 = s . getRgba ( t ) ; if ( e ) this . setValues ( "rgb" , e ) ; else if ( e = s . getHsla ( t ) ) this . setValues ( "hsl" , e ) ; else { if ( ! ( e = s . 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 s . hexString ( this . values . rgb ) } , rgbString : function ( ) { return s . rgbString ( this . values . rgb , this . values . alpha ) } , rgbaString : function ( ) { return s . rgbaString ( this . values . rgb , this . values . alpha ) } , percentString : function ( ) { return s . percentString ( this . values . rgb , this . values . alpha ) } , hslString : function ( ) { return s . hslString ( this . values . hsl , this . values . alpha ) } , hslaString : function ( ) { return s . hslaString ( this . values . hsl , this . values . alpha ) } , hwbString : function ( ) { return s . hwbString ( this . values . hwb , this . values . alpha ) } , keyword : function ( ) { return s . 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 a = t [ i ] / 255 ; e [ i ] = . 03928 >= a ? a / 12.92 : Math . pow ( ( a + . 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 : func
2016-02-12 05:29:26 +01:00
* Chart . js
* http : //chartjs.org/
* Version : 2.0 . 0 - beta2
*
* Copyright 2015 Nick Downie
* Released under the MIT license
* https : //github.com/nnnick/Chart.js/blob/master/LICENSE.md
* /
2016-02-28 21:55:05 +01:00
var a = t ( "./core/core.js" ) ( ) ; t ( "./core/core.helpers" ) ( a ) , t ( "./core/core.element" ) ( a ) , t ( "./core/core.animation" ) ( a ) , t ( "./core/core.controller" ) ( a ) , t ( "./core/core.datasetController" ) ( a ) , t ( "./core/core.layoutService" ) ( a ) , t ( "./core/core.legend" ) ( a ) , t ( "./core/core.scale" ) ( a ) , t ( "./core/core.scaleService" ) ( a ) , t ( "./core/core.title" ) ( a ) , t ( "./core/core.tooltip" ) ( a ) , t ( "./controllers/controller.bar" ) ( a ) , t ( "./controllers/controller.bubble" ) ( a ) , t ( "./controllers/controller.doughnut" ) ( a ) , t ( "./controllers/controller.line" ) ( a ) , t ( "./controllers/controller.polarArea" ) ( a ) , t ( "./controllers/controller.radar" ) ( a ) , t ( "./scales/scale.category" ) ( a ) , t ( "./scales/scale.linear" ) ( a ) , t ( "./scales/scale.logarithmic" ) ( a ) , t ( "./scales/scale.radialLinear" ) ( a ) , t ( "./scales/scale.time" ) ( a ) , t ( "./elements/element.arc" ) ( a ) , t ( "./elements/element.line" ) ( a ) , t ( "./elements/element.point" ) ( a ) , t ( "./elements/element.rectangle" ) ( a ) , t ( "./charts/Chart.Bar" ) ( a ) , t ( "./charts/Chart.Bubble" ) ( a ) , t ( "./charts/Chart.Doughnut" ) ( a ) , t ( "./charts/Chart.Line" ) ( a ) , t ( "./charts/Chart.PolarArea" ) ( a ) , t ( "./charts/Chart.Radar" ) ( a ) , t ( "./charts/Chart.Scatter" ) ( a ) , window . Chart = e . exports = a } , { "./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 ( a , s ) { return s . options = e . configMerge ( i , s . options ) , s . type = "radar" , new t ( a , s ) } } } , { } ] , 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
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 ] , a = t . _index ; t . _model . backgroundColor = t . custom && t . custom . hoverBackgroundColor ? t . custom . hoverBackgroundColor : e . getValueAtIndexOrDefault ( i . hoverBackgroundColor , a , 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 , a , 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 , a , 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 , a = this . getDataset ( ) . metaDataset , s = 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 : a . custom && a . custom . tension ? a . custom . tension : e . getValueOrDefault ( this . getDataset ( ) . tension , this . chart . options . elements . line . tension ) , backgroundColor : a . custom && a . custom . backgroundColor ? a . custom . backgroundColor : this . getDataset ( ) . backgroundColor || this . chart . options . elements . line . backgroundColor , borderWidth : a . custom && a . custom . borderWidth ? a . custom . borderWidth : this . getDataset ( ) . borderWidth || this . chart . options . elements . line . borderWidth , borderColor : a . custom && a . custom . borderColor ? a . custom . borderColor : this . getDataset ( ) . borderColor || this . chart . options . elements . line . borderColor , fill : a . custom && a . custom . fill ? a . custom . fill : void 0 !== this . getDataset ( ) . fill ? this . getDataset ( ) . fill : this . chart . options . elements . line . fill , borderCapStyle : a . custom && a . custom . b
var i = t . parentNode , a = parseInt ( e . getStyle ( i , "padding-top" ) ) + parseInt ( e . getStyle ( i , "padding-bottom" ) ) , s = i . clientHeight - a , o = e . getConstraintHeight ( t ) ; return void 0 !== o && ( s = Math . min ( s , o ) ) , s } , e . getStyle = function ( t , e ) { return t . currentStyle ? t . currentStyle [ e ] : document . defaultView . getComputedStyle ( t , null ) . getPropertyValue ( e ) } , e . retinaScale = function ( t ) { var e = t . ctx , i = t . canvas . width , a = t . canvas . height , s = t . currentDevicePixelRatio = window . devicePixelRatio || 1 ; 1 !== s && ( e . canvas . height = a * s , e . canvas . width = i * s , e . scale ( s , s ) , e . canvas . style . width = i + "px" , e . canvas . style . height = a + "px" , t . originalDevicePixelRatio = t . originalDevicePixelRatio || s ) } , e . clear = function ( t ) { t . ctx . clearRect ( 0 , 0 , t . width , t . height ) } , e . fontString = function ( t , e , i ) { return e + " " + t + "px " + i } , e . longestText = function ( t , i , a , s ) { s = s || { } , s . data = s . data || { } , s . garbageCollect = s . garbageCollect || [ ] , s . font !== i && ( s . data = { } , s . garbageCollect = [ ] , s . font = i ) , t . font = i ; var o = 0 ; e . each ( a , function ( 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 > a . length ) { for ( var r = 0 ; n > r ; r ++ ) delete s . data [ s . garbageCollect [ r ] ] ; s . garbageCollect . splice ( 0 , n ) } return o } , e . drawRoundedRectangle = function ( t , e , i , a , s , o ) { t . beginPath ( ) , t . moveTo ( e + o , i ) , t . lineTo ( e + a - o , i ) , t . quadraticCurveTo ( e + a , i , e + a , i + o ) , t . lineTo ( e + a , i + s - o ) , t . quadraticCurveTo ( e + a , i + s , e + a - o , i + s ) , t . lineTo ( e + o , i + s ) , t . quadraticCurveTo ( e , i + s , e , i + s - o ) , t . lineTo ( e , i + o ) , t . quadraticCurveTo ( e , i , e + o , i ) , t . closePath ( ) } , e . color = function ( t ) { return a ? a ( t ) : ( console . log ( "Color.js not found!" ) , t ) } , e . addResizeListener = function ( t , e ) { var i = document . createElement ( "iframe" ) , a = "chartjs-hidden-iframe" ; i . classlist ? i . classlist . add ( a ) : i . setAttribute ( "class" , a ) , 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 ( ) } } , e . removeResizeListener = function ( t ) { var e = t . querySelector ( ".chartjs-hidden-iframe" ) ; e && e . parentNode . removeChild ( e ) } , e . isArray = function ( t ) { return Array . isArray ? Array . isArray ( t ) : "[object Array]" === Object . prototype . toString . call ( t ) } , e . pushAllIfDefined = function ( t , i ) { "undefined" != typeof t && ( e . isArray ( t ) ? i . push . apply ( i , t ) : i . push ( t ) ) } , e . isDatasetVisible = function ( t ) { return ! t . hidden } , e . callCallback = function ( t , e , i ) { t && "function" == typeof t . call && t . apply ( i , e ) } } } , { "chartjs-color" : 2 } ] , 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 a = this ; return t . helpers . addResizeListener ( e . canvas . parentNode , function ( ) { a . controller && a . controller . config . options . responsive && a . controller . resize ( ) } ) , this . controller ? this . controller : this } ; return t . defaults = { global : { responsive : ! 0 , responsiveAnimationDuration : 0 , maintainAspectRatio : ! 0 , events : [ "mousemove" , "mouseout" , "click" , "touchstart" , "touchmove" ] , hover : { onHover : null , mode : "single" , animationDuration : 400 } , onClick : null , defaultColor : "rgba(0,0,0,0.1)" , defaultFontColor : "#666" , defaultFontFamily : "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" , defaultFontSize : 12 , defaultFontStyle : "normal" , showLines : ! 0 , elements : { } , legendCallback : function ( t ) { var e = [ ] ; e . push ( '<ul class="' + t . id + '-legend">' ) ; for ( var i = 0 ; i < t . data . datasets . length ; i ++ ) e . push ( '<li><span style="background-color:' + t . data . datasets [ i ] . backgroundColor + '">' ) , t . data . datasets [ i ] . label && e . push ( t . data . datasets [ i ] . label ) , e . push ( "</span></li>" ) ; return e . push ( "
yLabel : n ? n . getLabelForIndex ( a . _index , a . _datasetIndex ) : "" , index : a . _index , datasetIndex : a . _datasetIndex } ) , e = this . getAveragePosition ( this . _active ) } else i . each ( this . _data . datasets , function ( t , e ) { if ( i . isDatasetVisible ( t ) ) { var s = t . metaData [ a . _index ] ; if ( s ) { var n = a . _yScale || a . _scale ; o . push ( { xLabel : s . _xScale ? s . _xScale . getLabelForIndex ( s . _index , s . _datasetIndex ) : "" , yLabel : n ? n . getLabelForIndex ( s . _index , s . _datasetIndex ) : "" , index : a . _index , datasetIndex : e } ) } } } , null , a . _yScale . options . stacked ) , i . each ( this . _active , function ( t ) { t && s . push ( { borderColor : t . _view . borderColor , backgroundColor : t . _view . backgroundColor } ) } , null , a . _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 : s } ) ; 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 , a = { height : 2 * t . yPadding , width : 0 } , s = t . body . length + t . beforeBody . length + t . afterBody . length ; return a . height += t . title . length * t . titleFontSize , a . height += ( t . title . length - 1 ) * t . titleSpacing , a . height += t . title . length ? t . titleMarginBottom : 0 , a . height += s * t . bodyFontSize , a . height += s ? ( s - 1 ) * t . bodySpacing : 0 , a . height += t . footer . length ? t . footerMarginTop : 0 , a . height += t . footer . length * t . footerFontSize , a . 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 ) { a . width = Math . max ( a . width , e . measureText ( t ) . width ) } ) , e . font = i . fontString ( t . bodyFontSize , t . _bodyFontStyle , t . _bodyFontFamily ) , i . each ( t . beforeBody . concat ( t . afterBody ) , function ( t ) { a . width = Math . max ( a . width , e . measureText ( t ) . width ) } ) , i . each ( t . body , function ( i ) { a . width = Math . max ( a . 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 ) { a . width = Math . max ( a . width , e . measureText ( t ) . width ) } ) , a . width += 2 * t . xPadding , a } , determineAlignment : function ( t ) { this . _model . xAlign = this . _model . yAlign = "center" , this . _model . y < t . height ? this . _model . yAlign = "top" : this . _model . y > this . _chart . height - t . height && ( this . _model . yAlign = "bottom" ) ; var e , i , a , s , 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 } ) , a = function ( e ) { return e + t . width > n . _chart . width } , s = function ( e ) { return e - t . width < 0 } , o = function ( t ) { return l >= t ? "top" : "bottom" } , e ( this . _model . x ) ? ( this . _model . xAlign = "left" , a ( this . _model . x ) && ( this . _model . xAlign = "center" , this . _model . yAlign = o ( this . _model . y ) ) ) : i ( this . _model . x ) && ( this . _model . xAlign = "right" , s ( this . _model . x ) && ( this . _model . xAlign = "center" , this . _model . yAlign = o ( this . _model . y ) ) ) } , getBackgroundPoint : function ( t , e ) { var i = { x : t . x , y : t . y } ; return "right" === t . xAlign ? i . x -= e . width : "center" === t . xAlign && ( i . x -= e . width / 2 ) , "top" === t . yAlign ? i . y += t . caretPadding + t . caretSize : "bottom" === t . yAlign ? i . y -= e . height + t . caretPadding + t . caretSize : i . y -= e . height / 2 , "center" === t . yAlign ? "left" === t . xAlign ? i . x += t . caretPadding + t . caretSize : "right" === t . xAlign && ( i . x -= t . caretPadding + t . caretSize ) : "left" === t . xAlign ? i . x -= t . cornerRadius + t . caretPadding : "right" === t . xAlign && ( i . x += t . cornerRadius + t . caretPadding ) , i } , drawCaret : function ( t , e , a , s ) { var o , n , r , l , h , c , d = this . _view , u = this . _chart . ctx ; "center" === d . yAlign ? ( "left" === d . xAlign ? ( o = t . x , n = o - d . caretSize , r = o ) : ( o = t . x + e . width , n = o + d . caretSize , r = o ) , h = t . y + e . height / 2 , l = h - d . caretSize , c = h + d . caretSize ) : (
break } ++ l , h = i . units [ l ] , this . tickUnit = h . name , this . tickRange = Math . ceil ( this . lastTick . diff ( this . firstTick , this . tickUnit ) + r ) , this . displayFormat = this . options . time . displayFormats [ h . name ] } } var d ; this . options . time . min ? d = this . firstTick . clone ( ) . startOf ( this . tickUnit ) : ( this . firstTick . startOf ( this . tickUnit ) , d = 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 u = 1 ; u < this . tickRange ; ++ u ) { var g = d . clone ( ) . add ( u , this . tickUnit ) ; if ( this . options . time . max && g . diff ( this . lastTick , this . tickUnit , ! 0 ) >= 0 ) break ; u % this . unitScale === 0 && this . ticks . push ( g ) } this . options . time . max ? this . ticks . push ( this . lastTick . clone ( ) ) : 0 !== this . ticks [ this . ticks . length - 1 ] . diff ( this . lastTick , this . tickUnit , ! 0 ) && ( this . tickRange = Math . ceil ( this . tickRange / this . unitScale ) * this . unitScale , this . ticks . push ( this . firstTick . clone ( ) . add ( this . tickRange , 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 } , convertTicksToLabels : function ( ) { this . ticks = this . ticks . map ( function ( t , e , i ) { var a = t . format ( this . displayFormat ) ; return this . options . ticks . userCallback ? this . options . ticks . userCallback ( a , e , i ) : a } , this ) } , getPixelForValue : function ( t , e , i , a ) { var s = this . getLabelMoment ( i , e ) ; if ( s ) { var o = s . diff ( this . firstTick , this . tickUnit , ! 0 ) , n = o / this . tickRange ; if ( this . isHorizontal ( ) ) { var r = this . width - ( this . paddingLeft + this . paddingRight ) , l = ( r / Math . max ( this . ticks . length - 1 , 1 ) , r * n + this . paddingLeft ) ; return this . left + Math . round ( l ) } var h = this . height - ( this . paddingTop + this . paddingBottom ) , c = ( h / Math . max ( this . ticks . length - 1 , 1 ) , h * n + this . paddingTop ) ; return this . top + Math . round ( c ) } } , parseTime : function ( t ) { return "function" == typeof t . getMonth || "number" == typeof t ? a ( t ) : t . isValid && t . isValid ( ) ? t : "string" != typeof this . options . time . format && this . options . time . format . call ? this . options . time . format ( t ) : a ( t , this . options . time . format ) } } ) ; t . scaleService . registerScaleType ( "time" , o , s ) } } , { moment : 1 } ] } , { } , [ 7 ] ) ;