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