Group members reordering

This commit is contained in:
SillyLossy
2023-04-14 21:53:37 +03:00
parent 95e0acb769
commit 0d09967485
4 changed files with 88 additions and 55 deletions

View File

@@ -650,14 +650,20 @@
<input id="enhance_definitions" type="checkbox" /> <input id="enhance_definitions" type="checkbox" />
Enhance Definitions Enhance Definitions
</label> </label>
<div class="range-block-counter justifyLeft">Use OAI knowledge base to enhance definitions for public figures and known fictional characters</div> <div class="range-block-counter justifyLeft">
Use OAI knowledge base to enhance definitions for public figures and known fictional characters
</div>
</div> </div>
<div class="range-block"> <div class="range-block">
<label for="wrap_in_quotes" title="Wrap user messages in quotes before sending" class="checkbox_label widthFreeExpand"> <label for="wrap_in_quotes" title="Wrap user messages in quotes before sending" class="checkbox_label widthFreeExpand">
<input id="wrap_in_quotes" type="checkbox" /> <input id="wrap_in_quotes" type="checkbox" />
Wrap in Quotes Wrap in Quotes
</label> </label>
<div class="range-block-counter justifyLeft">Wrap entire user message in quotes before sending. Volatile impact on AI responses. Helps when using basic chats. Hurts when combining RP-style narration with quotes. Leave off if you use quotes manually for speech.</div> <div class="range-block-counter justifyLeft">
Wrap entire user message in quotes before sending. Volatile impact on AI responses.
Helps when using basic chats. Hurts when combining RP-style narration with quotes.
Leave off if you use quotes manually for speech.
</div>
</div> </div>
</div> </div>
<br> <br>
@@ -843,7 +849,7 @@
</a> </a>
</div> </div>
<span> <span>
Make sure you run it in notebook mode<br>(not Make sure you run it in notebook/default mode<br>(not
<pre>--cai-chat</pre> or <pre>--cai-chat</pre> or
<pre>--chat</pre>) <pre>--chat</pre>)
</span> </span>
@@ -1162,7 +1168,8 @@
<input id="fast_ui_mode" type="checkbox" /> <input id="fast_ui_mode" type="checkbox" />
No Blur Effect No Blur Effect
</label> </label>
<label for="waifuMode"><input id="waifuMode" type="checkbox" /> <label for="waifuMode" class="checkbox_label">
<input id="waifuMode" type="checkbox" />
♡ Waifu Mode ♡ ♡ Waifu Mode ♡
</label> </label>
</div> </div>
@@ -1429,10 +1436,10 @@
</div> </div>
<div class="ch_name"></div> <div class="ch_name"></div>
<div class="group_member_icon"> <div class="group_member_icon">
<div title="Move up" data-action="up" class="right_menu_button fa-solid fa-lg fa-chevron-up"></div> <div title="Move up" data-action="up" class="right_menu_button fa-solid fa-xl fa-chevron-up"></div>
<div title="Move down" data-action="down" class="right_menu_button fa-solid fa-lg fa-chevron-down"></div> <div title="Move down" data-action="down" class="right_menu_button fa-solid fa-xl fa-chevron-down"></div>
<div title="Remove from group" data-action="remove" class="right_menu_button fa-solid fa-lg fa-xmark"></div> <div title="Remove from group" data-action="remove" class="right_menu_button fa-solid fa-xl fa-xmark"></div>
<div class="fa-solid fa-lg fa-plus"></div> <div title="Add to group" data-action="add" class="right_menu_button fa-solid fa-xl fa-plus"></div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -24,7 +24,7 @@
Plays at 80% volume. Plays at 80% volume.
</p> </p>
<p> <p>
If "Sound only for unfocused window" option is enabled, the sound plays only if TavernAI window is <b>unfocused</b>. If "Background Sound Only" option is enabled, the sound plays only if TavernAI window is <b>unfocused</b>.
</p> </p>
</div> </div>
</div> </div>

View File

