Chart.js/Chart.min.js

13 lines
99 KiB
JavaScript
Raw Normal View History

2014-06-29 19:36:25 +02:00
/*!
* Chart.js
* http://chartjs.org/
2015-03-10 12:04:30 +01:00
* Version: 1.0.2
2014-06-29 19:36:25 +02:00
*
2015-01-07 23:49:33 +01:00
* Copyright 2015 Nick Downie
2014-06-29 19:36:25 +02:00
* Released under the MIT license
* https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
*/
(function(){"use strict";var t=this,i=t.Chart,e=function(t){this.canvas=t.canvas,this.ctx=t;var i=function(t,i){return t["offset"+i]?t["offset"+i]:document.defaultView.getComputedStyle(t).getPropertyValue(i)},e=this.width=i(t.canvas,"Width")||t.canvas.width,s=this.height=i(t.canvas,"Height")||t.canvas.height;return t.canvas.width=e,t.canvas.height=s,e=this.width=t.canvas.width,s=this.height=t.canvas.height,this.aspectRatio=this.width/this.height,a.retinaScale(this),this};e.defaults={global:{animation:{duration:1e3,easing:"easeOutQuart",onProgress:function(){},onComplete:function(){}},responsive:!1,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove","touchend"],hover:{mode:"label",onHover:null,animationDuration:400},onClick:null,tooltips:{enabled:!0,custom:null,backgroundColor:"rgba(0,0,0,0.8)",fontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",fontSize:14,fontStyle:"normal",fontColor:"#fff",titleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",titleFontSize:14,titleFontStyle:"bold",titleFontColor:"#fff",yPadding:6,xPadding:6,caretSize:8,cornerRadius:6,xOffset:10,template:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTemplate:"<%if (datasetLabel){%><%=datasetLabel%>: <%}%><%= value %>",multiKeyBackground:"#fff"},defaultColor:"rgba(0,0,0,0.1)"}},e.types={};var a=e.helpers={},s=a.each=function(t,i,e){var a=Array.prototype.slice.call(arguments,3);if(t)if(t.length===+t.length){var s;for(s=0;s<t.length;s++)i.apply(e,[t[s],s].concat(a))}else for(var n in t)i.apply(e,[t[n],n].concat(a))},n=a.clone=function(t){var i={};return s(t,function(e,a){t.hasOwnProperty(a)&&(i[a]=e)}),i},o=a.extend=function(t){return s(Array.prototype.slice.call(arguments,1),function(i){s(i,function(e,a){i.hasOwnProperty(a)&&(t[a]=e)})}),t},r=(a.merge=function(t,i){var e=Array.prototype.slice.call(arguments,0);return e.unshift({}),o.apply(null,e)},a.configMerge=function(t){return a.each(Array.prototype.slice.call(arguments,1),function(i){a.each(i,function(e,s){if(i.hasOwnProperty(s))if(t.hasOwnProperty(s)&&a.isArray(t[s])&&a.isArray(e)){var n=t[s];a.each(e,function(t,i){i<n.length?n[i]=a.configMerge(n[i],t):n.push(t)})}else t.hasOwnProperty(s)&&"object"==typeof t[s]&&"object"==typeof e?t[s]=a.configMerge(t[s],e):t[s]=e})}),t},a.indexOf=function(t,i){if(Array.prototype.indexOf)return t.indexOf(i);for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}),h=(a.where=function(t,i){var e=[];return a.each(t,function(t){i(t)&&e.push(t)}),e},a.findNextWhere=function(t,i,e){e||(e=-1);for(var a=e+1;a<t.length;a++){var s=t[a];if(i(s))return s}},a.findPreviousWhere=function(t,i,e){e||(e=t.length);for(var a=e-1;a>=0;a--){var s=t[a];if(i(s))return s}},a.inherits=function(t){var i=this,e=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return i.apply(this,arguments)},a=function(){this.constructor=e};return a.prototype=i.prototype,e.prototype=new a,e.extend=h,t&&o(e.prototype,t),e.__super__=i.prototype,e}),l=a.noop=function(){},c=a.uid=function(){var t=0;return function(){return"chart-"+t++}}(),u=a.warn=function(t){window.console&&"function"==typeof window.console.warn&&console.warn(t)},d=a.amd="function"==typeof define&&define.amd,p=a.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g=a.max=function(t){return Math.max.apply(Math,t)},f=a.min=function(t){return Math.min.apply(Math,t)},v=(a.sign=function(t){return Math.sign?Math.sign(t):(t=+t,0===t||isNaN(t)?t:t>0?1:-1)},a.cap=function(t,i,e){if(p(i)){if(t>i)return i}else if(p(e)&&e>t)return e;return t},a.getDecimalPlaces=function(t){if(t%1!==0&&p(t)){var i=t.toString();if(i.indexOf("e-")<0)return i.split(".")[1].length;if(i.indexOf(".")<0)return parseInt(i.split("e-")[1]);var e=i.split(".")[1].split("e-");return e[0].length+parseInt(e[1])}return 0},a.toRadians=function(t){return t*(Math.PI/180)},a.toDegrees=function(t){return t*(180/Math.PI)},a.getAngleFromPoint=function(t,i){var e=i.x-t.x,a=i.y-t.y,s=Math.sqrt(e*e+a*a),n=2*Math.PI+Math.atan2(a,e);return 0>e&&0>a&&(n+=2*Math.PI),{angle:n,distance:s}},a.aliasPixel=function(t){ret
return this.getPixelForValue(e)}return e=this.getPixelForValue(this.min),this.beginAtZero||this.min<=0&&this.max>=0||this.min>=0&&this.max<=0?(e=this.getPixelForValue(0),e+=this.options.gridLines.lineWidth):this.min<0&&this.max<0&&(e=this.getPixelForValue(this.max)),e},calculateBarY:function(t,i,e,s){if(a.options.stacked){for(var n=0,o=0,r=0;i>r;r++)t[r].metaData[e].value<0?o+=t[r].metaData[e].value||0:n+=t[r].metaData[e].value||0;return this.getPixelForValue(0>s?o+s:n+s)}var h=0;for(r=i;r<t.length;r++)h+=r===i&&s?s:t[r].metaData[e].value;return this.getPixelForValue(s)},calculateBaseHeight:function(){return this.getPixelForValue(1)-this.getPixelForValue(0)},id:t.id});this.scales[n.id]=n},this)},redraw:function(){this.eachElement(function(t,i,a){var s=this.scales[this.data.datasets[a].yAxisID],n=s.getPixelForValue(s.min);s.min<=0&&s.max>=0?n=s.getPixelForValue(0):s.min<0&&s.max<0&&(n=s.getPixelForValue(s.max)),e.extend(t,{y:n,base:n})}),this.render()},draw:function(t){var i=t||1;this.clear(),e.each(this.scales,function(t){t.draw(this.chartArea)},this),this.eachElement(function(t,e,a){t.transition(i).draw()},this),this.tooltip.transition(i).draw()}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,a={segments:{showStroke:!0,strokeColor:"#fff",borderWidth:2},hover:{animationDuration:400},animation:{animateRotate:!0,animateScale:!1},cutoutPercentage:50,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].backgroundColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Doughnut",defaults:a,initialize:function(){this.Slice=i.Arc.extend({_chart:this.chart,x:this.chart.width/2,y:this.chart.height/2}),this.options.tooltips.enabled&&e.bindEvents(this,this.options.events,this.onHover),this.data.metaData=[],e.each(this.data.data,function(t,i){var a=new this.Slice;"number"==typeof t?e.extend(a,{value:t}):e.extend(a,t),e.extend(a,{startAngle:1.5*Math.PI,circumference:this.options.animation.animateRotate?0:this.calculateCircumference(a.value),outerRadius:this.options.animation.animateScale?0:this.outerRadius,innerRadius:this.options.animation.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout}),a.backgroundColor||(t.backgroundColor="hsl("+360*i/this.data.data.length+", 100%, 50%)"),a.save(),this.data.metaData.push(a)},this),this.tooltip=new i.Tooltip({_chart:this.chart,_data:this.data,_options:this.options},this),this.update()},onHover:function(t){if("mouseout"==t.type)return this;if(this.lastActive=this.lastActive||[],this.active=this.getSliceAtEvent(t),this.options.onHover&&this.options.onHover.call(this,this.active),this.lastActive.length&&(this.lastActive[0].backgroundColor=this.data.data[this.lastActive[0]._index].backgroundColor),this.active.length&&this.options.hover.mode&&(this.active[0].backgroundColor=this.data.data[this.active[0]._index].hoverBackgroundColor||e.color(this.data.data[this.active[0]._index].backgroundColor).saturate(.5).darken(.35).rgbString()),this.options.tooltips.enabled&&(this.tooltip.initialize(),this.active.length?(e.extend(this.tooltip,{opacity:1,_active:this.active}),this.tooltip.update()):e.extend(this.tooltip,{opacity:0})),this.tooltip.pivot(),!this.animating){var i;e.each(this.active,function(t,e){t!==this.lastActive[e]&&(i=!0)},this),(!this.lastActive.length&&this.active.length||this.lastActive.length&&!this.active.length||this.lastActive.length&&this.active.length&&i)&&(this.stop(),this.render(this.options.hover.animationDuration))}return this.lastActive=this.active,this},getSliceAtEvent:function(t){var i=[],a=e.getRelativePosition(t);return e.each(this.data.metaData,function(t,e){t.inRange(a.x,a.y)&&i.push(t)},this),i},calculateCircumference:function(t){return this.total>0?2*Math.PI*(t/this.total):0},update:function(){this.total=0,e.each(this.data.data,function(t){this.total+=Math.abs(t.value)},this),this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segments.borderWidth/2)/2,e.each(
this.size=e.min([this.height,this.width]),this.drawingArea=this.options.display?this.size/2-(this.options.labels.fontSize/2+this.options.labels.backdropPaddingY):this.size/2},calculateCenterOffset:function(t){var i=this.drawingArea/(this.max-this.min);return(t-this.min)*i},update:function(){this.options.lineArc?this.drawingArea=this.options.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2:this.setScaleSize(),this.buildYLabels()},calculateRange:e.noop,generateTicks:function(){if(this.ticks=[],this.options.override)for(var t=0;t<=this.options.override.steps;++t){var i=this.options.override.start+t*this.options.override.stepWidth;ticks.push(i)}else{var a=Math.min(11,Math.ceil(this.drawingArea/(2*this.options.labels.fontSize)));if(a=Math.max(2,a),this.options.beginAtZero){var s=e.sign(this.min),n=e.sign(this.max);0>s&&0>n?this.max=0:s>0&&n>0&&(this.min=0)}for(var o=e.niceNum(this.max-this.min,!1),r=e.niceNum(o/(a-1),!0),h=Math.floor(this.min/r)*r,l=Math.ceil(this.max/r)*r,c=h;l>=c;c+=r)this.ticks.push(c)}("left"==this.options.position||"right"==this.options.position)&&this.ticks.reverse(),this.max=e.max(this.ticks),this.min=e.min(this.ticks)},buildYLabels:function(){this.yLabels=[],e.each(this.ticks,function(t,i,a){var s;this.options.labels.userCallback?s=this.options.labels.userCallback(t,i,a):this.options.labels.template&&(s=e.template(this.options.labels.template,{value:t})),this.yLabels.push(s?s:"")},this)},getCircumference:function(){return 2*Math.PI/this.valuesCount},setScaleSize:function(){var t,i,a,s,n,o,r,h,l,c,u,d,p=e.min([this.height/2-this.options.pointLabels.fontSize-5,this.width/2]),g=this.width,f=0;for(this.ctx.font=e.fontString(this.options.pointLabels.fontSize,this.options.pointLabels.fontStyle,this.options.pointLabels.fontFamily),i=0;i<this.valuesCount;i++)t=this.getPointPosition(i,p),a=this.ctx.measureText(e.template(this.options.labels.template,{value:this.labels[i]})).width+5,0===i||i===this.valuesCount/2?(s=a/2,t.x+s>g&&(g=t.x+s,n=i),t.x-s<f&&(f=t.x-s,r=i)):i<this.valuesCount/2?t.x+a>g&&(g=t.x+a,n=i):i>this.valuesCount/2&&t.x-a<f&&(f=t.x-a,r=i);l=f,c=Math.ceil(g-this.width),o=this.getIndexAngle(n),h=this.getIndexAngle(r),u=c/Math.sin(o+Math.PI/2),d=l/Math.sin(h+Math.PI/2),u=e.isNumber(u)?u:0,d=e.isNumber(d)?d:0,this.drawingArea=p-(d+u)/2,this.setCenterPoint(d,u)},setCenterPoint:function(t,i){var e=this.width-i-this.drawingArea,a=t+this.drawingArea;this.xCenter=(a+e)/2,this.yCenter=this.height/2},getIndexAngle:function(t){var i=2*Math.PI/this.valuesCount;return t*i-Math.PI/2},getPointPosition:function(t,i){var e=this.getIndexAngle(t);return{x:Math.cos(e)*i+this.xCenter,y:Math.sin(e)*i+this.yCenter}},draw:function(){if(this.options.display){var t=this.ctx;if(e.each(this.yLabels,function(i,a){if(a>0){var s,n=a*(this.drawingArea/Math.max(this.ticks.length,1)),o=this.yCenter-n;if(this.options.gridLines.show)if(t.strokeStyle=this.options.gridLines.color,t.lineWidth=this.options.gridLines.lineWidth,this.options.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var r=0;r<this.valuesCount;r++)s=this.getPointPosition(r,this.calculateCenterOffset(this.ticks[a])),0===r?t.moveTo(s.x,s.y):t.lineTo(s.x,s.y);t.closePath(),t.stroke()}if(this.options.labels.show){if(t.font=e.fontString(this.options.labels.fontSize,this.options.labels.fontStyle,this.options.labels.fontFamily),this.showLabelBackdrop){var h=t.measureText(i).width;t.fillStyle=this.options.labels.backdropColor,t.fillRect(this.xCenter-h/2-this.options.labels.backdropPaddingX,o-this.fontSize/2-this.options.labels.backdropPaddingY,h+2*this.options.labels.backdropPaddingX,this.options.labels.fontSize+2*this.options.lables.backdropPaddingY)}t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.options.labels.fontColor,t.fillText(i,this.xCenter,o)}}},this),!this.options.lineArc){t.lineWidth=this.options.angleLines.lineWidth,t.strokeStyle=this.options.angleLines.color;for(var i=this.valuesCount-1;i>=0;i--){if(this.options.angleLines.show){var a=this.getPointPosition(i,
return[s,n,o,r]}}}function o(t){var i=a(t);return i&&i.slice(0,3)}function r(t){var i=s(t);return i&&i.slice(0,3)}function h(t){var i=a(t);return i?i[3]:(i=s(t))?i[3]:(i=n(t))?i[3]:void 0}function l(t){return"#"+x(t[0])+x(t[1])+x(t[2])}function c(t,i){return 1>i||t[3]&&t[3]<1?u(t,i):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"}function u(t,i){return void 0===i&&(i=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+i+")"}function d(t,i){if(1>i||t[3]&&t[3]<1)return p(t,i);var e=Math.round(t[0]/255*100),a=Math.round(t[1]/255*100),s=Math.round(t[2]/255*100);return"rgb("+e+"%, "+a+"%, "+s+"%)"}function p(t,i){var e=Math.round(t[0]/255*100),a=Math.round(t[1]/255*100),s=Math.round(t[2]/255*100);return"rgba("+e+"%, "+a+"%, "+s+"%, "+(i||t[3]||1)+")"}function g(t,i){return 1>i||t[3]&&t[3]<1?f(t,i):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"}function f(t,i){return void 0===i&&(i=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+i+")"}function v(t,i){return void 0===i&&(i=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==i&&1!==i?", "+i:"")+")"}function m(t){return w[t.slice(0,3)]}function b(t,i,e){return Math.min(Math.max(i,t),e)}function x(t){var i=t.toString(16).toUpperCase();return i.length<2?"0"+i:i}var y=t("color-name");i.exports={getRgba:a,getHsla:s,getRgb:o,getHsl:r,getHwb:n,getAlpha:h,hexString:l,rgbString:c,rgbaString:u,percentString:d,percentaString:p,hslString:g,hslaString:f,hwbString:v,keyword:m};var w={};for(var C in y)w[y[C]]=C},{"color-name":5}],5:[function(t,i,e){i.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],palet