mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-21 21:22:11 -03:00
refactor(ui): simplify filter preset empty state
- Remove default presets and restore defaults functionality - Unify preset UI: always show '+ Add' button regardless of preset count - Remove empty state message and restore button to reduce visual clutter - Clean up unused translation keys (restoreDefaults, noPresets) - Fix spacing issues in filter panel
This commit is contained in:
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "Zum Bestätigen erneut klicken",
|
||||
"presetOverwriteConfirm": "Voreinstellung \"{name}\" existiert bereits. Überschreiben?",
|
||||
"presetNamePlaceholder": "Voreinstellungsname...",
|
||||
"restoreDefaults": "Standard wiederherstellen",
|
||||
"noPresets": "Noch keine Voreinstellungen gespeichert. Filter unten auswählen und auf + klicken zum Speichern",
|
||||
"baseModel": "Basis-Modell",
|
||||
"modelTags": "Tags (Top 20)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "Click again to confirm",
|
||||
"presetOverwriteConfirm": "Preset \"{name}\" already exists. Overwrite?",
|
||||
"presetNamePlaceholder": "Preset name...",
|
||||
"restoreDefaults": "Restore defaults",
|
||||
"noPresets": "No presets saved yet. Select filters below and click + to save",
|
||||
"baseModel": "Base Model",
|
||||
"modelTags": "Tags (Top 20)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "Haga clic de nuevo para confirmar",
|
||||
"presetOverwriteConfirm": "El preset \"{name}\" ya existe. ¿Sobrescribir?",
|
||||
"presetNamePlaceholder": "Nombre del preajuste...",
|
||||
"restoreDefaults": "Restaurar predeterminados",
|
||||
"noPresets": "Aún no hay preajustes guardados. Seleccione filtros abajo y haga clic en + para guardar",
|
||||
"baseModel": "Modelo base",
|
||||
"modelTags": "Etiquetas (Top 20)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "Cliquez à nouveau pour confirmer",
|
||||
"presetOverwriteConfirm": "Le préréglage \"{name}\" existe déjà. Remplacer?",
|
||||
"presetNamePlaceholder": "Nom du préréglage...",
|
||||
"restoreDefaults": "Restaurer les paramètres par défaut",
|
||||
"noPresets": "Aucun préréglage enregistré. Sélectionnez des filtres ci-dessous et cliquez sur + pour enregistrer",
|
||||
"baseModel": "Modèle de base",
|
||||
"modelTags": "Tags (Top 20)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "לחץ שוב לאישור",
|
||||
"presetOverwriteConfirm": "הפריסט \"{name}\" כבר קיים. לדרוס?",
|
||||
"presetNamePlaceholder": "שם קביעה מראש...",
|
||||
"restoreDefaults": "שחזור ברירות מחדל",
|
||||
"noPresets": "עדיין אין קביעות מראש שמורות. בחר מסננים למטה ולחץ על + כדי לשמור",
|
||||
"baseModel": "מודל בסיס",
|
||||
"modelTags": "תגיות (20 המובילות)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "もう一度クリックして確認",
|
||||
"presetOverwriteConfirm": "プリセット「{name}」は既に存在します。上書きしますか?",
|
||||
"presetNamePlaceholder": "プリセット名...",
|
||||
"restoreDefaults": "デフォルトを復元",
|
||||
"noPresets": "まだプリセットが保存されていません。下のフィルタを選択して+をクリックして保存",
|
||||
"baseModel": "ベースモデル",
|
||||
"modelTags": "タグ(上位20)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "다시 클릭하여 확인",
|
||||
"presetOverwriteConfirm": "프리셋 \"{name}\"이(가) 이미 존재합니다. 덮어쓰시겠습니까?",
|
||||
"presetNamePlaceholder": "프리셋 이름...",
|
||||
"restoreDefaults": "기본값 복원",
|
||||
"noPresets": "저장된 프리셋이 없습니다. 아래 필터를 선택하고 +를 클릭하여 저장",
|
||||
"baseModel": "베이스 모델",
|
||||
"modelTags": "태그 (상위 20개)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "Нажмите еще раз для подтверждения",
|
||||
"presetOverwriteConfirm": "Пресет \"{name}\" уже существует. Перезаписать?",
|
||||
"presetNamePlaceholder": "Имя пресета...",
|
||||
"restoreDefaults": "Восстановить по умолчанию",
|
||||
"noPresets": "Пресеты еще не сохранены. Выберите фильтры ниже и нажмите + для сохранения",
|
||||
"baseModel": "Базовая модель",
|
||||
"modelTags": "Теги (Топ 20)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "再次点击确认",
|
||||
"presetOverwriteConfirm": "预设 \"{name}\" 已存在。是否覆盖?",
|
||||
"presetNamePlaceholder": "预设名称...",
|
||||
"restoreDefaults": "恢复默认",
|
||||
"noPresets": "尚未保存预设。选择下方筛选器并点击 + 保存",
|
||||
"baseModel": "基础模型",
|
||||
"modelTags": "标签(前20)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -216,8 +216,6 @@
|
||||
"presetDeleteConfirmClick": "再次點擊確認",
|
||||
"presetOverwriteConfirm": "預設 \"{name}\" 已存在。是否覆蓋?",
|
||||
"presetNamePlaceholder": "預設名稱...",
|
||||
"restoreDefaults": "恢復預設",
|
||||
"noPresets": "尚未儲存預設。選擇下方篩選器並點擊 + 儲存",
|
||||
"baseModel": "基礎模型",
|
||||
"modelTags": "標籤(前 20)",
|
||||
"modelTypes": "Model Types",
|
||||
|
||||
@@ -660,15 +660,7 @@
|
||||
to { opacity: 1; }
|
||||
}
|
||||
|
||||
.no-presets {
|
||||
width: 100%;
|
||||
padding: 12px 8px;
|
||||
text-align: center;
|
||||
font-size: 0.9em;
|
||||
color: var(--text-color);
|
||||
opacity: 0.6;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/* Mobile adjustments */
|
||||
@media (max-width: 768px) {
|
||||
|
||||
@@ -195,9 +195,6 @@ export class FilterPresetManager {
|
||||
}
|
||||
|
||||
if (!presets) {
|
||||
if (this.currentPage === 'loras') {
|
||||
return this.getDefaultPresets();
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -213,28 +210,12 @@ export class FilterPresetManager {
|
||||
return true;
|
||||
});
|
||||
|
||||
if (validPresets.length === 0 && this.currentPage === 'loras') {
|
||||
return this.getDefaultPresets();
|
||||
}
|
||||
|
||||
|
||||
return validPresets;
|
||||
}
|
||||
|
||||
getDefaultPresets() {
|
||||
return [
|
||||
{
|
||||
name: "WAN Models",
|
||||
filters: {
|
||||
baseModel: ["Wan Video*"],
|
||||
tags: {},
|
||||
license: {},
|
||||
modelTypes: []
|
||||
},
|
||||
createdAt: Date.now(),
|
||||
isDefault: true
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resolve base model patterns to actual available models
|
||||
@@ -542,16 +523,7 @@ export class FilterPresetManager {
|
||||
return Array.isArray(localPresets) && localPresets.length > 0;
|
||||
}
|
||||
|
||||
async restoreDefaultPresets() {
|
||||
const defaultPresets = this.getDefaultPresets();
|
||||
await this.savePresets(defaultPresets);
|
||||
this.renderPresets();
|
||||
showToast(
|
||||
translate('toast.presets.restored', {}, 'Default presets restored'),
|
||||
{},
|
||||
'success'
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the add button should be disabled
|
||||
@@ -763,31 +735,6 @@ export class FilterPresetManager {
|
||||
const presets = this.loadPresets();
|
||||
presetsContainer.innerHTML = '';
|
||||
|
||||
// Show empty state with restore option if no presets
|
||||
if (presets.length === 0) {
|
||||
const emptyState = document.createElement('div');
|
||||
emptyState.className = 'presets-empty-state';
|
||||
emptyState.style.cssText = 'width: 100%; padding: 12px; text-align: center;';
|
||||
|
||||
const noPresetsMsg = document.createElement('div');
|
||||
noPresetsMsg.className = 'no-presets';
|
||||
noPresetsMsg.style.cssText = 'margin-bottom: 8px;';
|
||||
noPresetsMsg.textContent = translate('header.filter.noPresets', {}, 'No presets saved yet. Select filters below and click + to save');
|
||||
|
||||
const restoreLink = document.createElement('button');
|
||||
restoreLink.className = 'restore-defaults-btn';
|
||||
restoreLink.style.cssText = 'background: none; border: none; color: var(--lora-accent); cursor: pointer; font-size: 13px; text-decoration: underline; padding: 4px 8px;';
|
||||
restoreLink.textContent = translate('header.filter.restoreDefaults', {}, 'Restore defaults');
|
||||
restoreLink.addEventListener('click', (e) => {
|
||||
e.stopPropagation();
|
||||
this.restoreDefaultPresets();
|
||||
});
|
||||
|
||||
emptyState.appendChild(noPresetsMsg);
|
||||
emptyState.appendChild(restoreLink);
|
||||
presetsContainer.appendChild(emptyState);
|
||||
}
|
||||
|
||||
// Render existing presets
|
||||
presets.forEach(preset => {
|
||||
const presetEl = document.createElement('div');
|
||||
@@ -840,7 +787,7 @@ export class FilterPresetManager {
|
||||
presetsContainer.appendChild(presetEl);
|
||||
});
|
||||
|
||||
// Add the "Add new preset" button as the last element
|
||||
// Add the "Add new preset" button (always shown, unified style)
|
||||
const addBtn = document.createElement('div');
|
||||
addBtn.className = 'filter-preset add-preset-btn';
|
||||
addBtn.innerHTML = `<i class="fas fa-plus"></i> ${translate('common.actions.add', {}, 'Add')}`;
|
||||
@@ -854,7 +801,7 @@ export class FilterPresetManager {
|
||||
|
||||
presetsContainer.appendChild(addBtn);
|
||||
|
||||
// Update add button state
|
||||
// Update add button state (handles disabled state based on filters)
|
||||
this.updateAddButtonState();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user