mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Unify characters/group list. Sort groups with chars
This commit is contained in:
@ -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() {
|
||||||
|
@ -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) {
|
||||||
|
@ -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,7 +413,6 @@ 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) {
|
||||||
@ -422,6 +425,34 @@ function sortCharactersList(selector = '.character_select') {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user