Merge pull request #3305 from Eradev/staging Fixed featherless.ai models display and filters
Signed| @@ -319,8 +319,6 @@ export async function loadFeatherlessModels(data) { | ||
| 319 | 319 | return; |
| 320 | 320 | } |
| 321 | 321 | |
| 322 | - // Sort the data by model id (default A-Z) | |
| 323 | - data.sort((a, b) => a.id.localeCompare(b.id)); | |
| 324 | 322 | originalModels = data; // Store the original data for search |
| 325 | 323 | featherlessModels = data; |
| 326 | 324 | |
| @@ -334,10 +332,8 @@ export async function loadFeatherlessModels(data) { | ||
| 334 | 332 | // Retrieve the stored number of items per page or default to 10 |
| 335 | 333 | const perPage = Number(localStorage.getItem(storageKey)) || 10; |
| 336 | 334 | |
| 337 | 335 | // Initialize pagination with the full set of models |
| 338 | - const currentModelIndex = data.findIndex(x => x.id === textgen_settings.featherless_model); | |
| 336 | + applyFiltersAndSort(); | |
| 339 | - featherlessCurrentPage = currentModelIndex >= 0 ? (currentModelIndex / perPage) + 1 : 1; | |
| 340 | - setupPagination(originalModels, perPage); | |
| 341 | 337 | |
| 342 | 338 | // Function to set up pagination (also used for filtered results) |
| 343 | 339 | function setupPagination(models, perPage, pageNumber = featherlessCurrentPage) { |
| @@ -383,7 +379,7 @@ export async function loadFeatherlessModels(data) { | ||
| 383 | 379 | |
| 384 | 380 | const dateAddedDiv = document.createElement('div'); |
| 385 | 381 | dateAddedDiv.classList.add('model-date-added'); |
| 386 | 382 | dateAddedDiv.textContent = `Added On: ${new Date(model.updated_atcreated * 1000).toLocaleDateString()}`; |
| 387 | 383 | |
| 388 | 384 | detailsContainer.appendChild(modelClassDiv); |
| 389 | 385 | detailsContainer.appendChild(contextLengthDiv); |
| @@ -472,6 +468,7 @@ export async function loadFeatherlessModels(data) { | ||
| 472 | 468 | featherlessTop = await fetchFeatherlessStats(); |
| 473 | 469 | } |
| 474 | 470 | const featherlessIds = featherlessTop.map(stat => stat.id); |
| 471 | + | |
| 475 | 472 | if (selectedCategory === 'New') { |
| 476 | 473 | featherlessNew = await fetchFeatherlessNew(); |
| 477 | 474 | } |
| @@ -493,7 +490,7 @@ export async function loadFeatherlessModels(data) { | ||
| 493 | 490 | return matchesSearch && matchesClass && matchesNew; |
| 494 | 491 | } |
| 495 | 492 | else { |
| 496 | 493 | return matchesSearch && matchesClass; |
| 497 | 494 | } |
| 498 | 495 | }); |
| 499 | 496 | |
| @@ -502,11 +499,14 @@ export async function loadFeatherlessModels(data) { | ||
| 502 | 499 | } else if (selectedSortOrder === 'desc') { |
| 503 | 500 | filteredModels.sort((a, b) => b.id.localeCompare(a.id)); |
| 504 | 501 | } else if (selectedSortOrder === 'date_asc') { |
| 505 | 502 | filteredModels.sort((a, b) => a.updated_at.localeCompare(created - b.updated_at)created); |
| 506 | 503 | } else if (selectedSortOrder === 'date_desc') { |
| 507 | 504 | filteredModels.sort((a, b) => b.updated_at.localeCompare(created - a.updated_at)created); |
| 508 | 505 | } |
| 509 | 506 | |
| 507 | + const currentModelIndex = filteredModels.findIndex(x => x.id === textgen_settings.featherless_model); | |
| 508 | + featherlessCurrentPage = currentModelIndex >= 0 ? (currentModelIndex / perPage) + 1 : 1; | |
| 509 | + | |
| 510 | 510 | setupPagination(filteredModels, Number(localStorage.getItem(storageKey)) || perPage, featherlessCurrentPage); |
| 511 | 511 | } |
| 512 | 512 | |
| @@ -528,7 +528,7 @@ async function fetchFeatherlessStats() { | ||
| 528 | 528 | } |
| 529 | 529 | |
| 530 | 530 | async function fetchFeatherlessNew() { |
| 531 | 531 | const response = await fetch('https://api.featherless.ai/feather/models?sort=-created_at&perPage=1020'); |
| 532 | 532 | const data = await response.json(); |
| 533 | 533 | return data.items; |
| 534 | 534 | } |