From 2bb2c2f4a4b2fd4bbff3805c47649ece7adc7b27 Mon Sep 17 00:00:00 2001 From: YoursFunny Date: Mon, 6 Jul 2026 01:05:31 +0800 Subject: [PATCH] feat: add ETA display and comment support in dashboard --- module/config/argument/gui.yaml | 1 + module/config/config_generated.py | 1 + module/config/i18n/en-US.json | 3 ++- module/config/i18n/zh-CN.json | 3 ++- module/webui/app.py | 5 +++++ module/webui/widgets.py | 14 +++++++++++++- 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/module/config/argument/gui.yaml b/module/config/argument/gui.yaml index 419167b..5866ecf 100644 --- a/module/config/argument/gui.yaml +++ b/module/config/argument/gui.yaml @@ -61,6 +61,7 @@ Dashboard: HoursAgo: DaysAgo: LongTimeAgo: + EtaDays: AddAlas: PopupTitle: diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 8e6669e..e0ddf43 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -16,6 +16,7 @@ class GeneratedConfig: Scheduler_ServerUpdate = '04:00' # Group `Emulator` + Emulator_Serial = 'auto' Emulator_PackageName = 'auto' # auto, JP-Official, OVERSEA-TWHKMO, OVERSEA-Korea, OVERSEA-Asia, OVERSEA-America, OVERSEA-Global Emulator_GameLanguage = 'auto' # auto, jp, en, zht Emulator_ScreenshotMethod = 'auto' # auto, ADB, ADB_nc, uiautomator2, aScreenCap, aScreenCap_nc, DroidCast, DroidCast_raw, scrcpy, nemu_ipc diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index d7a317e..f8134a1 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -923,7 +923,8 @@ "MinutesAgo": "{time}min ago", "HoursAgo": "{time}h ago", "DaysAgo": "{time}d ago", - "LongTimeAgo": "long time ago" + "LongTimeAgo": "long time ago", + "EtaDays": "ETA {time}d" }, "AddAlas": { "PopupTitle": "Add new config", diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 2fa4474..e218a8a 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -923,7 +923,8 @@ "MinutesAgo": "{time}分钟前", "HoursAgo": "{time}小时前", "DaysAgo": "{time}天前", - "LongTimeAgo": "很久以前" + "LongTimeAgo": "很久以前", + "EtaDays": "剩余{time}天" }, "AddAlas": { "PopupTitle": "添加新配置", diff --git a/module/webui/app.py b/module/webui/app.py index c8fc06c..66dcc31 100644 --- a/module/webui/app.py +++ b/module/webui/app.py @@ -341,6 +341,11 @@ class AlasGUI(Frame): put_text(config.get("value", nodata)).style("--dashboard-value--"), put_text(f' / {config.get("total", "")}').style("--dashboard-time--"), ] + elif "comment" in dic.get("attrs", []) and config.get("comment") is not None: + return [ + put_text(config.get("value", nodata)).style("--dashboard-value--"), + put_text(f' {config.get("comment", "")}').style("--dashboard-time--"), + ] else: return [ put_text(config.get("value", nodata)).style("--dashboard-value--"), diff --git a/module/webui/widgets.py b/module/webui/widgets.py index b2f00cc..ca502fe 100644 --- a/module/webui/widgets.py +++ b/module/webui/widgets.py @@ -345,6 +345,7 @@ def put_arg_stored(kwargs: T_Output_Kwargs) -> Output: value = values.pop("value", "") total = values.pop("total", "") time_ = values.pop("time", "") + comment = values.pop("comment", "") if value != "" and total != "": # 0 / 100 @@ -352,6 +353,12 @@ def put_arg_stored(kwargs: T_Output_Kwargs) -> Output: put_text(value).style("--dashboard-value--"), put_text(f" / {total}").style("--dashboard-time--"), ])] + elif value != "" and comment != "": + # 88% <1.2d + rows = [put_scope(f"dashboard-value-{name}", [ + put_text(value).style("--dashboard-value--"), + put_text(f" {comment}").style("--dashboard-time--"), + ])] elif value != "": # 100 rows = [put_scope(f"dashboard-value-{name}", [ @@ -393,6 +400,11 @@ def put_arg_planner(kwargs: T_Output_Kwargs) -> Output | None: except KeyError: # Hide items not needed by the planner return None + eta = values.get("eta", 0) + if eta > 0: + eta = f" - {t('Gui.Dashboard.EtaDays', time=eta)}" + else: + eta = "" value = values.pop('value', 0) if isinstance(value, dict): @@ -403,7 +415,7 @@ def put_arg_planner(kwargs: T_Output_Kwargs) -> Output | None: row = put_scope(f"arg_stored-stored-value-{name}", [ put_text(f"{progress:.2f}%").style("--dashboard-bold--"), - put_text(f"{value} / {total}").style("--dashboard-time--"), + put_text(f"{value} / {total}{eta}").style("--dashboard-time--"), ]) return put_scope(