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 @@
67076707 </div>
67086708 <div class="flex-container wide100pLess70px character_select_container height100p alignitemscenter">
67096709 <div class="wide100p character_name_block">
67106710 <span class="ch_name" data-i18n="Go back">Go back</span>
67116711 </div>
67126712 </div>
67136713 </div>
public/locales/ru-ru.json+2 -2
@@ -2403,7 +2403,6 @@
24032403 "Croak it": "Только кваканье лягушек и стрёкот сверчков",
24042404 "${0} character hidden.": "Персонажей скрыто: ${0}.",
24052405 "${0} characters hidden.": "Персонажей скрыто: ${0}.",
2406- "pagination_of": "из",
24072406 "/ page": "/ стр.",
24082407 "Context Length": "Размер контекста",
24092408 "Added On": "Добавлена",
@@ -2421,5 +2420,6 @@
24212420 "Text Completion Preset": "Пресет для режима Text Completion",
24222421 "Update enabled": "Обновить включенные",
24232422 "Could not connect to API": "Не удалось подключиться к API",
24242423 "Connected to API": "Соединение с API установлено",
2424+ "Go back": "Назад"
24252425}
public/script.js+10 -3
@@ -177,6 +177,8 @@ import {
177177 uuidv4,
178178 equalsIgnoreCaseAndAccents,
179179 localizePagination,
180+ renderPaginationDropdown,
181+ paginationDropdownChangeHandler,
180182} from './scripts/utils.js';
181183import { debounce_timeout, IGNORE_SYMBOL } from './scripts/constants.js';
182184
@@ -1525,10 +1527,12 @@ export async function printCharacters(fullRefresh = false) {
15251527
15261528 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];
15281533 $('#rm_print_characters_pagination').pagination({
15291534 dataSource: entities,
1530- pageSize: Number(accountStorage.getItem(storageKey)) || per_page_default,
1535+ pageSize,
1531- sizeChangerOptions: [10, 25, 50, 100, 250, 500, 1000],
15321536 pageRange: 1,
15331537 pageNumber: saveCharactersPage || 1,
15341538 position: 'top',
@@ -1537,6 +1541,7 @@ export async function printCharacters(fullRefresh = false) {
15371541 prevText: '<',
15381542 nextText: '>',
15391543 formatNavigator: PAGINATION_TEMPLATE,
1544+ formatSizeChanger: renderPaginationDropdown(pageSize, sizeChangerOptions),
15401545 showNavigator: true,
15411546 callback: async function (/** @type {Entity[]} */ data) {
15421547 $(listId).empty();
@@ -1573,8 +1578,10 @@ export async function printCharacters(fullRefresh = false) {
15731578
15741579 eventSource.emit(event_types.CHARACTER_PAGE_LOADED);
15751580 },
15761581 afterSizeSelectorChange: function (e, size) {
15771582 accountStorage.setItem(storageKey, e.target.value);
1583+ console.log('pageSize for characters after getting updated = ' + accountStorage.getItem(storageKey));
1584+ paginationDropdownChangeHandler(e, size);
15781585 },
15791586 afterPaging: function (e) {
15801587 saveCharactersPage = e;
public/scripts/group-chats.js+14 -6
@@ -14,6 +14,8 @@ import {
1414 resetScrollHeight,
1515 initScrollHeight,
1616 localizePagination,
17+ renderPaginationDropdown,
18+ paginationDropdownChangeHandler,
1719} from './utils.js';
1820import { RA_CountCharTokens, humanizedDateTime, dragElement, favsToHotswap, getMessageTimeStamp } from './RossAscends-mods.js';
1921import { power_user, loadMovingUIState, sortEntitiesList } from './power-user.js';
@@ -1375,6 +1377,8 @@ function getGroupCharacters({ doFilter, onlyMembers } = {}) {
13751377
13761378function printGroupCandidates() {
13771379 const storageKey = 'GroupCandidates_PerPage';
1380+ const pageSize = Number(accountStorage.getItem(storageKey)) || 5;
1381+ const sizeChangerOptions = [5, 10, 25, 50, 100, 200, 500, 1000];
13781382 $('#rm_group_add_members_pagination').pagination({
13791383 dataSource: getGroupCharacters({ doFilter: true, onlyMembers: false }),
13801384 pageRange: 1,
@@ -1383,12 +1387,13 @@ function printGroupCandidates() {
13831387 prevText: '<',
13841388 nextText: '>',
13851389 formatNavigator: PAGINATION_TEMPLATE,
1390+ formatSizeChanger: renderPaginationDropdown(pageSize, sizeChangerOptions),
13861391 showNavigator: true,
13871392 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) {
13911395 accountStorage.setItem(storageKey, e.target.value);
1396+ paginationDropdownChangeHandler(e, size);
13921397 },
13931398 callback: function (data) {
13941399 $('#rm_group_add_members').empty();
@@ -1404,6 +1409,8 @@ function printGroupMembers() {
14041409 const storageKey = 'GroupMembers_PerPage';
14051410 $('.rm_group_members_pagination').each(function () {
14061411 let that = this;
1412+ const pageSize = Number(accountStorage.getItem(storageKey)) || 5;
1413+ const sizeChangerOptions = [5, 10, 25, 50, 100, 200, 500, 1000];
14071414 $(this).pagination({
14081415 dataSource: getGroupCharacters({ doFilter: false, onlyMembers: true }),
14091416 pageRange: 1,
@@ -1414,10 +1421,11 @@ function printGroupMembers() {
14141421 formatNavigator: PAGINATION_TEMPLATE,
14151422 showNavigator: true,
14161423 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,
14191426 afterSizeSelectorChange: function (e, size) {
14201427 accountStorage.setItem(storageKey, e.target.value);
1428+ paginationDropdownChangeHandler(e, size);
14211429 },
14221430 callback: function (data) {
14231431 $('.rm_group_members').empty();
public/scripts/personas.js+6 -3
@@ -22,7 +22,7 @@ import {
2222} from '../script.js';
2323import { persona_description_positions, power_user } from './power-user.js';
2424import { getTokenCountAsync } from './tokenizers.js';
2525import { PAGINATION_TEMPLATE, clearInfoBlock, debounce, delay, download, ensureImageFormatSupported, flashHighlight, getBase64Async, getCharIndex, isFalseBoolean, isTrueBoolean, onlyUnique, parseJsonFile, setInfoBlock, localizePagination, renderPaginationDropdown, paginationDropdownChangeHandler } from './utils.js';
2626import { debounce_timeout } from './constants.js';
2727import { FILTER_TYPES, FilterHelper } from './filters.js';
2828import { groups, selected_group } from './group-chats.js';
@@ -250,16 +250,18 @@ export async function getUserAvatars(doRender = true, openPageAt = '') {
250250 const storageKey = 'Personas_PerPage';
251251 const listId = '#user_avatar_block';
252252 const perPage = Number(accountStorage.getItem(storageKey)) || 5;
253+ const sizeChangerOptions = [5, 10, 25, 50, 100, 250, 500, 1000];
253254
254255 $('#persona_pagination_container').pagination({
255256 dataSource: entities,
256257 pageSize: perPage,
257- sizeChangerOptions: [5, 10, 25, 50, 100, 250, 500, 1000],
258+ sizeChangerOptions,
258259 pageRange: 1,
259260 pageNumber: savePersonasPage || 1,
260261 position: 'top',
261262 showPageNumbers: false,
262263 showSizeChanger: true,
264+ formatSizeChanger: renderPaginationDropdown(perPage, sizeChangerOptions),
263265 prevText: '<',
264266 nextText: '>',
265267 formatNavigator: PAGINATION_TEMPLATE,
@@ -272,8 +274,9 @@ export async function getUserAvatars(doRender = true, openPageAt = '') {
272274 updatePersonaUIStates();
273275 localizePagination($('#persona_pagination_container'));
274276 },
275277 afterSizeSelectorChange: function (e, size) {
276278 accountStorage.setItem(storageKey, e.target.value);
279+ paginationDropdownChangeHandler(e, size);
277280 },
278281 afterPaging: function (e) {
279282 savePersonasPage = e;
public/scripts/tags.js+1 -1
@@ -318,7 +318,7 @@ function getTagBlock(tag, entities, hidden = 0, isUseless = false) {
318318 template.find('.avatar').css({ 'background-color': tag.color, 'color': tag.color2 }).attr('title', `[Folder] ${tag.name}`);
319319 template.find('.ch_name').text(tag.name).attr('title', `[Folder] ${tag.name}`);
320320 template.find('.bogus_folder_hidden_counter').text(hidden > 0 ? `${hidden} hidden` : '');
321321 template.find('.bogus_folder_counter').text(`${count} ${` + (count != 1 ? 't`characters'` : 't`character'}`));
322322 template.find('.bogus_folder_icon').addClass(tagFolder.fa_icon);
323323 if (isUseless) template.addClass('useless');
324324
public/scripts/utils.js+19 -11
@@ -22,21 +22,29 @@ import { getCurrentLocale, t, translate } from './i18n.js';
2222export const PAGINATION_TEMPLATE = '<%= rangeStart %>-<%= rangeEnd %> .. <%= totalNumber %>';
2323
2424export 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- }
3625 container.find('[title="Next page"]').attr('title', translate('Next page'));
3726 container.find('[title="Previous page"]').attr('title', translate('Previous page'));
3827};
3928
29+export 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+
42+export 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+
4048/**
4149 * Navigation options for pagination.
4250 * @enum {number}