diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json index 202d2b9..ee483e9 100644 --- a/frontend/src/i18n/locales/en.json +++ b/frontend/src/i18n/locales/en.json @@ -116,6 +116,7 @@ "title": "Channels", "description": "Configure AI provider endpoints, manage models and load balancing", "searchPlaceholder": "Search channels...", + "enabledOnly": "Enabled only", "addChannel": "Add Channel", "editChannel": "Edit Channel", "emptyTitle": "Add your first channel", diff --git a/frontend/src/i18n/locales/zh-CN.json b/frontend/src/i18n/locales/zh-CN.json index 6b078fc..2886fe1 100644 --- a/frontend/src/i18n/locales/zh-CN.json +++ b/frontend/src/i18n/locales/zh-CN.json @@ -116,6 +116,7 @@ "title": "渠道管理", "description": "配置 AI 服务商接口,管理模型和负载均衡策略", "searchPlaceholder": "搜索渠道...", + "enabledOnly": "仅已启用", "addChannel": "添加渠道", "editChannel": "编辑渠道", "emptyTitle": "添加您的第一个渠道", diff --git a/frontend/src/i18n/locales/zh-TW.json b/frontend/src/i18n/locales/zh-TW.json index 01cb2ba..b254743 100644 --- a/frontend/src/i18n/locales/zh-TW.json +++ b/frontend/src/i18n/locales/zh-TW.json @@ -116,6 +116,7 @@ "title": "渠道管理", "description": "設定 AI 服務商介面,管理模型和負載均衡策略", "searchPlaceholder": "搜尋渠道...", + "enabledOnly": "僅已啟用", "addChannel": "新增渠道", "editChannel": "編輯渠道", "emptyTitle": "新增您的第一個渠道", diff --git a/frontend/src/pages/Channels.tsx b/frontend/src/pages/Channels.tsx index 79bf666..3bcc80a 100644 --- a/frontend/src/pages/Channels.tsx +++ b/frontend/src/pages/Channels.tsx @@ -577,6 +577,7 @@ export function Channels({ createMode = false, editRoute = false }: { createMode const [modelRows, setModelRows] = useState([createEmptyModelRow()]); const [modelJsonValue, setModelJsonValue] = useState("[]"); const [searchQuery, setSearchQuery] = useState(""); + const [showEnabledOnly, setShowEnabledOnly] = useState(true); const [openMenu, setOpenMenu] = useState(null); const [isFetchedModelsDialogOpen, setIsFetchedModelsDialogOpen] = useState(false); const [fetchedModelCandidates, setFetchedModelCandidates] = useState([]); @@ -1086,13 +1087,20 @@ export function Channels({ createMode = false, editRoute = false }: { createMode return channelTypes.find((item) => item.value === type)?.label || type; }; + const normalizedSearchQuery = searchQuery.trim().toLowerCase(); const filteredData = data?.filter((channel) => { - if (!searchQuery) return true; const rawConfig = parseChannelValue(channel); const config = normalizeChannelFormConfig(rawConfig); + + if (showEnabledOnly && config.enabled === false) { + return false; + } + + if (!normalizedSearchQuery) return true; + return ( - config.name?.toLowerCase().includes(searchQuery.toLowerCase()) || - channel.key.toLowerCase().includes(searchQuery.toLowerCase()) + config.name?.toLowerCase().includes(normalizedSearchQuery) || + channel.key.toLowerCase().includes(normalizedSearchQuery) ); }); const endpointPreview = getChannelEndpointPreview(formData.type, formData.endpoint); @@ -1116,8 +1124,8 @@ export function Channels({ createMode = false, editRoute = false }: { createMode } > {data && data.length > 0 && ( -
-
+
+
+
)}