Add: Show planner on gui

This commit is contained in:
LmeSzinc 2024-05-18 00:51:27 +08:00
parent 9cd6f488f4
commit da135402d4
4 changed files with 149 additions and 103 deletions

View File

@ -435,6 +435,13 @@ pre.rich-traceback-code {
overflow-wrap: break-word; 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 { [id^="pywebio-scope-dashboard-row-"] p {
margin-bottom: 0; margin-bottom: 0;
} }

View File

@ -221,297 +221,297 @@
}, },
"Planner": { "Planner": {
"Item_Credit": { "Item_Credit": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Traveler_Guide": { "Item_Traveler_Guide": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Refined_Aether": { "Item_Refined_Aether": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Lost_Crystal": { "Item_Lost_Crystal": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Broken_Teeth_of_Iron_Wolf": { "Item_Broken_Teeth_of_Iron_Wolf": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Endotherm_Chitin": { "Item_Endotherm_Chitin": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Horn_of_Snow": { "Item_Horn_of_Snow": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Lightning_Crown_of_the_Past_Shadow": { "Item_Lightning_Crown_of_the_Past_Shadow": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Storm_Eye": { "Item_Storm_Eye": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Void_Cast_Iron": { "Item_Void_Cast_Iron": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Golden_Crown_of_the_Past_Shadow": { "Item_Golden_Crown_of_the_Past_Shadow": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Netherworld_Token": { "Item_Netherworld_Token": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Searing_Steel_Blade": { "Item_Searing_Steel_Blade": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Gelid_Chitin": { "Item_Gelid_Chitin": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Shape_Shifter_Lightning_Staff": { "Item_Shape_Shifter_Lightning_Staff": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Ascendant_Debris": { "Item_Ascendant_Debris": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Nail_of_the_Ape": { "Item_Nail_of_the_Ape": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Suppressing_Edict": { "Item_Suppressing_Edict": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_IPC_Work_Permit": { "Item_IPC_Work_Permit": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Raging_Heart": { "Item_Raging_Heart": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Dream_Fridge": { "Item_Dream_Fridge": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Dream_Flamer": { "Item_Dream_Flamer": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Worldbreaker_Blade": { "Item_Worldbreaker_Blade": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Arrow_of_the_Starchaser": { "Item_Arrow_of_the_Starchaser": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Key_of_Wisdom": { "Item_Key_of_Wisdom": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Safeguard_of_Amber": { "Item_Safeguard_of_Amber": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Obsidian_of_Obsession": { "Item_Obsidian_of_Obsession": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Stellaris_Symphony": { "Item_Stellaris_Symphony": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Flower_of_Eternity": { "Item_Flower_of_Eternity": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Moon_Madness_Fang": { "Item_Moon_Madness_Fang": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Countertemporal_Shot": { "Item_Countertemporal_Shot": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Divine_Amber": { "Item_Divine_Amber": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Heaven_Incinerator": { "Item_Heaven_Incinerator": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Heavenly_Melody": { "Item_Heavenly_Melody": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Myriad_Fruit": { "Item_Myriad_Fruit": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Tracks_of_Destiny": { "Item_Tracks_of_Destiny": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Destroyer_Final_Road": { "Item_Destroyer_Final_Road": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Guardian_Lament": { "Item_Guardian_Lament": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Regret_of_Infinite_Ochema": { "Item_Regret_of_Infinite_Ochema": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Past_Evils_of_the_Borehole_Planet_Disaster": { "Item_Past_Evils_of_the_Borehole_Planet_Disaster": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Lost_Echo_of_the_Shared_Wish": { "Item_Lost_Echo_of_the_Shared_Wish": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Squirming_Core": { "Item_Squirming_Core": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Conqueror_Will": { "Item_Conqueror_Will": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Silvermane_Medal": { "Item_Silvermane_Medal": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Ancient_Engine": { "Item_Ancient_Engine": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Immortal_Lumintwig": { "Item_Immortal_Lumintwig": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Artifex_Gyreheart": { "Item_Artifex_Gyreheart": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Dream_Making_Engine": { "Item_Dream_Making_Engine": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
}, },
"Item_Shards_of_Desires": { "Item_Shards_of_Desires": {
"type": "stored", "type": "planner",
"value": {}, "value": {},
"display": "hide", "display": "display",
"stored": "StoredPlanner" "stored": "StoredPlanner"
} }
}, },

View File

@ -126,7 +126,11 @@ class ConfigGenerator:
from tasks.planner.keywords.classes import ItemBase from tasks.planner.keywords.classes import ItemBase
for item in ItemBase.instances.values(): for item in ItemBase.instances.values():
base = item.group_base base = item.group_base
deep_set(raw, keys=['Planner', f'Item_{base.name}'], value={'stored': 'StoredPlanner'}) deep_set(raw, keys=['Planner', f'Item_{base.name}'], value={
'stored': 'StoredPlanner',
'display': 'display',
'type': 'planner',
})
# Load # Load
for path, value in deep_iter(raw, depth=2): for path, value in deep_iter(raw, depth=2):
@ -138,7 +142,7 @@ class ConfigGenerator:
if not isinstance(value, dict): if not isinstance(value, dict):
value = {'value': value} value = {'value': value}
arg['type'] = data_to_type(value, arg=path[1]) arg['type'] = data_to_type(value, arg=path[1])
if arg['type'] == 'stored': if arg['type'] in ['stored', 'planner']:
value['value'] = {} value['value'] = {}
arg['display'] = 'hide' # Hide `stored` by default arg['display'] = 'hide' # Hide `stored` by default
if isinstance(value['value'], datetime): if isinstance(value['value'], datetime):
@ -593,7 +597,7 @@ class ConfigGenerator:
import module.config.stored.classes as classes import module.config.stored.classes as classes
data = {} data = {}
for path, value in deep_iter(self.args, depth=3): for path, value in deep_iter(self.args, depth=3):
if value.get('type') != 'stored': if value.get('type') not in ['stored', 'planner']:
continue continue
name = path[-1] name = path[-1]
stored = value.get('stored') stored = value.get('stored')

View File

@ -340,7 +340,7 @@ def product_stored_row(key, value):
def put_arg_stored(kwargs: T_Output_Kwargs) -> Output: def put_arg_stored(kwargs: T_Output_Kwargs) -> Output:
name: str = kwargs["name"] name: str = kwargs["name"]
kwargs["disabled"] = True # kwargs["disabled"] = True
values = kwargs.pop("value", {}) values = kwargs.pop("value", {})
value = values.pop("value", "") value = values.pop("value", "")
@ -348,22 +348,26 @@ def put_arg_stored(kwargs: T_Output_Kwargs) -> Output:
time_ = values.pop("time", "") time_ = values.pop("time", "")
if value != "" and total != "": if value != "" and total != "":
# 0 / 100
rows = [put_scope(f"dashboard-value-{name}", [ rows = [put_scope(f"dashboard-value-{name}", [
put_text(value).style("--dashboard-value--"), put_text(value).style("--dashboard-value--"),
put_text(f" / {total}").style("--dashboard-time--"), put_text(f" / {total}").style("--dashboard-time--"),
])] ])]
elif value != "": elif value != "":
# 100
rows = [put_scope(f"dashboard-value-{name}", [ rows = [put_scope(f"dashboard-value-{name}", [
put_text(value).style("--dashboard-value--") put_text(value).style("--dashboard-value--")
])] ])]
else: else:
# Empty
rows = [] rows = []
# Add other key-value in stored
if values: if values:
rows += [ rows += [
put_scope(f"dashboard-value-{name}-{key}", product_stored_row(key, value)) put_scope(f"dashboard-value-{name}-{key}", product_stored_row(key, value))
for key, value in values.items() if value != "" for key, value in values.items() if value != ""
] ]
# Add time
if time_: if time_:
rows.append( rows.append(
put_text(time_).style("--dashboard-time--") put_text(time_).style("--dashboard-time--")
@ -380,6 +384,36 @@ 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: def put_arg_select(kwargs: T_Output_Kwargs) -> Output:
name: str = kwargs["name"] name: str = kwargs["name"]
@ -528,6 +562,7 @@ _widget_type_to_func: Dict[str, Callable] = {
"storage": put_arg_storage, "storage": put_arg_storage,
"state": put_arg_state, "state": put_arg_state,
"stored": put_arg_stored, "stored": put_arg_stored,
"planner": put_arg_planner,
} }