@ -312,12 +312,9 @@ if (EXPO.events.feed) {
}
}
return false ;
return false ;
} ) ;
} ) ;
$ ( '#' + self . opt . deleteId ) . on ( 'click' , function ( ) {
$ ( '.del-on-page' ) . on ( 'click' , function ( ) {
$ ( '.' + self . opt . deleteTagClass , $modal ) . trigger ( 'click' ) ;
var dataCheckboxId = $ ( this ) . attr ( 'data-checkbox-id' ) ;
} ) ;
$ ( '.' + self . opt . deleteTagClass + '[data-checkbox-id="' + dataCheckboxId + '"]' , $modal ) . trigger ( 'click' ) ;
$ ( '.clear' , $modal ) . on ( 'click' , function ( ) {
self . resetList ( ) ;
return false ;
} ) ;
} ) ;
self . _autocompleteInit ( ) ;
self . _autocompleteInit ( ) ;
$ ( '.' + applyBtnClass , $modal ) . on ( 'click' , function ( ) {
$ ( '.' + 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 ( ) ;
self . resetList ( ) ;
return false ;
} ) ;
} ) ;
} ) ;
} ) ;
} ;
} ;
@ -665,14 +664,17 @@ if (EXPO.events.feed) {
var self = this ;
var self = this ;
for ( var key in self . itemsSelected ) {
for ( var key in self . itemsSelected ) {
if ( self . itemsSelected . hasOwnProperty ( key ) ) {
if ( self . itemsSelected . hasOwnProperty ( key ) ) {
$ ( '#' + key , self . $selfContainer ) . prop ( 'checked' , false ) . trigger ( 'chang e') ;
$ ( '#' + key , self . $selfContainer ) . prop ( 'checked' , false ) . closest ( '.custom-radio-check' ) . removeClass ( 'activ e') ;
dna . destroy ( self . itemsSelected [ key ] ) ;
dna . destroy ( self . itemsSelected [ key ] ) ;
dna . destroy ( self . tagsBoxItems [ key ] ) ;
}
}
}
}
$ ( '.sublist' , self . $modalInst ) . addClass ( 'hidden' ) ;
$ ( '.level.active' , this . $modal ) . removeClass ( 'active' ) ;
$ ( '.level' , self . $modalInst ) . removeClass ( 'active' ) ;
this . _refreshLabel ( ) ;
self . $selectedItemsWrap . removeClass ( 'visible' ) ;
this . $selectedItemsWrap . removeClass ( 'visible' ) ;
} ,
} ,
/ * *
/ * *
* render label text , if there is no selected element then text will be default
* 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 ) {
applyHandler : function ( it ) {
EXPO . events . feed . modalWindow . close ( ) ;
}
}
@ -833,6 +836,8 @@ if (EXPO.events.feed) {
DOMSublistInner = DOMParentRow . querySelector ( '.' + sublistClass ) ,
DOMSublistInner = DOMParentRow . querySelector ( '.' + sublistClass ) ,
DOMHighestItem = com . closest ( this , highestItemClass ) ,
DOMHighestItem = com . closest ( this , highestItemClass ) ,
DOMHighestCheckbox = DOMHighestItem . querySelector ( '.' + checkboxClass ) ,
DOMHighestCheckbox = DOMHighestItem . querySelector ( '.' + checkboxClass ) ,
DOMHighestSublist = DOMHighestItem . querySelector ( '.' + sublistClass ) ,
selectSublist = function ( it ) {
selectSublist = function ( it ) {
var DOMParentItem = com . closest ( it , itemClass ) || this ,
var DOMParentItem = com . closest ( it , itemClass ) || this ,
DOMSublist = DOMParentItem . querySelector ( '.' + sublistClass ) ;
DOMSublist = DOMParentItem . querySelector ( '.' + sublistClass ) ;
@ -846,6 +851,7 @@ if (EXPO.events.feed) {
DOMSublist = DOMParentItem . querySelector ( '.' + sublistClass ) ;
DOMSublist = DOMParentItem . querySelector ( '.' + sublistClass ) ;
$ ( '.' + checkboxClass , DOMSublist ) . each ( function ( ) {
$ ( '.' + checkboxClass , DOMSublist ) . each ( function ( ) {
unSelectItem ( this ) ;
unSelectItem ( this ) ;
} ) ;
} ) ;
} ,
} ,
@ -880,9 +886,14 @@ if (EXPO.events.feed) {
} ,
} ,
unSelectItem = function ( it ) {
unSelectItem = function ( it ) {
var itFakeCheckbox = com . closest ( it , fakeCheckboxClass ) ;
var itFakeCheckbox = com . closest ( it , fakeCheckboxClass ) ,
DOMitem = com . closest ( it , itemClass ) ;
com . removeClass ( itFakeCheckbox , activeClass ) ;
com . removeClass ( itFakeCheckbox , activeClass ) ;
it . checked = false ;
it . checked = false ;
// if there is children items
if ( DOMitem . querySelector ( '.' + sublistClass ) && ! com . hasClass ( DOMitem , highestItemClass ) ) {
unSelectSublist ( it ) ;
}
} ,
} ,
allChildrenSelected = function ( ) {
allChildrenSelected = function ( ) {
//var DOMselected = DOMSublist.querySelectorAll('.'+checkboxClass+':checked'),
//var DOMselected = DOMSublist.querySelectorAll('.'+checkboxClass+':checked'),
@ -907,7 +918,7 @@ if (EXPO.events.feed) {
}
}
} ,
} ,
// Функционал добавления тегов: если есть в панели выбранный элемент либо его дочерние то удалить эти эдементы и разместить выбранный ; иначе разместить выбранные.
// Функционал добавления тегов: если есть в панели выбранный элемент либо его дочерние то удалить эти эдементы;
refreshTags = function ( it ) {
refreshTags = function ( it ) {
var DOMSublist = com . closest ( it , sublistClass ) ;
var DOMSublist = com . closest ( it , sublistClass ) ;
var DOMItem = com . closest ( it , itemClass ) ;
var DOMItem = com . closest ( it , itemClass ) ;
@ -942,7 +953,6 @@ if (EXPO.events.feed) {
}
}
allTagsLength = ARRAllTagsIds . length ;
allTagsLength = ARRAllTagsIds . length ;
sublistIdsLength = ARRSublistIds . length ;
sublistIdsLength = ARRSublistIds . length ;
// добавить текущий тег
//если найден дочерний тег то он будет удален, либо текущий тег
//если найден дочерний тег то он будет удален, либо текущий тег
for ( i = 0 ; i < allTagsLength ; i ++ ) {
for ( i = 0 ; i < allTagsLength ; i ++ ) {
@ -960,6 +970,13 @@ if (EXPO.events.feed) {
deleteTag ( it ) ;
deleteTag ( it ) ;
}
}
}
}
// удаление дочерних тегов 2го уровня
if ( DOMSublistInner . querySelectorAll ( '.final-tire' ) ) {
$ ( '.' + fakeCheckboxClass + '.' + activeClass , DOMSublistInner . querySelectorAll ( '.final-tire' ) ) . each ( function ( ) {
deleteTag ( $ ( '.' + checkboxClass , this ) [ 0 ] ) ;
} ) ;
}
} else {
} else {
// удаление дубликатов текущего элемента
// удаление дубликатов текущего элемента
for ( i = 0 ; i < allTagsLength ; i ++ ) {
for ( i = 0 ; i < allTagsLength ; i ++ ) {
@ -971,6 +988,8 @@ if (EXPO.events.feed) {
}
}
} ,
} ,
deleteTag = function ( it ) {
deleteTag = function ( it ) {
var id = it . getAttribute ( 'id' ) ;
var id = it . getAttribute ( 'id' ) ;
@ -987,14 +1006,14 @@ if (EXPO.events.feed) {
tagsPanelToggle ( ) ;
tagsPanelToggle ( ) ;
} ,
} ,
tagsPanelToggle = function ( ) {
tagsPanelToggle = function ( ) {
if ( $selectedItemsWrap . children ( '.' + tagClass ) . length && $selectedItemsWrap . children ( '.' + tagClass ) [ 0 ] . getAttribute ( tagIdAttribute ) != "~~id~~" ) {
if ( $selectedItemsWrap . find ( '.' + tagButton Class ) . length && $selectedItemsWrap . find ( '.' + tagButton Class ) [ 0 ] . getAttribute ( tagIdAttribute ) != "~~id~~" ) {
$selectedItemsWrap . addClass ( 'visible' ) ;
$selectedItemsWrap . addClass ( 'visible' ) ;
} else {
} else {
$selectedItemsWrap . removeClass ( 'visible' ) ;
$selectedItemsWrap . removeClass ( 'visible' ) ;
}
}
} ,
} ,
createTagList = function ( sublist ) {
createTagList = function ( sublist ) {
var $selected = $ ( DOMS ublist) . children ( 'li' ) . children ( '.' + fakeCheckboxClass ) . find ( '.' + checkboxClass + ':checked' ) ;
var $selected = $ ( s ublist) . children ( 'li' ) . children ( '.' + fakeCheckboxClass ) . find ( '.' + checkboxClass + ':checked' ) ;
$selected . each ( function ( ) {
$selected . each ( function ( ) {
createTag ( this ) ;
createTag ( this ) ;
} ) ;
} ) ;
@ -1008,9 +1027,21 @@ if (EXPO.events.feed) {
} ;
} ;
//make fake checkbox active\passive
//make fake checkbox active\passive
/ * *
* if modala is not in strict mode ( enable popping from children categories to parent )
* /
if ( ! self . strictMode ) {
if ( this . checked ) {
if ( this . checked ) {
if ( $ ( DOMSublistInner ) . find ( '.' + checkboxClass ) [ 0 ] ) {
if ( DOMSublistInner && $ ( DOMSublistInner ) . find ( '.' + checkboxClass ) [ 0 ] . value != '~~id~~' ) {
refreshTags ( this ) ;
}
}
//если выбраны все дочерние
//если выбраны все дочерние
if ( allChildrenSelected ( ) ) {
if ( allChildrenSelected ( ) ) {
selectParent ( this ) ;
selectParent ( this ) ;
@ -1032,6 +1063,7 @@ if (EXPO.events.feed) {
if ( DOMSublistInner ) {
if ( DOMSublistInner ) {
selectSublist ( this ) ;
selectSublist ( this ) ;
}
}
} else {
} else {
//Если выбран родитель
//Если выбран родитель
@ -1042,10 +1074,12 @@ if (EXPO.events.feed) {
deleteTag ( DOMParentCheckbox ) ;
deleteTag ( DOMParentCheckbox ) ;
createTagList ( DOMSublist ) ;
createTagList ( DOMSublist ) ;
if ( DOMHighestCheckbox . checked ) {
if ( DOMHighestCheckbox . checked ) {
unSelectItem ( DOMHighestCheckbox ) ;
unSelectItem ( DOMHighestCheckbox ) ;
refreshTags ( DOMHighestCheckbox ) ;
deleteTag ( DOMHighestCheckbox ) ;
deleteTag ( DOMHighestCheckbox ) ;
createTagList ( DOMHighestSublist ) ;
}
}
} else {
} else {
unSelectItem ( this ) ;
unSelectItem ( this ) ;
refreshTags ( this ) ;
refreshTags ( this ) ;
@ -1054,9 +1088,21 @@ if (EXPO.events.feed) {
//убрать все дочерние
//убрать все дочерние
if ( DOMSublistInner ) {
if ( DOMSublistInner ) {
unSelectSublist ( this ) ;
unSelectSublist ( this ) ;
refreshTags ( this ) ;
}
}
}
}
} else {
if ( this . checked ) {
selectItem ( this ) ;
refreshTags ( this ) ;
createTag ( this ) ;
} else {
unSelectItem ( this ) ;
refreshTags ( this ) ;
deleteTag ( this ) ;
}
}
triggerSetText ( ) ;
triggerSetText ( ) ;
} ) ;
} ) ;
/ * *
/ * *
@ -1075,8 +1121,9 @@ if (EXPO.events.feed) {
}
}
return false ;
return false ;
} ) ;
} ) ;
$ ( '#' + self . opt . deleteId ) . on ( 'click' , function ( ) {
$ ( '.del-on-page' ) . on ( 'click' , function ( ) {
$ ( '.' + self . opt . deleteTagClass , $modal ) . trigger ( 'click' ) ;
var dataCheckboxId = $ ( this ) . attr ( 'data-checkbox-id' ) ;
$ ( '.' + self . opt . deleteTagClass + '[data-checkbox-id="' + dataCheckboxId + '"]' , $modal ) . trigger ( 'click' ) ;
} ) ;
} ) ;
/ * *
/ * *
* clear all button behavior
* clear all button behavior
@ -1106,10 +1153,13 @@ if (EXPO.events.feed) {
self . applyHandler ( this ) ;
self . applyHandler ( this ) ;
return false ;
return false ;
} ) ;
} ) ;
$modalTrigger . siblings ( '.' + self . opt . clearAllButtonClass ) . on ( 'click' , function ( ) {
$ ( '.' + self . opt . clearAllButtonClass , $modal ) . on ( 'click' , function ( e ) {
e . preventDefault ( ) ;
self . resetList ( ) ;
self . resetList ( ) ;
return false ;
} ) ;
} ) ;
} ) ;
} ) ;
@ -1367,14 +1417,15 @@ if (EXPO.events.feed) {
var self = this ;
var self = this ;
for ( var key in self . itemsSelected ) {
for ( var key in self . itemsSelected ) {
if ( self . itemsSelected . hasOwnProperty ( key ) ) {
if ( self . itemsSelected . hasOwnProperty ( key ) ) {
$ ( '#' + key , self . $selfContainer ) . prop ( 'checked' , false ) . trigger ( 'chang e') ;
$ ( '#' + key , self . $selfContainer ) . prop ( 'checked' , false ) . closest ( '.custom-radio-check' ) . removeClass ( 'activ e') ;
dna . destroy ( self . itemsSelected [ key ] ) ;
dna . destroy ( self . itemsSelected [ key ] ) ;
dna . destroy ( self . tagsBoxItems [ key ] ) ;
}
}
}
}
$ ( '.sublist:not(.parent)' , self . $modal ) . addClass ( 'hidden ') ;
$ ( '.level.active' , this . $modal ) . removeClass ( 'active ') ;
$ ( '.level' , self . $modal ) . removeClass ( 'active' ) ;
this . _refreshLabel ( ) ;
self . selectedWrap . removeClass ( 'visible' ) ;
this . selectedWrap . removeClass ( 'visible' ) ;
} ,
} ,
/ * *
/ * *
* initiliazing and setup autocomplete field for places list
* initiliazing and setup autocomplete field for places list
@ -1575,6 +1626,7 @@ if (EXPO.events.feed) {
} ,
} ,
applyHandler : function ( it ) {
applyHandler : function ( it ) {
EXPO . events . feed . modalWindow . close ( ) ;
} ,
} ,
/ * *
/ * *
* render label text , if there is no selected element then text will be default
* 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 . placesModal = new PlacesModal ( self . opt . place ) ;
this . subjModal = new SubjectModal ( self . opt . subject ) ;
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 ( ) {
$ ( function ( ) {
if ( self . previousSearch . inputs . length ) {
if ( self . previousSearch . inputs . length ) {