Use natural sorting in WebUI

Also change case sensitivity to the default of 'sort' mode.

PR #20264.
This commit is contained in:
Chocobo1 2024-01-15 13:12:36 +08:00 committed by GitHub
parent 6918316a3d
commit 00372dd559
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 12 deletions

View file

@ -575,7 +575,7 @@ window.addEvent('load', function() {
const sortedTags = [];
for (const key in tagList)
sortedTags.push(tagList[key].name);
sortedTags.sort();
sortedTags.sort(window.qBittorrent.Misc.naturalSortCollator.compare);
for (let i = 0; i < sortedTags.length; ++i) {
const tagName = sortedTags[i];

View file

@ -456,7 +456,7 @@ window.qBittorrent.ContextMenu = (function() {
Object.each(category_list, function(category) {
sortedCategories.push(category.name);
});
sortedCategories.sort();
sortedCategories.sort(window.qBittorrent.Misc.naturalSortCollator.compare);
let first = true;
Object.each(sortedCategories, function(categoryName) {
@ -493,7 +493,7 @@ window.qBittorrent.ContextMenu = (function() {
const sortedTags = [];
for (const key in tagList)
sortedTags.push(tagList[key].name);
sortedTags.sort();
sortedTags.sort(window.qBittorrent.Misc.naturalSortCollator.compare);
for (let i = 0; i < sortedTags.length; ++i) {
const tagName = sortedTags[i];

View file

@ -179,7 +179,8 @@ window.qBittorrent.Misc = (function() {
return escapedString;
};
const naturalSortCollator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator#parameters
const naturalSortCollator = new Intl.Collator(undefined, { numeric: true, usage: 'sort' });
const safeTrim = function(value) {
try {

View file

@ -541,14 +541,10 @@
$('searchResultsTableContainer').style.display = "block";
// sort plugins alphabetically
const allPlugins = searchPlugins.sort(function(pluginA, pluginB) {
const a = pluginA.fullName.toLowerCase();
const b = pluginB.fullName.toLowerCase();
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
const allPlugins = searchPlugins.sort((left, right) => {
const leftName = left.fullName;
const rightName = right.fullName;
return window.qBittorrent.Misc.naturalSortCollator.compare(leftName, rightName);
});
allPlugins.each(function(plugin) {