mNo edit summary |
No edit summary |
||
Line 26: | Line 26: | ||
} |
} |
||
} |
} |
||
+ | |||
+ | /* Any JavaScript here will be loaded for all users on every page load. */ |
||
+ | ;(function(mw, $) { |
||
+ | $(document).ready(function() { |
||
+ | // Filter+Search JS |
||
+ | var filterButtons = document.getElementsByClassName('filter-button'); |
||
+ | var searchFields = document.getElementsByClassName('search-text'); |
||
+ | |||
+ | for (var i = 0; i < filterButtons.length; i++) { |
||
+ | filterButtons[i].addEventListener("click", function(e) { |
||
+ | // Toggle the select class |
||
+ | if (this.classList.contains('filter-button-selected')) { |
||
+ | this.classList.remove('filter-button-selected'); |
||
+ | } else { |
||
+ | this.classList.add('filter-button-selected'); |
||
+ | } |
||
+ | filter(); |
||
+ | }); |
||
+ | } |
||
+ | |||
+ | for (var i = 0; i < searchFields.length; i++) { |
||
+ | searchFields[i].addEventListener("keyup", function(e) { |
||
+ | filter(); |
||
+ | }); |
||
+ | } |
||
+ | |||
+ | function filter() { |
||
+ | //Get all filter groups on the page |
||
+ | var filterGroups = document.getElementsByClassName('mw-ui-button-group'); |
||
+ | var searchFields = document.getElementsByClassName('search-text'); |
||
+ | |||
+ | //Get filter list |
||
+ | var list = document.getElementsByClassName('filter-element'); |
||
+ | for (var i = 0; i < list.length; i++) { |
||
+ | list[i].style.display = 'none'; |
||
+ | } |
||
+ | |||
+ | //Loop through all filter groups |
||
+ | for (var i = 0; i < filterGroups.length; i++) { |
||
+ | var selectedFilters = filterGroups[i].getElementsByClassName('filter-button-selected'); |
||
+ | list = filterList(selectedFilters, list); |
||
+ | } |
||
+ | |||
+ | // Loop through all the searches |
||
+ | for (var i = 0; i < searchFields.length; i++) { |
||
+ | list = searchList(searchFields[i], list); |
||
+ | } |
||
+ | |||
+ | // Go through and display the elements still in the filtered list |
||
+ | for (var i = 0; i < list.length; i++) { |
||
+ | list[i].style.display = ''; |
||
+ | } |
||
+ | } |
||
+ | |||
+ | function filterList(selectedFilters, list) { |
||
+ | if (!list.length || !selectedFilters.length) { |
||
+ | return list; |
||
+ | } |
||
+ | |||
+ | var dataKey = ''; |
||
+ | var selectedFilterValues = []; |
||
+ | |||
+ | for (var i = 0; i < selectedFilters.length; i++) { |
||
+ | var dataKey = selectedFilters[i].attributes['data-key'].value; |
||
+ | var filterValue = String(selectedFilters[i].dataset.value).toLowerCase(); |
||
+ | selectedFilterValues.push(filterValue); |
||
+ | } |
||
+ | |||
+ | var filteredList = []; |
||
+ | |||
+ | for (var i = 0; i < list.length; i++) { |
||
+ | var elementDataValue = String(list[i].dataset[dataKey]).toLowerCase(); |
||
+ | |||
+ | if (elementDataValue.includes(',')) { |
||
+ | for (var count = 0; count < selectedFilterValues.length; count++) { |
||
+ | if (elementDataValue.includes(selectedFilterValues[count])) { |
||
+ | filteredList.push(list[i]); |
||
+ | continue; |
||
+ | } |
||
+ | } |
||
+ | } else { |
||
+ | if (selectedFilterValues.includes(elementDataValue)) { |
||
+ | filteredList.push(list[i]); |
||
+ | } |
||
+ | } |
||
+ | } |
||
+ | |||
+ | return filteredList; |
||
+ | } |
||
+ | |||
+ | function searchList(searchField, list) { |
||
+ | var dataKey = searchField.attributes['data-key'].value; |
||
+ | var searchText = searchField.value.toLowerCase(); |
||
+ | |||
+ | if (searchText.length <= 0) { |
||
+ | return list; |
||
+ | } |
||
+ | |||
+ | var filteredList = []; |
||
+ | |||
+ | for (var i = 0; i < list.length; i++) { |
||
+ | var elementDataValue = String(list[i].dataset[dataKey]).toLowerCase(); |
||
+ | if (elementDataValue.includes(searchText)) { |
||
+ | filteredList.push(list[i]); |
||
+ | } |
||
+ | } |
||
+ | |||
+ | return filteredList; |
||
+ | } |
||
+ | }); |
||
+ | })(mediaWiki, jQuery); |
Latest revision as of 03:06, 30 August 2020
/* Any JavaScript here will be loaded for all users on every page load. */
var indvMatColumns = {};
$(document).ready(function() {
indvMatColumns = document.getElementsByClassName("indv-mat-column");
createIndvMatColumnFilterToggle();
});
function createIndvMatColumnFilterToggle() {
var indvMatColumnFilterElement = document.getElementById("indvMatColumnFilter");
if (!indvMatColumnFilterElement ) {
return;
}
indvMatColumnFilterElement.innerHTML = '<input type="checkbox" id="indvMatColumnToggle" name="indvMatColumnToggle" onchange="toggleIndvMatColumns(this)"> Hide Individual Material Columns';
}
function toggleIndvMatColumns(checkbox) {
for (var i = 0; i < indvMatColumns.length; i++) {
if (checkbox.checked) {
indvMatColumns[i].style.display = "none";
}
else {
indvMatColumns[i].style.display = "table-cell";
}
}
}
/* Any JavaScript here will be loaded for all users on every page load. */
;(function(mw, $) {
$(document).ready(function() {
// Filter+Search JS
var filterButtons = document.getElementsByClassName('filter-button');
var searchFields = document.getElementsByClassName('search-text');
for (var i = 0; i < filterButtons.length; i++) {
filterButtons[i].addEventListener("click", function(e) {
// Toggle the select class
if (this.classList.contains('filter-button-selected')) {
this.classList.remove('filter-button-selected');
} else {
this.classList.add('filter-button-selected');
}
filter();
});
}
for (var i = 0; i < searchFields.length; i++) {
searchFields[i].addEventListener("keyup", function(e) {
filter();
});
}
function filter() {
//Get all filter groups on the page
var filterGroups = document.getElementsByClassName('mw-ui-button-group');
var searchFields = document.getElementsByClassName('search-text');
//Get filter list
var list = document.getElementsByClassName('filter-element');
for (var i = 0; i < list.length; i++) {
list[i].style.display = 'none';
}
//Loop through all filter groups
for (var i = 0; i < filterGroups.length; i++) {
var selectedFilters = filterGroups[i].getElementsByClassName('filter-button-selected');
list = filterList(selectedFilters, list);
}
// Loop through all the searches
for (var i = 0; i < searchFields.length; i++) {
list = searchList(searchFields[i], list);
}
// Go through and display the elements still in the filtered list
for (var i = 0; i < list.length; i++) {
list[i].style.display = '';
}
}
function filterList(selectedFilters, list) {
if (!list.length || !selectedFilters.length) {
return list;
}
var dataKey = '';
var selectedFilterValues = [];
for (var i = 0; i < selectedFilters.length; i++) {
var dataKey = selectedFilters[i].attributes['data-key'].value;
var filterValue = String(selectedFilters[i].dataset.value).toLowerCase();
selectedFilterValues.push(filterValue);
}
var filteredList = [];
for (var i = 0; i < list.length; i++) {
var elementDataValue = String(list[i].dataset[dataKey]).toLowerCase();
if (elementDataValue.includes(',')) {
for (var count = 0; count < selectedFilterValues.length; count++) {
if (elementDataValue.includes(selectedFilterValues[count])) {
filteredList.push(list[i]);
continue;
}
}
} else {
if (selectedFilterValues.includes(elementDataValue)) {
filteredList.push(list[i]);
}
}
}
return filteredList;
}
function searchList(searchField, list) {
var dataKey = searchField.attributes['data-key'].value;
var searchText = searchField.value.toLowerCase();
if (searchText.length <= 0) {
return list;
}
var filteredList = [];
for (var i = 0; i < list.length; i++) {
var elementDataValue = String(list[i].dataset[dataKey]).toLowerCase();
if (elementDataValue.includes(searchText)) {
filteredList.push(list[i]);
}
}
return filteredList;
}
});
})(mediaWiki, jQuery);