-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- {{
- $t('templateWorkflows.activeFilters', 'Filters:')
- }}
-
-
@@ -189,13 +207,19 @@ const navigationFilteredTemplates = computed(() => {
const {
searchQuery,
selectedModels,
+ selectedUseCases,
+ selectedLicenses,
sortBy,
filteredTemplates,
availableModels,
+ availableUseCases,
+ availableLicenses,
filteredCount,
totalCount,
- resetFilters,
- removeModelFilter
+ resetFilters
+ // removeModelFilter,
+ // removeUseCaseFilter,
+ // removeLicenseFilter
} = useTemplateFiltering(navigationFilteredTemplates)
// Convert between string array and object array for MultiSelect component
@@ -208,13 +232,37 @@ const selectedModelObjects = computed({
}
})
+const selectedUseCaseObjects = computed({
+ get() {
+ return selectedUseCases.value.map((useCase) => ({
+ name: useCase,
+ value: useCase
+ }))
+ },
+ set(value: { name: string; value: string }[]) {
+ selectedUseCases.value = value.map((item) => item.value)
+ }
+})
+
+const selectedLicenseObjects = computed({
+ get() {
+ return selectedLicenses.value.map((license) => ({
+ name: license,
+ value: license
+ }))
+ },
+ set(value: { name: string; value: string }[]) {
+ selectedLicenses.value = value.map((item) => item.value)
+ }
+})
+
// Loading state
const isLoading = ref(true)
// Navigation
const selectedNavItem = ref
('all')
-// Model filter options
+// Filter options
const modelOptions = computed(() =>
availableModels.value.map((model) => ({
name: model,
@@ -222,7 +270,21 @@ const modelOptions = computed(() =>
}))
)
-// Model filter label
+const useCaseOptions = computed(() =>
+ availableUseCases.value.map((useCase) => ({
+ name: useCase,
+ value: useCase
+ }))
+)
+
+const licenseOptions = computed(() =>
+ availableLicenses.value.map((license) => ({
+ name: license,
+ value: license
+ }))
+)
+
+// Filter labels
const modelFilterLabel = computed(() => {
if (selectedModelObjects.value.length === 0) {
return t('templateWorkflows.modelFilter', 'Model Filter')
@@ -235,17 +297,41 @@ const modelFilterLabel = computed(() => {
}
})
+const useCaseFilterLabel = computed(() => {
+ if (selectedUseCaseObjects.value.length === 0) {
+ return t('templateWorkflows.useCaseFilter', 'Use Case')
+ } else if (selectedUseCaseObjects.value.length === 1) {
+ return selectedUseCaseObjects.value[0].name
+ } else {
+ return t('templateWorkflows.useCasesSelected', {
+ count: selectedUseCaseObjects.value.length
+ })
+ }
+})
+
+const licenseFilterLabel = computed(() => {
+ if (selectedLicenseObjects.value.length === 0) {
+ return t('templateWorkflows.licenseFilter', 'License')
+ } else if (selectedLicenseObjects.value.length === 1) {
+ return selectedLicenseObjects.value[0].name
+ } else {
+ return t('templateWorkflows.licensesSelected', {
+ count: selectedLicenseObjects.value.length
+ })
+ }
+})
+
// Sort options
const sortOptions = computed(() => [
- {
- name: t('templateWorkflows.sort.recommended', 'Recommended'),
- value: 'recommended'
- },
{
name: t('templateWorkflows.sort.alphabetical', 'A → Z'),
value: 'alphabetical'
},
- { name: t('templateWorkflows.sort.newest', 'Newest'), value: 'newest' }
+ { name: t('templateWorkflows.sort.newest', 'Newest'), value: 'newest' },
+ {
+ name: t('templateWorkflows.sort.default', 'Default'),
+ value: 'default'
+ }
])
// Additional computed properties for TemplateWorkflowView
diff --git a/src/components/input/MultiSelect.vue b/src/components/input/MultiSelect.vue
index d1d02a4f1..9f31099f4 100644
--- a/src/components/input/MultiSelect.vue
+++ b/src/components/input/MultiSelect.vue
@@ -2,7 +2,7 @@
- {{ slotProps.option.name }}
+ {{
+ slotProps.option.name
+ }}