diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index f8e06586f1..70706a8f2c 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -2372,11 +2372,9 @@ Example: Virtual Hosted Style`, 'Please select at least one model before verification.', addCustomModel: 'Add custom model', addCustomModelTitle: 'Add custom model', - batchAddModels: 'Add all visible models', - batchRemoveModels: 'Remove all visible models', + batchAddModels: 'Add all models', + batchRemoveModels: 'Remove all models', batchVerifyModels: 'Batch verify', - selectAllFiltered: 'Select all', - batchVerifySelected: 'Verify {{count}} model(s)', editCustomModelTitle: 'Edit model', modelMaxTokens: 'Max tokens', modelFeatures: 'Model features', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index 9fc2bef14d..29287a69b4 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -2007,11 +2007,9 @@ NER:使用 spaCy NER 和基于规则的关键词提取来抽取 Entities 和 R selectModelBeforeVerify: '请至少选择一个模型后再验证。', addCustomModel: '添加自定义模型', addCustomModelTitle: '添加自定义模型', - batchAddModels: '批量添加当前模型', - batchRemoveModels: '批量移除当前模型', + batchAddModels: '批量添加模型', + batchRemoveModels: '批量移除模型', batchVerifyModels: '批量验证', - selectAllFiltered: '全选', - batchVerifySelected: '验证 {{count}} 个模型', editCustomModelTitle: '编辑模型', modelMaxTokens: '最大 Token 数', modelTypes: { diff --git a/web/src/pages/user-setting/setting-model/instance-card/models-section/components/model-row.tsx b/web/src/pages/user-setting/setting-model/instance-card/models-section/components/model-row.tsx index 560bd11176..65617b887a 100644 --- a/web/src/pages/user-setting/setting-model/instance-card/models-section/components/model-row.tsx +++ b/web/src/pages/user-setting/setting-model/instance-card/models-section/components/model-row.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { Checkbox } from '@/components/ui/checkbox'; import { Minus, Plus } from 'lucide-react'; import { ModelRowProps } from '../interface'; import { ModelTypeBadges } from './model-type-badges'; @@ -26,8 +25,6 @@ export function ModelRow({ isAdded, verifyStatus, hideActions, - isSelected, - onToggleSelect, onVerify, onAdd, onRemove, @@ -42,13 +39,6 @@ export function ModelRow({ >
- {onToggleSelect && ( - - )} {model.name} diff --git a/web/src/pages/user-setting/setting-model/instance-card/models-section/index.tsx b/web/src/pages/user-setting/setting-model/instance-card/models-section/index.tsx index e1e59d2b11..7d208e5aa6 100644 --- a/web/src/pages/user-setting/setting-model/instance-card/models-section/index.tsx +++ b/web/src/pages/user-setting/setting-model/instance-card/models-section/index.tsx @@ -15,20 +15,12 @@ */ import { Button } from '@/components/ui/button'; -import { Checkbox } from '@/components/ui/checkbox'; import { SearchInput } from '@/components/ui/input'; import { useCommonTranslation, useTranslate } from '@/hooks/common-hooks'; import { useFetchInstanceModels } from '@/hooks/use-llm-request'; import { IProviderModelItem } from '@/interfaces/request/llm'; -import { - ListMinus, - ListPlus, - Loader2, - Plus, - Search, - ShieldCheck, -} from 'lucide-react'; -import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { Loader2, Plus, Search, ShieldCheck } from 'lucide-react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { AddCustomModelDialog } from '../add-custom-model-dialog'; import { mapModelKey } from '../available-models'; @@ -178,50 +170,9 @@ export function ModelsSection(props: ModelsSectionProps) { verifyTransform, }); - // 6a. Model selection for batch verify. - const [selectedModels, setSelectedModels] = useState>(new Set()); - - const toggleModel = useCallback((name: string) => { - setSelectedModels((prev) => { - const next = new Set(prev); - if (next.has(name)) { - next.delete(name); - } else { - next.add(name); - } - return next; - }); - }, []); - - const toggleAllFiltered = useCallback(() => { - setSelectedModels((prev) => { - const allSelected = filteredModels.every((m) => prev.has(m.name)); - const next = new Set(prev); - if (allSelected) { - filteredModels.forEach((m) => next.delete(m.name)); - } else { - filteredModels.forEach((m) => next.add(m.name)); - } - return next; - }); - }, [filteredModels]); - - const filteredSelectedCount = useMemo( - () => filteredModels.filter((m) => selectedModels.has(m.name)).length, - [filteredModels, selectedModels], - ); - - const selectAllChecked: boolean | 'indeterminate' = - filteredSelectedCount === 0 - ? false - : filteredSelectedCount === filteredModels.length - ? true - : 'indeterminate'; - const handleBatchVerifyClick = useCallback(() => { - const selected = filteredModels.filter((m) => selectedModels.has(m.name)); - handleBatchVerify(selected); - }, [filteredModels, selectedModels, handleBatchVerify]); + handleBatchVerify(filteredModels); + }, [filteredModels, handleBatchVerify]); // 7. Add / remove / batch toggle / custom add. const { @@ -327,33 +278,6 @@ export function ModelsSection(props: ModelsSectionProps) { placeholder={t('setting.search')} rootClassName="flex-1" /> - {!hideActions && ( - - )}
- - - {tSetting('selectAllFiltered')} - + {!hideActions && ( + + )}
@@ -418,8 +347,6 @@ export function ModelsSection(props: ModelsSectionProps) { isAdded={addedSet.has(model.name)} verifyStatus={verify[model.name] ?? 'idle'} hideActions={hideActions} - isSelected={selectedModels.has(model.name)} - onToggleSelect={() => toggleModel(model.name)} onVerify={() => handleVerify(model)} onAdd={() => handleAddModel(model)} onRemove={() => handleRemoveModel(model)} diff --git a/web/src/pages/user-setting/setting-model/instance-card/models-section/interface.ts b/web/src/pages/user-setting/setting-model/instance-card/models-section/interface.ts index 3177237c7d..d7327e7941 100644 --- a/web/src/pages/user-setting/setting-model/instance-card/models-section/interface.ts +++ b/web/src/pages/user-setting/setting-model/instance-card/models-section/interface.ts @@ -138,10 +138,6 @@ export interface ModelRowProps { onRemove: () => void; onEdit: () => void; editLabel: string; - /** Whether this row is currently selected for batch operations. */ - isSelected?: boolean; - /** Toggle this row's selection state. */ - onToggleSelect?: () => void; } export interface TagFilterButtonProps {