Featherless: Fix /model command

f436000a9dbba70a3fd7370a50653321bcf3c117

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +16 -10Showing whitespace changes
public/scripts/textgen-models.js+16 -10
@@ -266,8 +266,7 @@ export async function loadAphroditeModels(data) {
266266 }
267267}
268268
269-// Page -1 will be initialized from a selected model.
269+let featherlessCurrentPage = 1;
270-let currentPage = -1;
271270export async function loadFeatherlessModels(data) {
272271 const searchBar = document.getElementById('model_search_bar');
273272 const modelCardBlock = document.getElementById('model_card_block');
@@ -298,11 +297,11 @@ export async function loadFeatherlessModels(data) {
298297
299298 // Initialize pagination with the full set of models
300299 const selectedModelPage = (data.findIndex(x => x.id === textgen_settings.featherless_model) / perPage) + 1;
301300 currentPage = currentPagefeatherlessCurrentPage === -1 && selectedModelPage > 0 ? selectedModelPage : 1;
302301 setupPagination(originalModels, perPage);
303302
304303 // Function to set up pagination (also used for filtered results)
305304 function setupPagination(models, perPage, pageNumber = currentPagefeatherlessCurrentPage) {
306305 paginationContainer.pagination({
307306 dataSource: models,
308307 pageSize: perPage,
@@ -368,16 +367,22 @@ export async function loadFeatherlessModels(data) {
368367 });
369368
370369 // Update the current page value whenever the page changes
371370 currentPagefeatherlessCurrentPage = pagination.pageNumber;
372371 },
373372 afterSizeSelectorChange: function (e) {
374373 const newPerPage = e.target.value;
375374 localStorage.setItem('Models_PerPage', newPerPage);
376375 setupPagination(models, Number(newPerPage), currentPagefeatherlessCurrentPage); // Use the stored current page number
377376 },
378377 });
379378 }
380379
380+ // Unset previously added listeners
381+ $(searchBar).off('input');
382+ $(sortOrderSelect).off('change');
383+ $(classSelect).off('change');
384+ $(categoriesSelect).off('change');
385+
381386 // Add event listener for input on the search bar
382387 searchBar.addEventListener('input', function () {
383388 applyFiltersAndSort();
@@ -463,7 +468,7 @@ export async function loadFeatherlessModels(data) {
463468 filteredModels.sort((a, b) => b.updated_at.localeCompare(a.updated_at));
464469 }
465470
466471 setupPagination(filteredModels, Number(localStorage.getItem(storageKey)) || perPage, currentPagefeatherlessCurrentPage);
467472 }
468473
469474 // Required to keep the /model command function
@@ -497,7 +502,7 @@ function onFeatherlessModelSelect(modelId) {
497502 setGenerationParamsFromPreset({ max_length: model.context_length });
498503}
499504
500505let isGridViewfeatherlessIsGridView = false; // Default state set to grid view
501506
502507// Ensure the correct initial view is applied when the page loads
503508document.addEventListener('DOMContentLoaded', function () {
@@ -507,7 +512,7 @@ document.addEventListener('DOMContentLoaded', function () {
507512 const toggleButton = document.getElementById('model_grid_toggle');
508513 toggleButton.addEventListener('click', function () {
509514 // Toggle between grid and list view
510515 if (isGridViewfeatherlessIsGridView) {
511516 modelCardBlock.classList.remove('grid-view');
512517 modelCardBlock.classList.add('list-view');
513518 this.title = 'Toggle to grid view';
@@ -517,7 +522,7 @@ document.addEventListener('DOMContentLoaded', function () {
517522 this.title = 'Toggle to list view';
518523 }
519524
520525 isGridViewfeatherlessIsGridView = !isGridViewfeatherlessIsGridView;
521526 });
522527});
523528function onMancerModelSelect() {
@@ -881,6 +886,7 @@ export function initTextGenModels() {
881886 $('#aphrodite_model').on('change', onAphroditeModelSelect);
882887 $('#tabby_download_model').on('click', downloadTabbyModel);
883888 $('#tabby_model').on('change', onTabbyModelSelect);
889+ $('#featherless_model').on('change', () => onFeatherlessModelSelect(String($('#featherless_model').val())));
884890
885891 const providersSelect = $('.openrouter_providers');
886892 for (const provider of OPENROUTER_PROVIDERS) {