MediaWiki:EveryCRT-SearchEngine.js: Difference between revisions

No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 186: Line 186:
                 html += '<label>' + filter.label + '</label>';
                 html += '<label>' + filter.label + '</label>';
                 html += '<div class="crt-multiselect" id="filter-' + filterKey + '" data-filter="' + filterKey + '">';
                 html += '<div class="crt-multiselect" id="filter-' + filterKey + '" data-filter="' + filterKey + '">';
                html += '<div class="crt-multiselect-container">';
                 html += '<div class="crt-multiselect-selected"></div>';
                 html += '<div class="crt-multiselect-selected"></div>';
                 html += '<input type="text" class="crt-multiselect-input" placeholder="Search ' + filter.label.toLowerCase() + '...">';
                 html += '<input type="text" class="crt-multiselect-input" placeholder="Search ' + filter.label.toLowerCase() + '...">';
                html += '</div>';
                 html += '<div class="crt-multiselect-dropdown"></div>';
                 html += '<div class="crt-multiselect-dropdown"></div>';
                 html += '</div>';
                 html += '</div>';
Line 325: Line 327:
         container.querySelectorAll('.crt-multiselect').forEach(function(ms) {
         container.querySelectorAll('.crt-multiselect').forEach(function(ms) {
             var input = ms.querySelector('.crt-multiselect-input');
             var input = ms.querySelector('.crt-multiselect-input');
            var dropdown = ms.querySelector('.crt-multiselect-dropdown');
             var filterKey = ms.dataset.filter;
             var filterKey = ms.dataset.filter;


             input.addEventListener('focus', function() {
             input.addEventListener('focus', function() {
                 dropdown.classList.add('visible');
                 ms.classList.add('open');
                 updateMultiselectDropdown(ms, filterKey);
                 updateMultiselectDropdown(ms, filterKey);
             });
             });


             input.addEventListener('input', function() {
             input.addEventListener('input', function() {
                ms.classList.add('open');
                 updateMultiselectDropdown(ms, filterKey, this.value);
                 updateMultiselectDropdown(ms, filterKey, this.value);
             });
             });
Line 339: Line 341:
             document.addEventListener('click', function(e) {
             document.addEventListener('click', function(e) {
                 if (!ms.contains(e.target)) {
                 if (!ms.contains(e.target)) {
                     dropdown.classList.remove('visible');
                     ms.classList.remove('open');
                 }
                 }
             });
             });
Line 843: Line 845:


             var arr = Array.from(matchingModels).sort();
             var arr = Array.from(matchingModels).sort();
             totalResults = arr.length;
             var mainConditions = queryData.mainQuery.replace('[[Category:' + cfg.category + ']]', '').trim();
            totalResultsKnown = true;


             var mainConditions = queryData.mainQuery.replace('[[Category:' + cfg.category + ']]', '').trim();
             if (!mainConditions) {
                totalResults = arr.length;
                totalResultsKnown = true;
            } else {
                totalResults = 0;
                totalResultsKnown = false;
            }
             fetchModelDetailsBatched(arr, mainConditions, sortProperty, sortOpt);
             fetchModelDetailsBatched(arr, mainConditions, sortProperty, sortOpt);
         }).catch(function(error) {
         }).catch(function(error) {
MediaWiki Appliance - Powered by TurnKey Linux