Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1.  
  2. *
  3. * Обработчик для фильтров в блоке туров, при смене значения фильтра:
  4. * - удаляем текущие туры в блоке
  5. * - добавляем выбранный параметр фильтра в "Загрузить еще" (data-meta-query, data-taxonomy-terms) и обнуляем offset
  6. * - эмулируем запуск "Загрузить еще" (показываем туры)
  7. */
  8. $('.filters_line.cf select.styleselect').on('change', function() {
  9. $(this).parents('.filters_line.cf').next('.content_boxes').html('');
  10.  
  11. var selected_val = $(this).val();
  12. var block_type = $(this).attr('data-block-type');
  13. var more_button = $('.de-show-more-button[data-block-type="'+block_type+'"]');
  14. var updated_button = more_button.clone().insertAfter(more_button);
  15.  
  16. more_button.remove();
  17.  
  18. if ($(this).attr('id') == 'where_to_go') {
  19. if (selected_val == '') {
  20. updated_button.removeAttr('data-taxonomy data-taxonomy-terms');
  21. } else {
  22. updated_button.attr({
  23. "data-taxonomy": "tax_region",
  24. "data-taxonomy-terms": selected_val
  25. });
  26. }
  27. }
  28.  
  29. // Price
  30. if ($(this).attr('id') == 'priceto') {
  31.  
  32. var meta_query = $.parseJSON(updated_button.attr('data-meta-query'));
  33.  
  34. if (selected_val == '') {
  35. // если цена поменялась на пустое значение - удалить свойство
  36. $.each( meta_query, function( key, obj ) {
  37. if (obj.key == 'min_price')
  38. delete meta_query[key];
  39. });
  40.  
  41. // количество св-в меньше <= 2 - оставляем один [параметр]
  42. if (Object.keys(meta_query).length <= 2) {
  43. $.each( meta_query, function( key, obj ) {
  44. if (key != 'relation')
  45. meta_query = [obj];
  46. });
  47. }
  48.  
  49. meta_query = JSON.stringify(meta_query);
  50.  
  51. } else {
  52. // если цена поменялась на непустое значение - добавить свойство
  53. if ($.isArray(meta_query)) {
  54. // если других доп параметров нет
  55. meta_query = JSON.stringify({"relation":"AND","0":meta_query[0],"1":{"key":"min_price","value":selected_val,"type":"numeric","compare":"<="}});
  56. } else {
  57. // если есть другие параметры
  58. if (meta_query.relation.length) {
  59. is_exist_property = false;
  60. max_key = 0;
  61.  
  62. $.each( meta_query, function( key, obj ) {
  63. max_key = (max_key < parseInt(key)) ? parseInt(key) : max_key;
  64. if (obj.key == "min_price") {
  65. obj.value = selected_val;
  66. is_exist_property = true;
  67. }
  68. });
  69.  
  70. // если цены не было
  71. if(!is_exist_property)
  72. meta_query[max_key+1] = {"key":"min_price","value":selected_val,"type":"numeric","compare":"<="};
  73.  
  74. }
  75. meta_query = JSON.stringify(meta_query);
  76. }
  77. }
  78.  
  79. updated_button.attr({
  80. "data-meta-query": meta_query
  81. });
  82.  
  83. }
  84.  
  85. // Nights
  86. if ($(this).attr('id') == 'nights') {
  87.  
  88. var meta_query = $.parseJSON(updated_button.attr('data-meta-query'));
  89.  
  90. if (selected_val == '') {
  91. // если цена поменялась на пустое значение - удалить свойство
  92. $.each( meta_query, function( key, obj ) {
  93. if (obj.key == 'nights')
  94. delete meta_query[key];
  95. });
  96.  
  97. // количество св-в меньше <= 2 -
  98. if (Object.keys(meta_query).length <= 2) {
  99. $.each( meta_query, function( key, obj ) {
  100. if (key != 'relation')
  101. meta_query = [obj];
  102. });
  103. }
  104.  
  105. meta_query = JSON.stringify(meta_query);
  106.  
  107. } else {
  108. // если цена поменялась на непустое значение - добавить свойство
  109. if ($.isArray(meta_query)) {
  110. // если других доп параметров нет
  111. meta_query = JSON.stringify({"relation":"AND","0":meta_query[0],"1":{"key":"nights","value":selected_val,"type":"numeric","compare":"="}});
  112. } else {
  113. // если есть другие параметры
  114. if (meta_query.relation.length) {
  115. is_exist_property = false;
  116. max_key = 0;
  117.  
  118. $.each( meta_query, function( key, obj ) {
  119. max_key = (max_key < parseInt(key)) ? parseInt(key) : max_key;
  120. console.log(max_key);
  121. if (obj.key == "nights") {
  122. obj.value = selected_val;
  123. is_exist_property = true;
  124. }
  125. });
  126.  
  127. if(!is_exist_property)
  128. meta_query[max_key+1] = {"key":"nights","value":selected_val,"type":"numeric","compare":"="};
  129. }
  130. meta_query = JSON.stringify(meta_query);
  131. }
  132. }
  133.  
  134. updated_button.attr({
  135. "data-meta-query": meta_query
  136. });
  137.  
  138. }
  139.  
  140. updated_button.attr({
  141. "data-start-page": 0,
  142. "data-offset": 0
  143. });
  144.  
  145. if (updated_button.hasClass('done'))
  146. updated_button.removeClass('done').show();
  147.  
  148. updated_button.data('de-show-more', new $.de_show_more(updated_button)).click();
  149. updated_button.attr({
  150. "data-start-page": 1
  151. });
  152. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement