Forked from
pregmodfan / fc-pregmod
14251 commits behind the upstream repository.
-
lowercasedonkey authoredlowercasedonkey authored
quickListJS.js 3.06 KiB
globalThis.sortDomObjects = function(objects, attrName, reverse = 0) {
reverse = (reverse) ? -1 : 1;
function sortingByAttr(a, b) {
let aVal = a.getAttribute(attrName);
let bVal = b.getAttribute(attrName);
let aInt = parseInt(aVal);
if (!isNaN(aInt)) {
return ((parseInt(bVal) - aInt) * reverse);
} else if (bVal > aVal) {
return -1 * reverse;
}
return ((aVal === bVal) ? 0 : 1) * reverse;
}
return objects.toArray().sort(sortingByAttr);
};
globalThis.sortButtonsByDevotion = function() {
let $sortedButtons = $('#qlWrapper button').remove();
$sortedButtons = sortDomObjects($sortedButtons, 'data-devotion');
$($sortedButtons).appendTo($('#qlWrapper'));
quickListBuildLinks();
};
globalThis.sortButtonsByTrust = function() {
let $sortedButtons = $('#qlWrapper button').remove();
$sortedButtons = sortDomObjects($sortedButtons, 'data-trust');
$($sortedButtons).appendTo($('#qlWrapper'));
quickListBuildLinks();
};
globalThis.quickListBuildLinks = function() {
$("[data-scroll-to]").click(App.UI.quickBtnScrollToHandler);
};
App.UI.quickBtnScrollToHandler = function() {
let $this = $(this),
$toElement = $this.attr('data-scroll-to');
// note the * 1 enforces $offset to be an integer, without
// it we scroll to True, which goes nowhere fast.
let $offset = parseInt($this.attr('data-scroll-offset') || "0");
let $speed = parseInt($this.attr('data-scroll-speed') || "500");
// Use javascript scrollTop animation for in page navigation.
$('html, body').animate({
scrollTop: $($toElement).offset().top + $offset
}, $speed);
};
globalThis.sortNurseryPossiblesByName = function() {
let $sortedNurseryPossibles = $('#ql-nursery div.possible').detach();
$sortedNurseryPossibles = sortDomObjects($sortedNurseryPossibles, 'data-name');
$($sortedNurseryPossibles).appendTo($('#ql-nursery'));
};
globalThis.sortNurseryPossiblesByPregnancyWeek = function() {
let $sortedNurseryPossibles = $('#ql-nursery div.possible').detach();
$sortedNurseryPossibles = sortDomObjects($sortedNurseryPossibles, 'data-preg-week');
$($sortedNurseryPossibles).appendTo($('#ql-nursery'));
};
globalThis.sortNurseryPossiblesByPregnancyCount = function() {
let $sortedNurseryPossibles = $('#ql-nursery div.possible').detach();
$sortedNurseryPossibles = sortDomObjects($sortedNurseryPossibles, 'data-preg-count');
$($sortedNurseryPossibles).appendTo($('#ql-nursery'));
};
globalThis.sortNurseryPossiblesByReservedSpots = function() {
let $sortedNurseryPossibles = $('#ql-nursery div.possible').detach();
$sortedNurseryPossibles = sortDomObjects($sortedNurseryPossibles, 'data-reserved-spots');
$($sortedNurseryPossibles).appendTo($('#ql-nursery'));
};
globalThis.sortNurseryPossiblesByPreviousSort = function() {
let sort = V.sortNurseryList;
if (sort !== 'unsorted') {
if (sort === 'Name') {
sortNurseryPossiblesByName();
} else if (sort === 'Reserved Nursery Spots') {
sortNurseryPossiblesByReservedSpots();
} else if (sort === 'Pregnancy Week') {
sortNurseryPossiblesByPregnancyWeek();
} else if (sort === 'Number of Children') {
sortNurseryPossiblesByPregnancyCount();
}
}
};