# feffery-dash-utils
**Repository Path**: cnfeffery/feffery-dash-utils
## Basic Information
- **Project Name**: feffery-dash-utils
- **Description**: 同步Github feffery-dash-utils仓库
- **Primary Language**: Python
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://github.com/CNFeffery/feffery-dash-utils
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2024-07-04
- **Last Updated**: 2025-11-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# feffery-dash-utils
简体中文 | [English](./README-en_US.md)
包含一系列用于提升`Dash`应用开发效率的工具函数/工具类。
[](./setup.py)
[](https://github.com/CNFeffery/feffery-antd-components/blob/master/LICENSE)
[](https://pypi.org/project/feffery-dash-utils/)
[](https://github.com/astral-sh/ruff)
## 目录
[安装](#install)
[配合 vscode 插件](#with-vscode)
[已有工具函数/工具类列表](#utils-list)
[参与贡献](#contribute)
[开发计划](#roadmap)
## 安装
```bash
pip install feffery-dash-utils -U
```
## 配合 vscode 插件
在`vscode`中配合插件[feffery-dash-snippets](https://github.com/CNFeffery/feffery-dash-snippets)可快捷实现对各工具函数/工具类的快捷导入,在`Python`文件中输入`utils:`即可触发相关快捷命令。
## 已有工具函数/工具类列表
- style_utils
- [style()](#style)
- tree_utils
- [TreeManager](#TreeManager)
- [update_tree_node()](#update_tree_node)
- [add_node_before()](#add_node_before)
- [add_node_after()](#add_node_after)
- [delete_node()](#delete_node)
- [get_node()](#get_node)
- i18n_utils
- [Translator](#Translator)
- template_utils
- [dashboard_components](#dashboard_components)
- [welcome_card()](#welcome_card)
- [blank_card()](#blank_card)
- [simple_chart_card()](#simple_chart_card)
- [index_card()](#index_card)
- version_utils
- [check_python_version()](#check_python_version)
- [check_dependencies_version()](#check_dependencies_version)
### `style()`
用于快捷生成`Dash`组件的`style`参数字典,内置了绝大多数小驼峰命名格式的常用`css`属性,在常见 ide 中将鼠标悬停于参数名之上可查看对应的中英文属性功能介绍,内容基于`w3cschool`自动生成。
> 使用示例
```Python
from feffery_dash_utils.style_utils import style
# 方式一:直接编写键值对样式
fac.AntdText(
'测试',
style=style(
fontSize=16,
color='red'
)
)
# 方式二:解析CSS代码片段
fac.AntdText(
'测试',
style=style(
"""
.IvkwhTOsc9wu6RdvHESR .yK52Sq0w7wspWaS28YNl {
width: 91.46%;
margin-left: 4.27%;
margin-bottom: 5%;
position: relative;
}"""
)
)
# 方式三:混合使用
fac.AntdText(
'测试',
style=style(
"""
.IvkwhTOsc9wu6RdvHESR .yK52Sq0w7wspWaS28YNl {
width: 91.46%;
margin-left: 4.27%;
margin-bottom: 5%;
position: relative;
}""",
fontSize=16,
color='red'
)
)
```
### `TreeManager`
用于对类似`AntdTree`、`AntdTreeSelect`等树形组件所依赖的树形结构数据进行快捷管理操作,具体包含的方法有:
#### `update_tree_node()`
用于对树形结构数据中指定`key`对应节点进行整体或增量更新。
> 使用示例
```Python
from feffery_dash_utils.tree_utils import TreeManager
# 示例树形数据
demo_tree = [
{
'title': '节点1',
'key': '节点1',
'children': [
{
'title': '节点1-1',
'key': '节点1-1',
'children': [
{
'title': '节点1-1-1',
'key': '节点1-1-1',
},
{
'title': '节点1-1-2',
'key': '节点1-1-2',
},
],
}
],
},
{'title': '节点2', 'key': '节点2'},
]
# 对示例树形数据指定节点进行整体替换
TreeManager.update_tree_node(
demo_tree,
'节点1-1',
{'title': '节点1-1', 'key': '节点1-1'},
)
# 对示例树形数据指定节点进行增量更新
TreeManager.update_tree_node(
demo_tree,
'节点1-1',
{'title': '节点1-1new'},
'overlay',
)
```
#### `add_node_before()`
在树形结构数据中指定`key`对应节点之前插入平级新节点。
> 使用示例
```Python
from feffery_dash_utils.tree_utils import TreeManager
# 示例树形数据
demo_tree = [
{
'title': '节点1',
'key': '节点1',
'children': [
{
'title': '节点1-1',
'key': '节点1-1',
'children': [
{
'title': '节点1-1-1',
'key': '节点1-1-1',
},
{
'title': '节点1-1-2',
'key': '节点1-1-2',
},
],
}
],
},
{'title': '节点2', 'key': '节点2'},
]
# 在示例树形数据指定节点前插入平级新节点
TreeManager.add_node_before(
demo_tree,
'节点1-1',
{'title': '节点1-0', 'key': '节点1-0'},
)
```
#### `add_node_after()`
在树形结构数据中指定`key`对应节点之后插入平级新节点。
> 使用示例
```Python
from feffery_dash_utils.tree_utils import TreeManager
# 示例树形数据
demo_tree = [
{
'title': '节点1',
'key': '节点1',
'children': [
{
'title': '节点1-1',
'key': '节点1-1',
'children': [
{
'title': '节点1-1-1',
'key': '节点1-1-1',
},
{
'title': '节点1-1-2',
'key': '节点1-1-2',
},
],
}
],
},
{'title': '节点2', 'key': '节点2'},
]
# 在示例树形数据指定节点后插入平级新节点
TreeManager.add_node_after(
demo_tree,
'节点1-1',
{'title': '节点1-2', 'key': '节点1-2'},
)
```
#### `delete_node()`
删除树形结构数据中指定`key`对应节点。
> 使用示例
```Python
from feffery_dash_utils.tree_utils import TreeManager
# 示例树形数据
demo_tree = [
{
'title': '节点1',
'key': '节点1',
'children': [
{
'title': '节点1-1',
'key': '节点1-1',
'children': [
{
'title': '节点1-1-1',
'key': '节点1-1-1',
},
{
'title': '节点1-1-2',
'key': '节点1-1-2',
},
],
}
],
},
{'title': '节点2', 'key': '节点2'},
]
# 删除示例树形数据指定节点
TreeManager.delete_node(demo_tree, '节点2')
```
#### `get_node()`
查询树形结构数据中指定`key`对应节点。
> 使用示例
```Python
from feffery_dash_utils.tree_utils import TreeManager
# 示例树形数据
demo_tree = [
{
'title': '节点1',
'key': '节点1',
'children': [
{
'title': '节点1-1',
'key': '节点1-1',
'children': [
{
'title': '节点1-1-1',
'key': '节点1-1-1',
},
{
'title': '节点1-1-2',
'key': '节点1-1-2',
},
],
}
],
},
{'title': '节点2', 'key': '节点2'},
]
# 查询示例树形数据中存在的指定节点
TreeManager.get_node(demo_tree, '节点1-1')
# 查询示例树形数据中不存在的指定节点(将返回None)
TreeManager.get_node(demo_tree, '节点1-666')
```
### `Translator`
用于在`Dash`应用中快捷构建国际化多语种方案,基于前端`cookies`和本地国际化配置文件驱动。
> 使用示例
示例应用见[i18n_test_app.py](/tests/i18n_utils/i18n_test_app.py)、[i18n_multi_test_app.py](/tests/i18n_utils/i18n_multi_test_app.py),参考配置文件见[locales.json](/tests/i18n_utils/locales.json)、[locales1.json](/tests/i18n_utils/multi_locales/locales1.json)、[locales2.json](/tests/i18n_utils/multi_locales/locales2.json)
### `dashboard_components`
内置数据仪表盘页面搭建常用自定义组件,具体包含的组件有:
#### `welcome_card()`
欢迎卡片。
#### `blank_card()`
空白卡片。
#### `simple_chart_card()`
简单图表卡片。
#### `index_card()`
指标卡片。
### `version_utils`
提供包含`Python`版本检查、依赖库版本检查等一系列与项目依赖版本相关的工具函数。
#### `check_python_version()`
用于检查当前`Python`版本是否满足项目要求。
> 使用示例
```Python
from feffery_dash_utils.version_utils import check_python_version
check_python_version(
min_version='3.8',
max_version='3.12'
)
```
#### `check_dependencies_version()`
用于检查当前项目依赖库版本是否满足项目要求。
> 使用示例
```Python
from feffery_dash_utils.version_utils import check_dependencies_version
check_dependencies_version(
rules=[
{
'name': 'dash',
'specifier': '<=2.18.2'
}
]
)
```
## 参与贡献
```bash
git clone https://github.com/CNFeffery/feffery-dash-utils.git
cd feffery-dash-utils
# 安装开发环境所需依赖
pip install -r requirements/dev.txt
```
## 开发计划
- [ ] 样式相关工具函数子模块`style_utils`
- [x] `style`参数编写辅助函数`style()`
- [ ] 模板相关工具函数子模块`template_utils`
- [x] 仪表盘常用自定义组件子模块`dashboard_components`
- [x] 欢迎卡片`welcome_card()`
- [x] 空白卡片`blank_card()`
- [x] 简单图表卡片`simple_chart_card()`
- [x] 指标卡片`index_card()`
- [ ] 树形处理相关工具函数子模块`tree_utils`
- [x] 树形数据结构管理类`TreeManager`
- [x] 树节点更新函数`update_tree_node()`
- [x] 树节点前置插入函数`add_node_before()`
- [x] 树节点后置插入函数`add_node_after()`
- [x] 树节点删除函数`delete_node()`
- [x] 树节点查询函数`get_node()`
- [ ] 国际化相关工具函数子模块`i18n_utils`
- [x] 文案内容快捷国际化操作类`Translator`
- [ ] 版本控制相关工具函数子模块`version_utils`
- [x] `Python`版本检查函数`check_python_version()`
- [x] 依赖库版本检查函数`check_dependencies_version()`
- [ ] 组件参数辅助生成工具函数子模块`component_prop_utils`
- [x] 针对`fact.AntdBox`箱线图组件的`data`参数辅助生成工具函数`to_box_data()`