diff --git a/public/index.html b/public/index.html index a25413412..4b04778ca 100644 --- a/public/index.html +++ b/public/index.html @@ -1551,6 +1551,7 @@ + diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js index 378b1ea83..afd7d8c64 100644 --- a/public/scripts/power-user.js +++ b/public/scripts/power-user.js @@ -62,6 +62,7 @@ let power_user = { auto_save_msg_edits: false, sort_field: 'name', sort_order: 'asc', + sort_rule: null, font_scale: 1, blur_strength: 10, @@ -300,9 +301,16 @@ function loadPowerUserSettings(settings, data) { function sortCharactersList(selector = '.character_select') { const sortFunc = (a, b) => power_user.sort_order == 'asc' ? compareFunc(a, b) : compareFunc(b, a); - const compareFunc = (first, second) => typeof first[power_user.sort_field] == "string" - ? first[power_user.sort_field].localeCompare(second[power_user.sort_field]) - : first[power_user.sort_field] - second[power_user.sort_field]; + const compareFunc = (first, second) => { + switch (power_user.sort_rule) { + case 'boolean': + return Number(first[power_user.sort_field] == "true") - Number(second[power_user.sort_field] == "true"); + default: + return typeof first[power_user.sort_field] == "string" + ? first[power_user.sort_field].localeCompare(second[power_user.sort_field]) + : first[power_user.sort_field] - second[power_user.sort_field]; + } + }; if (power_user.sort_field == undefined || characters.length === 0) { return; @@ -546,6 +554,7 @@ $(document).ready(() => { $("#character_sort_order").on('change', function () { power_user.sort_field = $(this).find(":selected").data('field'); power_user.sort_order = $(this).find(":selected").data('order'); + power_user.sort_rule = $(this).find(":selected").data('rule'); sortCharactersList(); saveSettingsDebounced(); });