noui-slider.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903
  1. /*=========================================================================================
  2. File Name: noui-slider.js
  3. Description: noUiSlider is a lightweight JavaScript range slider library.
  4. ----------------------------------------------------------------------------------------
  5. Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template
  6. Author: PIXINVENT
  7. Author URL: http://www.themeforest.net/user/pixinvent
  8. ==========================================================================================*/
  9. $(document).ready(function () {
  10. // RTL Support
  11. var direction = 'ltr';
  12. if($('html').data('textdirection') == 'rtl'){
  13. direction = 'rtl';
  14. }
  15. /********************************************
  16. * Slider values *
  17. ********************************************/
  18. // Handles
  19. var handlesSlider = document.getElementById('slider-handles');
  20. noUiSlider.create(handlesSlider, {
  21. start: [4000, 8000],
  22. direction: direction,
  23. range: {
  24. 'min': [2000],
  25. 'max': [10000]
  26. }
  27. });
  28. // Snapping between steps
  29. var snapSlider = document.getElementById('slider-snap');
  30. noUiSlider.create(snapSlider, {
  31. start: [0, 500],
  32. direction: direction,
  33. snap: true,
  34. connect: true,
  35. range: {
  36. 'min': 0,
  37. '10%': 50,
  38. '20%': 100,
  39. '30%': 150,
  40. '40%': 500,
  41. '50%': 800,
  42. 'max': 1000
  43. }
  44. });
  45. /************************************************
  46. * Slider behaviour *
  47. ************************************************/
  48. // Tap
  49. tapSlider = document.getElementById('tap');
  50. noUiSlider.create(tapSlider, {
  51. start: 40,
  52. direction: direction,
  53. behaviour: 'tap',
  54. connect: 'upper',
  55. range: {
  56. 'min': 20,
  57. 'max': 80
  58. }
  59. });
  60. // Drag
  61. var dragSlider = document.getElementById('drag');
  62. noUiSlider.create(dragSlider, {
  63. start: [40, 60],
  64. direction: direction,
  65. behaviour: 'drag',
  66. connect: true,
  67. range: {
  68. 'min': 20,
  69. 'max': 80
  70. }
  71. });
  72. // Fixed dragging
  73. dragFixedSlider = document.getElementById('drag-fixed');
  74. noUiSlider.create(dragFixedSlider, {
  75. start: [40, 60],
  76. direction: direction,
  77. behaviour: 'drag-fixed',
  78. connect: true,
  79. range: {
  80. 'min': 20,
  81. 'max': 80
  82. }
  83. });
  84. // Hover
  85. var hoverSlider = document.getElementById('hover'),
  86. field = document.getElementById('hover-val');
  87. noUiSlider.create(hoverSlider, {
  88. start: 20,
  89. direction: direction,
  90. behaviour: 'hover-snap',
  91. range: {
  92. 'min': 0,
  93. 'max': 10
  94. }
  95. });
  96. hoverSlider.noUiSlider.on('hover', function (value) {
  97. field.innerHTML = value;
  98. });
  99. // Combined options
  100. dragTapSlider = document.getElementById('combined');
  101. noUiSlider.create(dragTapSlider, {
  102. start: [40, 60],
  103. direction: direction,
  104. behaviour: 'drag-tap',
  105. connect: true,
  106. range: {
  107. 'min': 20,
  108. 'max': 80
  109. }
  110. });
  111. /****************************************************
  112. * Slider Scales / Pips *
  113. ****************************************************/
  114. var range_all_sliders = {
  115. 'min': [0],
  116. '10%': [5, 5],
  117. '50%': [40, 10],
  118. 'max': [100]
  119. };
  120. // Range
  121. var pipsRange = document.getElementById('pips-range');
  122. noUiSlider.create(pipsRange, {
  123. range: range_all_sliders,
  124. start: 0,
  125. direction: direction,
  126. pips: {
  127. mode: 'range',
  128. density: 3
  129. }
  130. });
  131. // Steps
  132. var range_step_sliders = {
  133. 'min': [0],
  134. '10%': [5, 5],
  135. '50%': [25, 20],
  136. 'max': [50, 50]
  137. };
  138. function filter500(value, type) {
  139. if (type === 0) {
  140. return value < 50 ? -1 : 0;
  141. }
  142. return value % 50 ? 2 : 1;
  143. }
  144. var pipsStepsFilter = document.getElementById('pips-steps-filter');
  145. noUiSlider.create(pipsStepsFilter, {
  146. range: range_step_sliders,
  147. start: 0,
  148. direction: direction,
  149. pips: {
  150. mode: 'steps',
  151. density: 5,
  152. filter: filter500,
  153. format: wNumb({
  154. decimals: 0,
  155. prefix: '$'
  156. })
  157. }
  158. });
  159. /********************************************
  160. * Slider Colors *
  161. ********************************************/
  162. // Default
  163. var defaultColorSlider = document.getElementById('default-color-slider');
  164. noUiSlider.create(defaultColorSlider, {
  165. start: [45, 55],
  166. direction: direction,
  167. behaviour: 'drag',
  168. connect: true,
  169. range: {
  170. 'min': 20,
  171. 'max': 80
  172. }
  173. });
  174. // Success
  175. var successColorSlider = document.getElementById('success-color-slider');
  176. noUiSlider.create(successColorSlider, {
  177. start: [40, 60],
  178. direction: direction,
  179. behaviour: 'drag',
  180. connect: true,
  181. range: {
  182. 'min': 20,
  183. 'max': 80
  184. }
  185. });
  186. // Info
  187. var infoColorSlider = document.getElementById('info-color-slider');
  188. noUiSlider.create(infoColorSlider, {
  189. start: [35, 65],
  190. direction: direction,
  191. behaviour: 'drag',
  192. connect: true,
  193. range: {
  194. 'min': 20,
  195. 'max': 80
  196. }
  197. });
  198. // Warning
  199. var warningColorSlider = document.getElementById('warning-color-slider');
  200. noUiSlider.create(warningColorSlider, {
  201. start: [45, 55],
  202. direction: direction,
  203. behaviour: 'drag',
  204. connect: true,
  205. range: {
  206. 'min': 20,
  207. 'max': 80
  208. }
  209. });
  210. // Danger
  211. var dangerColorSlider = document.getElementById('danger-color-slider');
  212. noUiSlider.create(dangerColorSlider, {
  213. start: [40, 60],
  214. direction: direction,
  215. behaviour: 'drag',
  216. connect: true,
  217. range: {
  218. 'min': 20,
  219. 'max': 80
  220. }
  221. });
  222. // Colored Connects
  223. var sliderColoredConnects = document.getElementById('colored-connect');
  224. noUiSlider.create(sliderColoredConnects, {
  225. start: [4000, 8000, 12000, 16000],
  226. direction: direction,
  227. connect: [false, true, true, true, true],
  228. range: {
  229. 'min': [2000],
  230. 'max': [20000]
  231. }
  232. });
  233. var connect = sliderColoredConnects.querySelectorAll('.noUi-connect');
  234. var classes = ['bg-primary', 'bg-success', 'bg-info', 'bg-danger', 'bg-warning'];
  235. for (var i = 0; i < connect.length; i++) {
  236. connect[i].classList.add(classes[i]);
  237. }
  238. /********************************************
  239. * Slider Sizing *
  240. ********************************************/
  241. // Extra large options
  242. var xl_options = {
  243. start: [45, 55],
  244. direction: direction,
  245. behaviour: 'drag',
  246. connect: true,
  247. range: {
  248. 'min': 20,
  249. 'max': 80
  250. }
  251. };
  252. var lg_options = {
  253. start: [40, 60],
  254. direction: direction,
  255. behaviour: 'drag',
  256. connect: true,
  257. range: {
  258. 'min': 20,
  259. 'max': 80
  260. }
  261. };
  262. var default_options = {
  263. start: [35, 65],
  264. direction: direction,
  265. behaviour: 'drag',
  266. connect: true,
  267. range: {
  268. 'min': 20,
  269. 'max': 80
  270. }
  271. };
  272. var sm_options = {
  273. start: [30, 70],
  274. direction: direction,
  275. behaviour: 'drag',
  276. connect: true,
  277. range: {
  278. 'min': 20,
  279. 'max': 80
  280. }
  281. };
  282. var xs_options = {
  283. start: [25, 75],
  284. direction: direction,
  285. behaviour: 'drag',
  286. connect: true,
  287. range: {
  288. 'min': 20,
  289. 'max': 80
  290. }
  291. };
  292. // Extra Large
  293. var extraLargeSlider = document.getElementById('extra-large-slider');
  294. var circleExtraLargeSlider = document.getElementById('circle-extra-large-slider');
  295. var squareExtraLargeSlider = document.getElementById('square-extra-large-slider');
  296. noUiSlider.create(extraLargeSlider, xl_options);
  297. noUiSlider.create(circleExtraLargeSlider, xl_options);
  298. noUiSlider.create(squareExtraLargeSlider, xl_options);
  299. // Large
  300. var largeSlider = document.getElementById('large-slider');
  301. var circleLargeSlider = document.getElementById('circle-large-slider');
  302. var squareLargeSlider = document.getElementById('square-large-slider');
  303. noUiSlider.create(largeSlider, lg_options);
  304. noUiSlider.create(circleLargeSlider, lg_options);
  305. noUiSlider.create(squareLargeSlider, lg_options);
  306. // Default
  307. var defaultSlider = document.getElementById('default-slider');
  308. var circleDefaultSlider = document.getElementById('circle-default-slider');
  309. var squareDefaultSlider = document.getElementById('square-default-slider');
  310. noUiSlider.create(defaultSlider, default_options);
  311. noUiSlider.create(circleDefaultSlider, default_options);
  312. noUiSlider.create(squareDefaultSlider, default_options);
  313. // Small
  314. var smallSlider = document.getElementById('small-slider');
  315. var circleSmallSlider = document.getElementById('circle-small-slider');
  316. var squareSmallSlider = document.getElementById('square-small-slider');
  317. noUiSlider.create(smallSlider, sm_options);
  318. noUiSlider.create(circleSmallSlider, sm_options);
  319. noUiSlider.create(squareSmallSlider, sm_options);
  320. // Extra Small
  321. var extraSmallSlider = document.getElementById('extra-small-slider');
  322. var circleExtraSmallSlider = document.getElementById('circle-extra-small-slider');
  323. var squareExtraSmallSlider = document.getElementById('square-extra-small-slider');
  324. noUiSlider.create(extraSmallSlider, xs_options);
  325. noUiSlider.create(circleExtraSmallSlider, xs_options);
  326. noUiSlider.create(squareExtraSmallSlider, xs_options);
  327. /********************************************
  328. * Vertical Slider *
  329. ********************************************/
  330. // Default
  331. var vertical_slider_1 = document.getElementById('slider-vertical-1');
  332. noUiSlider.create(vertical_slider_1, {
  333. start: 20,
  334. direction: direction,
  335. orientation: 'vertical',
  336. range: {
  337. 'min': 0,
  338. 'max': 100
  339. }
  340. });
  341. var vertical_slider_2 = document.getElementById('slider-vertical-2');
  342. noUiSlider.create(vertical_slider_2, {
  343. start: 50,
  344. direction: direction,
  345. orientation: 'vertical',
  346. range: {
  347. 'min': 0,
  348. 'max': 100
  349. }
  350. });
  351. var vertical_slider_3 = document.getElementById('slider-vertical-3');
  352. noUiSlider.create(vertical_slider_3, {
  353. start: 20,
  354. direction: direction,
  355. orientation: 'vertical',
  356. range: {
  357. 'min': 0,
  358. 'max': 100
  359. }
  360. });
  361. var vertical_slider_4 = document.getElementById('slider-vertical-4');
  362. noUiSlider.create(vertical_slider_4, {
  363. start: 50,
  364. direction: direction,
  365. orientation: 'vertical',
  366. range: {
  367. 'min': 0,
  368. 'max': 100
  369. }
  370. });
  371. var vertical_slider_5 = document.getElementById('slider-vertical-5');
  372. noUiSlider.create(vertical_slider_5, {
  373. start: 20,
  374. direction: direction,
  375. orientation: 'vertical',
  376. range: {
  377. 'min': 0,
  378. 'max': 100
  379. }
  380. });
  381. // Connect to lower
  382. var connectLowerSlider1 = document.getElementById('connect-lower-1');
  383. noUiSlider.create(connectLowerSlider1, {
  384. start: 30,
  385. direction: direction,
  386. orientation: 'vertical',
  387. connect: 'lower',
  388. range: {
  389. 'min': 0,
  390. 'max': 100
  391. }
  392. });
  393. var connectLowerSlider2 = document.getElementById('connect-lower-2');
  394. noUiSlider.create(connectLowerSlider2, {
  395. start: 40,
  396. direction: direction,
  397. orientation: 'vertical',
  398. connect: 'lower',
  399. range: {
  400. 'min': 0,
  401. 'max': 100
  402. }
  403. });
  404. var connectLowerSlider3 = document.getElementById('connect-lower-3');
  405. noUiSlider.create(connectLowerSlider3, {
  406. start: 50,
  407. direction: direction,
  408. orientation: 'vertical',
  409. connect: 'lower',
  410. range: {
  411. 'min': 0,
  412. 'max': 100
  413. }
  414. });
  415. var connectLowerSlider4 = document.getElementById('connect-lower-4');
  416. noUiSlider.create(connectLowerSlider4, {
  417. start: 60,
  418. direction: direction,
  419. orientation: 'vertical',
  420. connect: 'lower',
  421. range: {
  422. 'min': 0,
  423. 'max': 100
  424. }
  425. });
  426. var connectLowerSlider5 = document.getElementById('connect-lower-5');
  427. noUiSlider.create(connectLowerSlider5, {
  428. start: 70,
  429. direction: direction,
  430. orientation: 'vertical',
  431. connect: 'lower',
  432. range: {
  433. 'min': 0,
  434. 'max': 100
  435. }
  436. });
  437. // Connect to upper
  438. var connectUpperSlider1 = document.getElementById('connect-upper-1');
  439. noUiSlider.create(connectUpperSlider1, {
  440. start: 30,
  441. direction: direction,
  442. orientation: 'vertical',
  443. connect: 'upper',
  444. range: {
  445. 'min': 0,
  446. 'max': 100
  447. }
  448. });
  449. var connectUpperSlider2 = document.getElementById('connect-upper-2');
  450. noUiSlider.create(connectUpperSlider2, {
  451. start: 40,
  452. direction: direction,
  453. orientation: 'vertical',
  454. connect: 'upper',
  455. range: {
  456. 'min': 0,
  457. 'max': 100
  458. }
  459. });
  460. var connectUpperSlider3 = document.getElementById('connect-upper-3');
  461. noUiSlider.create(connectUpperSlider3, {
  462. start: 50,
  463. direction: direction,
  464. orientation: 'vertical',
  465. connect: 'upper',
  466. range: {
  467. 'min': 0,
  468. 'max': 100
  469. }
  470. });
  471. var connectUpperSlider4 = document.getElementById('connect-upper-4');
  472. noUiSlider.create(connectUpperSlider4, {
  473. start: 60,
  474. direction: direction,
  475. orientation: 'vertical',
  476. connect: 'upper',
  477. range: {
  478. 'min': 0,
  479. 'max': 100
  480. }
  481. });
  482. var connectUpperSlider5 = document.getElementById('connect-upper-5');
  483. noUiSlider.create(connectUpperSlider5, {
  484. start: 70,
  485. direction: direction,
  486. orientation: 'vertical',
  487. connect: 'upper',
  488. range: {
  489. 'min': 0,
  490. 'max': 100
  491. }
  492. });
  493. // Tooltips
  494. var tooltipSlider1 = document.getElementById('slider-tooltips-1');
  495. noUiSlider.create(tooltipSlider1, {
  496. start: [20, 80],
  497. direction: direction,
  498. orientation: 'vertical',
  499. tooltips: [false, wNumb({
  500. decimals: 1
  501. })],
  502. range: {
  503. 'min': 0,
  504. 'max': 100
  505. }
  506. });
  507. var tooltipSlider2 = document.getElementById('slider-tooltips-2');
  508. noUiSlider.create(tooltipSlider2, {
  509. start: [20, 80],
  510. direction: direction,
  511. orientation: 'vertical',
  512. tooltips: [false, wNumb({
  513. decimals: 1
  514. })],
  515. range: {
  516. 'min': 0,
  517. 'max': 100
  518. }
  519. });
  520. var tooltipSlider3 = document.getElementById('slider-tooltips-3');
  521. noUiSlider.create(tooltipSlider3, {
  522. start: [20, 80],
  523. direction: direction,
  524. orientation: 'vertical',
  525. tooltips: [false, wNumb({
  526. decimals: 1
  527. })],
  528. range: {
  529. 'min': 0,
  530. 'max': 100
  531. }
  532. });
  533. // Direction top to bottom
  534. var directionTopBottom1 = document.getElementById('slider-direction-top-bottom-1');
  535. noUiSlider.create(directionTopBottom1, {
  536. range: range_all_sliders,
  537. start: 30,
  538. direction: direction,
  539. connect: 'lower',
  540. orientation: 'vertical',
  541. pips: {
  542. mode: 'range',
  543. density: 5
  544. }
  545. });
  546. var directionTopBottom2 = document.getElementById('slider-direction-top-bottom-2');
  547. noUiSlider.create(directionTopBottom2, {
  548. range: range_all_sliders,
  549. start: 50,
  550. direction: direction,
  551. connect: 'lower',
  552. orientation: 'vertical',
  553. pips: {
  554. mode: 'range',
  555. density: 5
  556. }
  557. });
  558. var directionTopBottom3 = document.getElementById('slider-direction-top-bottom-3');
  559. noUiSlider.create(directionTopBottom3, {
  560. range: range_all_sliders,
  561. start: 70,
  562. direction: direction,
  563. connect: 'lower',
  564. orientation: 'vertical',
  565. pips: {
  566. mode: 'range',
  567. density: 5
  568. }
  569. });
  570. // Limit
  571. var verticalLimitSlider1 = document.getElementById('vertical-limit-1');
  572. noUiSlider.create(verticalLimitSlider1, {
  573. start: [40, 60],
  574. direction: direction,
  575. orientation: 'vertical',
  576. limit: 40,
  577. behaviour: 'drag',
  578. connect: true,
  579. range: {
  580. 'min': 0,
  581. 'max': 100
  582. }
  583. });
  584. var verticalLimitSlider2 = document.getElementById('vertical-limit-2');
  585. noUiSlider.create(verticalLimitSlider2, {
  586. start: [35, 65],
  587. direction: direction,
  588. orientation: 'vertical',
  589. limit: 40,
  590. behaviour: 'drag',
  591. connect: true,
  592. range: {
  593. 'min': 0,
  594. 'max': 100
  595. }
  596. });
  597. var verticalLimitSlider3 = document.getElementById('vertical-limit-3');
  598. noUiSlider.create(verticalLimitSlider3, {
  599. start: [30, 70],
  600. direction: direction,
  601. orientation: 'vertical',
  602. limit: 50,
  603. behaviour: 'drag',
  604. connect: true,
  605. range: {
  606. 'min': 0,
  607. 'max': 100
  608. }
  609. });
  610. var verticalLimitSlider4 = document.getElementById('vertical-limit-4');
  611. noUiSlider.create(verticalLimitSlider4, {
  612. start: [25, 75],
  613. direction: direction,
  614. orientation: 'vertical',
  615. limit: 50,
  616. behaviour: 'drag',
  617. connect: true,
  618. range: {
  619. 'min': 0,
  620. 'max': 100
  621. }
  622. });
  623. var verticalLimitSlider5 = document.getElementById('vertical-limit-5');
  624. noUiSlider.create(verticalLimitSlider5, {
  625. start: [20, 80],
  626. direction: direction,
  627. orientation: 'vertical',
  628. limit: 70,
  629. behaviour: 'drag',
  630. connect: true,
  631. range: {
  632. 'min': 0,
  633. 'max': 100
  634. }
  635. });
  636. /****************************************************
  637. * Horizontal Slider With Time *
  638. ****************************************************/
  639. // Create a new date from a string, return as a timestamp.
  640. function timestamp(str) {
  641. return new Date(str).getTime();
  642. }
  643. 1
  644. function timestamp(str) {
  645. 2
  646. return new Date(str).getTime();
  647. 3
  648. }
  649. // weekdays and months
  650. var weekdays = [
  651. "Sunday", "Monday", "Tuesday",
  652. "Wednesday", "Thursday", "Friday",
  653. "Saturday"
  654. ];
  655. var months = [
  656. "January", "February", "March",
  657. "April", "May", "June", "July",
  658. "August", "September", "October",
  659. "November", "December"
  660. ];
  661. // Append a suffix to dates.
  662. // Example: 23 => 23rd, 1 => 1st.
  663. function nth(d) {
  664. if (d > 3 && d < 21) return 'th';
  665. switch (d % 10) {
  666. case 1:
  667. return "st";
  668. case 2:
  669. return "nd";
  670. case 3:
  671. return "rd";
  672. default:
  673. return "th";
  674. }
  675. }
  676. // Create a string representation of the date.
  677. function formatDate(date) {
  678. return weekdays[date.getDay()] + ", " +
  679. date.getDate() + nth(date.getDate()) + " " +
  680. months[date.getMonth()] + " " +
  681. date.getFullYear();
  682. }
  683. var date = new Date();
  684. // set previous month
  685. var previousMonth = new Date();
  686. previousMonth.setMonth(previousMonth.getMonth() - 1);
  687. var dateSlider = document.getElementById('slider-with-date');
  688. // nouislider settings
  689. noUiSlider.create(dateSlider, {
  690. behaviour: 'tap',
  691. connect: true,
  692. range: {
  693. min: timestamp('2016-06-01') + 24 * 60 * 60 * 1000,
  694. max: timestamp(date)
  695. },
  696. step: 1 * 24 * 60 * 60 * 1000,
  697. start: [timestamp(previousMonth), timestamp(date)],
  698. direction: direction,
  699. });
  700. // get range infos at html
  701. var dateValues = [
  702. document.getElementById('event-start'), document.getElementById('event-end')
  703. ];
  704. dateSlider.noUiSlider.on('update', function (values, handle) {
  705. dateValues[handle].innerHTML = formatDate(new Date(+values[handle]));
  706. });
  707. /****************************************************
  708. * Slider With Input *
  709. ****************************************************/
  710. var select = document.getElementById('slider-select');
  711. // Append the option elements
  712. for (var i = -20; i <= 40; i++) {
  713. var option = document.createElement("option");
  714. option.text = i;
  715. option.value = i;
  716. select.appendChild(option);
  717. }
  718. var sliderWithInput = document.getElementById('slider-with-input');
  719. noUiSlider.create(sliderWithInput, {
  720. start: [10, 30],
  721. direction: direction,
  722. connect: true,
  723. range: {
  724. 'min': -20,
  725. 'max': 40
  726. }
  727. });
  728. var inputNumber = document.getElementById('slider-input-number');
  729. sliderWithInput.noUiSlider.on('update', function (values, handle) {
  730. var value = values[handle];
  731. if (handle) {
  732. inputNumber.value = value;
  733. } else {
  734. select.value = Math.round(value);
  735. }
  736. });
  737. select.addEventListener('change', function () {
  738. sliderWithInput.noUiSlider.set([this.value, null]);
  739. });
  740. inputNumber.addEventListener('change', function () {
  741. sliderWithInput.noUiSlider.set([null, this.value]);
  742. });
  743. });