Featherless: Fix /model command
| @@ -266,8 +266,7 @@ export async function loadAphroditeModels(data) { | ||
| 266 | 266 | } |
| 267 | 267 | } |
| 268 | 268 | |
| 269 | -// Page -1 will be initialized from a selected model. | |
| 269 | +let featherlessCurrentPage = 1; | |
| 270 | -let currentPage = -1; | |
| 271 | 270 | export async function loadFeatherlessModels(data) { |
| 272 | 271 | const searchBar = document.getElementById('model_search_bar'); |
| 273 | 272 | const modelCardBlock = document.getElementById('model_card_block'); |
| @@ -298,11 +297,11 @@ export async function loadFeatherlessModels(data) { | ||
| 298 | 297 | |
| 299 | 298 | // Initialize pagination with the full set of models |
| 300 | 299 | const selectedModelPage = (data.findIndex(x => x.id === textgen_settings.featherless_model) / perPage) + 1; |
| 301 | 300 | currentPage = currentPagefeatherlessCurrentPage === -1 && selectedModelPage > 0 ? selectedModelPage : 1; |
| 302 | 301 | setupPagination(originalModels, perPage); |
| 303 | 302 | |
| 304 | 303 | // Function to set up pagination (also used for filtered results) |
| 305 | 304 | function setupPagination(models, perPage, pageNumber = currentPagefeatherlessCurrentPage) { |
| 306 | 305 | paginationContainer.pagination({ |
| 307 | 306 | dataSource: models, |
| 308 | 307 | pageSize: perPage, |
| @@ -368,16 +367,22 @@ export async function loadFeatherlessModels(data) { | ||
| 368 | 367 | }); |
| 369 | 368 | |
| 370 | 369 | // Update the current page value whenever the page changes |
| 371 | 370 | currentPagefeatherlessCurrentPage = pagination.pageNumber; |
| 372 | 371 | }, |
| 373 | 372 | afterSizeSelectorChange: function (e) { |
| 374 | 373 | const newPerPage = e.target.value; |
| 375 | 374 | localStorage.setItem('Models_PerPage', newPerPage); |
| 376 | 375 | setupPagination(models, Number(newPerPage), currentPagefeatherlessCurrentPage); // Use the stored current page number |
| 377 | 376 | }, |
| 378 | 377 | }); |
| 379 | 378 | } |
| 380 | 379 | |
| 380 | + // Unset previously added listeners | |
| 381 | + $(searchBar).off('input'); | |
| 382 | + $(sortOrderSelect).off('change'); | |
| 383 | + $(classSelect).off('change'); | |
| 384 | + $(categoriesSelect).off('change'); | |
| 385 | + | |
| 381 | 386 | // Add event listener for input on the search bar |
| 382 | 387 | searchBar.addEventListener('input', function () { |
| 383 | 388 | applyFiltersAndSort(); |
| @@ -463,7 +468,7 @@ export async function loadFeatherlessModels(data) { | ||
| 463 | 468 | filteredModels.sort((a, b) => b.updated_at.localeCompare(a.updated_at)); |
| 464 | 469 | } |
| 465 | 470 | |
| 466 | 471 | setupPagination(filteredModels, Number(localStorage.getItem(storageKey)) || perPage, currentPagefeatherlessCurrentPage); |
| 467 | 472 | } |
| 468 | 473 | |
| 469 | 474 | // Required to keep the /model command function |
| @@ -497,7 +502,7 @@ function onFeatherlessModelSelect(modelId) { | ||
| 497 | 502 | setGenerationParamsFromPreset({ max_length: model.context_length }); |
| 498 | 503 | } |
| 499 | 504 | |
| 500 | 505 | let isGridViewfeatherlessIsGridView = false; // Default state set to grid view |
| 501 | 506 | |
| 502 | 507 | // Ensure the correct initial view is applied when the page loads |
| 503 | 508 | document.addEventListener('DOMContentLoaded', function () { |
| @@ -507,7 +512,7 @@ document.addEventListener('DOMContentLoaded', function () { | ||
| 507 | 512 | const toggleButton = document.getElementById('model_grid_toggle'); |
| 508 | 513 | toggleButton.addEventListener('click', function () { |
| 509 | 514 | // Toggle between grid and list view |
| 510 | 515 | if (isGridViewfeatherlessIsGridView) { |
| 511 | 516 | modelCardBlock.classList.remove('grid-view'); |
| 512 | 517 | modelCardBlock.classList.add('list-view'); |
| 513 | 518 | this.title = 'Toggle to grid view'; |
| @@ -517,7 +522,7 @@ document.addEventListener('DOMContentLoaded', function () { | ||
| 517 | 522 | this.title = 'Toggle to list view'; |
| 518 | 523 | } |
| 519 | 524 | |
| 520 | 525 | isGridViewfeatherlessIsGridView = !isGridViewfeatherlessIsGridView; |
| 521 | 526 | }); |
| 522 | 527 | }); |
| 523 | 528 | function onMancerModelSelect() { |
| @@ -881,6 +886,7 @@ export function initTextGenModels() { | ||
| 881 | 886 | $('#aphrodite_model').on('change', onAphroditeModelSelect); |
| 882 | 887 | $('#tabby_download_model').on('click', downloadTabbyModel); |
| 883 | 888 | $('#tabby_model').on('change', onTabbyModelSelect); |
| 889 | + $('#featherless_model').on('change', () => onFeatherlessModelSelect(String($('#featherless_model').val()))); | |
| 884 | 890 | |
| 885 | 891 | const providersSelect = $('.openrouter_providers'); |
| 886 | 892 | for (const provider of OPENROUTER_PROVIDERS) { |