Commit a20704a9 authored by Rafal Zajac's avatar Rafal Zajac

Code style clean up

parent 55d19feb
/*! jusas-angularjs-slider - v0.1.13 - (c) Rafal Zajac <rzajac@gmail.com>, Jussi Saarivirta <jusasi@gmail.com>, Angelin Sirbu <angelin.sirbu@gmail.com>, https://github.com/rzajac/angularjs-slider.git - 2015-05-23 */ /*! jusas-angularjs-slider - v0.1.13 - (c) Rafal Zajac <rzajac@gmail.com>, Jussi Saarivirta <jusasi@gmail.com>, Angelin Sirbu <angelin.sirbu@gmail.com>, https://github.com/rzajac/angularjs-slider.git - 2015-05-23 */
angular.module("rzModule",[]).value("throttle",function(a,b,c){var d,e,f,g=Date.now||function(){return(new Date).getTime()},h=null,i=0;c=c||{};var j=function(){i=c.leading===!1?0:g(),h=null,f=a.apply(d,e),d=e=null};return function(){var k=g();i||c.leading!==!1||(i=k);var l=b-(k-i);return d=this,e=arguments,0>=l?(clearTimeout(h),h=null,i=k,f=a.apply(d,e),d=e=null):h||c.trailing===!1||(h=setTimeout(j,l)),f}}).factory("RzSlider",["$timeout","$document","throttle",function(a,b,c){var d=function(a,b,c){this.scope=a,this.attributes=c,this.sliderElem=b,this.range=void 0!==c.rzSliderHigh&&void 0!==c.rzSliderModel,this.handleHalfWidth=0,this.alwaysShowBar=c.rzSliderAlwaysShowBar||!1,this.maxLeft=0,this.precision=0,this.step=0,this.tracking="",this.minValue=0,this.maxValue=0,this.hideLimitLabels=!!c.rzSliderHideLimitLabels||!1,this.valueRange=0,this.initRun=!1,this.customTrFn=null,this.fullBar=null,this.selBar=null,this.minH=null,this.maxH=null,this.flrLab=null,this.ceilLab=null,this.minLab=null,this.maxLab=null,this.cmbLab=null,this.init()};return d.prototype={init:function(){var d=this;this.unbinders=[],this.scope.rzSliderTranslate&&(this.customTrFn=this.scope.rzSliderTranslate()),this.initElemHandles(),this.calcViewDimensions(),this.setMinAndMax(),this.precision=void 0===this.scope.rzSliderPrecision?0:+this.scope.rzSliderPrecision,this.step=void 0===this.scope.rzSliderStep?1:+this.scope.rzSliderStep,a(function(){d.updateCeilLab(),d.updateFloorLab(),d.initHandles(),d.bindEvents()}),this.scope.$on("reCalcViewDimensions",angular.bind(this,this.calcViewDimensions)),angular.element(window).on("resize",angular.bind(this,this.calcViewDimensions)),this.initRun=!0;var e=c(function(){d.setMinAndMax(),d.updateLowHandle(d.valueToOffset(d.scope.rzSliderModel)),d.updateSelectionBar(),d.range&&d.updateCmbLabel()},350,{leading:!1}),f=c(function(){d.setMinAndMax(),d.updateHighHandle(d.valueToOffset(d.scope.rzSliderHigh)),d.updateSelectionBar(),d.updateCmbLabel()},350,{leading:!1});this.scope.$on("rzSliderForceRender",function(){d.resetLabelsValue(),e(),f(),d.resetSlider()}),this.unbinders.push(this.scope.$watch("rzSliderModel",function(a,b){a!==b&&e()})),this.unbinders.push(this.scope.$watch("rzSliderHigh",function(a,b){a!==b&&f()})),this.unbinders.push(this.scope.$watch("rzSliderFloor",function(a,b){a!==b&&d.resetSlider()})),this.unbinders.push(this.scope.$watch("rzSliderCeil",function(a,b){a!==b&&d.resetSlider()})),this.sliderElem.on("$destroy",function(){d.minH.off(".rzslider"),d.maxH.off(".rzslider"),b.off(".rzslider"),angular.element(window).off(".rzslider")}),this.scope.$on("$destroy",function(){d.unbinders.map(function(a){a()})})},resetSlider:function(){this.setMinAndMax(),this.calcViewDimensions(),this.updateCeilLab(),this.updateFloorLab()},resetLabelsValue:function(){this.minLab.rzsv=void 0,this.maxLab.rzsv=void 0},initHandles:function(){this.updateLowHandle(this.valueToOffset(this.scope.rzSliderModel)),this.range&&(this.updateHighHandle(this.valueToOffset(this.scope.rzSliderHigh)),this.updateCmbLabel()),this.updateSelectionBar()},translateFn:function(a,b,c){c=void 0===c?!0:c;var d=this.customTrFn&&c?""+this.customTrFn(a):""+a,e=!1;(void 0===b.rzsv||b.rzsv.length!=d.length||b.rzsv.length>0&&0==b.rzsw)&&(e=!0,b.rzsv=d),b.text(d),e&&this.getWidth(b)},setMinAndMax:function(){this.scope.rzSliderFloor?this.minValue=+this.scope.rzSliderFloor:this.minValue=this.scope.rzSliderFloor=0,this.scope.rzSliderCeil?this.maxValue=+this.scope.rzSliderCeil:this.scope.rzSliderCeil=this.maxValue=this.range?this.scope.rzSliderHigh:this.scope.rzSliderModel,this.scope.rzSliderStep&&(this.step=+this.scope.rzSliderStep),this.valueRange=this.maxValue-this.minValue},initElemHandles:function(){angular.forEach(this.sliderElem.children(),function(a,b){var c=angular.element(a);switch(b){case 0:this.fullBar=c;break;case 1:this.selBar=c;break;case 2:this.minH=c;break;case 3:this.maxH=c;break;case 4:this.flrLab=c;break;case 5:this.ceilLab=c;break;case 6:this.minLab=c;break;case 7:this.maxLab=c;break;case 8:this.cmbLab=c}},this),this.fullBar.rzsl=0,this.selBar.rzsl=0,this.minH.rzsl=0,this.maxH.rzsl=0,this.flrLab.rzsl=0,this.ceilLab.rzsl=0,this.minLab.rzsl=0,this.maxLab.rzsl=0,this.cmbLab.rzsl=0,this.hideLimitLabels&&(this.flrLab.rzAlwaysHide=!0,this.ceilLab.rzAlwaysHide=!0,this.hideEl(this.flrLab),this.hideEl(this.ceilLab)),this.range||(this.cmbLab.remove(),this.maxLab.remove(),this.maxH.rzAlwaysHide=!0,this.hideEl(this.maxH)),this.range||this.alwaysShowBar||(this.maxH.remove(),this.selBar.remove())},calcViewDimensions:function(){var a=this.getWidth(this.minH);this.handleHalfWidth=a/2,this.barWidth=this.getWidth(this.fullBar),this.maxLeft=this.barWidth-a,this.getWidth(this.sliderElem),this.sliderElem.rzsl=this.sliderElem[0].getBoundingClientRect().left,this.initRun&&(this.updateCeilLab(),this.initHandles())},updateCeilLab:function(){this.translateFn(this.scope.rzSliderCeil,this.ceilLab),this.setLeft(this.ceilLab,this.barWidth-this.ceilLab.rzsw),this.getWidth(this.ceilLab)},updateFloorLab:function(){this.translateFn(this.scope.rzSliderFloor,this.flrLab),this.getWidth(this.flrLab)},updateHandles:function(a,b){return"rzSliderModel"===a?(this.updateLowHandle(b),this.updateSelectionBar(),void(this.range&&this.updateCmbLabel())):"rzSliderHigh"===a?(this.updateHighHandle(b),this.updateSelectionBar(),void(this.range&&this.updateCmbLabel())):(this.updateLowHandle(b),this.updateHighHandle(b),this.updateSelectionBar(),void this.updateCmbLabel())},updateLowHandle:function(a){this.setLeft(this.minH,a),this.translateFn(this.scope.rzSliderModel,this.minLab),this.setLeft(this.minLab,a-this.minLab.rzsw/2+this.handleHalfWidth),this.shFloorCeil()},updateHighHandle:function(a){this.setLeft(this.maxH,a),this.translateFn(this.scope.rzSliderHigh,this.maxLab),this.setLeft(this.maxLab,a-this.maxLab.rzsw/2+this.handleHalfWidth),this.shFloorCeil()},shFloorCeil:function(){var a=!1,b=!1;this.minLab.rzsl<=this.flrLab.rzsl+this.flrLab.rzsw+5?(a=!0,this.hideEl(this.flrLab)):(a=!1,this.showEl(this.flrLab)),this.minLab.rzsl+this.minLab.rzsw>=this.ceilLab.rzsl-this.handleHalfWidth-10?(b=!0,this.hideEl(this.ceilLab)):(b=!1,this.showEl(this.ceilLab)),this.range&&(this.maxLab.rzsl+this.maxLab.rzsw>=this.ceilLab.rzsl-10?this.hideEl(this.ceilLab):b||this.showEl(this.ceilLab),this.maxLab.rzsl<=this.flrLab.rzsl+this.flrLab.rzsw+this.handleHalfWidth?this.hideEl(this.flrLab):a||this.showEl(this.flrLab))},updateSelectionBar:function(){this.setWidth(this.selBar,Math.abs(this.maxH.rzsl-this.minH.rzsl)),this.setLeft(this.selBar,this.range?this.minH.rzsl+this.handleHalfWidth:0)},updateCmbLabel:function(){var a,b;this.minLab.rzsl+this.minLab.rzsw+10>=this.maxLab.rzsl?(this.customTrFn?(a=this.customTrFn(this.scope.rzSliderModel),b=this.customTrFn(this.scope.rzSliderHigh)):(a=this.scope.rzSliderModel,b=this.scope.rzSliderHigh),this.translateFn(a+" - "+b,this.cmbLab,!1),this.setLeft(this.cmbLab,this.selBar.rzsl+this.selBar.rzsw/2-this.cmbLab.rzsw/2),this.hideEl(this.minLab),this.hideEl(this.maxLab),this.showEl(this.cmbLab)):(this.showEl(this.maxLab),this.showEl(this.minLab),this.hideEl(this.cmbLab))},roundStep:function(a){var b=this.step/Math.pow(10,this.precision),c=(a-this.minValue)%b,d=c>b/2?a+b-c:a-c;return+d.toFixed(this.precision)},hideEl:function(a){return a.css({opacity:0})},showEl:function(a){return a.rzAlwaysHide?a:a.css({opacity:1})},setLeft:function(a,b){return a.rzsl=b,a.css({left:b+"px"}),b},getWidth:function(a){var b=a[0].getBoundingClientRect();return a.rzsw=b.right-b.left,a.rzsw},setWidth:function(a,b){return a.rzsw=b,a.css({width:b+"px"}),b},valueToOffset:function(a){return(Math.ceil(a)-this.minValue)*this.maxLeft/this.valueRange},offsetToValue:function(a){return Math.ceil(a/this.maxLeft*this.valueRange+this.minValue)},bindEvents:function(){this.minH.on("mousedown",angular.bind(this,this.onStart,this.minH,"rzSliderModel")),this.range&&this.maxH.on("mousedown",angular.bind(this,this.onStart,this.maxH,"rzSliderHigh")),this.minH.on("touchstart",angular.bind(this,this.onStart,this.minH,"rzSliderModel")),this.range&&this.maxH.on("touchstart",angular.bind(this,this.onStart,this.maxH,"rzSliderHigh"))},onStart:function(a,c,d){d.stopPropagation(),d.preventDefault(),""===this.tracking&&(this.calcViewDimensions(),this.tracking=c,a.addClass("rz-active"),d.touches||"undefined"!=typeof d.originalEvent&&d.originalEvent.touches?(b.on("touchmove",angular.bind(this,this.onMove,a)),b.on("touchend",angular.bind(this,this.onEnd))):(b.on("mousemove",angular.bind(this,this.onMove,a)),b.on("mouseup",angular.bind(this,this.onEnd))))},onMove:function(a,b){var c,d,e,f;return c="clientX"in b?b.clientX:"undefined"!=typeof b.originalEvent?b.originalEvent.touches[0].clientX:b.touches[0].clientX,d=this.sliderElem.rzsl,e=c-d-this.handleHalfWidth,0>=e?void(0!==a.rzsl&&(this.scope[this.tracking]=this.minValue,this.updateHandles(this.tracking,0),this.scope.$apply())):e>=this.maxLeft?void(a.rzsl!==this.maxLeft&&(this.scope[this.tracking]=this.maxValue,this.updateHandles(this.tracking,this.maxLeft),this.scope.$apply())):(f=this.offsetToValue(e),f=this.roundStep(f),this.range&&("rzSliderModel"===this.tracking&&f>=this.scope.rzSliderHigh?(this.scope[this.tracking]=this.scope.rzSliderHigh,this.updateHandles(this.tracking,this.maxH.rzsl),this.tracking="rzSliderHigh",this.minH.removeClass("rz-active"),this.maxH.addClass("rz-active")):"rzSliderHigh"===this.tracking&&f<=this.scope.rzSliderModel&&(this.scope[this.tracking]=this.scope.rzSliderModel,this.updateHandles(this.tracking,this.minH.rzsl),this.tracking="rzSliderModel",this.maxH.removeClass("rz-active"),this.minH.addClass("rz-active"))),void(this.scope[this.tracking]!==f&&(this.scope[this.tracking]=f,this.updateHandles(this.tracking,e),this.scope.$apply())))},onEnd:function(a){this.minH.removeClass("rz-active"),this.maxH.removeClass("rz-active"),a.touches||"undefined"!=typeof a.originalEvent&&a.originalEvent.touches?(b.unbind("touchmove"),b.unbind("touchend")):(b.unbind("mousemove"),b.unbind("mouseup")),this.scope.$emit("slideEnded"),this.tracking=""}},d}]).directive("rzslider",["RzSlider",function(a){return{restrict:"E",scope:{rzSliderFloor:"=?",rzSliderCeil:"=?",rzSliderStep:"@",rzSliderPrecision:"@",rzSliderModel:"=?",rzSliderHigh:"=?",rzSliderTranslate:"&",rzSliderHideLimitLabels:"=?",rzSliderAlwaysShowBar:"=?"},template:'<span class="rz-bar"></span><span class="rz-bar rz-selection"></span><span class="rz-pointer"></span><span class="rz-pointer"></span><span class="rz-bubble rz-limit"></span><span class="rz-bubble rz-limit"></span><span class="rz-bubble"></span><span class="rz-bubble"></span><span class="rz-bubble"></span>',link:function(b,c,d){return new a(b,c,d)}}}]); angular.module("rzModule",[]).value("throttle",function(a,b,c){var d,e,f,g=Date.now||function(){return(new Date).getTime()},h=null,i=0;c=c||{};var j=function(){i=c.leading===!1?0:g(),h=null,f=a.apply(d,e),d=e=null};return function(){var k=g();i||c.leading!==!1||(i=k);var l=b-(k-i);return d=this,e=arguments,0>=l?(clearTimeout(h),h=null,i=k,f=a.apply(d,e),d=e=null):h||c.trailing===!1||(h=setTimeout(j,l)),f}}).factory("RzSlider",["$timeout","$document","$window","throttle",function(a,b,c,d){var e=function(a,b,c){this.scope=a,this.attributes=c,this.sliderElem=b,this.range=void 0!==c.rzSliderHigh&&void 0!==c.rzSliderModel,this.handleHalfWidth=0,this.alwaysShowBar=!!c.rzSliderAlwaysShowBar,this.maxLeft=0,this.precision=0,this.step=0,this.tracking="",this.minValue=0,this.maxValue=0,this.hideLimitLabels=!!c.rzSliderHideLimitLabels,this.valueRange=0,this.initHasRun=!1,this.customTrFn=this.scope.rzSliderTranslate()||function(a){return""+a},this.unbinders=[],this.fullBar=null,this.selBar=null,this.minH=null,this.maxH=null,this.flrLab=null,this.ceilLab=null,this.minLab=null,this.maxLab=null,this.cmbLab=null,this.init()};return e.prototype={init:function(){var e=this;this.initElemHandles(),this.calcViewDimensions(),this.setMinAndMax(),this.precision=void 0===this.scope.rzSliderPrecision?0:+this.scope.rzSliderPrecision,this.step=void 0===this.scope.rzSliderStep?1:+this.scope.rzSliderStep,a(function(){e.updateCeilLab(),e.updateFloorLab(),e.initHandles(),e.bindEvents()}),this.scope.$on("reCalcViewDimensions",angular.bind(this,this.calcViewDimensions)),angular.element(c).on("resize",angular.bind(this,this.calcViewDimensions)),this.initHasRun=!0;var f=d(function(){e.setMinAndMax(),e.updateLowHandle(e.valueToOffset(e.scope.rzSliderModel)),e.updateSelectionBar(),e.range&&e.updateCmbLabel()},350,{leading:!1}),g=d(function(){e.setMinAndMax(),e.updateHighHandle(e.valueToOffset(e.scope.rzSliderHigh)),e.updateSelectionBar(),e.updateCmbLabel()},350,{leading:!1});this.scope.$on("rzSliderForceRender",function(){e.resetLabelsValue(),f(),g(),e.resetSlider()}),this.unbinders.push(this.scope.$watch("rzSliderModel",function(a,b){a!==b&&f()})),this.unbinders.push(this.scope.$watch("rzSliderHigh",function(a,b){a!==b&&g()})),this.unbinders.push(this.scope.$watch("rzSliderFloor",function(a,b){a!==b&&e.resetSlider()})),this.unbinders.push(this.scope.$watch("rzSliderCeil",function(a,b){a!==b&&e.resetSlider()})),this.sliderElem.on("$destroy",function(){e.minH.off(".rzslider"),e.maxH.off(".rzslider"),b.off(".rzslider"),angular.element(c).off(".rzslider")}),this.scope.$on("$destroy",function(){e.unbinders.map(function(a){a()})})},resetSlider:function(){this.setMinAndMax(),this.calcViewDimensions(),this.updateCeilLab(),this.updateFloorLab()},resetLabelsValue:function(){this.minLab.rzsv=void 0,this.maxLab.rzsv=void 0},initHandles:function(){this.updateLowHandle(this.valueToOffset(this.scope.rzSliderModel)),this.range&&(this.updateHighHandle(this.valueToOffset(this.scope.rzSliderHigh)),this.updateCmbLabel()),this.updateSelectionBar()},translateFn:function(a,b,c){c=void 0===c?!0:c;var d=c?""+this.customTrFn(a):""+a,e=!1;(void 0===b.rzsv||b.rzsv.length!=d.length||b.rzsv.length>0&&0==b.rzsw)&&(e=!0,b.rzsv=d),b.text(d),e&&this.getWidth(b)},setMinAndMax:function(){this.scope.rzSliderFloor?this.minValue=+this.scope.rzSliderFloor:this.minValue=this.scope.rzSliderFloor=0,this.scope.rzSliderCeil?this.maxValue=+this.scope.rzSliderCeil:this.scope.rzSliderCeil=this.maxValue=this.range?this.scope.rzSliderHigh:this.scope.rzSliderModel,this.scope.rzSliderStep&&(this.step=+this.scope.rzSliderStep),this.valueRange=this.maxValue-this.minValue},initElemHandles:function(){angular.forEach(this.sliderElem.children(),function(a,b){var c=angular.element(a);switch(b){case 0:this.fullBar=c;break;case 1:this.selBar=c;break;case 2:this.minH=c;break;case 3:this.maxH=c;break;case 4:this.flrLab=c;break;case 5:this.ceilLab=c;break;case 6:this.minLab=c;break;case 7:this.maxLab=c;break;case 8:this.cmbLab=c}},this),this.fullBar.rzsl=0,this.selBar.rzsl=0,this.minH.rzsl=0,this.maxH.rzsl=0,this.flrLab.rzsl=0,this.ceilLab.rzsl=0,this.minLab.rzsl=0,this.maxLab.rzsl=0,this.cmbLab.rzsl=0,this.hideLimitLabels&&(this.flrLab.rzAlwaysHide=!0,this.ceilLab.rzAlwaysHide=!0,this.hideEl(this.flrLab),this.hideEl(this.ceilLab)),this.range===!1&&(this.cmbLab.remove(),this.maxLab.remove(),this.maxH.rzAlwaysHide=!0,this.hideEl(this.maxH)),this.range===!1&&this.alwaysShowBar===!1&&(this.maxH.remove(),this.selBar.remove())},calcViewDimensions:function(){var a=this.getWidth(this.minH);this.handleHalfWidth=a/2,this.barWidth=this.getWidth(this.fullBar),this.maxLeft=this.barWidth-a,this.getWidth(this.sliderElem),this.sliderElem.rzsl=this.sliderElem[0].getBoundingClientRect().left,this.initHasRun&&(this.updateCeilLab(),this.initHandles())},updateCeilLab:function(){this.translateFn(this.scope.rzSliderCeil,this.ceilLab),this.setLeft(this.ceilLab,this.barWidth-this.ceilLab.rzsw),this.getWidth(this.ceilLab)},updateFloorLab:function(){this.translateFn(this.scope.rzSliderFloor,this.flrLab),this.getWidth(this.flrLab)},updateHandles:function(a,b){return"rzSliderModel"===a?(this.updateLowHandle(b),this.updateSelectionBar(),void(this.range&&this.updateCmbLabel())):"rzSliderHigh"===a?(this.updateHighHandle(b),this.updateSelectionBar(),void(this.range&&this.updateCmbLabel())):(this.updateLowHandle(b),this.updateHighHandle(b),this.updateSelectionBar(),void this.updateCmbLabel())},updateLowHandle:function(a){this.setLeft(this.minH,a),this.translateFn(this.scope.rzSliderModel,this.minLab),this.setLeft(this.minLab,a-this.minLab.rzsw/2+this.handleHalfWidth),this.shFloorCeil()},updateHighHandle:function(a){this.setLeft(this.maxH,a),this.translateFn(this.scope.rzSliderHigh,this.maxLab),this.setLeft(this.maxLab,a-this.maxLab.rzsw/2+this.handleHalfWidth),this.shFloorCeil()},shFloorCeil:function(){var a=!1,b=!1;this.minLab.rzsl<=this.flrLab.rzsl+this.flrLab.rzsw+5?(a=!0,this.hideEl(this.flrLab)):(a=!1,this.showEl(this.flrLab)),this.minLab.rzsl+this.minLab.rzsw>=this.ceilLab.rzsl-this.handleHalfWidth-10?(b=!0,this.hideEl(this.ceilLab)):(b=!1,this.showEl(this.ceilLab)),this.range&&(this.maxLab.rzsl+this.maxLab.rzsw>=this.ceilLab.rzsl-10?this.hideEl(this.ceilLab):b||this.showEl(this.ceilLab),this.maxLab.rzsl<=this.flrLab.rzsl+this.flrLab.rzsw+this.handleHalfWidth?this.hideEl(this.flrLab):a||this.showEl(this.flrLab))},updateSelectionBar:function(){this.setWidth(this.selBar,Math.abs(this.maxH.rzsl-this.minH.rzsl)),this.setLeft(this.selBar,this.range?this.minH.rzsl+this.handleHalfWidth:0)},updateCmbLabel:function(){var a,b;this.minLab.rzsl+this.minLab.rzsw+10>=this.maxLab.rzsl?(this.customTrFn?(a=this.customTrFn(this.scope.rzSliderModel),b=this.customTrFn(this.scope.rzSliderHigh)):(a=this.scope.rzSliderModel,b=this.scope.rzSliderHigh),this.translateFn(a+" - "+b,this.cmbLab,!1),this.setLeft(this.cmbLab,this.selBar.rzsl+this.selBar.rzsw/2-this.cmbLab.rzsw/2),this.hideEl(this.minLab),this.hideEl(this.maxLab),this.showEl(this.cmbLab)):(this.showEl(this.maxLab),this.showEl(this.minLab),this.hideEl(this.cmbLab))},roundStep:function(a){var b=this.step/Math.pow(10,this.precision),c=(a-this.minValue)%b,d=c>b/2?a+b-c:a-c;return+d.toFixed(this.precision)},hideEl:function(a){return a.css({opacity:0})},showEl:function(a){return a.rzAlwaysHide?a:a.css({opacity:1})},setLeft:function(a,b){return a.rzsl=b,a.css({left:b+"px"}),b},getWidth:function(a){var b=a[0].getBoundingClientRect();return a.rzsw=b.right-b.left,a.rzsw},setWidth:function(a,b){return a.rzsw=b,a.css({width:b+"px"}),b},valueToOffset:function(a){return(Math.ceil(a)-this.minValue)*this.maxLeft/this.valueRange},offsetToValue:function(a){return Math.ceil(a/this.maxLeft*this.valueRange+this.minValue)},bindEvents:function(){this.minH.on("mousedown",angular.bind(this,this.onStart,this.minH,"rzSliderModel")),this.range&&this.maxH.on("mousedown",angular.bind(this,this.onStart,this.maxH,"rzSliderHigh")),this.minH.on("touchstart",angular.bind(this,this.onStart,this.minH,"rzSliderModel")),this.range&&this.maxH.on("touchstart",angular.bind(this,this.onStart,this.maxH,"rzSliderHigh"))},onStart:function(a,c,d){d.stopPropagation(),d.preventDefault(),""===this.tracking&&(this.calcViewDimensions(),this.tracking=c,a.addClass("rz-active"),d.touches||"undefined"!=typeof d.originalEvent&&d.originalEvent.touches?(b.on("touchmove",angular.bind(this,this.onMove,a)),b.on("touchend",angular.bind(this,this.onEnd))):(b.on("mousemove",angular.bind(this,this.onMove,a)),b.on("mouseup",angular.bind(this,this.onEnd))))},onMove:function(a,b){var c,d,e,f;return c="clientX"in b?b.clientX:"undefined"!=typeof b.originalEvent?b.originalEvent.touches[0].clientX:b.touches[0].clientX,d=this.sliderElem.rzsl,e=c-d-this.handleHalfWidth,0>=e?void(0!==a.rzsl&&(this.scope[this.tracking]=this.minValue,this.updateHandles(this.tracking,0))):e>=this.maxLeft?void(a.rzsl!==this.maxLeft&&(this.scope[this.tracking]=this.maxValue,this.updateHandles(this.tracking,this.maxLeft))):(f=this.offsetToValue(e),f=this.roundStep(f),this.range&&("rzSliderModel"===this.tracking&&f>=this.scope.rzSliderHigh?(this.scope[this.tracking]=this.scope.rzSliderHigh,this.updateHandles(this.tracking,this.maxH.rzsl),this.tracking="rzSliderHigh",this.minH.removeClass("rz-active"),this.maxH.addClass("rz-active")):"rzSliderHigh"===this.tracking&&f<=this.scope.rzSliderModel&&(this.scope[this.tracking]=this.scope.rzSliderModel,this.updateHandles(this.tracking,this.minH.rzsl),this.tracking="rzSliderModel",this.maxH.removeClass("rz-active"),this.minH.addClass("rz-active"))),void(this.scope[this.tracking]!==f&&(this.scope[this.tracking]=f,this.updateHandles(this.tracking,e),this.scope.$apply())))},onEnd:function(a){this.minH.removeClass("rz-active"),this.maxH.removeClass("rz-active"),a.touches||"undefined"!=typeof a.originalEvent&&a.originalEvent.touches?(b.unbind("touchmove"),b.unbind("touchend")):(b.unbind("mousemove"),b.unbind("mouseup")),this.scope.$emit("slideEnded"),this.tracking=""}},e}]).directive("rzslider",["RzSlider",function(a){return{restrict:"E",scope:{rzSliderFloor:"=?",rzSliderCeil:"=?",rzSliderStep:"@",rzSliderPrecision:"@",rzSliderModel:"=?",rzSliderHigh:"=?",rzSliderTranslate:"&",rzSliderHideLimitLabels:"=?",rzSliderAlwaysShowBar:"=?"},template:'<span class="rz-bar"></span><span class="rz-bar rz-selection"></span><span class="rz-pointer"></span><span class="rz-pointer"></span><span class="rz-bubble rz-limit"></span><span class="rz-bubble rz-limit"></span><span class="rz-bubble"></span><span class="rz-bubble"></span><span class="rz-bubble"></span>',link:function(b,c,d){return new a(b,c,d)}}}]);
\ No newline at end of file \ No newline at end of file
...@@ -57,7 +57,7 @@ function throttle(func, wait, options) { ...@@ -57,7 +57,7 @@ function throttle(func, wait, options) {
} }
}) })
.factory('RzSlider', ['$timeout', '$document', 'throttle', function($timeout, $document, throttle) .factory('RzSlider', ['$timeout', '$document', '$window', 'throttle', function($timeout, $document, $window, throttle)
{ {
/** /**
* Slider * Slider
...@@ -93,7 +93,7 @@ function throttle(func, wait, options) { ...@@ -93,7 +93,7 @@ function throttle(func, wait, options) {
/** /**
* Slider type * Slider type
* *
* @type {string} * @type {boolean} Set to true for range slider
*/ */
this.range = attributes.rzSliderHigh !== undefined && attributes.rzSliderModel !== undefined; this.range = attributes.rzSliderHigh !== undefined && attributes.rzSliderModel !== undefined;
...@@ -107,9 +107,9 @@ function throttle(func, wait, options) { ...@@ -107,9 +107,9 @@ function throttle(func, wait, options) {
/** /**
* Always show selection bar * Always show selection bar
* *
* @type {string|boolean} * @type {boolean}
*/ */
this.alwaysShowBar = attributes.rzSliderAlwaysShowBar || false; this.alwaysShowBar = !!attributes.rzSliderAlwaysShowBar;
/** /**
* Maximum left the slider handle can have * Maximum left the slider handle can have
...@@ -158,7 +158,7 @@ function throttle(func, wait, options) { ...@@ -158,7 +158,7 @@ function throttle(func, wait, options) {
* *
* @type {boolean} * @type {boolean}
*/ */
this.hideLimitLabels = !!attributes.rzSliderHideLimitLabels || false; this.hideLimitLabels = !!attributes.rzSliderHideLimitLabels;
/** /**
* The delta between min and max value * The delta between min and max value
...@@ -172,14 +172,16 @@ function throttle(func, wait, options) { ...@@ -172,14 +172,16 @@ function throttle(func, wait, options) {
* *
* @type {boolean} * @type {boolean}
*/ */
this.initRun = false; this.initHasRun = false;
/** /**
* Custom translate function * Custom translate function
* *
* @type {function} * @type {function}
*/ */
this.customTrFn = null; this.customTrFn = this.scope.rzSliderTranslate() || function(value) { return '' + value; };
this.unbinders = [];
// Slider DOM elements wrapped in jqLite // Slider DOM elements wrapped in jqLite
this.fullBar = null; // The whole slider bar this.fullBar = null; // The whole slider bar
...@@ -208,17 +210,10 @@ function throttle(func, wait, options) { ...@@ -208,17 +210,10 @@ function throttle(func, wait, options) {
{ {
var self = this; var self = this;
this.unbinders = [];
if(this.scope.rzSliderTranslate)
{
this.customTrFn = this.scope.rzSliderTranslate();
}
this.initElemHandles(); this.initElemHandles();
this.calcViewDimensions(); this.calcViewDimensions();
this.setMinAndMax(); this.setMinAndMax();
this.precision = this.scope.rzSliderPrecision === undefined ? 0 : +this.scope.rzSliderPrecision; this.precision = this.scope.rzSliderPrecision === undefined ? 0 : +this.scope.rzSliderPrecision;
this.step = this.scope.rzSliderStep === undefined ? 1 : +this.scope.rzSliderStep; this.step = this.scope.rzSliderStep === undefined ? 1 : +this.scope.rzSliderStep;
...@@ -234,9 +229,9 @@ function throttle(func, wait, options) { ...@@ -234,9 +229,9 @@ function throttle(func, wait, options) {
this.scope.$on('reCalcViewDimensions', angular.bind(this, this.calcViewDimensions)); this.scope.$on('reCalcViewDimensions', angular.bind(this, this.calcViewDimensions));
// Recalculate stuff if view port dimensions have changed // Recalculate stuff if view port dimensions have changed
angular.element(window).on('resize', angular.bind(this, this.calcViewDimensions)); angular.element($window).on('resize', angular.bind(this, this.calcViewDimensions));
this.initRun = true; this.initHasRun = true;
// Watch for changes to the model // Watch for changes to the model
...@@ -300,7 +295,7 @@ function throttle(func, wait, options) { ...@@ -300,7 +295,7 @@ function throttle(func, wait, options) {
self.minH.off('.rzslider'); self.minH.off('.rzslider');
self.maxH.off('.rzslider'); self.maxH.off('.rzslider');
$document.off('.rzslider'); $document.off('.rzslider');
angular.element(window).off('.rzslider'); angular.element($window).off('.rzslider');
}); });
this.scope.$on('$destroy', function() this.scope.$on('$destroy', function()
...@@ -368,8 +363,8 @@ function throttle(func, wait, options) { ...@@ -368,8 +363,8 @@ function throttle(func, wait, options) {
{ {
useCustomTr = useCustomTr === undefined ? true : useCustomTr; useCustomTr = useCustomTr === undefined ? true : useCustomTr;
var valStr = this.customTrFn && useCustomTr ? '' + this.customTrFn(value) : '' + value, var valStr = useCustomTr ? '' + this.customTrFn(value) : '' + value,
getWidth = false; getWidth = false;
if(label.rzsv === undefined || label.rzsv.length != valStr.length || (label.rzsv.length > 0 && label.rzsw == 0)) if(label.rzsv === undefined || label.rzsv.length != valStr.length || (label.rzsv.length > 0 && label.rzsw == 0))
{ {
...@@ -425,6 +420,7 @@ function throttle(func, wait, options) { ...@@ -425,6 +420,7 @@ function throttle(func, wait, options) {
*/ */
initElemHandles: function() initElemHandles: function()
{ {
// Assign all slider elements to object properties for easy access
angular.forEach(this.sliderElem.children(), function(elem, index) angular.forEach(this.sliderElem.children(), function(elem, index)
{ {
var _elem = angular.element(elem); var _elem = angular.element(elem);
...@@ -444,7 +440,7 @@ function throttle(func, wait, options) { ...@@ -444,7 +440,7 @@ function throttle(func, wait, options) {
}, this); }, this);
// Initialize offsets // Initialize offset cache properties
this.fullBar.rzsl = 0; this.fullBar.rzsl = 0;
this.selBar.rzsl = 0; this.selBar.rzsl = 0;
this.minH.rzsl = 0; this.minH.rzsl = 0;
...@@ -455,6 +451,7 @@ function throttle(func, wait, options) { ...@@ -455,6 +451,7 @@ function throttle(func, wait, options) {
this.maxLab.rzsl = 0; this.maxLab.rzsl = 0;
this.cmbLab.rzsl = 0; this.cmbLab.rzsl = 0;
// Hide limit labels
if(this.hideLimitLabels) if(this.hideLimitLabels)
{ {
this.flrLab.rzAlwaysHide = true; this.flrLab.rzAlwaysHide = true;
...@@ -464,15 +461,18 @@ function throttle(func, wait, options) { ...@@ -464,15 +461,18 @@ function throttle(func, wait, options) {
} }
// Remove stuff not needed in single slider // Remove stuff not needed in single slider
if( ! this.range) if(this.range === false)
{ {
this.cmbLab.remove(); this.cmbLab.remove();
this.maxLab.remove(); this.maxLab.remove();
// Hide max handle
this.maxH.rzAlwaysHide = true; this.maxH.rzAlwaysHide = true;
this.hideEl(this.maxH); this.hideEl(this.maxH);
} }
if( !this.range && !this.alwaysShowBar) // Show selection bar for single slider or not
if(this.range === false && this.alwaysShowBar === false)
{ {
this.maxH.remove(); this.maxH.remove();
this.selBar.remove(); this.selBar.remove();
...@@ -498,7 +498,7 @@ function throttle(func, wait, options) { ...@@ -498,7 +498,7 @@ function throttle(func, wait, options) {
this.getWidth(this.sliderElem); this.getWidth(this.sliderElem);
this.sliderElem.rzsl = this.sliderElem[0].getBoundingClientRect().left; this.sliderElem.rzsl = this.sliderElem[0].getBoundingClientRect().left;
if(this.initRun) if(this.initHasRun)
{ {
this.updateCeilLab(); this.updateCeilLab();
this.initHandles(); this.initHandles();
...@@ -879,7 +879,7 @@ function throttle(func, wait, options) { ...@@ -879,7 +879,7 @@ function throttle(func, wait, options) {
{ {
this.scope[this.tracking] = this.minValue; this.scope[this.tracking] = this.minValue;
this.updateHandles(this.tracking, 0); this.updateHandles(this.tracking, 0);
this.scope.$apply(); //this.scope.$apply();
} }
return; return;
...@@ -891,7 +891,7 @@ function throttle(func, wait, options) { ...@@ -891,7 +891,7 @@ function throttle(func, wait, options) {
{ {
this.scope[this.tracking] = this.maxValue; this.scope[this.tracking] = this.maxValue;
this.updateHandles(this.tracking, this.maxLeft); this.updateHandles(this.tracking, this.maxLeft);
this.scope.$apply(); //this.scope.$apply();
} }
return; return;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment