/*! * Chart.js * http://chartjs.org/ * * Copyright 2013 Nick Downie * Released under the MIT license * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md */ window.Chart=function(context){var chart=this;var animationOptions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){if((t/=1/2)<1)return 1/2*t*t;return-1/2*((--t)*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){if((t/=1/2)<1)return 1/2*t*t*t;return 1/2*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){if((t/=1/2)<1)return 1/2*t*t*t*t;return-1/2*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){if((t/=1/2)<1)return 1/2*t*t*t*t*t;return 1/2*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-1/2*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return(t==0)?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return(t==1)?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){if(t==0)return 0;if(t==1)return 1;if((t/=1/2)<1)return 1/2*Math.pow(2,10*(t-1));return 1/2*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){if(t>=1)return t;return-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){if((t/=1/2)<1)return-1/2*(Math.sqrt(1-t*t)-1);return 1/2*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var s=1.70158;var p=0;var a=1;if(t==0)return 0;if((t/=1)==1)return 1;if(!p)p=1*.3;if(a",scaleFontFamily:"'Arial'",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",scaleShowLabelBackdrop:true,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,segmentShowStroke:true,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animation:true,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:true,animateScale:false,onAnimationComplete:null};var config=(options)?mergeChartConfig(chart.PolarArea.defaults,options):chart.PolarArea.defaults;return new PolarArea(data,config,context)};this.Radar=function(data,options){chart.Radar.defaults={scaleOverlay:false,scaleOverride:false,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleShowLine:true,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:false,scaleLabel:"<%=value%>",scaleFontFamily:"'Arial'",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",scaleShowLabelBackdrop:true,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,angleShowLineOut:true,angleLineColor:"rgba(0,0,0,.1)",angleLineWidth:1,pointLabelFontFamily:"'Arial'",pointLabelFontStyle:"normal",pointLabelFontSize:12,pointLabelFontColor:"#666",pointDot:true,pointDotRadius:3,pointDotStrokeWidth:1,datasetStroke:true,datasetStrokeWidth:2,datasetFill:true,animation:true,animationSteps:60,animationEasing:"easeOutQuart",onAnimationComplete:null};var config=(options)?mergeChartConfig(chart.Radar.defaults,options):chart.Radar.defaults;return new Radar(data,config,context)};this.Pie=function(data,options){chart.Pie.defaults={segmentShowStroke:true,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animation:true,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:true,animateScale:false,onAnimationComplete:null};var config=(options)?mergeChartConfig(chart.Pie.defaults,options):chart.Pie.defaults;return new Pie(data,config,context)};this.Doughnut=function(data,options){chart.Doughnut.defaults={segmentShowStroke:true,segmentStrokeColor:"#fff",segmentStrokeWidth:2,percentageInnerCutout:50,animation:true,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:true,animateScale:false,onAnimationComplete:null};var config=(options)?mergeChartConfig(chart.Doughnut.defaults,options):chart.Doughnut.defaults;return new Doughnut(data,config,context)};this.Line=function(data,options){chart.Line.defaults={scaleOverlay:false,scaleOverride:false,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:true,scaleLabel:"<%=value%>",scaleFontFamily:"'Arial'",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",scaleShowGridLines:true,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,bezierCurve:true,pointDot:true,pointDotRadius:4,pointDotStrokeWidth:2,datasetStroke:true,datasetStrokeWidth:2,datasetFill:true,animation:true,animationSteps:60,animationEasing:"easeOutQuart",onAnimationComplete:null};var config=(options)?mergeChartConfig(chart.Line.defaults,options):chart.Line.defaults;return new Line(data,config,context)};this.Bar=function(data,options){chart.Bar.defaults={scaleOverlay:false,scaleOverride:false,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:true,scaleLabel:"<%=value%>",scaleFontFamily:"'Arial'",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",scaleShowGridLines:true,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,barShowStroke:true,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,animation:true,animationSteps:60,animationEasing:"easeOutQuart",onAnimationComplete:null};var config=(options)?mergeChartConfig(chart.Bar.defaults,options):chart.Bar.defaults;return new Bar(data,config,context)};var clear=function(c){c.clearRect(0,0,width,height)};var PolarArea=function(data,config,ctx){var maxSize,scaleHop,calculatedScale,labelHeight,scaleHeight,valueBounds,labelTemplateString;calculateDrawingSizes();valueBounds=getValueBounds();labelTemplateString=(config.scaleShowLabels)?config.scaleLabel:null;if(!config.scaleOverride){calculatedScale=calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString)}else{calculatedScale={steps:config.scaleSteps,stepValue:config.scaleStepWidth,graphMin:config.scaleStartValue,labels:[]};populateLabels(labelTemplateString,calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth)};scaleHop=maxSize/(calculatedScale.steps);animationLoop(config,drawScale,drawAllSegments,ctx);function calculateDrawingSizes(){maxSize=(Min([width,height])/2);maxSize-=Max([config.scaleFontSize*0.5,config.scaleLineWidth*0.5]);labelHeight=config.scaleFontSize*2;if(config.scaleShowLabelBackdrop){labelHeight+=(2*config.scaleBackdropPaddingY);maxSize-=config.scaleBackdropPaddingY*1.5}scaleHeight=maxSize;labelHeight=Default(labelHeight,5)}function drawScale(){for(var i=0;iupperValue){upperValue=data[i].value}if(data[i].valueMath.PI){ctx.textAlign="right"}else{ctx.textAlign="left"}ctx.textBaseline="middle";ctx.fillText(data.labels[k],opposite,-adjacent)}ctx.restore()};function calculateDrawingSizes(){maxSize=(Min([width,height])/2);labelHeight=config.scaleFontSize*2;var labelLength=0;for(var i=0;ilabelLength)labelLength=textMeasurement}maxSize-=Max([labelLength,((config.pointLabelFontSize/2)*1.5)]);maxSize-=config.pointLabelFontSize;maxSize=CapValue(maxSize,null,0);scaleHeight=maxSize;labelHeight=Default(labelHeight,5)};function getValueBounds(){var upperValue=Number.MIN_VALUE;var lowerValue=Number.MAX_VALUE;for(var i=0;iupperValue){upperValue=data.datasets[i].data[j]}if(data.datasets[i].data[j]0){ctx.save();ctx.textAlign="right"}else{ctx.textAlign="center"}ctx.fillStyle=config.scaleFontColor;for(var i=0;i0){ctx.translate(yAxisPosX+i*valueHop,xAxisPosY+config.scaleFontSize);ctx.rotate(-(rotateLabels*(Math.PI/180)));ctx.fillText(data.labels[i],0,0);ctx.restore()}else{ctx.fillText(data.labels[i],yAxisPosX+i*valueHop,xAxisPosY+config.scaleFontSize+3)}ctx.beginPath();ctx.moveTo(yAxisPosX+i*valueHop,xAxisPosY+3);if(config.scaleShowGridLines&&i>0){ctx.lineWidth=config.scaleGridLineWidth;ctx.strokeStyle=config.scaleGridLineColor}else{ctx.lineTo(yAxisPosX+i*valueHop,xAxisPosY+3)}ctx.stroke()}ctx.lineWidth=config.scaleLineWidth;ctx.strokeStyle=config.scaleLineColor;ctx.beginPath();ctx.moveTo(yAxisPosX,xAxisPosY);ctx.lineTo(yAxisPosX,0);ctx.stroke();ctx.textAlign="right";ctx.textBaseline="middle";for(var j=0;jlongestText)?measuredText:longestText}longestText+=10}xAxisLength=width-longestText-widestXLabel;valueHop=Math.floor(xAxisLength/(data.labels.length-1));yAxisPosX=width-widestXLabel/2-xAxisLength;xAxisPosY=scaleHeight+config.scaleFontSize/2}function calculateDrawingSizes(){maxSize=height;ctx.font=config.scaleFontStyle+" "+config.scaleFontSize+"px "+config.scaleFontFamily;widestXLabel=1;for(var i=0;iwidestXLabel)?textLength:widestXLabel}if(width/data.labels.lengthupperValue){upperValue=data.datasets[i].data[j]};if(data.datasets[i].data[j]0){ctx.save();ctx.textAlign="right"}else{ctx.textAlign="center"}ctx.fillStyle=config.scaleFontColor;for(var i=0;i0){ctx.translate(yAxisPosX+i*valueHop,xAxisPosY+config.scaleFontSize);ctx.rotate(-(rotateLabels*(Math.PI/180)));ctx.fillText(data.labels[i],0,0);ctx.restore()}else{ctx.fillText(data.labels[i],yAxisPosX+i*valueHop+valueHop/2,xAxisPosY+config.scaleFontSize+3)}ctx.beginPath();ctx.moveTo(yAxisPosX+(i+1)*valueHop,xAxisPosY+3);ctx.lineWidth=config.scaleGridLineWidth;ctx.strokeStyle=config.scaleGridLineColor;ctx.lineTo(yAxisPosX+(i+1)*valueHop,5);ctx.stroke()}ctx.lineWidth=config.scaleLineWidth;ctx.strokeStyle=config.scaleLineColor;ctx.beginPath();ctx.moveTo(yAxisPosX,xAxisPosY+5);ctx.lineTo(yAxisPosX,5);ctx.stroke();ctx.textAlign="right";ctx.textBaseline="middle";for(var j=0;jlongestText)?measuredText:longestText}longestText+=10}xAxisLength=width-longestText-widestXLabel;valueHop=Math.floor(xAxisLength/(data.labels.length));barWidth=(valueHop-config.scaleGridLineWidth*2-(config.barValueSpacing*2)-(config.barDatasetSpacing*data.datasets.length-1)-((config.barStrokeWidth/2)*data.datasets.length-1))/data.datasets.length;yAxisPosX=width-widestXLabel/2-xAxisLength;xAxisPosY=scaleHeight+config.scaleFontSize/2}function calculateDrawingSizes(){maxSize=height;ctx.font=config.scaleFontStyle+" "+config.scaleFontSize+"px "+config.scaleFontFamily;widestXLabel=1;for(var i=0;iwidestXLabel)?textLength:widestXLabel}if(width/data.labels.lengthupperValue){upperValue=data.datasets[i].data[j]};if(data.datasets[i].data[j]maxSteps){if(numberOfStepsmaxValue){return maxValue}}if(isNumber(minValue)){if(valueToCap)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return data?fn(data):fn}}