Вход Регистрация
Файл: content/themes/twittstrap/js/jquery.easy-pie-chart.js
Строк: 256
<?php
// Generated by CoffeeScript 1.4.0
/*
Easy pie chart is a jquery plugin to display simple animated pie charts for only one value

Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.

Built on top of the jQuery library (http://jquery.com)

@source: http://github.com/rendro/easy-pie-chart/
@autor: Robert Fleischmann
@version: 1.1.0

Inspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210
Thanks to Philip Thrasher for the jquery plugin boilerplate for coffee script
*/

(function($) {
  $.
easyPieChart = function(eloptions) {
    var 
addScaleLineanimateLinedrawLineeaseInOutQuadrAFrenderBackgroundrenderScalerenderTrack,
      
_this this;
    
this.el el;
    
this.$el = $(el);
    
this.$el.data("easyPieChart"this);
    
this.init = function() {
      var 
percentscaleBy;
      
_this.options = $.extend({}, $.easyPieChart.defaultOptionsoptions);
      
percent parseInt(_this.$el.data('percent'), 10);
      
_this.percentage 0;
      
_this.canvas = $("<canvas width='" _this.options.size "' height='" _this.options.size "'></canvas>").get(0);
      
_this.$el.append(_this.canvas);
      if (
typeof G_vmlCanvasManager !== "undefined" && G_vmlCanvasManager !== null) {
        
G_vmlCanvasManager.initElement(_this.canvas);
      }
      
_this.ctx _this.canvas.getContext('2d');
      if (
window.devicePixelRatio 1) {
        
scaleBy window.devicePixelRatio;
        $(
_this.canvas).css({
          
width_this.options.size,
          
height_this.options.size
        
});
        
_this.canvas.width *= scaleBy;
        
_this.canvas.height *= scaleBy;
        
_this.ctx.scale(scaleByscaleBy);
      }
      
_this.ctx.translate(_this.options.size 2_this.options.size 2);
      
_this.$el.addClass('easyPieChart');
      
_this.$el.css({
        
width_this.options.size,
        
height_this.options.size,
        
lineHeight"" _this.options.size "px"
      
});
      
_this.update(percent);
      return 
_this;
    };
    
this.update = function(percent) {
      
percent parseFloat(percent) || 0;
      if (
_this.options.animate === false) {
        
drawLine(percent);
      } else {
        
animateLine(_this.percentagepercent);
      }
      return 
_this;
    };
    
renderScale = function() {
      var 
i_i_results;
      
_this.ctx.fillStyle _this.options.scaleColor;
      
_this.ctx.lineWidth 1;
      
_results = [];
      for (
_i 0_i <= 24= ++_i) {
        
_results.push(addScaleLine(i));
      }
      return 
_results;
    };
    
addScaleLine = function(i) {
      var 
offset;
      
offset === _this.options.size 0.017;
      
_this.ctx.save();
      
_this.ctx.rotate(Math.PI 12);
      
_this.ctx.fillRect(_this.options.size offset0, -_this.options.size 0.05 offset1);
      
_this.ctx.restore();
    };
    
renderTrack = function() {
      var 
offset;
      
offset _this.options.size _this.options.lineWidth 2;
      if (
_this.options.scaleColor !== false) {
        
offset -= _this.options.size 0.08;
      }
      
_this.ctx.beginPath();
      
_this.ctx.arc(00offset0Math.PI 2true);
      
_this.ctx.closePath();
      
_this.ctx.strokeStyle _this.options.trackColor;
      
_this.ctx.lineWidth _this.options.lineWidth;
      
_this.ctx.stroke();
    };
    
renderBackground = function() {
      if (
_this.options.scaleColor !== false) {
        
renderScale();
      }
      if (
_this.options.trackColor !== false) {
        
renderTrack();
      }
    };
    
drawLine = function(percent) {
      var 
offset;
      
renderBackground();
      
_this.ctx.strokeStyle = $.isFunction(_this.options.barColor) ? _this.options.barColor(percent) : _this.options.barColor;
      
_this.ctx.lineCap _this.options.lineCap;
      
_this.ctx.lineWidth _this.options.lineWidth;
      
offset _this.options.size _this.options.lineWidth 2;
      if (
_this.options.scaleColor !== false) {
        
offset -= _this.options.size 0.08;
      }
      
_this.ctx.save();
      
_this.ctx.rotate(-Math.PI 2);
      
_this.ctx.beginPath();
      
_this.ctx.arc(00offset0Math.PI percent 100false);
      
_this.ctx.stroke();
      
_this.ctx.restore();
    };
    
rAF = (function() {
      return 
window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) {
        return 
window.setTimeout(callback1000 60);
      };
    })();
    
animateLine = function(fromto) {
      var 
animstartTime;
      
_this.options.onStart.call(_this);
      
_this.percentage to;
      
startTime Date.now();
      
anim = function() {
        var 
currentValueprocess;
        
process Date.now() - startTime;
        if (
process _this.options.animate) {
          
rAF(anim);
        }
        
_this.ctx.clearRect(-_this.options.size 2, -_this.options.size 2_this.options.size_this.options.size);
        
renderBackground.call(_this);
        
currentValue = [easeInOutQuad(processfromto from_this.options.animate)];
        
_this.options.onStep.call(_thiscurrentValue);
        
drawLine.call(_thiscurrentValue);
        if (
process >= _this.options.animate) {
          return 
_this.options.onStop.call(_this);
        }
      };
      
rAF(anim);
    };
    
easeInOutQuad = function(tbcd) {
      var 
easeIneasing;
      
easeIn = function(t) {
        return 
Math.pow(t2);
      };
      
easing = function(t) {
        if (
1) {
          return 
easeIn(t);
        } else {
          return 
easeIn((2) * -2);
        }
      };
      
/= 2;
      return 
easing(t) + b;
    };
    return 
this.init();
  };
  $.
easyPieChart.defaultOptions = {
    
barColor'#ef1e25',
    
trackColor'#f2f2f2',
    
scaleColor'#dfe0e0',
    
lineCap'round',
    
size110,
    
lineWidth3,
    
animatefalse,
    
onStart: $.noop,
    
onStop: $.noop,
    
onStep: $.noop
  
};
  $.fn.
easyPieChart = function(options) {
    return $.
each(this, function(iel) {
      var 
$el;
      
$el = $(el);
      if (!
$el.data('easyPieChart')) {
        return 
$el.data('easyPieChart', new $.easyPieChart(eloptions));
      }
    });
  };
  return 
void 0;
})(
jQuery);
?>
Онлайн: 2
Реклама