Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *
- * Обработчик для фильтров в блоке туров, при смене значения фильтра:
- * - удаляем текущие туры в блоке
- * - добавляем выбранный параметр фильтра в "Загрузить еще" (data-meta-query, data-taxonomy-terms) и обнуляем offset
- * - эмулируем запуск "Загрузить еще" (показываем туры)
- */
- $('.filters_line.cf select.styleselect').on('change', function() {
- $(this).parents('.filters_line.cf').next('.content_boxes').html('');
- var selected_val = $(this).val();
- var block_type = $(this).attr('data-block-type');
- var more_button = $('.de-show-more-button[data-block-type="'+block_type+'"]');
- var updated_button = more_button.clone().insertAfter(more_button);
- more_button.remove();
- if ($(this).attr('id') == 'where_to_go') {
- if (selected_val == '') {
- updated_button.removeAttr('data-taxonomy data-taxonomy-terms');
- } else {
- updated_button.attr({
- "data-taxonomy": "tax_region",
- "data-taxonomy-terms": selected_val
- });
- }
- }
- // Price
- if ($(this).attr('id') == 'priceto') {
- var meta_query = $.parseJSON(updated_button.attr('data-meta-query'));
- if (selected_val == '') {
- // если цена поменялась на пустое значение - удалить свойство
- $.each( meta_query, function( key, obj ) {
- if (obj.key == 'min_price')
- delete meta_query[key];
- });
- // количество св-в меньше <= 2 - оставляем один [параметр]
- if (Object.keys(meta_query).length <= 2) {
- $.each( meta_query, function( key, obj ) {
- if (key != 'relation')
- meta_query = [obj];
- });
- }
- meta_query = JSON.stringify(meta_query);
- } else {
- // если цена поменялась на непустое значение - добавить свойство
- if ($.isArray(meta_query)) {
- // если других доп параметров нет
- meta_query = JSON.stringify({"relation":"AND","0":meta_query[0],"1":{"key":"min_price","value":selected_val,"type":"numeric","compare":"<="}});
- } else {
- // если есть другие параметры
- if (meta_query.relation.length) {
- is_exist_property = false;
- max_key = 0;
- $.each( meta_query, function( key, obj ) {
- max_key = (max_key < parseInt(key)) ? parseInt(key) : max_key;
- if (obj.key == "min_price") {
- obj.value = selected_val;
- is_exist_property = true;
- }
- });
- // если цены не было
- if(!is_exist_property)
- meta_query[max_key+1] = {"key":"min_price","value":selected_val,"type":"numeric","compare":"<="};
- }
- meta_query = JSON.stringify(meta_query);
- }
- }
- updated_button.attr({
- "data-meta-query": meta_query
- });
- }
- // Nights
- if ($(this).attr('id') == 'nights') {
- var meta_query = $.parseJSON(updated_button.attr('data-meta-query'));
- if (selected_val == '') {
- // если цена поменялась на пустое значение - удалить свойство
- $.each( meta_query, function( key, obj ) {
- if (obj.key == 'nights')
- delete meta_query[key];
- });
- // количество св-в меньше <= 2 -
- if (Object.keys(meta_query).length <= 2) {
- $.each( meta_query, function( key, obj ) {
- if (key != 'relation')
- meta_query = [obj];
- });
- }
- meta_query = JSON.stringify(meta_query);
- } else {
- // если цена поменялась на непустое значение - добавить свойство
- if ($.isArray(meta_query)) {
- // если других доп параметров нет
- meta_query = JSON.stringify({"relation":"AND","0":meta_query[0],"1":{"key":"nights","value":selected_val,"type":"numeric","compare":"="}});
- } else {
- // если есть другие параметры
- if (meta_query.relation.length) {
- is_exist_property = false;
- max_key = 0;
- $.each( meta_query, function( key, obj ) {
- max_key = (max_key < parseInt(key)) ? parseInt(key) : max_key;
- console.log(max_key);
- if (obj.key == "nights") {
- obj.value = selected_val;
- is_exist_property = true;
- }
- });
- if(!is_exist_property)
- meta_query[max_key+1] = {"key":"nights","value":selected_val,"type":"numeric","compare":"="};
- }
- meta_query = JSON.stringify(meta_query);
- }
- }
- updated_button.attr({
- "data-meta-query": meta_query
- });
- }
- updated_button.attr({
- "data-start-page": 0,
- "data-offset": 0
- });
- if (updated_button.hasClass('done'))
- updated_button.removeClass('done').show();
- updated_button.data('de-show-more', new $.de_show_more(updated_button)).click();
- updated_button.attr({
- "data-start-page": 1
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement