angular-tek-progress-bar
Version:
angular-tek-progress-bar is an AngularJS module to create and controls progress bar.
8 lines • 4.51 kB
JavaScript
/**
* angular-tek-progress-bar - angular-tek-progress-bar is an AngularJS module to create and controls progress bar.
* @version v0.2.0
* @link https://github.com/TekVanDo/Angular-Tek-Progress-bar
* @license MIT
*/
!function(){"use strict";angular.module("Tek.progressBar",[]).run(["$templateCache",function(e){e.put("Tek.progressBarDirective.html","<div class='progress' ng-class='bar.containerClass'><div class='progress-bar' ng-class='bar.barClass' ng-transclude></div></div>")}])}(),function(){"use strict";angular.module("Tek.progressBar").directive("tekProgressBar",function(){return{scope:{manager:"=",containerClass:"@class",barClass:"@",ngModel:"=",mode:"@"},restrict:"E",transclude:!0,controllerAs:"bar",templateUrl:"Tek.progressBarDirective.html",bindToController:!0,controller:["$scope","$element",function(e,t){function n(e,t){var n=e.find("div");this.mode=t,this.containerElement=angular.element(n[0]),this.containerElement.addClass(s[t+"Class"]),this.barContainer=angular.element(n[1]),this.value=0}var r=this,s={fullClass:"full-bar",emptyClass:"empty-bar",verticalClass:"vertical",horizontalClass:""};n.prototype.get=function(){return this.value},n.prototype.set=function(e){this.value=e,"horizontal"===this.mode&&this.barContainer.css("width",e+"%"),"vertical"===this.mode&&this.barContainer.css("height",e+"%"),this.updateClasses()},n.prototype.updateClasses=function(){return this.value<=0?(this.containerElement.removeClass(s.fullClass),this.containerElement.addClass(s.emptyClass)):this.value>=100?(this.containerElement.removeClass(s.emptyClass),this.containerElement.addClass(s.fullClass)):(this.containerElement.removeClass(s.fullClass),void this.containerElement.removeClass(s.emptyClass))},n.prototype.setAnimation=function(e){e===!0?this.barContainer.css("transition",""):this.barContainer.css("transition","none")},r.init=function(){r.mode="vertical"===r.mode?r.mode:"horizontal",r.progressObj=new n(t,r.mode);var s={get:function(){return r.progressObj.get()},set:function(t){void 0!==r.ngModel?e.$evalAsync(function(){r.ngModel=t}):r.progressObj.set(t)},setAnimation:function(e){r.progressObj.setAnimation(e)}};r.manager&&(r.manager._getDefer().resolve(s),e.$on("$destroy",function(){r.manager._updateDefer()})),void 0!==r.ngModel&&e.$watch("bar.ngModel",function(e){("number"!=typeof e||0>e||e!==e)&&(e=0),e>100&&(e=100),r.manager&&r.manager._updateValue(e),r.progressObj.set(e)})},r.init()}]}})}(),function(){"use strict";var e=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}();angular.module("Tek.progressBar").factory("progressBarManager",["$q",function(t){return function(n){var r=t.defer(),s=null,i=0,a=!0,o=!1,u={incrementSpeed:300,incrementStrategy:function(e){var t=0;return e>=0&&25>e?t=3*Math.random()+3:e>=25&&65>e?t=3*Math.random():e>=65&&90>e?t=2*Math.random():e>=90&&99>e&&(t=.5),Math.round(100*(e+t))/100}};n&&angular.extend(u,n);var l=function(){var e=null;return{increment:function(){c.set(u.incrementStrategy(i))},setInterval:function(){var t=this;o&&(o=!1,c.clear()),e||(e=setInterval(function(){t.increment()},u.incrementSpeed))},clearInterval:function(){clearInterval(e),e=null},isInProgress:function(){return!!e}}}(),c={_getDefer:function(){return r},_updateDefer:function(){r=t.defer(),s=null,r.promise.then(function(e){s=e,s.set(i),s.setAnimation(a)})},_updateValue:function(e){i=e},getPromise:function(){return r.promise},set:function(e){if("number"!=typeof e||e!==e)throw new Error("Wrong value");return 0>e&&(e=0),e>100&&(e=100),i=e,o?(o=!1,this.clear(e),this):(s&&s.set(i),this)},get:function(){return i},isInProgress:function(){return l.isInProgress()},increase:function(e){return"number"==typeof e&&e===e?this.set(i+e):l.increment(),this},start:function(){return l.setInterval(),this},stop:function(){return l.clearInterval(),this},done:function(){return this.stop(),this.set(100),o=!0,this},reset:function(){return this.stop(),this.set(0),this},clear:function(n){var r=this.isAnimated(),s=this;this.stop(),this.setAnimation(!1),this.reset();var i=t.defer();return e(function(){s.setAnimation(r),i.resolve()}),i.promise.then(function(){void 0!==n&&s.set(n)}),this},setAnimation:function(e){return a=!!e,r.promise.then(function(e){e.setAnimation(a)}),this},isAnimated:function(){return a}};return c._updateDefer(0),c}}])}();
//# sourceMappingURL=tek.progress-bar.min.js.map