From 41d9c023317c18f237d1fc2192c27ecfe3ebba2d Mon Sep 17 00:00:00 2001 From: YoursFunny Date: Mon, 6 Jul 2026 00:18:29 +0800 Subject: [PATCH] feat: show planner on gui --- assets/gui/css/alas.css | 7 +++++++ module/webui/widgets.py | 40 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/assets/gui/css/alas.css b/assets/gui/css/alas.css index a3d4650..7d085f1 100644 --- a/assets/gui/css/alas.css +++ b/assets/gui/css/alas.css @@ -436,6 +436,13 @@ pre.rich-traceback-code { overflow-wrap: break-word; } +*[style*="--dashboard-bold--"] { + font-size: 1rem; + font-weight: bold; + color: #7a77bb; + overflow-wrap: break-word; +} + [id^="pywebio-scope-dashboard-row-"] p { margin-bottom: 0; } diff --git a/module/webui/widgets.py b/module/webui/widgets.py index 59ff999..b2f00cc 100644 --- a/module/webui/widgets.py +++ b/module/webui/widgets.py @@ -339,7 +339,7 @@ def product_stored_row(key, value): def put_arg_stored(kwargs: T_Output_Kwargs) -> Output: name: str = kwargs["name"] - kwargs["disabled"] = True + # kwargs["disabled"] = True values = kwargs.pop("value", {}) value = values.pop("value", "") @@ -347,22 +347,26 @@ def put_arg_stored(kwargs: T_Output_Kwargs) -> Output: time_ = values.pop("time", "") if value != "" and total != "": + # 0 / 100 rows = [put_scope(f"dashboard-value-{name}", [ put_text(value).style("--dashboard-value--"), put_text(f" / {total}").style("--dashboard-time--"), ])] elif value != "": + # 100 rows = [put_scope(f"dashboard-value-{name}", [ put_text(value).style("--dashboard-value--") ])] else: + # Empty rows = [] + # Add other key-value in stored if values: rows += [ put_scope(f"dashboard-value-{name}-{key}", product_stored_row(key, value)) for key, value in values.items() if value != "" ] - + # Add time if time_: rows.append( put_text(time_).style("--dashboard-time--") @@ -380,6 +384,37 @@ def put_arg_stored(kwargs: T_Output_Kwargs) -> Output: ) +def put_arg_planner(kwargs: T_Output_Kwargs) -> Output | None: + name: str = kwargs["name"] + + values = kwargs.pop("value", {}) + try: + progress = values["progress"] + except KeyError: + # Hide items not needed by the planner + return None + + value = values.pop('value', 0) + if isinstance(value, dict): + value = tuple(value.values()) + total = values.pop('total', 0) + if isinstance(total, dict): + total = tuple(total.values()) + + 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--"), + ]) + + return put_scope( + f"arg_container-planner-{name}", + [ + get_title_help(kwargs), + row, + ] + ) + + def put_arg_select(kwargs: T_Output_Kwargs) -> Output: name: str = kwargs["name"] value: str = kwargs["value"] @@ -527,6 +562,7 @@ _widget_type_to_func: Dict[str, Callable] = { "storage": put_arg_storage, "state": put_arg_state, "stored": put_arg_stored, + "planner": put_arg_planner, }