1(function () { 2 const filter = {}; 3 filter.data = {}; 4 filter.selectorBtn = '.btn-show'; 5 filter.showFilterData = $(filter.selectorBtn); 6 filter.clearFilterData = $('.clear-filter-data'); 7 filter.form = null; 8 9 filter.checkCheckbox = function () { 10 $('.right-filter .checkbox').on('change', function () { 11 var $this = $(this); 12 var name = $this.attr('name'); 13 var value = $this.val(); 14 var id = $this.data('id') || value; 15 filter.form = $this.parents('form'); 16 var groupForm = filter.form.data('form') || filter.form.attr('action') || ''; 17 if ($this.prop('checked')) { 18 filter.addToData(id, value, name, groupForm); 19 // filter.showLabel($this); 20 // $this.parent().addClass('checked'); 21 } else { 22 filter.deleteElemsFromData(id, name, groupForm); 23 // $this.parent().removeClass('checked'); 24 // filter.hideLabel($this, name, groupForm); 25 } 26 }); 27 }; 28 29 filter.addToData = function (id, elem, name, groupForm) { 30 if (!filter.data.hasOwnProperty(groupForm)) { 31 filter.data[groupForm] = {}; 32 } 33 if (!filter.data[groupForm].hasOwnProperty(name)) { 34 filter.data[groupForm][name] = {} 35 } 36 filter.data[groupForm][name][id] = elem; 37 }; 38 39 filter.deleteElemsFromData = function (id, name, groupForm) { 40 delete filter.data[groupForm][name][id]; 41 }; 42 43 filter.showLabel = function (elem) { 44 elem.parent().children('label').after(filter.showFilterData.show()); 45 }; 46 47 filter.hideLabel = function (elem, name, groupForm) { 48 if (elem.parent().children().is(filter.showFilterData) 49 || !(elem.parents('form').find("label").is(filter.showFilterData))) { 50 filter.showFilterData.hide(); 51 filter.clearFilterData.hide(); 52 if (Object.keys(filter.data[groupForm][name]).length > 0) { 53 const nextElem = elem.parent().nextAll('.checked').eq(0); 54 const prevElem = elem.parent().prevAll('.checked').eq(0); 55 var nearestElem = ''; 56 if (Object.keys(nextElem).length == 0) { 57 nearestElem = prevElem; 58 } else if (Object.keys(prevElem).length == 0) { 59 nearestElem = nextElem; 60 } else { 61 const indexElem = elem.parents('form').children().index(elem.parent()); 62 const indexNext = elem.parents('form').children().index(nextElem); 63 const indexPrev = elem.parents('form').children().index(prevElem); 64 if (Math.abs(indexElem - indexNext) > Math.abs(indexElem - indexPrev)) { 65 nearestElem = prevElem; 66 } else { 67 nearestElem = nextElem; 68 } 69 } 70 filter.showLabel(nearestElem.find('.jq-checkbox.checked')); 71 } else { 72 filter.showLabel(elem); 73 } 74 } 75 }; 76 77 filter.saveFilters = function (groupForm) { 78 var data = filter.data[groupForm]; 79 for (var key in data) { 80 if (data.hasOwnProperty(key)) { 81 if (Object.keys(data[key]).length > 0) { 82 for (var k in data[key]) { 83 if (data[key].hasOwnProperty(k)) { 84 $("<input>", {type: "hidden", name: key + "[]", value: data[key][k]}).appendTo(filter.form); 85 } 86 } 87 } 88 } 89 } 90 }; 91 92 filter.sendData = function () { 93 $('.right-block').on('click', filter.selectorBtn, function () { 94 var groupForm = $(this).parents('form').attr('data-form') || $(this).parents('form').attr('action') || ''; 95 filter.saveFilters(groupForm); 96 $('input[type="checkbox"]').attr('disabled', 'disabled'); 97 $(filter.form).submit(); 98 }); 99 }(); 100 101 filter.findCheckedCheckbox = function () { 102 $('.checkbox:checked').each(function (i, elem) { 103 var value = $(elem).val(); 104 var id = $(elem).data('id') || value; 105 var groupForm = $(elem).parents('form').data('form') || $(elem).parents('form').attr('action') || ''; 106 filter.addToData(id, value, $(elem).attr('name'), groupForm); 107 // $(elem).parent().addClass('checked'); 108 }); 109 }; 110 111 filter.clearData = function () { 112 $(filter.clearFilterData).on('click', function () { 113 window.location = $(filter.form).attr('action'); 114 }); 115 }(); 116 117 $(document).ready(function () { 118 filter.findCheckedCheckbox(); 119 filter.checkCheckbox(); 120 }); 121 122})();
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.