Вход Регистрация
Файл: system/AJAX/panel/speed.min.js
Строк: 1240
<?php
// Generated by CoffeeScript 1.11.1
(function() {
  var 
AnimatedTextAnimatedTextFactoryBarBaseDonutBaseGaugeDonutGaugeGaugePointerTextRendererValueUpdateraddCommascutHexformatNumbermergeObjectssecondsToString,
    
slice = [].slice,
    
hasProp = {}.hasOwnProperty,
    
extend = function(childparent) { for (var key in parent) { if (hasProp.call(parentkey)) child[key] = parent[key]; } function ctor() { this.constructor child; } ctor.prototype parent.prototypechild.prototype = new ctor(); child.__super__ parent.prototype; return child; },
    
indexOf = [].indexOf || function(item) { for (var 0this.lengthli++) { if (i in this && this[i] === item) return i; } return -1; };

  (function() {
    var 
browserRequestAnimationFrameisCancelledjlastIdlenvendorvendors;
    
vendors = ['ms''moz''webkit''o'];
    for (
0len vendors.lengthlenj++) {
      
vendor vendors[j];
      if (
window.requestAnimationFrame) {
        break;
      }
      
window.requestAnimationFrame window[vendor 'RequestAnimationFrame'];
      
window.cancelAnimationFrame window[vendor 'CancelAnimationFrame'] || window[vendor 'CancelRequestAnimationFrame'];
    }
    
browserRequestAnimationFrame null;
    
lastId 0;
    
isCancelled = {};
    if (!
requestAnimationFrame) {
      
window.requestAnimationFrame = function(callbackelement) {
        var 
currTimeidlastTimetimeToCall;
        
currTime = new Date().getTime();
        
timeToCall Math.max(016 - (currTime lastTime));
        
id window.setTimeout(function() {
          return 
callback(currTime timeToCall);
        }, 
timeToCall);
        
lastTime currTime timeToCall;
        return 
id;
      };
      return 
window.cancelAnimationFrame = function(id) {
        return 
clearTimeout(id);
      };
    } else if (!
window.cancelAnimationFrame) {
      
browserRequestAnimationFrame window.requestAnimationFrame;
      
window.requestAnimationFrame = function(callbackelement) {
        var 
myId;
        
myId = ++lastId;
        
browserRequestAnimationFrame(function() {
          if (!
isCancelled[myId]) {
            return 
callback();
          }
        }, 
element);
        return 
myId;
      };
      return 
window.cancelAnimationFrame = function(id) {
        return 
isCancelled[id] = true;
      };
    }
  })();

  
secondsToString = function(sec) {
    var 
hrmin;
    
hr Math.floor(sec 3600);
    
min Math.floor((sec - (hr 3600)) / 60);
    
sec -= (hr 3600) + (min 60);
    
sec += '';
    
min += '';
    while (
min.length 2) {
      
min '0' min;
    }
    while (
sec.length 2) {
      
sec '0' sec;
    }
    
hr hr hr ':' '';
    return 
hr min ':' sec;
  };

  
formatNumber = function() {
    var 
digitsnumvalue;
    
num <= arguments.length slice.call(arguments0) : [];
    
value num[0];
    
digits || num[1];
    return 
addCommas(value.toFixed(digits));
  };

  
mergeObjects = function(obj1obj2) {
    var 
keyoutval;
    
out = {};
    for (
key in obj1) {
      if (!
hasProp.call(obj1key)) continue;
      
val obj1[key];
      
out[key] = val;
    }
    for (
key in obj2) {
      if (!
hasProp.call(obj2key)) continue;
      
val obj2[key];
      
out[key] = val;
    }
    return 
out;
  };

  
addCommas = function(nStr) {
    var 
rgxxx1x2;
    
nStr += '';
    
nStr.split('.');
    
x1 x[0];
    
x2 '';
    if (
x.length 1) {
      
x2 '.' x[1];
    }
    
rgx = /(d+)(d{3})/;
    while (
rgx.test(x1)) {
      
x1 x1.replace(rgx'$1' ',' '$2');
    }
    return 
x1 x2;
  };

  
cutHex = function(nStr) {
    if (
nStr.charAt(0) === "#") {
      return 
nStr.substring(17);
    }
    return 
nStr;
  };

  
ValueUpdater = (function() {
    
ValueUpdater.prototype.animationSpeed 32;

    function 
ValueUpdater(addToAnimationQueueclear) {
      if (
addToAnimationQueue == null) {
        
addToAnimationQueue true;
      }
      
this.clear clear != null clear true;
      if (
addToAnimationQueue) {
        
AnimationUpdater.add(this);
      }
    }

    
ValueUpdater.prototype.update = function(force) {
      var 
diff;
      if (
force == null) {
        
force false;
      }
      if (
force || this.displayedValue !== this.value) {
        if (
this.ctx && this.clear) {
          
this.ctx.clearRect(00this.canvas.widththis.canvas.height);
        }
        
diff this.value this.displayedValue;
        if (
Math.abs(diff this.animationSpeed) <= 0.001) {
          
this.displayedValue this.value;
        } else {
          
this.displayedValue this.displayedValue diff this.animationSpeed;
        }
        
this.render();
        return 
true;
      }
      return 
false;
    };

    return 
ValueUpdater;

  })();

  
BaseGauge = (function(superClass) {
    
extend(BaseGaugesuperClass);

    function 
BaseGauge() {
      return 
BaseGauge.__super__.constructor.apply(thisarguments);
    }

    
BaseGauge.prototype.displayScale 1;

    
BaseGauge.prototype.forceUpdate true;

    
BaseGauge.prototype.setTextField = function(textFieldfractionDigits) {
      return 
this.textField textField instanceof TextRenderer textField : new TextRenderer(textFieldfractionDigits);
    };

    
BaseGauge.prototype.setMinValue = function(minValueupdateStartValue) {
      var 
gaugejlenrefresults;
      
this.minValue minValue;
      if (
updateStartValue == null) {
        
updateStartValue true;
      }
      if (
updateStartValue) {
        
this.displayedValue this.minValue;
        
ref this.gp || [];
        
results = [];
        for (
0len ref.lengthlenj++) {
          
gauge ref[j];
          
results.push(gauge.displayedValue this.minValue);
        }
        return 
results;
      }
    };

    
BaseGauge.prototype.setOptions = function(options) {
      if (
options == null) {
        
options null;
      }
      
this.options mergeObjects(this.optionsoptions);
      if (
this.textField) {
        
this.textField.el.style.fontSize options.fontSize 'px';
      }
      if (
this.options.angle .5) {
        
this.options.angle .5;
      }
      
this.configDisplayScale();
      return 
this;
    };

    
BaseGauge.prototype.configDisplayScale = function() {
      var 
backingStorePixelRatiodevicePixelRatioheightprevDisplayScalewidth;
      
prevDisplayScale this.displayScale;
      if (
this.options.highDpiSupport === false) {
        
delete this.displayScale;
      } else {
        
devicePixelRatio window.devicePixelRatio || 1;
        
backingStorePixelRatio this.ctx.webkitBackingStorePixelRatio || this.ctx.mozBackingStorePixelRatio || this.ctx.msBackingStorePixelRatio || this.ctx.oBackingStorePixelRatio || this.ctx.backingStorePixelRatio || 1;
        
this.displayScale devicePixelRatio backingStorePixelRatio;
      }
      if (
this.displayScale !== prevDisplayScale) {
        
width this.canvas.G__width || this.canvas.width;
        
height this.canvas.G__height || this.canvas.height;
        
this.canvas.width width this.displayScale;
        
this.canvas.height height this.displayScale;
        
this.canvas.style.width width "px";
        
this.canvas.style.height height "px";
        
this.canvas.G__width width;
        
this.canvas.G__height height;
      }
      return 
this;
    };

    
BaseGauge.prototype.parseValue = function(value) {
      
value parseFloat(value) || Number(value);
      if (
isFinite(value)) {
        return 
value;
      } else {
        return 
0;
      }
    };

    return 
BaseGauge;

  })(
ValueUpdater);

  
TextRenderer = (function() {
    function 
TextRenderer(elfractionDigits1) {
      
this.el el;
      
this.fractionDigits fractionDigits1;
    }

    
TextRenderer.prototype.render = function(gauge) {
      return 
this.el.innerHTML formatNumber(gauge.displayedValuethis.fractionDigits);
    };

    return 
TextRenderer;

  })();

  
AnimatedText = (function(superClass) {
    
extend(AnimatedTextsuperClass);

    
AnimatedText.prototype.displayedValue 0;

    
AnimatedText.prototype.value 0;

    
AnimatedText.prototype.setVal = function(value) {
      return 
this.value value;
    };

    function 
AnimatedText(elem1text) {
      
this.elem elem1;
      
this.text text != null text false;
      
AnimatedText.__super__.constructor.call(this);
      if (
this.elem === void 0) {
        throw new 
Error('The element isn't defined.');
      }
      this.value = 1 * this.elem.innerHTML;
      if (this.text) {
        this.value = 0;
      }
    }

    AnimatedText.prototype.render = function() {
      var textVal;
      if (this.text) {
        textVal = secondsToString(this.displayedValue.toFixed(0));
      } else {
        textVal = addCommas(formatNumber(this.displayedValue));
      }
      return this.elem.innerHTML = textVal;
    };

    return AnimatedText;

  })(ValueUpdater);

  AnimatedTextFactory = {
    create: function(objList) {
      var elem, j, len, out;
      out = [];
      for (j = 0, len = objList.length; j < len; j++) {
        elem = objList[j];
        out.push(new AnimatedText(elem));
      }
      return out;
    }
  };

  GaugePointer = (function(superClass) {
    extend(GaugePointer, superClass);

    GaugePointer.prototype.displayedValue = 0;

    GaugePointer.prototype.value = 0;

    GaugePointer.prototype.options = {
      strokeWidth: 0.035,
      length: 0.1,
      color: "#000000",
      iconPath: null,
      iconScale: 1.0,
      iconAngle: 0
    };

    GaugePointer.prototype.img = null;

    function GaugePointer(gauge1) {
      this.gauge = gauge1;
      if (this.gauge === void 0) {
        throw new Error('
The element isn't defined.');
      }
      
this.ctx this.gauge.ctx;
      
this.canvas this.gauge.canvas;
      
GaugePointer.__super__.constructor.call(thisfalsefalse);
      
this.setOptions();
    }

    
GaugePointer.prototype.setOptions = function(options) {
      if (
options == null) {
        
options null;
      }
      
this.options mergeObjects(this.optionsoptions);
      
this.length this.gauge.radius this.gauge.options.radiusScale this.options.length;
      
this.strokeWidth this.canvas.height this.options.strokeWidth;
      
this.maxValue this.gauge.maxValue;
      
this.minValue this.gauge.minValue;
      
this.animationSpeed this.gauge.animationSpeed;
      
this.options.angle this.gauge.options.angle;
      if (
this.options.iconPath) {
        
this.img = new Image();
        return 
this.img.src this.options.iconPath;
      }
    };

    
GaugePointer.prototype.render = function() {
      var 
angleendXendYimgXimgYstartXstartYxy;
      
angle this.gauge.getAngle.call(thisthis.displayedValue);
      
Math.round(this.length Math.cos(angle));
      
Math.round(this.length Math.sin(angle));
      
startX Math.round(this.strokeWidth Math.cos(angle Math.PI 2));
      
startY Math.round(this.strokeWidth Math.sin(angle Math.PI 2));
      
endX Math.round(this.strokeWidth Math.cos(angle Math.PI 2));
      
endY Math.round(this.strokeWidth Math.sin(angle Math.PI 2));
      
this.ctx.beginPath();
      
this.ctx.fillStyle this.options.color;
      
this.ctx.arc(00this.strokeWidth0Math.PI 2false);
      
this.ctx.fill();
      
this.ctx.beginPath();
      
this.ctx.moveTo(startXstartY);
      
this.ctx.lineTo(xy);
      
this.ctx.lineTo(endXendY);
      
this.ctx.fill();
      if (
this.img) {
        
imgX Math.round(this.img.width this.options.iconScale);
        
imgY Math.round(this.img.height this.options.iconScale);
        
this.ctx.save();
        
this.ctx.translate(xy);
        
this.ctx.rotate(angle Math.PI 180.0 * (90 this.options.iconAngle));
        
this.ctx.drawImage(this.img, -imgX 2, -imgY 2imgXimgY);
        return 
this.ctx.restore();
      }
    };

    return 
GaugePointer;

  })(
ValueUpdater);

  
Bar = (function() {
    function 
Bar(elem1) {
      
this.elem elem1;
    }

    
Bar.prototype.updateValues = function(arrValues) {
      
this.value arrValues[0];
      
this.maxValue arrValues[1];
      
this.avgValue arrValues[2];
      return 
this.render();
    };

    
Bar.prototype.render = function() {
      var 
avgPercentvalPercent;
      if (
this.textField) {
        
this.textField.text(formatNumber(this.value));
      }
      if (
this.maxValue === 0) {
        
this.maxValue this.avgValue 2;
      }
      
valPercent = (this.value this.maxValue) * 100;
      
avgPercent = (this.avgValue this.maxValue) * 100;
      $(
".bar-value"this.elem).css({
        
"width"valPercent "%"
      
});
      return $(
".typical-value"this.elem).css({
        
"width"avgPercent "%"
      
});
    };

    return 
Bar;

  })();

  
Gauge = (function(superClass) {
    
extend(GaugesuperClass);

    
Gauge.prototype.elem null;

    
Gauge.prototype.value = [20];

    
Gauge.prototype.maxValue 80;

    
Gauge.prototype.minValue 0;

    
Gauge.prototype.displayedAngle 0;

    
Gauge.prototype.displayedValue 0;

    
Gauge.prototype.lineWidth 40;

    
Gauge.prototype.paddingTop 0.1;

    
Gauge.prototype.paddingBottom 0.1;

    
Gauge.prototype.percentColors null;

    
Gauge.prototype.options = {
      
colorStart"#6fadcf",
      
colorStopvoid 0,
      
gradientType0,
      
strokeColor"#e0e0e0",
      
pointer: {
        
length0.8,
        
strokeWidth0.035,
        
iconScale1.0
      
},
      
angle0.15,
      
lineWidth0.44,
      
radiusScale1.0,
      
fontSize40,
      
limitMaxfalse,
      
limitMinfalse
    
};

    function 
Gauge(canvas) {
      var 
hw;
      
this.canvas canvas;
      
Gauge.__super__.constructor.call(this);
      
this.percentColors null;
      if (
typeof G_vmlCanvasManager !== 'undefined') {
        
this.canvas window.G_vmlCanvasManager.initElement(this.canvas);
      }
      
this.ctx this.canvas.getContext('2d');
      
this.canvas.clientHeight;
      
this.canvas.clientWidth;
      
this.canvas.height h;
      
this.canvas.width w;
      
this.gp = [new GaugePointer(this)];
      
this.setOptions();
    }

    
Gauge.prototype.setOptions = function(options) {
      var 
gaugejlenphiref;
      if (
options == null) {
        
options null;
      }
      
Gauge.__super__.setOptions.call(thisoptions);
      
this.configPercentColors();
      
this.extraPadding 0;
      if (
this.options.angle 0) {
        
phi Math.PI * (this.options.angle);
        
this.extraPadding Math.sin(phi);
      }
      
this.availableHeight this.canvas.height * (this.paddingTop this.paddingBottom);
      
this.lineWidth this.availableHeight this.options.lineWidth;
      
this.radius = (this.availableHeight this.lineWidth 2) / (1.0 this.extraPadding);
      
this.ctx.clearRect(00this.canvas.widththis.canvas.height);
      
ref this.gp;
      for (
0len ref.lengthlenj++) {
        
gauge ref[j];
        
gauge.setOptions(this.options.pointer);
        
gauge.render();
      }
      
this.render();
      return 
this;
    };

    
Gauge.prototype.configPercentColors = function() {
      var 
bvalgvalijrefresultsrval;
      
this.percentColors null;
      if (
this.options.percentColors !== void 0) {
        
this.percentColors = new Array();
        
results = [];
        for (
0ref this.options.percentColors.length 1<= ref <= ref >= ref<= ref ? ++: --j) {
          
rval parseInt((cutHex(this.options.percentColors[i][1])).substring(02), 16);
          
gval parseInt((cutHex(this.options.percentColors[i][1])).substring(24), 16);
          
bval parseInt((cutHex(this.options.percentColors[i][1])).substring(46), 16);
          
results.push(this.percentColors[i] = {
            
pctthis.options.percentColors[i][0],
            
color: {
              
rrval,
              
ggval,
              
bbval
            
}
          });
        }
        return 
results;
      }
    };

    
Gauge.prototype.set = function(value) {
      var 
gpijllenmrefref1val;
      if (!(
value instanceof Array)) {
        
value = [value];
      }
      for (
0ref value.length 1<= ref <= ref >= ref<= ref ? ++: --j) {
        
value[i] = this.parseValue(value[i]);
      }
      if (
value.length this.gp.length) {
        for (
0ref1 value.length this.gp.length<= ref1 ref1 ref1<= ref1 ? ++: --l) {
          
gp = new GaugePointer(this);
          
gp.setOptions(this.options.pointer);
          
this.gp.push(gp);
        }
      } else if (
value.length this.gp.length) {
        
this.gp this.gp.slice(this.gp.length value.length);
      }
      
0;
      for (
0len value.lengthlenm++) {
        
val value[m];
        if (
val this.maxValue) {
          if (
this.options.limitMax) {
            
val this.maxValue;
          } else {
            
this.maxValue val 1;
          }
        } else if (
val this.minValue) {
          if (
this.options.limitMin) {
            
val this.minValue;
          } else {
            
this.minValue val 1;
          }
        }
        
this.gp[i].value val;
        
this.gp[i++].setOptions({
          
minValuethis.minValue,
          
maxValuethis.maxValue,
          
anglethis.options.angle
        
});
      }
      
this.value Math.max(Math.min(value[value.length 1], this.maxValue), this.minValue);
      
AnimationUpdater.add(this);
      
AnimationUpdater.run(this.forceUpdate);
      return 
this.forceUpdate false;
    };

    
Gauge.prototype.getAngle = function(value) {
      return (
this.options.angle) * Math.PI + ((value this.minValue) / (this.maxValue this.minValue)) * (this.options.angle 2) * Math.PI;
    };

    
Gauge.prototype.getColorForPercentage = function(pctgrad) {
      var 
colorendColorijrangePctrefstartColor;
      if (
pct === 0) {
        
color this.percentColors[0].color;
      } else {
        
color this.percentColors[this.percentColors.length 1].color;
        for (
0ref this.percentColors.length 1<= ref <= ref >= ref<= ref ? ++: --j) {
          if (
pct <= this.percentColors[i].pct) {
            if (
grad === true) {
              
startColor this.percentColors[1] || this.percentColors[0];
              
endColor this.percentColors[i];
              
rangePct = (pct startColor.pct) / (endColor.pct startColor.pct);
              
color = {
                
rMath.floor(startColor.color.* (rangePct) + endColor.color.rangePct),
                
gMath.floor(startColor.color.* (rangePct) + endColor.color.rangePct),
                
bMath.floor(startColor.color.* (rangePct) + endColor.color.rangePct)
              };
            } else {
              
color this.percentColors[i].color;
            }
            break;
          }
        }
      }
      return 
'rgb(' + [color.rcolor.gcolor.b].join(',') + ')';
    };

    
Gauge.prototype.getColorForValue = function(valgrad) {
      var 
pct;
      
pct = (val this.minValue) / (this.maxValue this.minValue);
      return 
this.getColorForPercentage(pctgrad);
    };

    
Gauge.prototype.renderStaticLabels = function(staticLabelswhradius) {
      var 
fontfontsizejlenmatchrerefrestrotationAnglevalue;
      
this.ctx.save();
      
this.ctx.translate(wh);
      
font staticLabels.font || "10px Times";
      
re = /d+.?d?/;
      
match font.match(re)[0];
      
rest font.slice(match.length);
      
fontsize parseFloat(match) * this.displayScale;
      
this.ctx.font fontsize rest;
      
this.ctx.fillStyle staticLabels.color || "#000000";
      
this.ctx.textBaseline "bottom";
      
this.ctx.textAlign "center";
      
ref staticLabels.labels;
      for (
0len ref.lengthlenj++) {
        
value ref[j];
        if (
value.label !== void 0) {
          if ((!
this.options.limitMin || value >= this.minValue) && (!this.options.limitMax || value <= this.maxValue)) {
            
font value.font || staticLabels.font;
            
match font.match(re)[0];
            
rest font.slice(match.length);
            
fontsize parseFloat(match) * this.displayScale;
            
this.ctx.font fontsize rest;
            
rotationAngle this.getAngle(value.label) - Math.PI 2;
            
this.ctx.rotate(rotationAngle);
            
this.ctx.fillText(formatNumber(value.labelstaticLabels.fractionDigits), 0, -radius this.lineWidth 2);
            
this.ctx.rotate(-rotationAngle);
          }
        } else {
          if ((!
this.options.limitMin || value >= this.minValue) && (!this.options.limitMax || value <= this.maxValue)) {
            
rotationAngle this.getAngle(value) - Math.PI 2;
            
this.ctx.rotate(rotationAngle);
            
this.ctx.fillText(formatNumber(valuestaticLabels.fractionDigits), 0, -radius this.lineWidth 2);
            
this.ctx.rotate(-rotationAngle);
          }
        }
      }
      return 
this.ctx.restore();
    };

    
Gauge.prototype.renderTicks = function(ticksOptionswhradius) {
      var 
currentDivisioncurrentSubDivisiondivColordivLengthdivWidthdivisionCountjlineWidthrangerangeDivisionsrefresultsscaleMutatestsubColorsubDivisionssubLengthsubWidthsubdivisionCountttmpRadius;
      if (
ticksOptions !== {}) {
        
divisionCount ticksOptions.divisions || 0;
        
subdivisionCount ticksOptions.subDivisions || 0;
        
divColor ticksOptions.divColor || '#fff';
        
subColor ticksOptions.subColor || '#fff';
        
divLength ticksOptions.divLength || 0.7;
        
subLength ticksOptions.subLength || 0.2;
        
range parseFloat(this.maxValue) - parseFloat(this.minValue);
        
rangeDivisions parseFloat(range) / parseFloat(ticksOptions.divisions);
        
subDivisions parseFloat(rangeDivisions) / parseFloat(ticksOptions.subDivisions);
        
currentDivision parseFloat(this.minValue);
        
currentSubDivision 0.0 subDivisions;
        
lineWidth range 400;
        
divWidth lineWidth * (ticksOptions.divWidth || 1);
        
subWidth lineWidth * (ticksOptions.subWidth || 1);
        
results = [];
        for (
0ref divisionCount 1ref+= 1) {
          
this.ctx.lineWidth this.lineWidth divLength;
          
scaleMutate = (this.lineWidth 2) * (divLength);
          
tmpRadius = (this.radius this.options.radiusScale) + scaleMutate;
          
this.ctx.strokeStyle divColor;
          
this.ctx.beginPath();
          
this.ctx.arc(00tmpRadiusthis.getAngle(currentDivision divWidth), this.getAngle(currentDivision divWidth), false);
          
this.ctx.stroke();
          
currentSubDivision currentDivision subDivisions;
          
currentDivision += rangeDivisions;
          if (
!== ticksOptions.divisions && subdivisionCount 0) {
            
results.push((function() {
              var 
lref1results1;
              
results1 = [];
              for (
st 0ref1 subdivisionCount 1ref1st += 1) {
                
this.ctx.lineWidth this.lineWidth subLength;
                
scaleMutate = (this.lineWidth 2) * (subLength);
                
tmpRadius = (this.radius this.options.radiusScale) + scaleMutate;
                
this.ctx.strokeStyle subColor;
                
this.ctx.beginPath();
                
this.ctx.arc(00tmpRadiusthis.getAngle(currentSubDivision subWidth), this.getAngle(currentSubDivision subWidth), false);
                
this.ctx.stroke();
                
results1.push(currentSubDivision += subDivisions);
              }
              return 
results1;
            }).
call(this));
          } else {
            
results.push(void 0);
          }
        }
        return 
results;
      }
    };

    
Gauge.prototype.render = function() {
      var 
displayedAnglefillStylegaugehjllenlen1maxminradiusrefref1scaleMutatetmpRadiuswzone;
      
this.canvas.width 2;
      
= (this.canvas.height this.paddingTop this.availableHeight) - ((this.radius this.lineWidth 2) * this.extraPadding);
      
displayedAngle this.getAngle(this.displayedValue);
      if (
this.textField) {
        
this.textField.render(this);
      }
      
this.ctx.lineCap "butt";
      
radius this.radius this.options.radiusScale;
      if (
this.options.staticLabels) {
        
this.renderStaticLabels(this.options.staticLabelswhradius);
      }
      if (
this.options.staticZones) {
        
this.ctx.save();
        
this.ctx.translate(wh);
        
this.ctx.lineWidth this.lineWidth;
        
ref this.options.staticZones;
        for (
0len ref.lengthlenj++) {
          
zone ref[j];
          
min zone.min;
          if (
this.options.limitMin && min this.minValue) {
            
min this.minValue;
          }
          
max zone.max;
          if (
this.options.limitMax && max this.maxValue) {
            
max this.maxValue;
          }
          
tmpRadius this.radius this.options.radiusScale;
          if (
zone.height) {
            
this.ctx.lineWidth this.lineWidth zone.height;
            
scaleMutate = (this.lineWidth 2) * (zone.offset || zone.height);
            
tmpRadius = (this.radius this.options.radiusScale) + scaleMutate;
          }
          
this.ctx.strokeStyle zone.strokeStyle;
          
this.ctx.beginPath();
          
this.ctx.arc(00tmpRadiusthis.getAngle(min), this.getAngle(max), false);
          
this.ctx.stroke();
        }
      } else {
        if (
this.options.customFillStyle !== void 0) {
          
fillStyle this.options.customFillStyle(this);
        } else if (
this.percentColors !== null) {
          
fillStyle this.getColorForValue(this.displayedValuethis.options.generateGradient);
        } else if (
this.options.colorStop !== void 0) {
          if (
this.options.gradientType === 0) {
            
fillStyle this.ctx.createRadialGradient(wh9wh70);
          } else {
            
fillStyle this.ctx.createLinearGradient(00w0);
          }
          
fillStyle.addColorStop(0this.options.colorStart);
          
fillStyle.addColorStop(1this.options.colorStop);
        } else {
          
fillStyle this.options.colorStart;
        }
        
this.ctx.strokeStyle fillStyle;
        
this.ctx.beginPath();
        
this.ctx.arc(whradius, (this.options.angle) * Math.PIdisplayedAnglefalse);
        
this.ctx.lineWidth this.lineWidth;
        
this.ctx.stroke();
        
this.ctx.strokeStyle this.options.strokeColor;
        
this.ctx.beginPath();
        
this.ctx.arc(whradiusdisplayedAngle, (this.options.angle) * Math.PIfalse);
        
this.ctx.stroke();
        
this.ctx.save();
        
this.ctx.translate(wh);
      }
      if (
this.options.renderTicks) {
        
this.renderTicks(this.options.renderTickswhradius);
      }
      
this.ctx.restore();
      
this.ctx.translate(wh);
      
ref1 this.gp;
      for (
0len1 ref1.lengthlen1l++) {
        
gauge ref1[l];
        
gauge.update(true);
      }
      return 
this.ctx.translate(-w, -h);
    };

    return 
Gauge;

  })(
BaseGauge);

  
BaseDonut = (function(superClass) {
    
extend(BaseDonutsuperClass);

    
BaseDonut.prototype.lineWidth 15;

    
BaseDonut.prototype.displayedValue 0;

    
BaseDonut.prototype.value 33;

    
BaseDonut.prototype.maxValue 80;

    
BaseDonut.prototype.minValue 0;

    
BaseDonut.prototype.options = {
      
lineWidth0.10,
      
colorStart"#6f6ea0",
      
colorStop"#c0c0db",
      
strokeColor"#eeeeee",
      
shadowColor"#d5d5d5",
      
angle0.35,
      
radiusScale1.0
    
};

    function 
BaseDonut(canvas) {
      
this.canvas canvas;
      
BaseDonut.__super__.constructor.call(this);
      if (
typeof G_vmlCanvasManager !== 'undefined') {
        
this.canvas window.G_vmlCanvasManager.initElement(this.canvas);
      }
      
this.ctx this.canvas.getContext('2d');
      
this.setOptions();
      
this.render();
    }

    
BaseDonut.prototype.getAngle = function(value) {
      return (
this.options.angle) * Math.PI + ((value this.minValue) / (this.maxValue this.minValue)) * ((this.options.angle) - (this.options.angle)) * Math.PI;
    };

    
BaseDonut.prototype.setOptions = function(options) {
      if (
options == null) {
        
options null;
      }
      
BaseDonut.__super__.setOptions.call(thisoptions);
      
this.lineWidth this.canvas.height this.options.lineWidth;
      
this.radius this.options.radiusScale * (this.canvas.height this.lineWidth 2);
      return 
this;
    };

    
BaseDonut.prototype.set = function(value) {
      
this.value this.parseValue(value);
      if (
this.value this.maxValue) {
        if (
this.options.limitMax) {
          
this.value this.maxValue;
        } else {
          
this.maxValue this.value;
        }
      } else if (
this.value this.minValue) {
        if (
this.options.limitMin) {
          
this.value this.minValue;
        } else {
          
this.minValue this.value;
        }
      }
      
AnimationUpdater.add(this);
      
AnimationUpdater.run(this.forceUpdate);
      return 
this.forceUpdate false;
    };

    
BaseDonut.prototype.render = function() {
      var 
displayedAnglegrdFillhstartstopw;
      
displayedAngle this.getAngle(this.displayedValue);
      
this.canvas.width 2;
      
this.canvas.height 2;
      if (
this.textField) {
        
this.textField.render(this);
      }
      
grdFill this.ctx.createRadialGradient(wh39wh70);
      
grdFill.addColorStop(0this.options.colorStart);
      
grdFill.addColorStop(1this.options.colorStop);
      
start this.radius this.lineWidth 2;
      
stop this.radius this.lineWidth 2;
      
this.ctx.strokeStyle this.options.strokeColor;
      
this.ctx.beginPath();
      
this.ctx.arc(whthis.radius, (this.options.angle) * Math.PI, (this.options.angle) * Math.PIfalse);
      
this.ctx.lineWidth this.lineWidth;
      
this.ctx.lineCap "round";
      
this.ctx.stroke();
      
this.ctx.strokeStyle grdFill;
      
this.ctx.beginPath();
      
this.ctx.arc(whthis.radius, (this.options.angle) * Math.PIdisplayedAnglefalse);
      return 
this.ctx.stroke();
    };

    return 
BaseDonut;

  })(
BaseGauge);

  
Donut = (function(superClass) {
    
extend(DonutsuperClass);

    function 
Donut() {
      return 
Donut.__super__.constructor.apply(thisarguments);
    }

    
Donut.prototype.strokeGradient = function(whstartstop) {
      var 
grd;
      
grd this.ctx.createRadialGradient(whstartwhstop);
      
grd.addColorStop(0this.options.shadowColor);
      
grd.addColorStop(0.12this.options._orgStrokeColor);
      
grd.addColorStop(0.88this.options._orgStrokeColor);
      
grd.addColorStop(1this.options.shadowColor);
      return 
grd;
    };

    
Donut.prototype.setOptions = function(options) {
      var 
hstartstopw;
      if (
options == null) {
        
options null;
      }
      
Donut.__super__.setOptions.call(thisoptions);
      
this.canvas.width 2;
      
this.canvas.height 2;
      
start this.radius this.lineWidth 2;
      
stop this.radius this.lineWidth 2;
      
this.options._orgStrokeColor this.options.strokeColor;
      
this.options.strokeColor this.strokeGradient(whstartstop);
      return 
this;
    };

    return 
Donut;

  })(
BaseDonut);

  
window.AnimationUpdater = {
    
elements: [],
    
animIdnull,
    
addAll: function(list) {
      var 
elemjlenresults;
      
results = [];
      for (
0len = list.lengthlenj++) {
        
elem = list[j];
        
results.push(AnimationUpdater.elements.push(elem));
      }
      return 
results;
    },
    
add: function(object) {
      if (
indexOf.call(AnimationUpdater.elementsobject) < 0) {
        return 
AnimationUpdater.elements.push(object);
      }
    },
    
run: function(force) {
      var 
elemfinishedisCallbackjkllenreftoRemove;
      if (
force == null) {
        
force false;
      }
      
isCallback isFinite(parseFloat(force));
      if (
isCallback || force === true) {
        
finished true;
        
toRemove = [];
        
ref AnimationUpdater.elements;
        for (
0len ref.lengthlen= ++j) {
          
elem ref[k];
          if (
elem.update(force === true)) {
            
finished false;
          } else {
            
toRemove.push(k);
          }
        }
        for (
toRemove.length 1>= 0+= -1) {
          
toRemove[l];
          
AnimationUpdater.elements.splice(k1);
        }
        return 
AnimationUpdater.animId finished null requestAnimationFrame(AnimationUpdater.run);
      } else if (
force === false) {
        if (
AnimationUpdater.animId === !null) {
          
cancelAnimationFrame(AnimationUpdater.animId);
        }
        return 
AnimationUpdater.animId requestAnimationFrame(AnimationUpdater.run);
      }
    }
  };

  if (
typeof window.define === 'function' && (window.define.amd != null)) {
    
define(function() {
      return {
        
GaugeGauge,
        
DonutDonut,
        
BaseDonutBaseDonut,
        
TextRendererTextRenderer
      
};
    });
  } else if (
typeof module !== 'undefined' && (module.exports != null)) {
    
module.exports = {
      
GaugeGauge,
      
DonutDonut,
      
BaseDonutBaseDonut,
      
TextRendererTextRenderer
    
};
  } else {
    
window.Gauge Gauge;
    
window.Donut Donut;
    
window.BaseDonut BaseDonut;
    
window.TextRenderer TextRenderer;
  }

}).
call(this);

//# sourceMappingURL=gauge.js.map
?>
Онлайн: 2
Реклама