Skip to content

Commit 86304d2

Browse files
committed
feat: magic-dash-pro模板新增版本更新日志通知功能
1 parent d20597a commit 86304d2

File tree

4 files changed

+77
-1
lines changed

4 files changed

+77
-1
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import os
2+
3+
from dash import dcc
4+
import feffery_antd_components as fac
5+
import feffery_markdown_components as fmc
6+
from dash.dependencies import Input, Output
7+
8+
from server import app
9+
from configs.base_config import BaseConfig
10+
11+
12+
def render():
13+
"""渲染版本更新日志通知"""
14+
15+
if BaseConfig.enable_version_changelog_modal:
16+
return fac.Fragment(
17+
[
18+
# 最近一次已读版本标识
19+
dcc.Store(
20+
id="core-page-version-changelog-viewed-version",
21+
storage_type="local",
22+
),
23+
# 当前版本更新内容模态框
24+
fac.AntdModal(
25+
fmc.FefferyMarkdown(
26+
markdownStr=open(
27+
os.path.join(
28+
BaseConfig.version_changelog_markdown_folder,
29+
"{}.md".format(BaseConfig.app_version),
30+
),
31+
encoding="utf-8",
32+
).read(),
33+
),
34+
id="core-page-version-changelog-modal",
35+
title="{}版本更新内容".format(BaseConfig.app_version),
36+
renderFooter=True,
37+
cancelButtonProps={"style": {"display": "none"}},
38+
okText="已阅",
39+
),
40+
]
41+
)
42+
43+
44+
@app.callback(
45+
Output("core-page-version-changelog-modal", "visible"),
46+
Input("core-page-version-changelog-viewed-version", "data"),
47+
)
48+
def handle_version_changelog_visible(version):
49+
"""判断是否显示版本更新内容通知"""
50+
if version != BaseConfig.app_version:
51+
return True
52+
53+
54+
@app.callback(
55+
Output("core-page-version-changelog-viewed-version", "data"),
56+
Input("core-page-version-changelog-modal", "okCounts"),
57+
prevent_initial_call=True,
58+
)
59+
def update_version_changelog_viewed_version(okCounts):
60+
"""在用户点击“已阅”后,更新最近一次已读版本标识"""
61+
return BaseConfig.app_version

magic_dash/templates/magic-dash-pro/configs/base_config.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ class BaseConfig:
1010
# 应用版本
1111
app_version: str = "0.5.0"
1212

13+
# 是否启用版本更新日志通知功能,每次的新版本更新日志将在用户点击“已阅”按钮后不再重复展示
14+
enable_version_changelog_modal: bool = False
15+
16+
# 设置版本更新日志通知对应的markdown文件所在目录,目录下文件名格式应为“版本号.md”
17+
version_changelog_markdown_folder: str = "changelogs"
18+
1319
# 应用密钥
1420
app_secret_key: str = "magic-dash-pro-demo"
1521

magic_dash/templates/magic-dash-pro/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ dash>=3.4.0,<4.0.0
22
feffery_antd_components>=0.4.4,<0.5.0
33
feffery_dash_utils>=0.2.6
44
feffery_utils_components>=0.3.6,<0.4.0
5+
feffery_markdown_components>=0.4.3
56
Flask_Login
67
peewee
78
user_agents

magic_dash/templates/magic-dash-pro/views/core_pages/__init__.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@
77

88
from configs import BaseConfig, RouterConfig, LayoutConfig, AuthConfig
99
from views.core_pages import independent_page_demo, independent_wildcard_page_demo
10-
from components import core_side_menu, personal_info, user_manage, department_manage
10+
from components import (
11+
core_side_menu,
12+
personal_info,
13+
user_manage,
14+
department_manage,
15+
version_changelog_modal,
16+
)
1117

1218
# 令绑定的回调函数子模块生效
1319
import callbacks.core_pages_c # noqa: F401
@@ -124,6 +130,8 @@ def render(current_user_access_rule: str, current_pathname: str = None):
124130
if current_user.user_role == AuthConfig.admin_role
125131
else []
126132
),
133+
# 版本更新日志通知
134+
version_changelog_modal.render(),
127135
# 页首
128136
fac.AntdRow(
129137
[

0 commit comments

Comments
 (0)