mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-04 15:10:06 +00:00
feat: implement model size sorting and enhance performance filtering logic
This commit is contained in:
@@ -158,9 +158,14 @@ export function useTemplateFiltering(
|
||||
// For now, keep original order
|
||||
return templates
|
||||
case 'model-size-low-to-high':
|
||||
// TODO: Implement model size sorting when model size data is available
|
||||
// For now, keep original order
|
||||
return templates
|
||||
return templates.sort((a: any, b: any) => {
|
||||
const sizeA =
|
||||
typeof a.size === 'number' ? a.size : Number.POSITIVE_INFINITY
|
||||
const sizeB =
|
||||
typeof b.size === 'number' ? b.size : Number.POSITIVE_INFINITY
|
||||
if (sizeA === sizeB) return 0
|
||||
return sizeA - sizeB
|
||||
})
|
||||
case 'default':
|
||||
default:
|
||||
// Keep original order (default order)
|
||||
|
||||
4
src/constants/templateWorkflows.ts
Normal file
4
src/constants/templateWorkflows.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
// Constants related to Workflow Templates functionality
|
||||
// Size threshold (in GB) for categorizing templates as "Small Models".
|
||||
// Templates with size <= this limit will appear under the Performance > Small Models category.
|
||||
export const SMALL_MODEL_SIZE_LIMIT = 3
|
||||
@@ -2,6 +2,7 @@ import Fuse from 'fuse.js'
|
||||
import { defineStore } from 'pinia'
|
||||
import { computed, ref, shallowRef } from 'vue'
|
||||
|
||||
import { SMALL_MODEL_SIZE_LIMIT } from '@/constants/templateWorkflows'
|
||||
import { i18n, st } from '@/i18n'
|
||||
import { api } from '@/scripts/api'
|
||||
import type { NavGroupData, NavItemData } from '@/types/navTypes'
|
||||
@@ -181,14 +182,21 @@ export const useWorkflowTemplatesStore = defineStore(
|
||||
coreTemplates.value.forEach((category) => {
|
||||
category.templates.forEach((template) => {
|
||||
const isAPI = category.title?.includes('API') || false
|
||||
// Determine performance ("Small Models") based primarily on explicit size prop (<=3GB)
|
||||
// Fallback to heuristic based on model name keywords for backward compatibility.
|
||||
const explicitSize = template.size
|
||||
const heuristicPerformance = template.models?.some(
|
||||
(model) =>
|
||||
model.toLowerCase().includes('turbo') ||
|
||||
model.toLowerCase().includes('fast') ||
|
||||
model.toLowerCase().includes('schnell') ||
|
||||
model.toLowerCase().includes('fp8')
|
||||
)
|
||||
const isPerformance =
|
||||
template.models?.some(
|
||||
(model) =>
|
||||
model.toLowerCase().includes('turbo') ||
|
||||
model.toLowerCase().includes('fast') ||
|
||||
model.toLowerCase().includes('schnell') ||
|
||||
model.toLowerCase().includes('fp8')
|
||||
) || false
|
||||
(typeof explicitSize === 'number' &&
|
||||
explicitSize <= SMALL_MODEL_SIZE_LIMIT) ||
|
||||
(!!explicitSize === false && heuristicPerformance) ||
|
||||
false
|
||||
|
||||
const isMacCompatible =
|
||||
template.models?.some(
|
||||
@@ -313,7 +321,12 @@ export const useWorkflowTemplatesStore = defineStore(
|
||||
)
|
||||
|
||||
case 'performance-small':
|
||||
return enhancedTemplates.value.filter((t) => t.isPerformance)
|
||||
return enhancedTemplates.value.filter(
|
||||
(t) =>
|
||||
(typeof t.size === 'number' &&
|
||||
t.size <= SMALL_MODEL_SIZE_LIMIT) ||
|
||||
(typeof t.size !== 'number' && t.isPerformance)
|
||||
)
|
||||
|
||||
case 'performance-mac':
|
||||
return enhancedTemplates.value.filter((t) => t.isMacCompatible)
|
||||
@@ -352,7 +365,9 @@ export const useWorkflowTemplatesStore = defineStore(
|
||||
(t) => t.sourceModule !== 'default'
|
||||
).length
|
||||
const performanceCounts = enhancedTemplates.value.filter(
|
||||
(t) => t.isPerformance
|
||||
(t) =>
|
||||
(typeof t.size === 'number' && t.size <= SMALL_MODEL_SIZE_LIMIT) ||
|
||||
(typeof t.size !== 'number' && t.isPerformance)
|
||||
).length
|
||||
const macCompatibleCounts = enhancedTemplates.value.filter(
|
||||
(t) => t.isMacCompatible
|
||||
|
||||
@@ -17,6 +17,7 @@ export interface TemplateInfo {
|
||||
date?: string
|
||||
useCase?: string
|
||||
license?: string
|
||||
size?: number
|
||||
}
|
||||
|
||||
export interface WorkflowTemplates {
|
||||
|
||||
Reference in New Issue
Block a user