More work on tl

1822c4f91b99ec15f64c4ac4b0bdc01360427af3

Yokayo <nonameutubecomm@gmail.com>

7 files changed, +53 -27Showing whitespace changes
public/index.html+1 -1
@@ -6707,7 +6707,7 @@
6707 </div>6707 </div>
6708 <div class="flex-container wide100pLess70px character_select_container height100p alignitemscenter">6708 <div class="flex-container wide100pLess70px character_select_container height100p alignitemscenter">
6709 <div class="wide100p character_name_block">6709 <div class="wide100p character_name_block">
6710 <span class="ch_name">Go back</span>6710 <span class="ch_name" data-i18n="Go back">Go back</span>
6711 </div>6711 </div>
6712 </div>6712 </div>
6713 </div>6713 </div>
public/locales/ru-ru.json+2 -2
@@ -2403,7 +2403,6 @@
2403 "Croak it": "Только кваканье лягушек и стрёкот сверчков",2403 "Croak it": "Только кваканье лягушек и стрёкот сверчков",
2404 "${0} character hidden.": "Персонажей скрыто: ${0}.",2404 "${0} character hidden.": "Персонажей скрыто: ${0}.",
2405 "${0} characters hidden.": "Персонажей скрыто: ${0}.",2405 "${0} characters hidden.": "Персонажей скрыто: ${0}.",
2406 "pagination_of": "из",
2407 "/ page": "/ стр.",2406 "/ page": "/ стр.",
2408 "Context Length": "Размер контекста",2407 "Context Length": "Размер контекста",
2409 "Added On": "Добавлена",2408 "Added On": "Добавлена",
@@ -2421,5 +2420,6 @@
2421 "Text Completion Preset": "Пресет для режима Text Completion",2420 "Text Completion Preset": "Пресет для режима Text Completion",
2422 "Update enabled": "Обновить включенные",2421 "Update enabled": "Обновить включенные",
2423 "Could not connect to API": "Не удалось подключиться к API",2422 "Could not connect to API": "Не удалось подключиться к API",
2424 "Connected to API": "Соединение с API установлено"2423 "Connected to API": "Соединение с API установлено",
2424 "Go back": "Назад"
2425}2425}
public/script.js+10 -3
@@ -177,6 +177,8 @@ import {
177 uuidv4,177 uuidv4,
178 equalsIgnoreCaseAndAccents,178 equalsIgnoreCaseAndAccents,
179 localizePagination,179 localizePagination,
180 renderPaginationDropdown,
181 paginationDropdownChangeHandler,
180} from './scripts/utils.js';182} from './scripts/utils.js';
181import { debounce_timeout, IGNORE_SYMBOL } from './scripts/constants.js';183import { debounce_timeout, IGNORE_SYMBOL } from './scripts/constants.js';
182184
@@ -1525,10 +1527,12 @@ export async function printCharacters(fullRefresh = false) {
15251527
1526 const entities = getEntitiesList({ doFilter: true });1528 const entities = getEntitiesList({ doFilter: true });
15271529
1530 const pageSize = Number(accountStorage.getItem(storageKey)) || per_page_default;
1531 console.log('pageSize for characters = ' + pageSize);
1532 const sizeChangerOptions = [10, 25, 50, 100, 250, 500, 1000];
1528 $('#rm_print_characters_pagination').pagination({1533 $('#rm_print_characters_pagination').pagination({
1529 dataSource: entities,1534 dataSource: entities,
1530 pageSize: Number(accountStorage.getItem(storageKey)) || per_page_default,1535 pageSize,
1531 sizeChangerOptions: [10, 25, 50, 100, 250, 500, 1000],
1532 pageRange: 1,1536 pageRange: 1,
1533 pageNumber: saveCharactersPage || 1,1537 pageNumber: saveCharactersPage || 1,
1534 position: 'top',1538 position: 'top',
@@ -1537,6 +1541,7 @@ export async function printCharacters(fullRefresh = false) {
1537 prevText: '<',1541 prevText: '<',
1538 nextText: '>',1542 nextText: '>',
1539 formatNavigator: PAGINATION_TEMPLATE,1543 formatNavigator: PAGINATION_TEMPLATE,
1544 formatSizeChanger: renderPaginationDropdown(pageSize, sizeChangerOptions),
1540 showNavigator: true,1545 showNavigator: true,
1541 callback: async function (/** @type {Entity[]} */ data) {1546 callback: async function (/** @type {Entity[]} */ data) {
1542 $(listId).empty();1547 $(listId).empty();
@@ -1573,8 +1578,10 @@ export async function printCharacters(fullRefresh = false) {
15731578
1574 eventSource.emit(event_types.CHARACTER_PAGE_LOADED);1579 eventSource.emit(event_types.CHARACTER_PAGE_LOADED);
1575 },1580 },
1576 afterSizeSelectorChange: function (e) {1581 afterSizeSelectorChange: function (e, size) {
1577 accountStorage.setItem(storageKey, e.target.value);1582 accountStorage.setItem(storageKey, e.target.value);
1583 console.log('pageSize for characters after getting updated = ' + accountStorage.getItem(storageKey));
1584 paginationDropdownChangeHandler(e, size);
1578 },1585 },
1579 afterPaging: function (e) {1586 afterPaging: function (e) {
1580 saveCharactersPage = e;1587 saveCharactersPage = e;
public/scripts/group-chats.js+14 -6
@@ -14,6 +14,8 @@ import {
14 resetScrollHeight,14 resetScrollHeight,
15 initScrollHeight,15 initScrollHeight,
16 localizePagination,16 localizePagination,
17 renderPaginationDropdown,
18 paginationDropdownChangeHandler,
17} from './utils.js';19} from './utils.js';
18import { RA_CountCharTokens, humanizedDateTime, dragElement, favsToHotswap, getMessageTimeStamp } from './RossAscends-mods.js';20import { RA_CountCharTokens, humanizedDateTime, dragElement, favsToHotswap, getMessageTimeStamp } from './RossAscends-mods.js';
19import { power_user, loadMovingUIState, sortEntitiesList } from './power-user.js';21import { power_user, loadMovingUIState, sortEntitiesList } from './power-user.js';
@@ -1375,6 +1377,8 @@ function getGroupCharacters({ doFilter, onlyMembers } = {}) {
13751377
1376function printGroupCandidates() {1378function printGroupCandidates() {
1377 const storageKey = 'GroupCandidates_PerPage';1379 const storageKey = 'GroupCandidates_PerPage';
1380 const pageSize = Number(accountStorage.getItem(storageKey)) || 5;
1381 const sizeChangerOptions = [5, 10, 25, 50, 100, 200, 500, 1000];
1378 $('#rm_group_add_members_pagination').pagination({1382 $('#rm_group_add_members_pagination').pagination({
1379 dataSource: getGroupCharacters({ doFilter: true, onlyMembers: false }),1383 dataSource: getGroupCharacters({ doFilter: true, onlyMembers: false }),
1380 pageRange: 1,1384 pageRange: 1,
@@ -1383,12 +1387,13 @@ function printGroupCandidates() {
1383 prevText: '<',1387 prevText: '<',
1384 nextText: '>',1388 nextText: '>',
1385 formatNavigator: PAGINATION_TEMPLATE,1389 formatNavigator: PAGINATION_TEMPLATE,
1390 formatSizeChanger: renderPaginationDropdown(pageSize, sizeChangerOptions),
1386 showNavigator: true,1391 showNavigator: true,
1387 showSizeChanger: true,1392 showSizeChanger: true,
1388 pageSize: Number(accountStorage.getItem(storageKey)) || 5,1393 pageSize,
1389 sizeChangerOptions: [5, 10, 25, 50, 100, 200, 500, 1000],1394 afterSizeSelectorChange: function (e, size) {
1390 afterSizeSelectorChange: function (e) {
1391 accountStorage.setItem(storageKey, e.target.value);1395 accountStorage.setItem(storageKey, e.target.value);
1396 paginationDropdownChangeHandler(e, size);
1392 },1397 },
1393 callback: function (data) {1398 callback: function (data) {
1394 $('#rm_group_add_members').empty();1399 $('#rm_group_add_members').empty();
@@ -1404,6 +1409,8 @@ function printGroupMembers() {
1404 const storageKey = 'GroupMembers_PerPage';1409 const storageKey = 'GroupMembers_PerPage';
1405 $('.rm_group_members_pagination').each(function () {1410 $('.rm_group_members_pagination').each(function () {
1406 let that = this;1411 let that = this;
1412 const pageSize = Number(accountStorage.getItem(storageKey)) || 5;
1413 const sizeChangerOptions = [5, 10, 25, 50, 100, 200, 500, 1000];
1407 $(this).pagination({1414 $(this).pagination({
1408 dataSource: getGroupCharacters({ doFilter: false, onlyMembers: true }),1415 dataSource: getGroupCharacters({ doFilter: false, onlyMembers: true }),
1409 pageRange: 1,1416 pageRange: 1,
@@ -1414,10 +1421,11 @@ function printGroupMembers() {
1414 formatNavigator: PAGINATION_TEMPLATE,1421 formatNavigator: PAGINATION_TEMPLATE,
1415 showNavigator: true,1422 showNavigator: true,
1416 showSizeChanger: true,1423 showSizeChanger: true,
1417 pageSize: Number(accountStorage.getItem(storageKey)) || 5,1424 formatSizeChanger: renderPaginationDropdown(pageSize, sizeChangerOptions),
1418 sizeChangerOptions: [5, 10, 25, 50, 100, 200, 500, 1000],1425 pageSize,
1419 afterSizeSelectorChange: function (e) {1426 afterSizeSelectorChange: function (e, size) {
1420 accountStorage.setItem(storageKey, e.target.value);1427 accountStorage.setItem(storageKey, e.target.value);
1428 paginationDropdownChangeHandler(e, size);
1421 },1429 },
1422 callback: function (data) {1430 callback: function (data) {
1423 $('.rm_group_members').empty();1431 $('.rm_group_members').empty();
public/scripts/personas.js+6 -3
@@ -22,7 +22,7 @@ import {
22} from '../script.js';22} from '../script.js';
23import { persona_description_positions, power_user } from './power-user.js';23import { persona_description_positions, power_user } from './power-user.js';
24import { getTokenCountAsync } from './tokenizers.js';24import { getTokenCountAsync } from './tokenizers.js';
25import { PAGINATION_TEMPLATE, clearInfoBlock, debounce, delay, download, ensureImageFormatSupported, flashHighlight, getBase64Async, getCharIndex, isFalseBoolean, isTrueBoolean, onlyUnique, parseJsonFile, setInfoBlock, localizePagination } from './utils.js';25import { PAGINATION_TEMPLATE, clearInfoBlock, debounce, delay, download, ensureImageFormatSupported, flashHighlight, getBase64Async, getCharIndex, isFalseBoolean, isTrueBoolean, onlyUnique, parseJsonFile, setInfoBlock, localizePagination, renderPaginationDropdown, paginationDropdownChangeHandler } from './utils.js';
26import { debounce_timeout } from './constants.js';26import { debounce_timeout } from './constants.js';
27import { FILTER_TYPES, FilterHelper } from './filters.js';27import { FILTER_TYPES, FilterHelper } from './filters.js';
28import { groups, selected_group } from './group-chats.js';28import { groups, selected_group } from './group-chats.js';
@@ -250,16 +250,18 @@ export async function getUserAvatars(doRender = true, openPageAt = '') {
250 const storageKey = 'Personas_PerPage';250 const storageKey = 'Personas_PerPage';
251 const listId = '#user_avatar_block';251 const listId = '#user_avatar_block';
252 const perPage = Number(accountStorage.getItem(storageKey)) || 5;252 const perPage = Number(accountStorage.getItem(storageKey)) || 5;
253 const sizeChangerOptions = [5, 10, 25, 50, 100, 250, 500, 1000];
253254
254 $('#persona_pagination_container').pagination({255 $('#persona_pagination_container').pagination({
255 dataSource: entities,256 dataSource: entities,
256 pageSize: perPage,257 pageSize: perPage,
257 sizeChangerOptions: [5, 10, 25, 50, 100, 250, 500, 1000],258 sizeChangerOptions,
258 pageRange: 1,259 pageRange: 1,
259 pageNumber: savePersonasPage || 1,260 pageNumber: savePersonasPage || 1,
260 position: 'top',261 position: 'top',
261 showPageNumbers: false,262 showPageNumbers: false,
262 showSizeChanger: true,263 showSizeChanger: true,
264 formatSizeChanger: renderPaginationDropdown(perPage, sizeChangerOptions),
263 prevText: '<',265 prevText: '<',
264 nextText: '>',266 nextText: '>',
265 formatNavigator: PAGINATION_TEMPLATE,267 formatNavigator: PAGINATION_TEMPLATE,
@@ -272,8 +274,9 @@ export async function getUserAvatars(doRender = true, openPageAt = '') {
272 updatePersonaUIStates();274 updatePersonaUIStates();
273 localizePagination($('#persona_pagination_container'));275 localizePagination($('#persona_pagination_container'));
274 },276 },
275 afterSizeSelectorChange: function (e) {277 afterSizeSelectorChange: function (e, size) {
276 accountStorage.setItem(storageKey, e.target.value);278 accountStorage.setItem(storageKey, e.target.value);
279 paginationDropdownChangeHandler(e, size);
277 },280 },
278 afterPaging: function (e) {281 afterPaging: function (e) {
279 savePersonasPage = e;282 savePersonasPage = e;
public/scripts/tags.js+1 -1
@@ -318,7 +318,7 @@ function getTagBlock(tag, entities, hidden = 0, isUseless = false) {
318 template.find('.avatar').css({ 'background-color': tag.color, 'color': tag.color2 }).attr('title', `[Folder] ${tag.name}`);318 template.find('.avatar').css({ 'background-color': tag.color, 'color': tag.color2 }).attr('title', `[Folder] ${tag.name}`);
319 template.find('.ch_name').text(tag.name).attr('title', `[Folder] ${tag.name}`);319 template.find('.ch_name').text(tag.name).attr('title', `[Folder] ${tag.name}`);
320 template.find('.bogus_folder_hidden_counter').text(hidden > 0 ? `${hidden} hidden` : '');320 template.find('.bogus_folder_hidden_counter').text(hidden > 0 ? `${hidden} hidden` : '');
321 template.find('.bogus_folder_counter').text(`${count} ${count != 1 ? 'characters' : 'character'}`);321 template.find('.bogus_folder_counter').text(`${count} ` + (count != 1 ? t`characters` : t`character`));
322 template.find('.bogus_folder_icon').addClass(tagFolder.fa_icon);322 template.find('.bogus_folder_icon').addClass(tagFolder.fa_icon);
323 if (isUseless) template.addClass('useless');323 if (isUseless) template.addClass('useless');
324324
public/scripts/utils.js+19 -11
@@ -22,21 +22,29 @@ import { getCurrentLocale, t, translate } from './i18n.js';
22export const PAGINATION_TEMPLATE = '<%= rangeStart %>-<%= rangeEnd %> .. <%= totalNumber %>';22export const PAGINATION_TEMPLATE = '<%= rangeStart %>-<%= rangeEnd %> .. <%= totalNumber %>';
2323
24export const localizePagination = function(container) {24export const localizePagination = function(container) {
25 let options = container.find('option');
26 for (let option of options) {
27 option = $(option);
28 try {
29 option.text(option.text().replace('/ page', translate('/ page')));
30 } catch (e) {
31 // means that i18n facilities aren't ready, so there's no point doing anything
32 console.error(e);
33 return;
34 }
35 }
36 container.find('[title="Next page"]').attr('title', translate('Next page'));25 container.find('[title="Next page"]').attr('title', translate('Next page'));
37 container.find('[title="Previous page"]').attr('title', translate('Previous page'));26 container.find('[title="Previous page"]').attr('title', translate('Previous page'));
38};27};
3928
29export const renderPaginationDropdown = function(pageSize, sizeChangerOptions) {
30 let sizeSelect = `<select class="J-paginationjs-size-select">`;
31 if (sizeChangerOptions.indexOf(pageSize) === -1) {
32 sizeChangerOptions.unshift(pageSize);
33 sizeChangerOptions.sort((a, b) => a - b);
34 }
35 for (let i = 0; i < sizeChangerOptions.length; i++) {
36 sizeSelect += `<option value="${sizeChangerOptions[i]}"${(sizeChangerOptions[i] === pageSize ? ' selected' : '')}>${sizeChangerOptions[i]} ` + t`/ page` + `</option>`;
37 }
38 sizeSelect += `</select>`;
39 return sizeSelect;
40}
41
42export const paginationDropdownChangeHandler = function(event, size) {
43 let dropdown = $(event?.originalEvent?.currentTarget || event.delegateTarget).find('select');
44 dropdown.find('[selected]').removeAttr('selected');
45 dropdown.find(`[value=${size}]`).attr('selected', '');
46}
47
40/**48/**
41 * Navigation options for pagination.49 * Navigation options for pagination.
42 * @enum {number}50 * @enum {number}