expo-34 bugs fontend part ready

remotes/origin/1203
pavel 11 years ago
parent d1a6d6577d
commit dd320943e3
  1. 8
      templates/client/accounts/feed.html
  2. 2
      templates/client/static_client/js/_modules/block.search.js
  3. 282
      templates/client/static_client/js/_modules/page.events.feed.js
  4. 2
      templates/client/static_client/js_min/_modules/page.events.feed.min.js

@ -28,7 +28,7 @@
<div class="csb-selected-items " >
<div class="csb-selected csb-subj-selected dna-template" id="filter-subject-tags">
<div class="csbs-text ">~~text~~</div>
<a class="csbs-del" href="javascript:void(0);" data-checkbox-id="~~id~~" id="subject-tag-remove">x</a>
<a class="csbs-del del-on-page" href="javascript:void(0);" data-checkbox-id="~~id~~">x</a>
</div>
</div>
@ -41,7 +41,7 @@
<div class="csb-selected-items" >
<div class="csb-selected csb-subj-selected dna-template" id="filter-places-tags">
<div class="csbs-text ">~~text~~</div>
<a class="csbs-del " href="javascript:void(0);" data-checkbox-id="~~id~~" id="place-tag-remove">x</a>
<a class="csbs-del del-on-page" href="javascript:void(0);" data-checkbox-id="~~id~~">x</a>
</div>
</div>
@ -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',

