mirror of
https://github.com/TeamPGM/PagerMaid-Pyro.git
synced 2024-11-25 10:02:21 +00:00
178 lines
5.2 KiB
Python
178 lines
5.2 KiB
Python
from amis import (
|
||
Page,
|
||
PageSchema,
|
||
Html,
|
||
Property,
|
||
Service,
|
||
Flex,
|
||
ActionType,
|
||
LevelEnum,
|
||
Divider,
|
||
Log,
|
||
Alert,
|
||
Form,
|
||
Dialog,
|
||
Select,
|
||
Group,
|
||
InputText,
|
||
DisplayModeEnum,
|
||
Horizontal,
|
||
)
|
||
|
||
from pagermaid.config import Config
|
||
from pagermaid.web.html import get_logo
|
||
|
||
logo = Html(html=get_logo())
|
||
select_log_num = Select(
|
||
label="日志数量",
|
||
name="log_num",
|
||
value=100,
|
||
options=[
|
||
{"label": 100, "value": 100},
|
||
{"label": 200, "value": 200},
|
||
{"label": 300, "value": 300},
|
||
{"label": 400, "value": 400},
|
||
{"label": 500, "value": 500},
|
||
],
|
||
)
|
||
|
||
log_page = Log(
|
||
autoScroll=True,
|
||
placeholder="暂无日志数据...",
|
||
operation=["stop", "showLineNumber", "filter"],
|
||
source={
|
||
"method": "get",
|
||
"url": "/pagermaid/api/log?num=${log_num | raw}",
|
||
"headers": {"token": Config.WEB_SECRET_KEY},
|
||
},
|
||
)
|
||
|
||
cmd_input = Form(
|
||
mode=DisplayModeEnum.horizontal,
|
||
horizontal=Horizontal(left=0),
|
||
wrapWithPanel=False,
|
||
body=[
|
||
InputText(
|
||
name="command",
|
||
required=True,
|
||
clearable=True,
|
||
addOn=ActionType.Dialog(
|
||
label="执行",
|
||
level=LevelEnum.primary,
|
||
dialog=Dialog(
|
||
title="命令执行结果",
|
||
size="xl",
|
||
body=Log(
|
||
autoScroll=True,
|
||
placeholder="执行命令中,请稍候...",
|
||
operation=["stop", "showLineNumber", "filter"],
|
||
source={
|
||
"method": "get",
|
||
"url": "/pagermaid/api/run_sh?cmd=${command | raw}",
|
||
"headers": {"token": Config.WEB_SECRET_KEY},
|
||
},
|
||
),
|
||
),
|
||
),
|
||
)
|
||
],
|
||
)
|
||
eval_input = Form(
|
||
mode=DisplayModeEnum.horizontal,
|
||
horizontal=Horizontal(left=0),
|
||
wrapWithPanel=False,
|
||
body=[
|
||
InputText(
|
||
name="command",
|
||
required=True,
|
||
clearable=True,
|
||
addOn=ActionType.Dialog(
|
||
label="执行",
|
||
level=LevelEnum.primary,
|
||
dialog=Dialog(
|
||
title="命令执行结果",
|
||
size="xl",
|
||
body=Log(
|
||
autoScroll=True,
|
||
placeholder="执行命令中,请稍候...",
|
||
operation=["stop", "showLineNumber", "filter"],
|
||
source={
|
||
"method": "get",
|
||
"url": "/pagermaid/api/run_eval?cmd=${command | raw}",
|
||
"headers": {"token": Config.WEB_SECRET_KEY},
|
||
},
|
||
),
|
||
),
|
||
),
|
||
)
|
||
],
|
||
)
|
||
|
||
operation_button = Flex(
|
||
justify="center",
|
||
items=[
|
||
ActionType.Ajax(
|
||
label="更新",
|
||
api="/pagermaid/api/bot_update",
|
||
confirmText="该操作会更新 PagerMaid-Pyro ,请在更新完成后手动重启,请确认执行该操作",
|
||
level=LevelEnum.info,
|
||
),
|
||
ActionType.Ajax(
|
||
label="重启",
|
||
className="m-l",
|
||
api="/pagermaid/api/bot_restart",
|
||
confirmText="该操作会重启 PagerMaid-Pyro ,请耐心等待重启",
|
||
level=LevelEnum.danger,
|
||
),
|
||
ActionType.Dialog(
|
||
label="日志",
|
||
className="m-l",
|
||
level=LevelEnum.primary,
|
||
dialog=Dialog(
|
||
title="查看日志",
|
||
size="xl",
|
||
actions=[],
|
||
body=[
|
||
Alert(
|
||
level=LevelEnum.info,
|
||
body='查看最近最多500条日志,不会自动刷新,需要手动点击两次"暂停键"来进行刷新。',
|
||
),
|
||
Form(body=[Group(body=[select_log_num]), log_page]),
|
||
],
|
||
),
|
||
),
|
||
ActionType.Dialog(
|
||
label="shell",
|
||
className="m-l",
|
||
level=LevelEnum.warning,
|
||
dialog=Dialog(title="shell", size="lg", actions=[], body=[cmd_input]),
|
||
),
|
||
ActionType.Dialog(
|
||
label="eval",
|
||
className="m-l",
|
||
level=LevelEnum.warning,
|
||
dialog=Dialog(title="eval", size="lg", actions=[], body=[eval_input]),
|
||
),
|
||
],
|
||
)
|
||
|
||
status = Service(
|
||
api="/pagermaid/api/status",
|
||
body=Property(
|
||
title="运行信息",
|
||
column=2,
|
||
items=[
|
||
Property.Item(label="Bot 版本", content="${version}"),
|
||
Property.Item(label="Bot 运行时间", content="${run_time}"),
|
||
Property.Item(label="CPU占用率", content="${cpu_percent}"),
|
||
Property.Item(label="RAM占用率", content="${ram_percent}"),
|
||
Property.Item(label="SWAP占用率", content="${swap_percent}", span=2),
|
||
],
|
||
),
|
||
)
|
||
|
||
page_detail = Page(title="", body=[logo, operation_button, Divider(), status])
|
||
page = PageSchema(
|
||
url="/home", label="首页", icon="fa fa-home", isDefaultPage=True, schema=page_detail
|
||
)
|