From df1410535e80ca9f7434da7943673318cd9f9576 Mon Sep 17 00:00:00 2001 From: Will Miao Date: Tue, 12 May 2026 07:50:54 +0800 Subject: [PATCH] fix(ui): remove redundant Quick Refresh from Refresh split button dropdown The main Refresh button and Quick Refresh dropdown item both called refreshModels(false). Split button dropdowns should only contain alternative actions (Hick's Law). Dropdown now has only Rebuild Cache (fullRebuild=true). Removed from 2 templates, 2 JS files, 1 test fixture, and 10 locale files. --- locales/de.json | 6 +----- locales/en.json | 6 +----- locales/es.json | 6 +----- locales/fr.json | 6 +----- locales/he.json | 6 +----- locales/ja.json | 6 +----- locales/ko.json | 6 +----- locales/ru.json | 6 +----- locales/zh-CN.json | 6 +----- locales/zh-TW.json | 6 +----- static/js/components/controls/PageControls.js | 13 +------------ static/js/recipes.js | 12 +----------- templates/components/controls.html | 5 +---- templates/recipes.html | 5 +---- .../components/pageControls.filtering.test.js | 3 +-- 15 files changed, 15 insertions(+), 83 deletions(-) diff --git a/locales/de.json b/locales/de.json index 04456945..d92107fc 100644 --- a/locales/de.json +++ b/locales/de.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "Modelliste aktualisieren", - "quick": "Änderungen synchronisieren", - "quickTooltip": "Nach neuen oder fehlenden Modelldateien suchen, damit die Liste aktuell bleibt.", "full": "Cache neu aufbauen", "fullTooltip": "Alle Modelldetails aus Metadatendateien neu laden – nutzen, wenn die Bibliothek veraltet wirkt oder nach manuellen Änderungen." }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "Rezeptliste aktualisieren", - "quick": "Änderungen synchronisieren", - "quickTooltip": "Änderungen synchronisieren - schnelle Aktualisierung ohne Cache-Neubau", "full": "Cache neu aufbauen", "fullTooltip": "Cache neu aufbauen - vollständiger Rescan aller Rezeptdateien" }, @@ -1961,4 +1957,4 @@ "retry": "Wiederholen" } } -} +} \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index dcae4616..1a8bf247 100644 --- a/locales/en.json +++ b/locales/en.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "Refresh model list", - "quick": "Sync Changes", - "quickTooltip": "Scan for new or missing model files so the list stays current.", "full": "Rebuild Cache", "fullTooltip": "Reload all model details from metadata files—use if the library looks out of date or after manual edits." }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "Refresh recipe list", - "quick": "Sync Changes", - "quickTooltip": "Sync changes - quick refresh without rebuilding cache", "full": "Rebuild Cache", "fullTooltip": "Rebuild cache - full rescan of all recipe files" }, @@ -1961,4 +1957,4 @@ "retry": "Retry" } } -} +} \ No newline at end of file diff --git a/locales/es.json b/locales/es.json index 6cf502a1..c4413d31 100644 --- a/locales/es.json +++ b/locales/es.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "Actualizar lista de modelos", - "quick": "Sincronizar cambios", - "quickTooltip": "Busca archivos de modelo nuevos o faltantes para mantener la lista al día.", "full": "Reconstruir caché", "fullTooltip": "Vuelve a cargar todos los detalles desde los archivos de metadatos; úsalo si la biblioteca parece desactualizada o tras ediciones manuales." }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "Actualizar lista de recetas", - "quick": "Sincronizar cambios", - "quickTooltip": "Sincronizar cambios - actualización rápida sin reconstruir caché", "full": "Reconstruir caché", "fullTooltip": "Reconstruir caché - reescaneo completo de todos los archivos de recetas" }, @@ -1961,4 +1957,4 @@ "retry": "Reintentar" } } -} +} \ No newline at end of file diff --git a/locales/fr.json b/locales/fr.json index 6df5c18c..ddeee420 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "Actualiser la liste des modèles", - "quick": "Synchroniser les changements", - "quickTooltip": "Analyse les nouveaux fichiers de modèle ou les fichiers manquants pour garder la liste à jour.", "full": "Reconstruire le cache", "fullTooltip": "Recharge tous les détails des modèles depuis les fichiers metadata — à utiliser si la bibliothèque paraît obsolète ou après des modifications manuelles." }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "Actualiser la liste des recipes", - "quick": "Synchroniser les changements", - "quickTooltip": "Synchroniser les changements - actualisation rapide sans reconstruire le cache", "full": "Reconstruire le cache", "fullTooltip": "Reconstruire le cache - rescan complet de tous les fichiers de recipes" }, @@ -1961,4 +1957,4 @@ "retry": "Réessayer" } } -} +} \ No newline at end of file diff --git a/locales/he.json b/locales/he.json index 9370a48d..2c061bfa 100644 --- a/locales/he.json +++ b/locales/he.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "רענן רשימת מודלים", - "quick": "סנכרון שינויים", - "quickTooltip": "סריקה לאיתור קבצי מודל חדשים או חסרים כדי לשמור את הרשימה מעודכנת.", "full": "בניית מטמון מחדש", "fullTooltip": "טוען מחדש את כל פרטי המודלים מקבצי המטא-דאטה – לשימוש אם הספרייה נראית לא מעודכנת או לאחר עריכות ידניות." }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "רענן רשימת מתכונים", - "quick": "סנכרן שינויים", - "quickTooltip": "סנכרן שינויים - רענון מהיר ללא בניית מטמון מחדש", "full": "בנה מטמון מחדש", "fullTooltip": "בנה מטמון מחדש - סריקה מחדש מלאה של כל קבצי המתכונים" }, @@ -1961,4 +1957,4 @@ "retry": "נסה שוב" } } -} +} \ No newline at end of file diff --git a/locales/ja.json b/locales/ja.json index 1d43189f..00bed147 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "モデルリストを更新", - "quick": "変更を同期", - "quickTooltip": "新しいモデルファイルや欠けているファイルをスキャンして一覧を最新に保ちます。", "full": "キャッシュを再構築", "fullTooltip": "メタデータファイルから全モデル情報を再読み込みします。リストが古いと感じるときや手動編集後に使用してください。" }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "レシピリストを更新", - "quick": "変更を同期", - "quickTooltip": "変更を同期 - キャッシュを再構築せずにクイック更新", "full": "キャッシュを再構築", "fullTooltip": "キャッシュを再構築 - すべてのレシピファイルを完全に再スキャン" }, @@ -1961,4 +1957,4 @@ "retry": "再試行" } } -} +} \ No newline at end of file diff --git a/locales/ko.json b/locales/ko.json index 76924c10..2ef6cbb2 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "모델 목록 새로고침", - "quick": "변경 사항 동기화", - "quickTooltip": "새로운 모델 파일이나 누락된 파일을 찾아 목록을 최신 상태로 유지합니다.", "full": "캐시 재구성", "fullTooltip": "메타데이터 파일에서 모든 모델 정보를 다시 불러옵니다. 라이브러리가 오래되어 보이거나 수동 수정 후에 사용하세요." }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "레시피 목록 새로고침", - "quick": "변경 사항 동기화", - "quickTooltip": "변경 사항 동기화 - 캐시를 재구성하지 않고 빠른 새로고침", "full": "캐시 재구성", "fullTooltip": "캐시 재구성 - 모든 레시피 파일을 완전히 다시 스캔" }, @@ -1961,4 +1957,4 @@ "retry": "다시 시도" } } -} +} \ No newline at end of file diff --git a/locales/ru.json b/locales/ru.json index 8f98132a..a795c421 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "Обновить список моделей", - "quick": "Синхронизировать изменения", - "quickTooltip": "Находит новые или отсутствующие файлы моделей, чтобы список оставался актуальным.", "full": "Перестроить кэш", "fullTooltip": "Перечитывает все данные моделей из файлов метаданных — используйте, если библиотека выглядит устаревшей или после ручных правок." }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "Обновить список рецептов", - "quick": "Синхронизировать изменения", - "quickTooltip": "Синхронизировать изменения - быстрое обновление без перестроения кэша", "full": "Перестроить кэш", "fullTooltip": "Перестроить кэш - полное повторное сканирование всех файлов рецептов" }, @@ -1961,4 +1957,4 @@ "retry": "Повторить" } } -} +} \ No newline at end of file diff --git a/locales/zh-CN.json b/locales/zh-CN.json index 08cab57b..4987740c 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "刷新模型列表", - "quick": "同步变更", - "quickTooltip": "扫描新的或缺失的模型文件,保持列表最新。", "full": "重建缓存", "fullTooltip": "从元数据文件重新加载所有模型信息;用于列表过时或手动编辑后。" }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "刷新配方列表", - "quick": "同步变更", - "quickTooltip": "同步变更 - 快速刷新而不重建缓存", "full": "重建缓存", "fullTooltip": "重建缓存 - 重新扫描所有配方文件" }, @@ -1961,4 +1957,4 @@ "retry": "重试" } } -} +} \ No newline at end of file diff --git a/locales/zh-TW.json b/locales/zh-TW.json index a154687f..4f4356c4 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -640,8 +640,6 @@ }, "refresh": { "title": "重新整理模型列表", - "quick": "同步變更", - "quickTooltip": "掃描新的或缺少的模型檔案,讓清單保持最新。", "full": "重建快取", "fullTooltip": "從中繼資料檔重新載入所有模型資訊;適用於清單過時或手動編輯後。" }, @@ -816,8 +814,6 @@ }, "refresh": { "title": "重新整理配方列表", - "quick": "同步變更", - "quickTooltip": "同步變更 - 快速重新整理而不重建快取", "full": "重建快取", "fullTooltip": "重建快取 - 重新掃描所有配方檔案" }, @@ -1961,4 +1957,4 @@ "retry": "重試" } } -} +} \ No newline at end of file diff --git a/static/js/components/controls/PageControls.js b/static/js/components/controls/PageControls.js index e6fd62d7..9424e8dd 100644 --- a/static/js/components/controls/PageControls.js +++ b/static/js/components/controls/PageControls.js @@ -166,17 +166,6 @@ export class PageControls { }); }); - // Handle quick refresh option - const quickRefreshOption = document.querySelector('[data-action="quick-refresh"]'); - if (quickRefreshOption) { - quickRefreshOption.addEventListener('click', (e) => { - e.stopPropagation(); - this.refreshModels(false); - // Close the dropdown - document.querySelector('.dropdown-group.active')?.classList.remove('active'); - }); - } - // Handle full rebuild option const fullRebuildOption = document.querySelector('[data-action="full-rebuild"]'); if (fullRebuildOption) { @@ -829,4 +818,4 @@ export class PageControls { this.sidebarManager.cleanup(); } } -} +} \ No newline at end of file diff --git a/static/js/recipes.js b/static/js/recipes.js index 68d5719b..715a9b24 100644 --- a/static/js/recipes.js +++ b/static/js/recipes.js @@ -286,16 +286,6 @@ class RecipeManager { }); }); - // Handle quick refresh option (Sync Changes) - const quickRefreshOption = document.querySelector('[data-action="quick-refresh"]'); - if (quickRefreshOption) { - quickRefreshOption.addEventListener('click', (e) => { - e.stopPropagation(); - this.pageControls.refreshModels(false); - this.closeDropdowns(); - }); - } - // Handle full rebuild option (Rebuild Cache) const fullRebuildOption = document.querySelector('[data-action="full-rebuild"]'); if (fullRebuildOption) { @@ -407,4 +397,4 @@ document.addEventListener('DOMContentLoaded', async () => { }); // Export for use in other modules -export { RecipeManager }; +export { RecipeManager }; \ No newline at end of file diff --git a/templates/components/controls.html b/templates/components/controls.html index b0fe8cfd..30e94f89 100644 --- a/templates/components/controls.html +++ b/templates/components/controls.html @@ -41,9 +41,6 @@ - + \ No newline at end of file diff --git a/templates/recipes.html b/templates/recipes.html index 4d715823..587a61fa 100644 --- a/templates/recipes.html +++ b/templates/recipes.html @@ -75,9 +75,6 @@ @@ -930,4 +929,4 @@ describe('PageControls favorites, sorting, and duplicates scenarios', () => { expect(stateModule.state.bulkMode).toBe(true); expect(pageState.duplicatesMode).toBe(true); }); -}); +}); \ No newline at end of file