generic-slider.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. GenericSlider = {
  2. initSimpleSlider: function(sliderElement, inputElement, startVal, minVal, maxVal, callbackOnChange, callbackOnReposition) {
  3. var slider = sliderElement,
  4. sliderInput = inputElement;
  5. $(sliderInput).val(startVal);
  6. slider.slider(
  7. {
  8. min: minVal,
  9. max: maxVal,
  10. value: startVal,
  11. slide: function( event, ui ) {
  12. var value = ui.value;
  13. $(sliderInput).val(value);
  14. callbackOnChange(value);
  15. }
  16. }
  17. );
  18. slider.on('reposition', function() {
  19. value = callbackOnReposition();
  20. slider.slider('value', value);
  21. $(sliderInput).val(value);
  22. });
  23. sliderInput.change(function(e) {
  24. e.preventDefault();
  25. e.stopPropagation();
  26. var value = $(sliderInput).val();
  27. if(value < minVal || value > maxVal) {
  28. $(sliderInput).val(slider.slider('value'));
  29. return;
  30. }
  31. slider.slider('value', value);
  32. callbackOnChange(value);
  33. });
  34. },
  35. initSlider: function(sliderElement, inputElements, minVal, maxVal, leftVal, rightVal, callbackOnChange, callbackOnReposition) {
  36. var slider = sliderElement,
  37. sliderInputs = inputElements;
  38. $(sliderInputs[0]).val(minVal);
  39. $(sliderInputs[1]).val(maxVal);
  40. slider.slider(
  41. {
  42. range: true,
  43. min: minVal,
  44. max: maxVal,
  45. values: [ leftVal, rightVal ],
  46. slide: function( event, ui ) {
  47. var values = ui.values;
  48. $(sliderInputs[0]).val(values[0]);
  49. $(sliderInputs[1]).val(values[1]);
  50. callbackOnChange(values);
  51. }
  52. }
  53. );
  54. slider.on('reposition', function() {
  55. values = callbackOnReposition();
  56. slider.slider('values', values);
  57. $(sliderInputs[0]).val(values[0]);
  58. $(sliderInputs[1]).val(values[1]);
  59. });
  60. sliderInputs.change(function(e) {
  61. e.preventDefault();
  62. e.stopPropagation();
  63. var curMin = $(sliderInputs[0]).val(),
  64. curMax = $(sliderInputs[1]).val(),
  65. values = [curMin, curMax];
  66. if(curMin < minVal) {
  67. $(sliderInputs[0]).val(slider.slider('values')[0]);
  68. return;
  69. }
  70. if(curMax > maxVal) {
  71. $(sliderInputs[1]).val(slider.slider('values')[1]);
  72. return;
  73. }
  74. slider.slider('values', values);
  75. callbackOnChange(values);
  76. });
  77. },
  78. setPosSlider: function(sliderElement, inputElements, leftVal, rightVal) {
  79. var slider = sliderElement,
  80. sliderInputs = inputElements;
  81. $(sliderInputs[0]).val(leftVal);
  82. $(sliderInputs[1]).val(rightVal);
  83. slider.slider(
  84. {
  85. range: true,
  86. values: [ leftVal, rightVal ],
  87. }
  88. );
  89. }
  90. }