Unify characters/group list. Sort groups with chars

This commit is contained in:
SillyLossy
2023-05-06 01:51:34 +03:00
parent ef7f6ad096
commit 9f9f4fe883
3 changed files with 50 additions and 18 deletions

View File

@ -733,13 +733,11 @@ function printCharacters() {
// Add to the list // Add to the list
$("#rm_print_characters_block").append(template); $("#rm_print_characters_block").append(template);
}); });
$("#rm_print_characters_block").prepend(`<hr>`);
printTags(); printTags();
printGroups(); printGroups();
sortCharactersList();
favsToHotswap(); favsToHotswap();
sortCharactersList();
} }
async function getCharacters() { async function getCharacters() {

View File

@ -5,7 +5,7 @@ import {
delay, delay,
} from './utils.js'; } from './utils.js';
import { RA_CountCharTokens, humanizedDateTime } from "./RossAscends-mods.js"; import { RA_CountCharTokens, humanizedDateTime } from "./RossAscends-mods.js";
import { sortCharactersList } from './power-user.js'; import { sortCharactersList, sortGroupMembers } from './power-user.js';
import { import {
chat, chat,
@ -201,6 +201,7 @@ async function saveGroupChat(groupId, shouldSaveGroup) {
if (shouldSaveGroup && response.ok) { if (shouldSaveGroup && response.ok) {
await editGroup(groupId); await editGroup(groupId);
} }
sortCharactersList();
} }
export async function renameGroupMember(oldAvatar, newAvatar, newName) { export async function renameGroupMember(oldAvatar, newAvatar, newName) {
@ -899,7 +900,7 @@ function select_group_chats(groupId, skipAnimation) {
} }
} }
sortCharactersList("#rm_group_add_members .group_member"); sortGroupMembers("#rm_group_add_members .group_member");
filterMembersByFavorites(false); filterMembersByFavorites(false);
const groupHasMembers = !!$("#rm_group_members").children().length; const groupHasMembers = !!$("#rm_group_members").children().length;
@ -989,7 +990,7 @@ function select_group_chats(groupId, skipAnimation) {
} }
} }
sortCharactersList("#rm_group_add_members .group_member"); sortGroupMembers("#rm_group_add_members .group_member");
}); });
} }
@ -1195,10 +1196,12 @@ export async function openGroupChat(groupId, chatId) {
group.past_metadata[previousChat] = Object.assign({}, chat_metadata); group.past_metadata[previousChat] = Object.assign({}, chat_metadata);
group.chat_id = chatId; group.chat_id = chatId;
group.chat_metadata = group.past_metadata[chatId] || {}; group.chat_metadata = group.past_metadata[chatId] || {};
group['date_last_chat'] = Date.now();
updateChatMetadata(group.chat_metadata, true); updateChatMetadata(group.chat_metadata, true);
await editGroup(groupId, true); await editGroup(groupId, true);
await getGroupChat(groupId); await getGroupChat(groupId);
sortCharactersList();
} }
export async function renameGroupChat(groupId, oldChatId, newChatId) { export async function renameGroupChat(groupId, oldChatId, newChatId) {

View File

@ -8,11 +8,15 @@ import {
reloadCurrentChat, reloadCurrentChat,
getRequestHeaders, getRequestHeaders,
} from "../script.js"; } from "../script.js";
import {
groups,
} from "./group-chats.js";
export { export {
loadPowerUserSettings, loadPowerUserSettings,
collapseNewlines, collapseNewlines,
playMessageSound, playMessageSound,
sortGroupMembers,
sortCharactersList, sortCharactersList,
fixMarkdown, fixMarkdown,
power_user, power_user,
@ -409,9 +413,8 @@ function loadPowerUserSettings(settings, data) {
reloadMarkdownProcessor(power_user.render_formulas); reloadMarkdownProcessor(power_user.render_formulas);
} }
function sortCharactersList(selector = '.character_select') { const sortFunc = (a, b) => power_user.sort_order == 'asc' ? compareFunc(a, b) : compareFunc(b, a);
const sortFunc = (a, b) => power_user.sort_order == 'asc' ? compareFunc(a, b) : compareFunc(b, a); const compareFunc = (first, second) => {
const compareFunc = (first, second) => {
switch (power_user.sort_rule) { switch (power_user.sort_rule) {
case 'boolean': case 'boolean':
return Number(first[power_user.sort_field] == "true") - Number(second[power_user.sort_field] == "true"); return Number(first[power_user.sort_field] == "true") - Number(second[power_user.sort_field] == "true");
@ -420,8 +423,36 @@ function sortCharactersList(selector = '.character_select') {
? first[power_user.sort_field].localeCompare(second[power_user.sort_field]) ? first[power_user.sort_field].localeCompare(second[power_user.sort_field])
: first[power_user.sort_field] - second[power_user.sort_field]; : first[power_user.sort_field] - second[power_user.sort_field];
} }
}; };
function sortCharactersList() {
const arr1 = groups.map(x => ({
item: x,
id: x.id,
selector: '.group_select',
attribute: 'grid',
}))
const arr2 = characters.map((x, index) => ({
item: x,
id: index,
selector: '.character_select',
attribute: 'chid',
}));
const array = [...arr1, ...arr2];
if (power_user.sort_field == undefined || array.length === 0) {
return;
}
let orderedList = array.slice().sort((a, b) => sortFunc(a.item, b.item));
for (const item of array) {
$(`${item.selector}[${item.attribute}="${item.id}"]`).css({ 'order': orderedList.indexOf(item) });
}
}
function sortGroupMembers(selector) {
if (power_user.sort_field == undefined || characters.length === 0) { if (power_user.sort_field == undefined || characters.length === 0) {
return; return;
} }