1function ueActiveFiters(){ 2 3 //classes 4 var g_removeButtonClass, g_activeFiltersItemClass; 5 6 //selectors 7 var g_removeButtonSelector, g_activeFiltersItemSelector; 8 9 //objects 10 var g_objWidget, g_itemsHolder, g_objFilterableGrid; 11 12 //custom attrs 13 14 //helpers 15 var g_arrayFilterItems; 16 17 //events name 18 var g_removeActiveFilterItemEvent, g_clearFiltersEvent; 19 20 /** 21 * get filter key 22 */ 23 function getFilterKey(arrItem){ 24 25 var key = arrItem.key; 26 var slug = arrItem.slug; 27 var taxonomy = getTaxonomy(arrItem); 28 29 if(key === undefined) 30 key = "term|"+taxonomy+"|"+slug; 31 32 return(key); 33 34 } 35 36 /** 37 * get filter key 38 */ 39 function getTitle(arrItem){ 40 41 var title; 42 var slug = arrItem.slug; 43 44 title = arrItem.title; 45 46 if(title === undefined) 47 title = slug 48 49 title = decodeURIComponent(title); 50 51 return(title); 52 53 } 54 55 /** 56 * get filter item type 57 */ 58 function getType(arrItem){ 59 60 var type = arrItem.type; 61 62 return(type); 63 64 } 65 66 /** 67 * get filter key 68 */ 69 function getTaxonomy(arrItem){ 70 71 var taxonomy; 72 73 taxonomy = arrItem.taxonomy; 74 75 if(taxonomy === undefined) 76 taxonomy = null 77 78 return(taxonomy); 79 80 } 81 82 /** 83 * get object for arrItem 84 */ 85 function getArrItemObject(title, key, type){ 86 87 var filterItemHtml = '<div class="'+g_activeFiltersItemClass+'" data-type="'+type+'" data-key="'+key+'">'+title+' <span class="'+g_removeButtonClass+'" style="color: red; font-weight: 700;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 61 61"><rect x="25" y="-7" width="11" height="75.41" transform="translate(-13 31) rotate(-45)"/><rect x="25" y="-7" width="11" height="75.31" transform="translate(31 -13) rotate(45)"/></svg> </span></div>'; 88 89 return(filterItemHtml); 90 91 } 92 93 /** 94 * check if g_arrayFilterItems contains search type item 95 */ 96 function checkSearchTypeFilterAndReplace(){ 97 98 g_arrayFilterItems.forEach(function(element, index){ 99 100 var objElement = jQuery(element); 101 102 if(objElement.data('type') === 'search') 103 g_arrayFilterItems.splice(index, 1); 104 105 }); 106 107 } 108 109 /** 110 * put items in the list 111 */ 112 this.putfilterItemsInList = function(arrActiveItems){ 113 114 var arrNum = arrActiveItems.length; 115 116 g_arrayFilterItems.length = 0; 117 118 for(let i=0;i<arrNum;i++){ 119 120 var arrItem = arrActiveItems[i]; 121 122 var key = getFilterKey(arrItem); 123 var title = getTitle(arrItem); 124 var type = getType(arrItem); 125 126 var filterItemElem = getArrItemObject(title, key, type); 127 128 //if item type is search see if there is such item already and replaÑe it 129 checkSearchTypeFilterAndReplace(); 130 131 if(g_arrayFilterItems.indexOf(filterItemElem) == -1) 132 g_arrayFilterItems.push(filterItemElem); 133 134 } 135 136 g_itemsHolder.html(g_arrayFilterItems); 137 138 } 139 140 /* 141 * on remove button click 142 */ 143 function onRemoveButtonClick(){ 144 145 var objButton = jQuery(this); 146 var objFilterItem = objButton.parents(g_activeFiltersItemSelector); 147 148 var key = objFilterItem.data("key"); 149 var itemToRemoveHTML = objFilterItem[0].outerHTML; 150 151 //remove item from array, svg remove icon 152 g_arrayFilterItems = g_arrayFilterItems.filter(function(item) { 153 return jQuery(item).data("key") !== key; 154 }); 155 156 157 //remove item from array 158 for (var i = 0; i < g_arrayFilterItems.length; i++) { 159 160 if (jQuery(g_arrayFilterItems[i]).html() == jQuery(itemToRemoveHTML).html()) { 161 g_arrayFilterItems.splice(i, 1); 162 163 break; // Exit the loop after removing the item 164 165 } 166 } 167 168 g_objFilterableGrid.trigger(g_removeActiveFilterItemEvent,[key]); 169 170 } 171 172 /** 173 * on clear all filters 174 */ 175 function onClearFilters(){ 176 177 g_arrayFilterItems.length = 0; 178 179 } 180 181 /** 182 * init from external file 183 */ 184 this.init = function(widgetId, objGrid){ 185 186 //init vars 187 //classes 188 var itemsHolderClass = "ue-active-filters-holder"; 189 g_removeButtonClass = "ue-active-filters-item-remove"; 190 g_activeFiltersItemClass = "ue-active-filters-item"; 191 192 //events names 193 g_removeActiveFilterItemEvent = "uc_unselect_filter"; 194 g_clearFiltersEvent = "clear_filters"; 195 196 //selectors 197 var itemsHolderSelector = "."+itemsHolderClass; 198 g_removeButtonSelector = "."+g_removeButtonClass; 199 g_activeFiltersItemSelector = "."+g_activeFiltersItemClass; 200 201 //objects 202 g_objWidget = jQuery("#"+widgetId); 203 g_itemsHolder = g_objWidget.find(itemsHolderSelector); 204 g_objFilterableGrid = objGrid; 205 206 //custom attrs 207 208 //helpers 209 g_arrayFilterItems = []; 210 211 //init events 212 g_objWidget.delegate(g_removeButtonSelector, 'click', onRemoveButtonClick); 213 g_objFilterableGrid.on(g_clearFiltersEvent, onClearFilters); 214 215 } 216 217}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.