|
45 | 45 | * @param {number=} min The minimum value the user is allowed to pick. Default 0.
|
46 | 46 | * @param {number=} max The maximum value the user is allowed to pick. Default 100.
|
47 | 47 | */
|
48 |
| -function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdTheming, $mdGesture, $parse) { |
| 48 | +function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdTheming, $mdGesture, $parse, $log) { |
49 | 49 | return {
|
50 | 50 | scope: {},
|
51 | 51 | require: '?ngModel',
|
@@ -185,22 +185,29 @@ function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdThemi
|
185 | 185 | function redrawTicks() {
|
186 | 186 | if (!angular.isDefined(attr.mdDiscrete)) return;
|
187 | 187 |
|
188 |
| - var numSteps = Math.floor( (max - min) / step ); |
189 |
| - if (!tickCanvas) { |
190 |
| - var trackTicksStyle = $window.getComputedStyle(tickContainer[0]); |
191 |
| - tickCanvas = angular.element('<canvas style="position:absolute;">'); |
192 |
| - tickCtx = tickCanvas[0].getContext('2d'); |
193 |
| - tickCtx.fillStyle = trackTicksStyle.backgroundColor || 'black'; |
194 |
| - tickContainer.append(tickCanvas); |
195 |
| - } |
196 |
| - var dimensions = getSliderDimensions(); |
197 |
| - tickCanvas[0].width = dimensions.width; |
198 |
| - tickCanvas[0].height = dimensions.height; |
199 |
| - |
200 |
| - var distance; |
201 |
| - for (var i = 0; i <= numSteps; i++) { |
202 |
| - distance = Math.floor(dimensions.width * (i / numSteps)); |
203 |
| - tickCtx.fillRect(distance - 1, 0, 2, dimensions.height); |
| 188 | + if (step > 0) { |
| 189 | + |
| 190 | + var numSteps = Math.floor( (max - min) / step ); |
| 191 | + if (!tickCanvas) { |
| 192 | + tickCanvas = angular.element('<canvas style="position:absolute;">'); |
| 193 | + tickContainer.append(tickCanvas); |
| 194 | + |
| 195 | + var trackTicksStyle = $window.getComputedStyle(tickContainer[0]); |
| 196 | + tickCtx = tickCanvas[0].getContext('2d'); |
| 197 | + tickCtx.fillStyle = trackTicksStyle.backgroundColor || 'black'; |
| 198 | + } |
| 199 | + var dimensions = getSliderDimensions(); |
| 200 | + tickCanvas[0].width = dimensions.width; |
| 201 | + tickCanvas[0].height = dimensions.height; |
| 202 | + |
| 203 | + var distance; |
| 204 | + for (var i = 0; i <= numSteps; i++) { |
| 205 | + distance = Math.floor(dimensions.width * (i / numSteps)); |
| 206 | + tickCtx.fillRect(distance - 1, 0, 2, dimensions.height); |
| 207 | + } |
| 208 | + |
| 209 | + } else { |
| 210 | + $log.error('Slider step value must be greater than zero when in discrete mode'); |
204 | 211 | }
|
205 | 212 | }
|
206 | 213 |
|
|
0 commit comments