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",
|
"presetDeleteConfirmClick": "Zum Bestätigen erneut klicken",
|
||||||
"presetOverwriteConfirm": "Voreinstellung \"{name}\" existiert bereits. Überschreiben?",
|
"presetOverwriteConfirm": "Voreinstellung \"{name}\" existiert bereits. Überschreiben?",
|
||||||
"presetNamePlaceholder": "Voreinstellungsname...",
|
"presetNamePlaceholder": "Voreinstellungsname...",
|
||||||
"restoreDefaults": "Standard wiederherstellen",
|
|
||||||
"noPresets": "Noch keine Voreinstellungen gespeichert. Filter unten auswählen und auf + klicken zum Speichern",
|
|
||||||
"baseModel": "Basis-Modell",
|
"baseModel": "Basis-Modell",
|
||||||
"modelTags": "Tags (Top 20)",
|
"modelTags": "Tags (Top 20)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "Click again to confirm",
|
"presetDeleteConfirmClick": "Click again to confirm",
|
||||||
"presetOverwriteConfirm": "Preset \"{name}\" already exists. Overwrite?",
|
"presetOverwriteConfirm": "Preset \"{name}\" already exists. Overwrite?",
|
||||||
"presetNamePlaceholder": "Preset name...",
|
"presetNamePlaceholder": "Preset name...",
|
||||||
"restoreDefaults": "Restore defaults",
|
|
||||||
"noPresets": "No presets saved yet. Select filters below and click + to save",
|
|
||||||
"baseModel": "Base Model",
|
"baseModel": "Base Model",
|
||||||
"modelTags": "Tags (Top 20)",
|
"modelTags": "Tags (Top 20)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "Haga clic de nuevo para confirmar",
|
"presetDeleteConfirmClick": "Haga clic de nuevo para confirmar",
|
||||||
"presetOverwriteConfirm": "El preset \"{name}\" ya existe. ¿Sobrescribir?",
|
"presetOverwriteConfirm": "El preset \"{name}\" ya existe. ¿Sobrescribir?",
|
||||||
"presetNamePlaceholder": "Nombre del preajuste...",
|
"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",
|
"baseModel": "Modelo base",
|
||||||
"modelTags": "Etiquetas (Top 20)",
|
"modelTags": "Etiquetas (Top 20)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "Cliquez à nouveau pour confirmer",
|
"presetDeleteConfirmClick": "Cliquez à nouveau pour confirmer",
|
||||||
"presetOverwriteConfirm": "Le préréglage \"{name}\" existe déjà. Remplacer?",
|
"presetOverwriteConfirm": "Le préréglage \"{name}\" existe déjà. Remplacer?",
|
||||||
"presetNamePlaceholder": "Nom du préréglage...",
|
"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",
|
"baseModel": "Modèle de base",
|
||||||
"modelTags": "Tags (Top 20)",
|
"modelTags": "Tags (Top 20)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "לחץ שוב לאישור",
|
"presetDeleteConfirmClick": "לחץ שוב לאישור",
|
||||||
"presetOverwriteConfirm": "הפריסט \"{name}\" כבר קיים. לדרוס?",
|
"presetOverwriteConfirm": "הפריסט \"{name}\" כבר קיים. לדרוס?",
|
||||||
"presetNamePlaceholder": "שם קביעה מראש...",
|
"presetNamePlaceholder": "שם קביעה מראש...",
|
||||||
"restoreDefaults": "שחזור ברירות מחדל",
|
|
||||||
"noPresets": "עדיין אין קביעות מראש שמורות. בחר מסננים למטה ולחץ על + כדי לשמור",
|
|
||||||
"baseModel": "מודל בסיס",
|
"baseModel": "מודל בסיס",
|
||||||
"modelTags": "תגיות (20 המובילות)",
|
"modelTags": "תגיות (20 המובילות)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "もう一度クリックして確認",
|
"presetDeleteConfirmClick": "もう一度クリックして確認",
|
||||||
"presetOverwriteConfirm": "プリセット「{name}」は既に存在します。上書きしますか?",
|
"presetOverwriteConfirm": "プリセット「{name}」は既に存在します。上書きしますか?",
|
||||||
"presetNamePlaceholder": "プリセット名...",
|
"presetNamePlaceholder": "プリセット名...",
|
||||||
"restoreDefaults": "デフォルトを復元",
|
|
||||||
"noPresets": "まだプリセットが保存されていません。下のフィルタを選択して+をクリックして保存",
|
|
||||||
"baseModel": "ベースモデル",
|
"baseModel": "ベースモデル",
|
||||||
"modelTags": "タグ(上位20)",
|
"modelTags": "タグ(上位20)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "다시 클릭하여 확인",
|
"presetDeleteConfirmClick": "다시 클릭하여 확인",
|
||||||
"presetOverwriteConfirm": "프리셋 \"{name}\"이(가) 이미 존재합니다. 덮어쓰시겠습니까?",
|
"presetOverwriteConfirm": "프리셋 \"{name}\"이(가) 이미 존재합니다. 덮어쓰시겠습니까?",
|
||||||
"presetNamePlaceholder": "프리셋 이름...",
|
"presetNamePlaceholder": "프리셋 이름...",
|
||||||
"restoreDefaults": "기본값 복원",
|
|
||||||
"noPresets": "저장된 프리셋이 없습니다. 아래 필터를 선택하고 +를 클릭하여 저장",
|
|
||||||
"baseModel": "베이스 모델",
|
"baseModel": "베이스 모델",
|
||||||
"modelTags": "태그 (상위 20개)",
|
"modelTags": "태그 (상위 20개)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "Нажмите еще раз для подтверждения",
|
"presetDeleteConfirmClick": "Нажмите еще раз для подтверждения",
|
||||||
"presetOverwriteConfirm": "Пресет \"{name}\" уже существует. Перезаписать?",
|
"presetOverwriteConfirm": "Пресет \"{name}\" уже существует. Перезаписать?",
|
||||||
"presetNamePlaceholder": "Имя пресета...",
|
"presetNamePlaceholder": "Имя пресета...",
|
||||||
"restoreDefaults": "Восстановить по умолчанию",
|
|
||||||
"noPresets": "Пресеты еще не сохранены. Выберите фильтры ниже и нажмите + для сохранения",
|
|
||||||
"baseModel": "Базовая модель",
|
"baseModel": "Базовая модель",
|
||||||
"modelTags": "Теги (Топ 20)",
|
"modelTags": "Теги (Топ 20)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "再次点击确认",
|
"presetDeleteConfirmClick": "再次点击确认",
|
||||||
"presetOverwriteConfirm": "预设 \"{name}\" 已存在。是否覆盖?",
|
"presetOverwriteConfirm": "预设 \"{name}\" 已存在。是否覆盖?",
|
||||||
"presetNamePlaceholder": "预设名称...",
|
"presetNamePlaceholder": "预设名称...",
|
||||||
"restoreDefaults": "恢复默认",
|
|
||||||
"noPresets": "尚未保存预设。选择下方筛选器并点击 + 保存",
|
|
||||||
"baseModel": "基础模型",
|
"baseModel": "基础模型",
|
||||||
"modelTags": "标签(前20)",
|
"modelTags": "标签(前20)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -216,8 +216,6 @@
|
|||||||
"presetDeleteConfirmClick": "再次點擊確認",
|
"presetDeleteConfirmClick": "再次點擊確認",
|
||||||
"presetOverwriteConfirm": "預設 \"{name}\" 已存在。是否覆蓋?",
|
"presetOverwriteConfirm": "預設 \"{name}\" 已存在。是否覆蓋?",
|
||||||
"presetNamePlaceholder": "預設名稱...",
|
"presetNamePlaceholder": "預設名稱...",
|
||||||
"restoreDefaults": "恢復預設",
|
|
||||||
"noPresets": "尚未儲存預設。選擇下方篩選器並點擊 + 儲存",
|
|
||||||
"baseModel": "基礎模型",
|
"baseModel": "基礎模型",
|
||||||
"modelTags": "標籤(前 20)",
|
"modelTags": "標籤(前 20)",
|
||||||
"modelTypes": "Model Types",
|
"modelTypes": "Model Types",
|
||||||
|
|||||||
@@ -660,15 +660,7 @@
|
|||||||
to { opacity: 1; }
|
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 */
|
/* Mobile adjustments */
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
|
|||||||
@@ -195,9 +195,6 @@ export class FilterPresetManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!presets) {
|
if (!presets) {
|
||||||
if (this.currentPage === 'loras') {
|
|
||||||
return this.getDefaultPresets();
|
|
||||||
}
|
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,28 +210,12 @@ export class FilterPresetManager {
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (validPresets.length === 0 && this.currentPage === 'loras') {
|
|
||||||
return this.getDefaultPresets();
|
|
||||||
}
|
|
||||||
|
|
||||||
return validPresets;
|
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
|
* Resolve base model patterns to actual available models
|
||||||
@@ -542,16 +523,7 @@ export class FilterPresetManager {
|
|||||||
return Array.isArray(localPresets) && localPresets.length > 0;
|
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
|
* Check if the add button should be disabled
|
||||||
@@ -763,31 +735,6 @@ export class FilterPresetManager {
|
|||||||
const presets = this.loadPresets();
|
const presets = this.loadPresets();
|
||||||
presetsContainer.innerHTML = '';
|
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
|
// Render existing presets
|
||||||
presets.forEach(preset => {
|
presets.forEach(preset => {
|
||||||
const presetEl = document.createElement('div');
|
const presetEl = document.createElement('div');
|
||||||
@@ -840,7 +787,7 @@ export class FilterPresetManager {
|
|||||||
presetsContainer.appendChild(presetEl);
|
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');
|
const addBtn = document.createElement('div');
|
||||||
addBtn.className = 'filter-preset add-preset-btn';
|
addBtn.className = 'filter-preset add-preset-btn';
|
||||||
addBtn.innerHTML = `<i class="fas fa-plus"></i> ${translate('common.actions.add', {}, 'Add')}`;
|
addBtn.innerHTML = `<i class="fas fa-plus"></i> ${translate('common.actions.add', {}, 'Add')}`;
|
||||||
@@ -854,7 +801,7 @@ export class FilterPresetManager {
|
|||||||
|
|
||||||
presetsContainer.appendChild(addBtn);
|
presetsContainer.appendChild(addBtn);
|
||||||
|
|
||||||
// Update add button state
|
// Update add button state (handles disabled state based on filters)
|
||||||
this.updateAddButtonState();
|
this.updateAddButtonState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user