diff --git a/templates/client/accounts/feed.html b/templates/client/accounts/feed.html index b4974111..4237fb73 100644 --- a/templates/client/accounts/feed.html +++ b/templates/client/accounts/feed.html @@ -28,7 +28,7 @@
@@ -41,7 +41,7 @@ @@ -106,7 +106,7 @@ filterInputId: 'filter-place-filter-input', modalTrigger: 'filter-place-modal-trigger', selectedItemsContainer: 'filter-csb-selected-items', - clearAllButtonClass: 'clear-all-button', + clearAllButtonClass: 'modal-clear', applyBtnClass: 'modal-approve', tagsBoxId: 'filter-places-tags', deleteTagClass: 'csbs-del', @@ -129,7 +129,7 @@ subjectTriggerWrapId: 'filter-subj-checks', //switched by default defaultOn: ['f-s-exhibition-check', 'f-s-conference-check'], - clearAllButtonClass: 'clear-all-button', + clearAllButtonClass: 'modal-clear', applyBtnClass: 'modal-approve', tagsBoxId: 'filter-subject-tags', deleteTagClass: 'csbs-del', diff --git a/templates/client/static_client/js/_modules/block.search.js b/templates/client/static_client/js/_modules/block.search.js index 7975dfb6..3762241d 100644 --- a/templates/client/static_client/js/_modules/block.search.js +++ b/templates/client/static_client/js/_modules/block.search.js @@ -1423,7 +1423,7 @@ if (EXPO.searchBlock){ } } $('.level.active',this.$modal).removeClass('active'); - this._refreshText() + this._refreshText(); self.selectedWrap.removeClass('visible'); }, /** diff --git a/templates/client/static_client/js/_modules/page.events.feed.js b/templates/client/static_client/js/_modules/page.events.feed.js index c62afba8..ec85b645 100644 --- a/templates/client/static_client/js/_modules/page.events.feed.js +++ b/templates/client/static_client/js/_modules/page.events.feed.js @@ -312,12 +312,9 @@ if (EXPO.events.feed) { } return false; }); - $('#'+self.opt.deleteId).on('click',function () { - $('.' + self.opt.deleteTagClass, $modal).trigger('click'); - }); - $('.clear', $modal).on('click', function () { - self.resetList(); - return false; + $('.del-on-page').on('click',function () { + var dataCheckboxId = $(this).attr('data-checkbox-id'); + $('.' + self.opt.deleteTagClass+'[data-checkbox-id="'+dataCheckboxId+'"]', $modal).trigger('click'); }); self._autocompleteInit(); $('.' + applyBtnClass, $modal).on('click', function () { @@ -326,8 +323,10 @@ if (EXPO.events.feed) { }); // кнопка "очистить параметры" - $modalTrigger.siblings('.' + self.opt.clearAllButtonClass).on('click', function () { + $('.'+self.opt.clearAllButtonClass,$modal).on('click', function (e) { + e.preventDefault(); self.resetList(); + return false; }); }); }; @@ -665,14 +664,17 @@ if (EXPO.events.feed) { var self = this; for (var key in self.itemsSelected) { if (self.itemsSelected.hasOwnProperty(key)) { - $('#' + key, self.$selfContainer).prop('checked', false).trigger('change'); + $('#'+key, self.$selfContainer).prop('checked', false).closest('.custom-radio-check').removeClass('active'); dna.destroy(self.itemsSelected[key]); + dna.destroy(self.tagsBoxItems[key]); + } } - $('.sublist', self.$modalInst).addClass('hidden'); - $('.level', self.$modalInst).removeClass('active'); - self.$selectedItemsWrap.removeClass('visible'); + $('.level.active',this.$modal).removeClass('active'); + this._refreshLabel(); + + this.$selectedItemsWrap.removeClass('visible'); }, /** * render label text, if there is no selected element then text will be default @@ -689,6 +691,7 @@ if (EXPO.events.feed) { }, // кнопка применить applyHandler: function (it) { + EXPO.events.feed.modalWindow.close(); } @@ -827,39 +830,42 @@ if (EXPO.events.feed) { DOMParentRow = com.closest(this, itemClass), - DOMParentItem = com.hasClass(DOMParentRow, highestItemClass) == false ? com.closest(DOMParentRow.parentNode, itemClass) : DOMParentRow, - DOMParentCheckbox = DOMParentItem.querySelector('.' + checkboxClass), - DOMSublist = DOMParentItem.querySelector('.' + sublistClass), - DOMSublistInner = DOMParentRow.querySelector('.' + sublistClass), + DOMParentItem = com.hasClass(DOMParentRow, highestItemClass) == false?com.closest(DOMParentRow.parentNode, itemClass):DOMParentRow, + DOMParentCheckbox = DOMParentItem.querySelector('.'+checkboxClass), + DOMSublist = DOMParentItem.querySelector('.'+sublistClass), + DOMSublistInner = DOMParentRow.querySelector('.'+sublistClass), DOMHighestItem = com.closest(this, highestItemClass), - DOMHighestCheckbox = DOMHighestItem.querySelector('.' + checkboxClass), + DOMHighestCheckbox = DOMHighestItem.querySelector('.'+checkboxClass), + DOMHighestSublist = DOMHighestItem.querySelector('.'+sublistClass), + selectSublist = function (it) { var DOMParentItem = com.closest(it, itemClass) || this, - DOMSublist = DOMParentItem.querySelector('.' + sublistClass); - $('.' + checkboxClass, DOMSublist).each(function () { + DOMSublist = DOMParentItem.querySelector('.'+sublistClass); + $('.'+checkboxClass, DOMSublist).each(function () { selectItem(this); }); }, unSelectSublist = function (it) { var DOMParentItem = com.closest(it, itemClass) || this, - DOMSublist = DOMParentItem.querySelector('.' + sublistClass); - $('.' + checkboxClass, DOMSublist).each(function () { + DOMSublist = DOMParentItem.querySelector('.'+sublistClass); + $('.'+checkboxClass, DOMSublist).each(function () { unSelectItem(this); + }); }, selectParent = function (it) { var DOMParentRow = com.closest(it, itemClass), DOMParentItem; - if (com.hasClass(DOMParentRow, 'level1')) { + if(com.hasClass(DOMParentRow,'level1')){ DOMParentItem = DOMParentRow; - } else { + }else{ DOMParentItem = com.closest(DOMParentRow.parentNode, itemClass); } - com.addClass(DOMParentItem.querySelector('.' + fakeCheckboxClass), activeClass); - DOMParentItem.querySelector('.' + checkboxClass).checked = true; + com.addClass(DOMParentItem.querySelector('.'+fakeCheckboxClass), activeClass); + DOMParentItem.querySelector('.'+checkboxClass).checked = true; //it.selected = true; @@ -868,8 +874,8 @@ if (EXPO.events.feed) { var DOMParentRow = com.closest(it, itemClass), DOMParentItem = com.closest(DOMParentRow.parentNode, itemClass) || DOMParentRow; - com.removeClass(DOMParentItem.querySelector('.' + fakeCheckboxClass), activeClass); - DOMParentItem.querySelector('.' + checkboxClass).checked = false; + com.removeClass(DOMParentItem.querySelector('.'+fakeCheckboxClass), activeClass); + DOMParentItem.querySelector('.'+checkboxClass).checked = false; //it.checked = false; }, @@ -880,97 +886,110 @@ if (EXPO.events.feed) { }, unSelectItem = function (it) { - var itFakeCheckbox = com.closest(it, fakeCheckboxClass); + var itFakeCheckbox = com.closest(it, fakeCheckboxClass), + DOMitem = com.closest(it, itemClass); com.removeClass(itFakeCheckbox, activeClass); it.checked = false; + // if there is children items + if(DOMitem.querySelector('.'+sublistClass) && !com.hasClass(DOMitem,highestItemClass)){ + unSelectSublist(it); + } }, allChildrenSelected = function () { //var DOMselected = DOMSublist.querySelectorAll('.'+checkboxClass+':checked'), - var DOMSublistParent = com.closest(DOMSublist, sublistClass), - $selected = $(DOMSublist).children('li').children('.' + fakeCheckboxClass).find('.' + checkboxClass + ':checked'), + var DOMSublistParent = com.closest(DOMSublist,sublistClass), + $selected = $(DOMSublist).children('li').children('.'+fakeCheckboxClass).find('.'+checkboxClass+':checked'), selectedCount = $selected.length, //allCount = DOMSublist.querySelectorAll('.'+checkboxClass).length; - allCount = $(DOMSublist).children('li').children('.' + fakeCheckboxClass).find('.' + checkboxClass).length; + allCount = $(DOMSublist).children('li').children('.'+fakeCheckboxClass).find('.'+checkboxClass).length; - if (allCount == selectedCount && selectedCount != 0) { + if(allCount == selectedCount && selectedCount != 0){ return true; - } else { + } else{ return false; } }, parentSelected = function () { - var parentCheckbox = DOMParentItem.querySelector('.' + checkboxClass); - if (parentCheckbox.checked) { + var parentCheckbox = DOMParentItem.querySelector('.'+checkboxClass); + if(parentCheckbox.checked){ return true; - } else { + }else{ return false; } }, - // Функционал добавления тегов: если есть в панели выбранный элемент либо его дочерние то удалить эти эдементы и разместить выбранный; иначе разместить выбранные. + // Функционал добавления тегов: если есть в панели выбранный элемент либо его дочерние то удалить эти эдементы; refreshTags = function (it) { - var DOMSublist = com.closest(it, sublistClass); - var DOMItem = com.closest(it, itemClass); - var DOMSublistInner = DOMItem.querySelector('.' + sublistClass); - var DOMAllTags = DOMTagsWrapper.querySelectorAll('.' + tagClass); + var DOMSublist = com.closest(it,sublistClass); + var DOMItem = com.closest(it,itemClass); + var DOMSublistInner = DOMItem.querySelector('.'+sublistClass); + var DOMAllTags = DOMTagsWrapper.querySelectorAll('.'+tagClass); var ARRsublist; - var ARRsublistChildren = DOMSublist.querySelector('.' + sublistClass) ? $('.' + checkboxClass + ':checked', DOMSublist.querySelector('.' + sublistClass)) : null; - var ARRsublistChildrenLength = ARRsublistChildren ? ARRsublistChildren.length : null; + var ARRsublistChildren = DOMSublist.querySelector('.'+sublistClass)?$('.'+checkboxClass+':checked',DOMSublist.querySelector('.'+sublistClass)):null; + var ARRsublistChildrenLength = ARRsublistChildren?ARRsublistChildren.length:null; var ARRSublistIds = []; var ARRAllTagsIds = []; var allTagsLength = 0; var sublistIdsLength = 0; var itId = it.getAttribute('id'); - var i = 0, j = 0, t = 0, tmp, k = 0; + var i = 0, j= 0, t= 0, tmp, k = 0; var tagId; - var tagText = DOMParentRow.querySelector('.' + triggerClass).innerHTML; + var tagText = DOMParentRow.querySelector('.'+triggerClass).innerHTML; // если есть дочерние элементы - if (DOMSublistInner) { - ARRsublist = $(DOMSublistInner).children('li').children('.' + fakeCheckboxClass).find('.' + checkboxClass + ':checked') + if(DOMSublistInner){ + ARRsublist = $(DOMSublistInner).children('li').children('.'+fakeCheckboxClass).find('.'+checkboxClass+':checked') //получаем массив id жлементовЮ для которых есть тег - for (k; k < ARRsublist.length; k++) { + for(k; k < ARRsublist.length; k++){ tmp = ARRsublist[k].getAttribute('id'); ARRSublistIds.push(tmp); } //очистк - for (t; t < DOMAllTags.length; t++) { - tmp = DOMAllTags[t].querySelector('.' + tagButtonClass).getAttribute(tagIdAttribute); - if (tmp != '~~id~~') { + for(t; t