|
31 | 31 | 'use strict';
|
32 | 32 | var module = angular.module('rzModule', [])
|
33 | 33 |
|
34 |
| - .value('defaultOptions', { |
35 |
| - floor: 0, |
36 |
| - ceil: null, //defaults to rz-slider-model |
37 |
| - step: 1, |
38 |
| - precision: 0, |
39 |
| - translate: null, |
40 |
| - draggableRange: false, |
41 |
| - showSelectionBar: false, |
42 |
| - hideLimitLabels: false, |
43 |
| - readOnly: false, |
44 |
| - disabled: false, |
45 |
| - interval: 350, |
46 |
| - showTicks: false, |
47 |
| - showTicksValues: false, |
48 |
| - onStart: null, |
49 |
| - onChange: null, |
50 |
| - onEnd: null |
| 34 | + .factory('RzSliderOptions', function() { |
| 35 | + var defaultOptions = { |
| 36 | + floor: 0, |
| 37 | + ceil: null, //defaults to rz-slider-model |
| 38 | + step: 1, |
| 39 | + precision: 0, |
| 40 | + translate: null, |
| 41 | + draggableRange: false, |
| 42 | + showSelectionBar: false, |
| 43 | + hideLimitLabels: false, |
| 44 | + readOnly: false, |
| 45 | + disabled: false, |
| 46 | + interval: 350, |
| 47 | + showTicks: false, |
| 48 | + showTicksValues: false, |
| 49 | + scale: 1, |
| 50 | + onStart: null, |
| 51 | + onChange: null, |
| 52 | + onEnd: null |
| 53 | + }; |
| 54 | + var globalOptions = {}; |
| 55 | + |
| 56 | + var factory = {}; |
| 57 | + /** |
| 58 | + * `options({})` allows global configuration of all sliders in the |
| 59 | + * application. |
| 60 | + * |
| 61 | + * var app = angular.module( 'App', ['rzModule'], function( RzSliderOptions ) { |
| 62 | + * // show ticks for all sliders |
| 63 | + * RzSliderOptions.options( { showTicks: true } ); |
| 64 | + * }); |
| 65 | + */ |
| 66 | + factory.options = function(value) { |
| 67 | + angular.extend(globalOptions, value); |
| 68 | + }; |
| 69 | + |
| 70 | + factory.getOptions = function(options) { |
| 71 | + return angular.extend({}, defaultOptions, globalOptions, options); |
| 72 | + }; |
| 73 | + |
| 74 | + return factory; |
51 | 75 | })
|
52 | 76 |
|
53 | 77 | .value('throttle',
|
|
97 | 121 | };
|
98 | 122 | })
|
99 | 123 |
|
100 |
| - .factory('RzSlider', ['$timeout', '$document', '$window', 'defaultOptions', 'throttle', function($timeout, $document, $window, defaultOptions, throttle) { |
| 124 | + .factory('RzSlider', ['$timeout', '$document', '$window', 'RzSliderOptions', 'throttle', function($timeout, $document, $window, RzSliderOptions, throttle) { |
101 | 125 | 'use strict';
|
102 | 126 |
|
103 | 127 | /**
|
|
326 | 350 | * Read the user options and apply them to the slider model
|
327 | 351 | */
|
328 | 352 | applyOptions: function() {
|
329 |
| - var userOpts = this.scope.rzSliderOptions; |
330 |
| - this.options = {}; |
331 |
| - for (var option_name in defaultOptions) { |
332 |
| - if (!userOpts || userOpts[option_name] === undefined) |
333 |
| - this.options[option_name] = defaultOptions[option_name]; |
334 |
| - else |
335 |
| - this.options[option_name] = userOpts[option_name]; |
336 |
| - } |
| 353 | + this.options = RzSliderOptions.getOptions(this.scope.rzSliderOptions); |
| 354 | + |
337 | 355 | if (this.options.step <= 0)
|
338 | 356 | this.options.step = 1;
|
339 | 357 | this.range = this.scope.rzSliderModel !== undefined && this.scope.rzSliderHigh !== undefined;
|
|
915 | 933 | */
|
916 | 934 | getWidth: function(elem) {
|
917 | 935 | var val = elem[0].getBoundingClientRect();
|
918 |
| - elem.rzsw = val.right - val.left; |
| 936 | + elem.rzsw = (val.right - val.left) * this.options.scale; |
919 | 937 | return elem.rzsw;
|
920 | 938 | },
|
921 | 939 |
|
|
982 | 1000 | if (!this.range) {
|
983 | 1001 | return this.minH;
|
984 | 1002 | }
|
985 |
| - var offset = this.getEventX(event) - this.sliderElem.rzsl - this.handleHalfWidth; |
| 1003 | + var offset = (this.getEventX(event) - this.sliderElem.rzsl - this.handleHalfWidth) * this.options.scale; |
986 | 1004 | return Math.abs(offset - this.minH.rzsl) < Math.abs(offset - this.maxH.rzsl) ? this.minH : this.maxH;
|
987 | 1005 | },
|
988 | 1006 |
|
|
1095 | 1113 | sliderLO, newOffset, newValue;
|
1096 | 1114 |
|
1097 | 1115 | sliderLO = this.sliderElem.rzsl;
|
1098 |
| - newOffset = eventX - sliderLO - this.handleHalfWidth; |
| 1116 | + newOffset = (eventX - sliderLO - this.handleHalfWidth) * this.options.scale; |
1099 | 1117 |
|
1100 | 1118 | if (newOffset <= 0) {
|
1101 | 1119 | if (pointer.rzsl === 0)
|
|
0 commit comments