refactor(filter): extract preset management logic into FilterPresetManager

Move filter preset creation, deletion, application, and storage logic
from FilterManager into a dedicated FilterPresetManager class to
improve separation of concerns and maintainability.

- Add FilterPresetManager with preset CRUD operations
- Update FilterManager to use preset manager via composition
- Handle EMPTY_WILDCARD_MARKER for wildcard base model filters
- Add preset-related translations to all locale files
- Update filter preset UI styling and interactions
This commit is contained in:
Will Miao
2026-01-29 16:25:45 +08:00
parent e50b2c802e
commit 08267cdb48
16 changed files with 1383 additions and 247 deletions

View File

@@ -10,7 +10,8 @@
"next": "下一步",
"backToTop": "回到頂部",
"settings": "設定",
"help": "說明"
"help": "說明",
"add": "新增"
},
"status": {
"loading": "載入中...",
@@ -204,6 +205,19 @@
},
"filter": {
"title": "篩選模型",
"presets": "預設",
"savePreset": "將目前啟用的篩選器儲存為新預設。",
"savePresetDisabledActive": "無法儲存:已有預設處於啟用狀態。修改篩選器後可儲存新預設",
"savePresetDisabledNoFilters": "先選擇篩選器,然後儲存為預設",
"savePresetPrompt": "輸入預設名稱:",
"presetClickTooltip": "點擊套用預設 \"{name}\"",
"presetDeleteTooltip": "刪除預設",
"presetDeleteConfirm": "刪除預設 \"{name}\"",
"presetDeleteConfirmClick": "再次點擊確認",
"presetOverwriteConfirm": "預設 \"{name}\" 已存在。是否覆蓋?",
"presetNamePlaceholder": "預設名稱...",
"restoreDefaults": "恢復預設",
"noPresets": "尚未儲存預設。選擇下方篩選器並點擊 + 儲存",
"baseModel": "基礎模型",
"modelTags": "標籤(前 20",
"modelTypes": "Model Types",
@@ -1419,7 +1433,26 @@
"filters": {
"applied": "{message}",
"cleared": "篩選已清除",
"noCustomFilterToClear": "無自訂篩選可清除"
"noCustomFilterToClear": "無自訂篩選可清除",
"noActiveFilters": "沒有可儲存的啟用篩選"
},
"presets": {
"created": "預設 \"{name}\" 已建立",
"deleted": "預設 \"{name}\" 已刪除",
"applied": "預設 \"{name}\" 已套用",
"overwritten": "預設 \"{name}\" 已覆蓋",
"restored": "預設設定已恢復"
},
"error": {
"presetNameEmpty": "預設名稱不能為空",
"presetNameTooLong": "預設名稱不能超過 {max} 個字元",
"presetNameInvalidChars": "預設名稱包含無效字元",
"presetNameExists": "已存在同名預設",
"maxPresetsReached": "最多允許 {max} 個預設。刪除一個以新增更多。",
"presetNotFound": "預設未找到",
"invalidPreset": "無效的預設資料",
"deletePresetFailed": "刪除預設失敗",
"applyPresetFailed": "套用預設失敗"
},
"downloads": {
"imagesCompleted": "範例圖片{action}完成",