Merge pull request #3305 from Eradev/staging Fixed featherless.ai models display and filters

e7bcac017176518e90a5455a7c1e1b81205cc406

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

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