daterange.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. require(['jquery', 'domReady!'], function ($) {
  2. 'use strict';
  3. $(document).ready(function () {
  4. /**
  5. * Update url params
  6. * @param {String} uri
  7. * @param {String} key
  8. * @param {String} value
  9. * @returns {String}
  10. */
  11. function updateUrlParameter(uri, key, value) {
  12. var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i'),
  13. separator = uri.indexOf('?') !== -1 ? '&' : '?';
  14. if (uri.match(re)) {
  15. uri = uri.replace(re, '$1' + key + '=' + value + '$2');
  16. } else {
  17. uri = uri + separator + key + '=' + value;
  18. }
  19. return uri;
  20. }
  21. /**
  22. * Change urls
  23. * @param {String} value
  24. */
  25. function changeUrls(value) {
  26. var elmToChange =
  27. [
  28. '#connector_developer_settings_sync_settings_reset_orders',
  29. '#connector_developer_settings_sync_settings_reset_reviews',
  30. '#connector_developer_settings_sync_settings_reset_wishlists',
  31. '#connector_developer_settings_sync_settings_reset_catalog'
  32. ];
  33. $.each(elmToChange, function (k, v) {
  34. var str = $(v).attr('onclick'),
  35. updatedUrl = updateUrlParameter(str, value, encodeURIComponent($('#' + value).val()));
  36. $(v).attr('onclick', updatedUrl);
  37. });
  38. }
  39. /**
  40. * Observe change on given element
  41. * @param {String} value
  42. */
  43. function observeChange(value) {
  44. $('#' + value).change(function () {
  45. changeUrls(value);
  46. });
  47. }
  48. /**
  49. * Init
  50. */
  51. function start() {
  52. var elmToObserve = ['from', 'to'];
  53. $.each(elmToObserve, function (key, value) {
  54. observeChange(value);
  55. });
  56. }
  57. start();
  58. });
  59. });