🎨 为网页控制台设置项添加详情说明

This commit is contained in:
KimigaiiWuyi 2025-06-01 02:52:43 +08:00
parent 3afc5074e0
commit b37701418e
2 changed files with 110 additions and 15 deletions

View File

@ -52,7 +52,12 @@ def get_service(body: List[Dict]):
def get_input_number(
label: str, name: str, value: int, max_value: Optional[int] = None
label: str,
name: str,
value: int,
max_value: Optional[int] = None,
hint_title: Optional[str] = None,
hint_body: Optional[str] = None,
):
data = {
'type': 'input-number',
@ -65,6 +70,9 @@ def get_input_number(
}
if max_value is not None:
data['max'] = max_value
if hint_title is not None and hint_body is not None:
data['labelRemark'] = get_remark(hint_title, hint_body)
return data
@ -120,8 +128,14 @@ def get_button(title: str, api: Optional[Dict] = None):
return data
def get_switch_panel(label: str, name: str, value: bool):
return {
def get_switch_panel(
label: str,
name: str,
value: bool,
hint_title: Optional[str] = None,
hint_body: Optional[str] = None,
):
data = {
'type': 'switch',
'label': label,
'option': '',
@ -132,9 +146,20 @@ def get_switch_panel(label: str, name: str, value: bool):
'value': value,
}
if hint_title is not None and hint_body is not None:
data['labelRemark'] = get_remark(hint_title, hint_body)
def get_text_panel(label: str, name: str, value: str):
return {
return data
def get_text_panel(
label: str,
name: str,
value: str,
hint_title: Optional[str] = None,
hint_body: Optional[str] = None,
):
data: dict = {
'type': 'input-text',
'label': label,
'name': name,
@ -142,6 +167,22 @@ def get_text_panel(label: str, name: str, value: str):
'value': value,
}
if hint_title is not None and hint_body is not None:
data['labelRemark'] = get_remark(hint_title, hint_body)
return data
def get_remark(title: str, body: str):
return {
"icon": "fa fa-question-circle",
"trigger": ["hover"],
"className": "Remark--warning",
"placement": "top",
"title": title,
"content": body,
}
def get_alert(
message: str,
@ -157,8 +198,15 @@ def get_alert(
}
def get_select_panel(label: str, name: str, value: str, options: List[str]):
return {
def get_select_panel(
label: str,
name: str,
value: str,
options: List[str],
hint_title: Optional[str] = None,
hint_body: Optional[str] = None,
):
data = {
'type': 'input-text',
'label': label,
'name': name,
@ -166,9 +214,19 @@ def get_select_panel(label: str, name: str, value: str, options: List[str]):
'id': 'u:8050095a7c1d',
'value': value,
}
if hint_title is not None and hint_body is not None:
data['labelRemark'] = get_remark(hint_title, hint_body)
return data
def get_input_tag(label: str, name: str, value: List[str], options: List[str]):
def get_input_tag(
label: str,
name: str,
value: List[str],
options: List[str],
hint_title: Optional[str] = None,
hint_body: Optional[str] = None,
):
values = []
for i in value:
if isinstance(i, int):
@ -176,7 +234,7 @@ def get_input_tag(label: str, name: str, value: List[str], options: List[str]):
else:
_data = i
values.append(_data)
return {
data = {
'type': 'input-tag',
'label': label,
'name': name,
@ -186,6 +244,10 @@ def get_input_tag(label: str, name: str, value: List[str], options: List[str]):
'autoFill': {},
'value': ','.join(values),
}
if hint_title is not None and hint_body is not None:
data['labelRemark'] = get_remark(hint_title, hint_body)
return data
def get_divider():

View File

@ -82,27 +82,60 @@ def get_config_page():
if isinstance(gsc, GsStrConfig):
if gsc.options:
_data = get_select_panel(
gsc.title, config, gsc.data, gsc.options
gsc.title,
config,
gsc.data,
gsc.options,
gsc.title,
gsc.desc,
)
else:
_data = get_text_panel(gsc.title, config, gsc.data)
_data = get_text_panel(
gsc.title,
config,
gsc.data,
gsc.title,
gsc.desc,
)
solo_body.append(_data)
elif isinstance(gsc, GsIntConfig):
solo_body.append(
get_input_number(
gsc.title, config, gsc.data, gsc.max_value
gsc.title,
config,
gsc.data,
gsc.max_value,
gsc.title,
gsc.desc,
)
)
elif isinstance(gsc, GsBoolConfig):
solo_body.append(get_switch_panel(gsc.title, config, gsc.data))
solo_body.append(
get_switch_panel(
gsc.title,
config,
gsc.data,
gsc.title,
gsc.desc,
)
)
elif isinstance(gsc, GsListStrConfig):
if not gsc.options:
_data = get_text_panel(
gsc.title, config, ':'.join(gsc.data)
gsc.title,
config,
':'.join(gsc.data),
gsc.title,
gsc.desc,
)
else:
_data = get_input_tag(
gsc.title, config, gsc.data, gsc.options
gsc.title,
config,
gsc.data,
gsc.options,
gsc.title,
gsc.desc,
)
solo_body.append(_data)
elif isinstance(gsc, GsImageConfig):