Tryag File Manager
Home
||
Turbo Force
||
B-F Config_Cpanel
Current Path :
/
home
/
ynormeco
/
.trash
/
studywallet
/
js
/
barIndicator
/
Or
Select Your Path :
Upload File :
New :
File
Dir
/home/ynormeco/.trash/studywallet/js/barIndicator/barIndicator.js
/*! * jQuery - barIndicator * A jQuery plugin that helps you visualize percentage or absolute amounts with bars * Author: Ioannis Kapantzakis * Released under the MIT License */ ;(function($, window, document, undefined) { var pluginName = 'barIndicator'; function Plugin(element, options, selector) { this.el = element; this.$el = $(element); this.opt = $.extend({}, $.fn[pluginName].defaults, options ); this.selector = selector; this._init(); } Plugin.prototype = { //Private methods -------------------------------------------------------------------------------- // _init: function() { var that = this; var $el = that.$el; var opt = that.opt; var selector = that.selector; var style = opt.style; var data = opt.data; var type = opt.numType; var dec = opt.lbDecimals; var $elID = $el.attr('id'); var orText = $el.text(); var orClass = $el.attr('class'); if (data && !isNaN(data)) { var num = parseFloat(data).toFixed(dec); } else if (data == false) { var num = parseFloat(orText.replace(',','.')).toFixed(dec); } else { console.log('data are not valid'); } //Get length object var paramsLength = { that: that, num: num } var lengthObj = Plugin.prototype._getLength.apply(this, [paramsLength]); var lbNum = lengthObj.lbNum; var barLength = lengthObj.barLength; //Add unique data-biID var paramsID = { that: that } var unID = Plugin.prototype._getUniqueID.apply(this, [paramsID]); $el.attr('data-biID', unID); //Add classes (bi-wrp + theme class) $el.addClass(opt.wrpClass + ' ' + opt.theme).attr('data-lbNum', lbNum); //Store original attributes (applied on destroy) $.data($el, 'storedAttr', { 'selector': selector, 'orClass': orClass, 'orText': orText, 'barLength': barLength, 'num': num, 'lbNum': lbNum, 'numType': type }); //console.log($.data($el, 'storedAttr')); // Build and get inner html ------------------------------------------------------------------------------------------------- // var numMin = opt.numMin; var numMax = opt.numMax; var numMinLabel = opt.numMinLabel; var numMaxLabel = opt.numMaxLabel; var numMinLbLeft = (opt.numMinLbLeft && !isNaN(opt.numMinLbLeft)) ? opt.numMinLbLeft : ''; var numMaxLbRight = (opt.numMaxLbRight && !isNaN(opt.numMaxLbRight)) ? opt.numMaxLbRight : ''; var numMinLbTop = (opt.numMinLbTop && !isNaN(opt.numMinLbTop)) ? opt.numMinLbTop : ''; var numMaxLbTop = (opt.numMaxLbTop && !isNaN(opt.numMaxLbTop)) ? opt.numMaxLbTop : ''; var numLabelEdge = ''; if (numMinLabel) { numLabelEdge += '<span class="bi-labelEdge bi-edge-min" style="left:' + numMinLbLeft + 'px;top:' + numMinLbTop + 'px">' + numMin + '</span>'; } if (numMaxLabel) { numLabelEdge += '<span class="bi-labelEdge bi-edge-max" style="right:' + numMaxLbRight + 'px;top:' + numMaxLbTop + 'px">' + numMax + '</span>'; } if (style == 'vertical') { var lb = opt.vertLabelPos; var w = opt.vertBarWidth; var h = opt.vertBarHeight; var elemH = $el.css('height'); var va = opt.vertLabelAlign; $el.addClass('bi-vertical'); if (h == 'line') { var bh = elemH; } else if (h.indexOf('%') != -1) { //Percent of line height var bh = parseFloat(elemH) * (parseFloat(h.replace('%','')) / 100); } else if (h.indexOf('px') != -1) { var bh = h.replace('px',''); } var bar = '<div class="bi-bar" style="width:' + w + 'px;height:' + bh + '">' + numLabelEdge + '<div class="bi-barInner"></div></div>'; if (lb == 'right') { var label = '<span class="bi-label bi-label-r" style="vertical-align:' + va + '">' + lbNum + '</span>'; var inner = bar + label; } else if (lb == 'left') { var label = '<span class="bi-label bi-label-l" style="vertical-align:' + va + '">' + lbNum + '</span>'; var inner = label + bar; } } else if (style == 'horizontal') { var bh = opt.horBarHeight; var lbPos = opt.horLabelPos; var ttl = opt.horTitle; var label = '<span class="bi-label">' + lbNum + '</span>'; var bar = '<div class="bi-bar" style="height:' + bh + 'px">' + numLabelEdge + '<div class="bi-barInner"></div></div>'; switch (lbPos) { case 'topLeft': var horPosClass = 'bi-hor-topLeft'; var inner = label + bar; break; case 'topRight': var horPosClass = 'bi-hor-topRight'; var inner = label + bar; break; case 'left': var horPosClass = 'bi-hor-left'; var inner = label + bar; break; case 'right': var horPosClass = 'bi-hor-right'; var inner = bar + label; break; } $el.addClass('bi-horizontal ' + horPosClass); } if (style == 'horizontal' && ttl) { var t = ''; if (ttl == 'bi-title-id') { t = $el.attr('id'); } else if (ttl == 'bi-data-title') { var dataT = $el.attr('data-title'); t = (dataT) ? dataT : 'noTitle'; } else { t = ttl; } var limSpan = '<span class="bi-limSpan"></span>'; var title = '<span class="bi-titleSpan bi-titleSpan-' + lbPos + '">' + t + ' ' + limSpan + '</span>'; inner = title + inner; } //Append inner html $el.empty().append(inner); var bi_bar = $el.find('.bi-barInner'); var bi_barHolder = $el.find('.bi-bar'); var bi_label = $el.find('.bi-label'); //Trigger event $(document).trigger('bi.innerContentAppended', [$el]); if ($elID) { $(document).trigger('bi_' + $elID + '.innerContentAppended'); } if (style == 'horizontal') { var lbPos = opt.horLabelPos; if (lbPos == 'left' || lbPos == 'right') { var wrpW = parseFloat($el.outerWidth()); var lbW = parseFloat($el.find('.bi-label').outerWidth()); var barWrpW = wrpW - lbW - 1; var lbH = $el.find('.bi-label').outerHeight(); var topPos = (lbH - bh) / 2; //console.log(lbH + ' - ' + bh); bi_barHolder.css({'width':barWrpW + 'px','top':topPos + 'px'}); } } //ColorRange var paramsColorRange = { that: that, num: num } var lengthObj = Plugin.prototype._getColorRangeClass.apply(this, [paramsColorRange]); //Apply colours (if set in options) var foreColor = opt.foreColor; var backColor = opt.backColor; var labelColor = opt.labelColor; if (foreColor) { var fColor = Plugin.prototype._getColorValue.apply(this, [foreColor]); if (fColor) { bi_bar.css({'background-color':fColor}); } } if (backColor) { var bColor = Plugin.prototype._getColorValue.apply(this, [backColor]); if (bColor) { bi_barHolder.css({'background-color':bColor}); } } if (labelColor) { var lColor = Plugin.prototype._getColorValue.apply(this, [labelColor]); if (lColor) { bi_label.css({'color':lColor}); } } //Set label visibility and position (hover) switch (opt.labelVisibility) { case 'default': var labelVisClass = 'bi-label-vis-default'; break; case 'hover': var labelVisClass = 'bi-label-vis-hover'; var posObj = opt.labelHoverPos; var lb = $el.find('.bi-label'); var posString = ''; for(n in posObj) { switch (n) { case 'top': case 'left': case 'bottom': case 'right': lb.css({n:posObj[n]}); break; } } break; case 'hidden': var labelVisClass = 'bi-label-vis-hidden'; break; } $el.addClass(labelVisClass); //If average (avgActive) is set to true, first calculate the average and then set the milestones var avg = opt.avgActive; if (avg) { var paramsAvg = { that: that } Plugin.prototype._getAverage.apply(this, [paramsAvg]); } else { //Set milestones var mlst = opt.milestones; if (mlst && !$.isEmptyObject(mlst)) { var paramsMlst = { that: that } Plugin.prototype._getMilestones.apply(this, [paramsMlst]); } } //Load bar -------------------------------------------------------------------------------------------------------- // if (opt.animation) { var timeOut = opt.timeout; var event = opt.triggerEvent; var forceAnim = opt.forceAnim; var forceDelay = opt.forceDelay; var paramsAnim = { that: that, bl: barLength } var paramsCount = { that: that, target: num } if (forceAnim == false) { if (event == 'load') { $(window).on('load', function() { Plugin.prototype._animateBar.apply(this, [paramsAnim]); if (opt.labelNumCount) { Plugin.prototype._labelNumCounter.apply(this, [paramsCount]); } }); } else { $(document).on(event, function() { Plugin.prototype._animateBar.apply(this, [paramsAnim]); if (opt.labelNumCount) { Plugin.prototype._labelNumCounter.apply(this, [paramsCount]); } }); } } else { setTimeout(function() { Plugin.prototype._animateBar.apply(this, [paramsAnim]); if (opt.labelNumCount) { Plugin.prototype._labelNumCounter.apply(this, [paramsCount]); } },forceDelay); } } else { var style = opt.style; if (style == 'vertical') { bi_bar.css({'height': barLength}); } else if (style == 'horizontal') { bi_bar.css({'width': barLength}); } } }, _getUniqueID: function(par) { if (par) { var that = par.that; var opt = that.opt; var wrpClass = opt.wrpClass; var idnum = 0; var nArr = []; $('.' + wrpClass).each(function() { var dn = $(this).attr('data-biID'); if (dn) { var n = parseInt(dn.replace('bi_', '')); nArr.push(n); } }); if (nArr.length > 0) { var nmax = nArr.sort(function(a,b) { return b-a }); idnum = parseInt(nmax) + 1; } return 'bi_' + idnum; } }, _getLength: function(par) { if (par) { var that = par.that; var opt = that.opt; var type = opt.numType; var num = par.num; if (type == 'percent') { var lbNum = num + '%'; var barLength = num + '%'; } else if (type == 'absolute') { var lbNum = num; var min = opt.numMin; var max = opt.numMax; var barLength = (num / (max - min)) * 100 + '%'; } var lengthObj = { lbNum: lbNum, barLength: barLength }; return lengthObj; } }, _getColorRangeClass: function(par) { if (par) { var that = par.that; var num = par.num; var $el = that.$el; var bar = $el.find('.bi-barInner'); var opt = that.opt; var barstyle = bar.attr('style'); if (barstyle) { bar.attr('style', barstyle.replace('background-color', '')); } if (opt.colorRange) { var limObj = opt.colorRangeLimits; var allRangeClasses = ''; for (l in limObj) { var rng = limObj[l].split('-'); var min = parseFloat(rng[0]); var max = parseFloat(rng[1]); //If range colour is passed into the options object if (num >= min && num <= max) { var rangeClass = 'bi-cRange-' + l; if (rng.length == 3) { var rngColor = rng[2]; var rngCl = Plugin.prototype._getColorValue.apply(this, [rngColor]); if (typeof rngCl !== 'undefined') { bar.css({'background-color':rngCl}); }; } } allRangeClasses += 'bi-cRange-' + l + ' '; } //Remove any bi-cRange-* class and add the appropriate one $el.removeClass(allRangeClasses).addClass(rangeClass); } } }, _animateBar: function(par) { if (par) { var that = par.that; var $el = that.$el; var $elID = $el.attr('id'); var opt = that.opt; var style = opt.style; var at = opt.animTime; var eas = opt.easing; var tm = opt.timeOut; var bar = that.$el.find('.bi-barInner'); var bl = par.bl; setTimeout(function() { if (style == 'vertical') { if (par.reanim) { bar.css({'height':0}); } bar.animate({'height':bl},at,eas).queue(function() { $(document).trigger('bi.animationCompleted'); if ($elID) { $(document).trigger('bi_' + $elID + '.animationCompleted'); } if (par.reanim) { $(document).trigger('bi.reanimateBarStop'); if ($elID) { $(document).trigger('bi_' + $elID + '.reanimateBarStop'); } } if (par.loadData) { $(document).trigger('bi.loadDataStop'); if ($elID) { $(document).trigger('bi_' + $elID + '.loadDataStop'); } } $(this).dequeue(); }); } else if (style == 'horizontal') { if (par.reanim) { bar.css({'width':0}); } bar.animate({'width':bl},at,eas).queue(function() { $(document).trigger('bi.animationCompleted'); if ($elID) { $(document).trigger('bi_' + $elID + '.animationCompleted'); } if (par.reanim) { $(document).trigger('bi.reanimateBarStop'); if ($elID) { $(document).trigger('bi_' + $elID + '.reanimateBarStop'); } } if (par.loadData) { $(document).trigger('bi.loadDataStop'); if ($elID) { $(document).trigger('bi_' + $elID + '.loadDataStop'); } } $(this).dequeue(); }); } },tm); } }, _labelNumCounter: function(par) { if (par) { var that = par.that; var opt = that.opt; var $el = that.$el; var label = $el.find('.bi-label'); var min = opt.numMin; var target = parseFloat(par.target); var countTime = opt.animTime; var decim = opt.lbDecimals; var step = opt.counterStep; var type = opt.numType; var limLabelPos = opt.limLabelPos; if (type == 'percent') { var sign = '%'; } else if (type == 'absolute') { var sign = ''; } var i = parseFloat(min); var ct = (countTime / (target - i)) * step; label.html(min + sign); function counter() { setTimeout(function() { label.html(i.toFixed(decim) + sign); if (i<target) { i = Math.min(i + step, target); counter(); } else { if (limLabelPos == 'num') { var counterLb = label.closest('.bi-wrp').find('.bi-limSpan').prop('outerHTML'); if (typeof counterLb != 'undefined') { var cntrLb = counterLb; } else { var cntrLb = ''; } label.html(label.html() + cntrLb); } } },ct); } counter(); } }, _getColorValue: function(par) { if (par) { var validHex = new RegExp(/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i); var colorNameList = ["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","Darkorange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"]; if (par.indexOf('rgb') == -1) { if (par.indexOf('#') == 0) { if (validHex.test(par)) { var fColor = par; } } else { if ($.inArray(par, colorNameList)) { var fColor = par; } } } else { var fColor = par; } return fColor; } }, _getMilestones: function(par) { if (par) { var that = par.that; var $el = that.$el; var $elID = $el.attr('id'); var opt = that.opt; var style = opt.style; var mlst = opt.milestones; var slf = par.self; var barWrp = (slf || $el).find('.bi-bar'); //Append milestones if (par.mlstObj) { mlst = par.mlstObj; } for (m in mlst) { var mlstObj = mlst[m]; var pos = mlstObj.mlPos; var mlstId = mlstObj.mlId; var mlstClass = mlstObj.mlClass; var mlstDim = mlstObj.mlDim; var mlstLabel = mlstObj.mlLabel; var mlstVis = mlstObj.mlLabelVis; var mlstHoverRange = mlstObj.mlHoverRange; var mlstLineHeight = mlstObj.mlLineWidth; //Get length object var paramsLength = { that: that, num: pos } var mlstLb = mlstLabel; if (opt.avgLabelNum) { if (mlstObj.mlClass == 'bi-average-mlst') { mlstLb = mlstLabel + ' ' + mlstObj.mlPos; if (opt.numType == 'percent') { mlstLb += '%'; } } } var lengthObj = Plugin.prototype._getLength.apply(this, [paramsLength]); var barLength = lengthObj.barLength; var ml = '<span class="bi-milestone bi-mlst_' + m + ' ' + mlstClass + '" data-id="' + mlstId + '" data-pos="' + barLength + '" data-dim="' + mlstDim + '" data-label="' + mlstLabel + '" data-visible="' + mlstVis + '" data-hoverRange="' + mlstHoverRange + '" data-mlLineWidth="' + mlstLineHeight + '">'; ml += '<span class="bi-mlst-inner"><span class="bi-mlst-innerLine"></span>'; ml += '<span class="bi-mlst-label"><span class="bi-mlst-labelTxt">' + mlstLb + '</span></span>'; ml +=' </span></span>'; barWrp.append(ml); var $ml = barWrp.find('.bi-mlst_' + m); $(document).trigger('bi.milestoneAppended', [$ml]); if ($elID) { $(document).trigger('bi_' + $elID + '_' + mlstId + '.milestoneAppended'); } } //Give position and (if true)dimensions var thisEl = (slf || $el); thisEl.find('.bi-milestone').each(function() { var ml = $(this); var mlId = ml.attr('data-id'); var mlPos = ml.attr('data-pos'); var mlDim = ml.attr('data-dim'); var mlLabel = ml.attr('data-label'); var mlVis = ml.attr('data-visible'); var mlHoverRange = ml.attr('data-hoverRange'); var mlLineWidth = ml.attr('data-mlLineWidth'); var absolutePull = parseFloat(mlHoverRange) / 2; var mlLineAbsPull = parseFloat(mlLineWidth) / 2; var mlInner = ml.find('.bi-mlst-inner'); var mlLine = mlInner.find('.bi-mlst-innerLine'); //Get id (if set) if (mlId != 'false') { ml.attr('id', mlId); } //Get position if (style == 'vertical') { ml.css({ 'bottom':mlPos, 'height':mlHoverRange + 'px', 'margin-bottom': -absolutePull + 'px' }); mlLine.css({ 'height': mlLineWidth + 'px', 'margin-top': -mlLineAbsPull + 'px' }); } else if (style == 'horizontal') { ml.css({ 'left':mlPos, 'width':mlHoverRange + 'px', 'margin-left': -absolutePull + 'px' }); mlLine.css({ 'width': mlLineWidth + 'px', 'margin-left': -mlLineAbsPull + 'px' }); } //Get label visibility if (mlVis == 'hover') { mlInner.addClass('bi-mlst-innerHover').removeClass('bi-mlst-innerVisible bi-mlst-innerHidden'); } else if (mlVis == 'visible') { mlInner.addClass('bi-mlst-innerVisible').removeClass('bi-mlst-innerHover bi-mlst-innerHidden'); } else if (mlVis == 'hidden') { mlInner.addClass('bi-mlst-innerHidden').removeClass('bi-mlst-innerVisible bi-mlst-innerHover'); } if (mlVis == 'hover') { mlInner.on({ 'mouseenter': function() { $(this).addClass('bi-mlst-innerOverflowVisible'); }, 'mouseleave': function() { setTimeout(function() { $('.bi-mlst-inner').removeClass('bi-mlst-innerOverflowVisible'); }, 150); } }); } else { $(document).off('mouseenter mouseleave', '.bi-mlst-inner'); } //If mlDim -> apply the given dimensions if (mlDim) { if (mlDim == 'inherit') { var d = '100%'; } else if (mlDim.indexOf('%') != -1 || mlDim.indexOf('px') != -1) { var d = mlDim; } if (style == 'vertical') { ml.css({'width':d}); var mlW = ml.css('width'); var mrgL = parseFloat(mlW.replace('px','')) / 2; ml.css({marginLeft: -mrgL + 'px'}); } else if (style == 'horizontal') { ml.css({'height':d}); var mlH = ml.css('height'); var mrgT = parseFloat(mlH.replace('px','')) / 2; ml.css({marginTop: -mrgT + 'px'}); } } }); } }, _getAverage: function(par) { if (par) { var that = par.that; var $el = that.$el; var opt = that.opt; var barWrp = $el.find('.bi-bar'); var avgMlDim = opt.avgMlDim; var avgLabel = opt.avgLabel; var avgLabelNum = opt.avgLabelNum; var avgLabelVis = opt.avgLabelVis; var avgLabelHoverRange = opt.avgLabelHoverRange; var avgLineHeight = opt.avgLineWidth; var lim = opt.limLabel; var limMinLabel = opt.limMinLabel; var limMaxLabel = opt.limMaxLabel; var limMinVisible = opt.limMinVisible; var limMaxVisible = opt.limMaxVisible; var limLabelPos = opt.limLabelPos; //Detect data-avgClass attributes var dtAvgCl = $el.attr('data-avgClass'); if (dtAvgCl && dtAvgCl.length > 0) { var avgAttr = $el.attr('data-biAvg'); var sel = $.data($el,'storedAttr').selector; var elem = $(sel + '[data-avgClass="' + dtAvgCl + '"]'); var notInitCount = 0; elem.each(function() { var notInit = !$.data(this, 'plugin_' + pluginName); if (notInit) { notInitCount++; } }); if (notInitCount == 1 && elem.length > 1) { var sum = 0; var i = 1; var numArr = []; elem.each(function() { var that = $(this); if (!that.hasClass('bi-avgCalculated')) { var lbNum = parseFloat(that.attr('data-lbNum')); that.addClass('bi-avgCalculated'); sum += lbNum; i++; numArr.push(lbNum); } }); var avg = sum / (i - 1); if (lim) { var numArrSorted = numArr.sort(function(a,b) { return a-b }); var numArrMin = numArrSorted[0]; var numArrMax = numArrSorted[numArrSorted.length - 1]; elem.each(function() { var self = $(this); if (self.attr('data-lbNum').indexOf(numArrMin) != -1 && limMinVisible) { self.addClass('bi-lbNum-min').find('.bi-limSpan').html(limMinLabel).addClass('bi-limSpan-min'); } if (self.attr('data-lbNum').indexOf(numArrMax) != -1 && limMaxVisible) { self.addClass('bi-lbNum-max').find('.bi-limSpan').html(limMaxLabel).addClass('bi-limSpan-max'); } if (limLabelPos == 'num') { elem.addClass('bi-limPos-num'); } else if (limLabelPos == 'title') { elem.addClass('bi-limPos-title'); } }); } elem.attr('data-biAvg', avg.toFixed(2)); var trigObj = { that: par.that, sel: sel } $(document).trigger('bi.dataAvgSet', [trigObj]); } } } }, _setAvgMilestone: function(par) { if (par) { var that = par.that; var $el = par.$el; var opt = that.opt; var mlst = opt.milestones; var avgColorIndicator = opt.avgColorIndicator; var avgColorBelowAvg = opt.avgColorBelowAvg; var avgColorAboveAvg = opt.avgColorAboveAvg; var avgAttr = $el.attr('data-biAvg'); if (avgAttr && avgAttr.length > 0) { var avg = parseFloat(avgAttr); var avgObj = { avg: { mlPos: avg, mlId: opt.avgMlId, mlClass: opt.avgMlClass, mlDim: opt.avgMlDim, mlLabel: opt.avgLabel, mlLabelVis: opt.avgLabelVis, mlHoverRange: opt.avgLabelHoverRange, mlLineWidth: opt.avgLineWidth } }; var mlstObj = $.extend({}, mlst, avgObj); if (avgColorIndicator) { var innerBar = $el.find('.bi-barInner'); var lbNum = $el.attr('data-lbnum'); if (parseFloat(lbNum) > avg) { $el.addClass('bi-avgAbove'); if (avgColorAboveAvg) { var colAbove = Plugin.prototype._getColorValue.apply(this, [avgColorAboveAvg]); innerBar.css({'background-color':colAbove}); } } else { $el.addClass('bi-avgBelow'); if (avgColorBelowAvg) { var colBelow = Plugin.prototype._getColorValue.apply(this, [avgColorBelowAvg]); innerBar.css({'background-color':colBelow}); } } } } else { var mlstObj = mlst; } if (mlstObj && !$.isEmptyObject(mlstObj)) { var paramsMlst = { that: par.that, self: par.$el, mlstObj: mlstObj } Plugin.prototype._getMilestones.apply(this, [paramsMlst]); } } }, //Getters (no chainability) ---------------------------------------------------------------------- // getPluginData: function() { var $el = this.$el; var pluginData = $.data($el,'storedAttr'); return pluginData; }, //Public methods --------------------------------------------------------------------------------- // reanimateBar: function() { var $el = this.$el; var $elID = $el.attr('id'); var opt = this.opt; var barLength = $.data($el, 'storedAttr').barLength; var num = $.data($el, 'storedAttr').num; //Get color range class var paramsColorRange = { that: this, num: num } var lengthObj = Plugin.prototype._getColorRangeClass.apply(this, [paramsColorRange]); //Reanimate bar var paramsAnim = { that: this, bl: barLength, reanim: true } var paramsCount = { that: this, target: num } Plugin.prototype._animateBar.apply(this, [paramsAnim]); if (opt.labelNumCount) { Plugin.prototype._labelNumCounter.apply(this, [paramsCount]); } //Trigger event $(document).trigger('bi.reanimateBarStart'); if ($elID) { $(document).trigger('bi_' + $elID + '.reanimateBarStart'); } }, loadNewData: function(par) { if (par) { var newNum = par; var $elID = this.$el.attr('id'); //Get length object var paramsLength = { that: this, num: newNum } var lengthObj = Plugin.prototype._getLength.apply(this, [paramsLength]); var lbNum = lengthObj.lbNum; var barLength = lengthObj.barLength; //Get color range class var paramsColorRange = { that: this, num: parseFloat(lbNum) } var lengthObj = Plugin.prototype._getColorRangeClass.apply(this, [paramsColorRange]); var paramsAnim = { that: this, bl: barLength, loadData: true } var paramsCount = { that: this, target: lbNum } Plugin.prototype._animateBar.apply(this, [paramsAnim]); if (this.opt.labelNumCount) { Plugin.prototype._labelNumCounter.apply(this, [paramsCount]); } //Trigger event $(document).trigger('bi.loadDataStart'); if ($elID) { $(document).trigger('bi_' + $elID + '.loadDataStart'); } //Change plugin stored data var storedData = $.data(this.$el, 'storedAttr'); storedData['barLength'] = barLength; storedData['num'] = parseFloat(newNum); } }, destroy: function() { //console.log('destroy()'); var $el = this.$el; var opt = this.opt; var storedData = $.data($el, 'storedAttr'); var orText = storedData.orText; var orClass = storedData.orClass; $el.removeData() .empty() .html(orText) .attr('class', orClass) .removeAttr('data-lbNum data-biid'); } } $.fn[pluginName] = function(options) { var args = arguments; var selector = $(this).selector; if (options === undefined || typeof options === 'object') { return this.each(function() { if (!$.data(this, 'plugin_' + pluginName)) { $.data(this, 'plugin_' + pluginName, new Plugin(this, options, selector)); } }); } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') { if (Array.prototype.slice.call(args, 1).length == 0 && $.inArray(options, $.fn[pluginName].getters) != -1) { var instance = $.data(this[0], 'plugin_' + pluginName); return instance[options].apply(instance, Array.prototype.slice.call(args,1)); } else { return this.each(function() { var instance = $.data(this, 'plugin_' + pluginName); if (instance instanceof Plugin && typeof instance[options] === 'function') { instance[options].apply(instance, Array.prototype.slice.call(args, 1)); } }); } } } $.fn[pluginName].getters = ['getPluginData']; $.fn[pluginName].defaults = { wrpClass: 'bi-wrp', data: false, style: 'horizontal', theme: 'bi-default-theme', animation: true, animTime: 300, easing: 'easeOutExpo', timeout: 0, colorRange: false, colorRangeLimits: { optimal: '0-40', alert: '41-70', critical: '71-100' }, foreColor: false, backColor: false, labelColor: false, labelVisibility: 'default', labelHoverPos: { top:'0', left:'20px' }, vertLabelPos: 'right', vertLabelAlign: 'middle', horLabelPos: 'topLeft', horTitle: false, numType: 'percent', lbDecimals: 0, numMin: 0, numMax: 100, numMinLabel: false, numMaxLabel: false, numMinLbLeft: false, numMaxLbRight: false, numMinLbTop: false, numMaxLbTop: false, vertBarWidth: 10, horBarHeight: 10, vertBarHeight: 'line', triggerEvent: 'load', forceAnim: false, forceDelay: 100, labelNumCount: true, counterStep: 10, milestones: { 1: { mlPos: 50, mlId: 'mlst-half', mlClass: 'bi-middle-mlst', mlDim: 'inherit', mlLabel: 'Half', mlLabelVis: 'hover', mlHoverRange: 15, mlLineWidth: 1 } }, avgActive: false, avgColorIndicator: false, avgColorBelowAvg: false, avgColorAboveAvg: false, avgMlId: false, avgMlClass: 'bi-average-mlst', avgMlDim: 'inherit', avgLabel: 'Average', avgLabelNum: true, avgLabelVis: 'hover', avgLabelHoverRange: 15, avgLineWidth: 1, limLabel: true, limMinLabel: 'min', limMaxLabel: 'max', limMinVisible: true, limMaxVisible: true, limLabelPos: 'num' } $(document).on('bi.dataAvgSet', function(e,a) { var sel = a.sel; $(sel).each(function() { var self = $(this); var paramsAvg = { that: a.that, $el: self }; Plugin.prototype._setAvgMilestone.apply(this, [paramsAvg]); }); }); })(jQuery, window, document);