// ==UserScript== // @name Steam Community - Group List Sorter // @namespace Royalgamer06 // @version 1.0 // @description This userscript makes it possible to sort your group list by group name, creation date or total members. // @author Royalgamer06 // @include /http(s)?\:\/\/steamcommunity\.com\/(id\/.+|profiles\/7656119[0-9]{10})\/groups(\/)?/ // @grant unsafeWindow // @downloadURL https://update.greasyfork.icu/scripts/24800/Steam%20Community%20-%20Group%20List%20Sorter.user.js // @updateURL https://update.greasyfork.icu/scripts/24800/Steam%20Community%20-%20Group%20List%20Sorter.meta.js // ==/UserScript== var groupsSelector = ".groupBlock:not(:first)"; var parentSelector = "#BG_bottom > div:nth-child(2)"; var groups_creation = Array.from(jQuery(groupsSelector)); var groups_name = Array.from( getOrderedByText(parentSelector, groupsSelector, ".linkTitle", false)); var groups_members = Array.from( getOrderedByText(parentSelector, groupsSelector, ".memberRow > .linkStandard", true)); function getOrderedByText(parentSelector, childSelector, keySelector, intgr) { var parent = jQuery(parentSelector); var items = parent.children(childSelector).sort(function(a, b) { var vA = intgr ? parseInt(jQuery(keySelector, a).text().replace(/\,| |Members/, "")) : jQuery(keySelector, a).text().toUpperCase(); var vB = intgr ? parseInt(jQuery(keySelector, b).text().replace(/\,| |Members/, "")) : jQuery(keySelector, b).text().toUpperCase(); return (vA < vB) ? -1 : (vA > vB) ? 1 : 0; }); return items; } unsafeWindow.orderBy = function orderBy(prop, dir) { var groups = null; if (prop == "name" && dir == "asc") { groups = groups_name; } else if (prop == "name" && dir == "desc") { var reverse = []; for (var i = groups_name.length - 1; i >= 0; i--) reverse.push(groups_name[i]); groups = reverse; } else if (prop == "creation" && dir == "asc") { groups = groups_creation; } else if (prop == "creation" && dir == "desc") { var reverse = []; for (var i = groups_creation.length - 1; i >= 0; i--) reverse.push(groups_creation[i]); groups = reverse; } else if (prop == "members" && dir == "asc") { groups = groups_members; } else if (prop == "members" && dir == "desc") { var reverse = []; for (var i = groups_members.length - 1; i >= 0; i--) reverse.push(groups_members[i]); groups = reverse; } jQuery(groupsSelector).remove(); jQuery(parentSelector).append(groups); }; jQuery(document).ready(function() { jQuery(".sectionDesc").append(" 
Order by
Name AscendingName DescendingCreation Date AscendingCreation Date DescendingTotal Members AscendingTotal Members Descending
"); });