Skip to content

Commit d20597a

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

4 files changed

Lines changed: 71 additions & 1 deletion

File tree

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/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
min_browser_versions: List[dict] = [
1521
{"browser": "Chrome", "version": 88},

magic_dash/templates/magic-dash/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-compress
67
user_agents
78
yarl

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import feffery_utils_components as fuc
55
from feffery_dash_utils.style_utils import style
66

7-
from components import core_side_menu
87
from configs import BaseConfig, RouterConfig, LayoutConfig
8+
from components import core_side_menu, version_changelog_modal
99
from views.core_pages import independent_page_demo, independent_wildcard_page_demo
1010

1111
# 令绑定的回调函数子模块生效
@@ -88,6 +88,8 @@ def render(current_pathname: str = None):
8888
fuc.FefferyFullscreen(
8989
id="core-fullscreen",
9090
),
91+
# 版本更新日志通知
92+
version_changelog_modal.render(),
9193
# 页首
9294
fac.AntdRow(
9395
[

0 commit comments

Comments
 (0)