@@ -543,23 +543,12 @@ async function groupChatAutoModeWorker() {
await generateGroupWrapper(true); await generateGroupWrapper(true);
} }
async function memberClickHandler(event) { async function modifyGroupMember(chat_id, groupMember, isDelete) {
// Handled by different function
if (!!$(this).closest("#rm_group_members").length) {
return;
}
event.stopPropagation();
await modifyGroupMember($(this).closest('.group_member'), false);
}
async function modifyGroupMember(groupMember, isDelete) {
const id = groupMember.data("id"); const id = groupMember.data("id");
const template = groupMember.clone(); const template = groupMember.clone();
let _thisGroup = groups.find((x) => x.id == selected_group); let _thisGroup = groups.find((x) => x.id == chat_id);
template.data("id", id); template.data("id", id);
template.click(memberClickHandler);
if (isDelete) { if (isDelete) {
$("#rm_group_add_members").prepend(template); $("#rm_group_add_members").prepend(template);
@@ -580,13 +569,54 @@ async function modifyGroupMember(groupMember, isDelete) {
await editGroup(selected_group); await editGroup(selected_group);
updateGroupAvatar(_thisGroup); updateGroupAvatar(_thisGroup);
} }
else {
template.css({ 'order': 'unset' });
}
groupMember.remove(); groupMember.remove();
const groupHasMembers = !!$("#rm_group_members").children().length; const groupHasMembers = !!$("#rm_group_members").children().length;
$("#rm_group_submit").prop("disabled", !groupHasMembers); $("#rm_group_submit").prop("disabled", !groupHasMembers);
} }
function select_group_chats(chat_id) { async function reorderGroupMember(chat_id, groupMember, direction) {
const id = groupMember.data("id");
const group = groups.find((x) => x.id == chat_id);
// Existing groups need to modify members list
if (group && group.members.length > 1) {
const indexOf = group.members.indexOf(id);
if (direction == 'down') {
const next = group.members[indexOf + 1];
if (next) {
group.members[indexOf + 1] = group.members[indexOf];
group.members[indexOf] = next;
}
}
if (direction == 'up') {
const prev = group.members[indexOf - 1];
if (prev) {
group.members[indexOf - 1] = group.members[indexOf];
group.members[indexOf] = prev;
}
}
await editGroup(chat_id);
updateGroupAvatar(group);
// stupid but lifts the manual reordering
select_group_chats(chat_id, true);
}
// New groups just can't be DOM-ordered
else {
if (direction == 'down') {
groupMember.insertAfter(groupMember.next());
}
if (direction == 'up') {
groupMember.insertBefore(groupMember.prev());
}
}
}
function select_group_chats(chat_id, skipAnimation) {
const group = chat_id && groups.find((x) => x.id == chat_id); const group = chat_id && groups.find((x) => x.id == chat_id);
const groupName = group?.name ?? ""; const groupName = group?.name ?? "";
@@ -612,7 +642,9 @@ function select_group_chats(chat_id) {
}); });
$(`input[name="rm_group_activation_strategy"][value="${Number(group?.activation_strategy ?? group_activation_strategy.NATURAL)}"]`).prop('checked', true); $(`input[name="rm_group_activation_strategy"][value="${Number(group?.activation_strategy ?? group_activation_strategy.NATURAL)}"]`).prop('checked', true);
selectRightMenuWithAnimation('rm_group_chats_block'); if (!skipAnimation) {
selectRightMenuWithAnimation('rm_group_chats_block');
}
// render characters list // render characters list
$("#rm_group_add_members").empty(); $("#rm_group_add_members").empty();
@@ -627,7 +659,6 @@ function select_group_chats(chat_id) {
template.find(".avatar img").attr("src", avatar); template.find(".avatar img").attr("src", avatar);
template.find(".ch_name").text(character.name); template.find(".ch_name").text(character.name);
template.attr("chid", characters.indexOf(character)); template.attr("chid", characters.indexOf(character));
template.click(memberClickHandler);
if ( if (
group && group &&
@@ -685,6 +716,27 @@ function select_group_chats(chat_id) {
else { else {
$("#rm_group_automode_label").hide(); $("#rm_group_automode_label").hide();
} }
$(document).off("click", ".group_member .right_menu_button");
$(document).on("click", ".group_member .right_menu_button", async function (event) {
event.stopPropagation();
const action = $(this).data('action');
const member = $(this).closest('.group_member');
if (action == 'remove') {
await modifyGroupMember(chat_id, member, true);
}
if (action == 'add') {
await modifyGroupMember(chat_id, member, false);
}
if (action == 'up' || action == 'down') {
await reorderGroupMember(chat_id, member, action);
}
sortCharactersList("#rm_group_add_members .group_member");
});
} }
$(document).ready(() => { $(document).ready(() => {
@@ -707,15 +759,6 @@ $(document).ready(() => {
} }
}); });
$(document).on("click", ".group_member .right_menu_button", async function (event) {
const action = $(this).data('action');
if (action == 'remove') {
event.stopPropagation();
await modifyGroupMember($(this).closest('.group_member'), true);
}
});
$("#rm_group_filter").on("input", function () { $("#rm_group_filter").on("input", function () {
const searchValue = $(this).val().trim().toLowerCase(); const searchValue = $(this).val().trim().toLowerCase();

View File

@@ -2346,7 +2346,6 @@ h5 {
width: 100%; width: 100%;
padding: 5px; padding: 5px;
border-radius: 10px; border-radius: 10px;
cursor: pointer;
} }
.group_member .ch_name { .group_member .ch_name {
@@ -2357,27 +2356,15 @@ h5 {
width: calc(100% - 110px); width: calc(100% - 110px);
} }
.group_member:hover {
background-color: var(--white30a);
}
#rm_group_members .group_member {
cursor: initial;
}
#rm_group_members .group_member:hover {
background-color: initial;
}
/* Rules for icon display */ /* Rules for icon display */
#rm_group_members .group_member:first-child .fa-chevron-down, #rm_group_members .group_member[order="start"] .fa-chevron-down,
#rm_group_members .group_member:last-child .fa-chevron-up, #rm_group_members .group_member[order="end"] .fa-chevron-up,
#rm_group_add_members .right_menu_button, #rm_group_add_members .right_menu_button:not(.fa-plus),
#rm_group_members .fa-plus { #rm_group_members .fa-plus {
display: none; display: none;
} }
#rm_group_members .right_menu_button { #rm_group_members .right_menu_button, #rm_group_add_members .right_menu_button {
padding: 0px; padding: 0px;
} }
@@ -2412,10 +2399,6 @@ h5 {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
#rm_button_back_from_group {
padding: 5px;
}
#typing_indicator_template { #typing_indicator_template {
display: none !important; display: none !important;
} }