PagerMaid-Pyro/pagermaid/web/pages/home_page.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

175 lines
5.0 KiB
Python
Raw Permalink Normal View History

2023-03-12 03:56:01 +00:00
from amis import (
Page,
PageSchema,
Html,
Property,
Service,
Flex,
ActionType,
LevelEnum,
Divider,
Log,
Alert,
Form,
Dialog,
Select,
Group,
InputText,
DisplayModeEnum,
Horizontal,
)
2023-01-31 16:24:56 +00:00
from pagermaid.config import Config
from pagermaid.web.html import get_logo
logo = Html(html=get_logo())
select_log_num = Select(
2023-03-12 03:56:01 +00:00
label="日志数量",
name="log_num",
2023-01-31 16:24:56 +00:00
value=100,
options=[
2023-03-12 03:56:01 +00:00
{"label": 100, "value": 100},
{"label": 200, "value": 200},
{"label": 300, "value": 300},
{"label": 400, "value": 400},
{"label": 500, "value": 500},
],
2023-01-31 16:24:56 +00:00
)
log_page = Log(
autoScroll=True,
2023-03-12 03:56:01 +00:00
placeholder="暂无日志数据...",
operation=["stop", "showLineNumber", "filter"],
2023-01-31 16:24:56 +00:00
source={
2023-03-12 03:56:01 +00:00
"method": "get",
"url": "/pagermaid/api/log?num=${log_num | raw}",
},
2023-01-31 16:24:56 +00:00
)
cmd_input = Form(
mode=DisplayModeEnum.horizontal,
horizontal=Horizontal(left=0),
wrapWithPanel=False,
body=[
2023-03-12 03:56:01 +00:00
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}",
},
),
),
),
)
],
2023-01-31 16:24:56 +00:00
)
eval_input = Form(
mode=DisplayModeEnum.horizontal,
horizontal=Horizontal(left=0),
wrapWithPanel=False,
body=[
2023-03-12 03:56:01 +00:00
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}",
},
),
),
),
)
],
)
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",
2023-01-31 16:24:56 +00:00
level=LevelEnum.primary,
dialog=Dialog(
2023-03-12 03:56:01 +00:00
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]),
),
],
2023-01-31 16:24:56 +00:00
)
status = Service(
2023-03-12 03:56:01 +00:00
api="/pagermaid/api/status",
2023-01-31 16:24:56 +00:00
body=Property(
2023-03-12 03:56:01 +00:00
title="运行信息",
2023-01-31 16:24:56 +00:00
column=2,
items=[
2023-03-12 03:56:01 +00:00
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),
],
),
2023-01-31 16:24:56 +00:00
)
2023-03-12 03:56:01 +00:00
page_detail = Page(title="", body=[logo, operation_button, Divider(), status])
page = PageSchema(
url="/home", label="首页", icon="fa fa-home", isDefaultPage=True, schema=page_detail
)