@ -1423,7 +1423,7 @@ if (EXPO.searchBlock){
}
}
$('.level.active',this.$modal).removeClass('active');
this._refreshText()
this._refreshText();
self.selectedWrap.removeClass('visible');
},
/**

@ -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<DOMAllTags.length; t++){
tmp = DOMAllTags[t].querySelector('.'+tagButtonClass).getAttribute(tagIdAttribute);
if(tmp != '~~id~~'){
ARRAllTagsIds.push(tmp);
}
}
allTagsLength = ARRAllTagsIds.length;
sublistIdsLength = ARRSublistIds.length;
// добавить текущий тег
//если найден дочерний тег то он будет удален, либо текущий тег
for (i = 0; i < allTagsLength; i++) {
for(i = 0; i < allTagsLength; i++){
tagId = ARRAllTagsIds[i];
for (j = 0; j < sublistIdsLength; j++) {
if (tagId == ARRSublistIds[j]) {
for(j = 0; j< sublistIdsLength; j++){
if( tagId == ARRSublistIds[j] ){
deleteTag(ARRsublist[j]);
}
}
}
// удаление дубликатов текущего элемента
for (i = 0; i < allTagsLength; i++) {
for(i = 0; i < allTagsLength; i++){
tagId = ARRAllTagsIds[i];
if (tagId == itId) {
if( tagId == itId){
deleteTag(it);
}
}
} else {
// удаление дочерних тегов 2го уровня
if(DOMSublistInner.querySelectorAll('.final-tire')){
$('.'+fakeCheckboxClass+'.'+activeClass, DOMSublistInner.querySelectorAll('.final-tire')).each(function () {
deleteTag($('.'+checkboxClass,this)[0]);
});
}
}else{
// удаление дубликатов текущего элемента
for (i = 0; i < allTagsLength; i++) {
for(i = 0; i < allTagsLength; i++){
tagId = ARRAllTagsIds[i];
if (tagId == itId) {
if( tagId == itId){
deleteTag(itId);
}
}
}
},
deleteTag = function (it) {
var id = it.getAttribute('id');
@ -978,84 +997,111 @@ if (EXPO.events.feed) {
tagsPanelToggle();
},
createTag = function (it) {
var item = com.closest(it, itemClass),
tagTrigger = item.querySelector('.' + triggerClass),
var item = com.closest(it,itemClass),
tagTrigger = item.querySelector('.'+triggerClass),
tagText = tagTrigger.innerHTML,
id = it.getAttribute('id'),
tagObj = {'id': id, 'text': tagText};
tagObj = {'id':id,'text':tagText};
self._addTag(id, tagObj);
tagsPanelToggle();
},
tagsPanelToggle = function () {
if ($selectedItemsWrap.children('.' + tagClass).length && $selectedItemsWrap.children('.' + tagClass)[0].getAttribute(tagIdAttribute) != "~~id~~") {
if($selectedItemsWrap.find('.'+tagButtonClass).length && $selectedItemsWrap.find('.'+tagButtonClass)[0].getAttribute(tagIdAttribute) != "~~id~~"){
$selectedItemsWrap.addClass('visible');
} else {
}else{
$selectedItemsWrap.removeClass('visible');
}
},
createTagList = function (sublist) {
var $selected = $(DOMSublist).children('li').children('.' + fakeCheckboxClass).find('.' + checkboxClass + ':checked');
var $selected = $(sublist).children('li').children('.'+fakeCheckboxClass).find('.'+checkboxClass+':checked');
$selected.each(function () {
createTag(this);
});
},
deleteTagList = function () {
var $selected = $(DOMSublist).children('li').children('.' + fakeCheckboxClass).find('.' + checkboxClass + ':checked');
var $selected = $(DOMSublist).children('li').children('.'+fakeCheckboxClass).find('.'+checkboxClass+':checked');
$selected.each(function () {
deleteTag(this);
});
};
//make fake checkbox active\passive
if (this.checked) {
/**
* if modala is not in strict mode ( enable popping from children categories to parent)
*/
if(!self.strictMode){
//если выбраны все дочерние
if (allChildrenSelected()) {
selectParent(this);
selectItem(this);
refreshTags(DOMParentCheckbox);
createTag(DOMParentCheckbox);
deleteTagList(DOMSublist);
if (DOMParentCheckbox.getAttribute('id') == DOMHighestCheckbox.getAttribute('id') && !DOMHighestCheckbox.checked) {
selectItem(DOMHighestCheckbox);
refreshTags(DOMHighestCheckbox);
createTag(DOMHighestCheckbox);
if(this.checked){
if($(DOMSublistInner).find('.'+checkboxClass)[0]){
if(DOMSublistInner && $(DOMSublistInner).find('.'+checkboxClass)[0].value != '~~id~~'){
refreshTags(this);
}
}
} else {
//если выбраны все дочерние
if(allChildrenSelected()){
selectParent(this);
selectItem(this);
refreshTags(DOMParentCheckbox);
createTag(DOMParentCheckbox);
deleteTagList(DOMSublist);
if(DOMParentCheckbox.getAttribute('id')== DOMHighestCheckbox.getAttribute('id') && !DOMHighestCheckbox.checked){
selectItem(DOMHighestCheckbox);
refreshTags(DOMHighestCheckbox);
createTag(DOMHighestCheckbox);
}
}else{
selectItem(this);
refreshTags(this);
createTag(this);
}
//выбрать все дочерние
if(DOMSublistInner){
selectSublist(this);
}
}else{
//Если выбран родитель
if(parentSelected()){
unSelectParent(this);
unSelectItem(this);
refreshTags(DOMParentCheckbox);
deleteTag(DOMParentCheckbox);
createTagList(DOMSublist);
if(DOMHighestCheckbox.checked){
unSelectItem(DOMHighestCheckbox);
deleteTag(DOMHighestCheckbox);
createTagList(DOMHighestSublist);
}
}else{
unSelectItem(this);
refreshTags(this);
deleteTag(this);
}
//убрать все дочерние
if(DOMSublistInner){
unSelectSublist(this);
refreshTags(this);
}
}
}else{
if(this.checked){
selectItem(this);
refreshTags(this);
createTag(this);
}
//выбрать все дочерние
if (DOMSublistInner) {
selectSublist(this);
}
} else {
//Если выбран родитель
if (parentSelected()) {
unSelectParent(this);
unSelectItem(this);
refreshTags(DOMParentCheckbox);
deleteTag(DOMParentCheckbox);
createTagList(DOMSublist);
if (DOMHighestCheckbox.checked) {
unSelectItem(DOMHighestCheckbox);
refreshTags(DOMHighestCheckbox);
deleteTag(DOMHighestCheckbox);
}
} else {
}else{
unSelectItem(this);
refreshTags(this);
deleteTag(this);
}
//убрать все дочерние
if (DOMSublistInner) {
unSelectSublist(this);
}
}
triggerSetText();
});
@ -1075,8 +1121,9 @@ if (EXPO.events.feed) {
}
return false;
});
$('#'+self.opt.deleteId).on('click',function () {
$('.' + self.opt.deleteTagClass, $modal).trigger('click');
$('.del-on-page').on('click',function () {
var dataCheckboxId = $(this).attr('data-checkbox-id');
$('.' + self.opt.deleteTagClass+'[data-checkbox-id="'+dataCheckboxId+'"]', $modal).trigger('click');
});
/**
* clear all button behavior
@ -1106,10 +1153,13 @@ if (EXPO.events.feed) {
self.applyHandler(this);
return false;
});
$modalTrigger.siblings('.' + self.opt.clearAllButtonClass).on('click', function () {
$('.'+self.opt.clearAllButtonClass,$modal).on('click', function (e) {
e.preventDefault();
self.resetList();
return false;
});
});
@ -1367,14 +1417,15 @@ 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:not(.parent)', self.$modal).addClass('hidden');
$('.level', self.$modal).removeClass('active');
self.selectedWrap.removeClass('visible');
$('.level.active',this.$modal).removeClass('active');
this._refreshLabel();
this.selectedWrap.removeClass('visible');
},
/**
* initiliazing and setup autocomplete field for places list
@ -1575,6 +1626,7 @@ if (EXPO.events.feed) {
},
applyHandler: function (it) {
EXPO.events.feed.modalWindow.close();
},
/**
* render label text, if there is no selected element then text will be default
@ -1641,14 +1693,6 @@ if (EXPO.events.feed) {
this.placesModal = new PlacesModal(self.opt.place);
this.subjModal = new SubjectModal(self.opt.subject);
this.placesModal.applyHandler = function () {
self.modalWindow.close();
$(self.DOMform).submit();
};
this.subjModal.applyHandler = function () {
self.modalWindow.close();
$(self.DOMform).submit();
};
// заполнение полей предыдущими значениями
$(function () {
if(self.previousSearch.inputs.length){

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save