Files
smart-table/README.md

117 lines
5.5 KiB
Markdown
Raw Normal View History

2020-01-30 13:24:36 +08:00
# Smart Table 组件
2020-02-01 15:21:36 +08:00
![Badge](https://img.shields.io/badge/Hey!-Everybody-yellow)
![Version](https://img.shields.io/github/package-json/v/peng92055/smart-table)
![License](https://img.shields.io/github/license/peng92055/smart-table)
2020-01-13 16:57:45 +08:00
**专处理纯静态table固定头列及排序功能**
2020-02-02 13:21:03 +08:00
此组件库常用于服务端处理数据后直接返回HTML渲染在客户端需要表格的多样化交互功能。
2020-01-13 16:55:59 +08:00
-- 初衷 --
2020-01-13 16:57:45 +08:00
2020-02-07 12:41:41 +08:00
在不依赖其他库时对服务端已返回的完整Table增加客户端的组件交互功能
2020-01-13 16:55:59 +08:00
2020-02-07 12:41:41 +08:00
-- 设计与特点 --
2020-02-02 13:21:03 +08:00
2020-02-07 12:41:41 +08:00
组件内核借鉴虚拟Dom实现元素排序移动借鉴React的Diff算法实现。使用简洁组件轻量、性能高。
2020-01-13 16:57:45 +08:00
2020-02-07 12:41:41 +08:00
-- 功能清单 --
2020-01-13 16:57:45 +08:00
2020-02-07 12:41:41 +08:00
- 头列固定
- 斑马纹
- 多级表头
- 排序
2020-02-10 12:39:30 +08:00
- 树形结构
2020-02-08 12:11:25 +08:00
- 单选
- 多选
2020-01-13 16:55:59 +08:00
## 体验
2020-01-30 13:24:36 +08:00
可直接访问https://peng92055.github.io/smart-table
2020-01-13 16:25:20 +08:00
2020-01-30 13:24:36 +08:00
## Usage
2020-01-31 17:12:19 +08:00
- 加载UI库<br>
2020-01-31 19:39:40 +08:00
Download the minified library [smartTable.min.js](https://peng92055.github.io/smart-table/smartTable.min.js), and include it in your webpage.
2020-01-30 13:24:36 +08:00
```html
2020-01-31 17:12:19 +08:00
/* smartTable library */
<script type="text/javascript" src="js/smartTable.min.js"></script>
2020-01-13 16:55:59 +08:00
```
2020-02-02 13:21:03 +08:00
- 静态HTML(指定表格基础属性)<br>
2020-01-30 13:24:36 +08:00
```html
2020-01-31 17:12:19 +08:00
<div id="smartTable">
2020-01-30 13:24:36 +08:00
<table stripe>
<thead>
<tr>
2020-01-31 17:12:19 +08:00
<th fixed sort>Id</th>
<th colspan="1" rowspan="2" width="200">日期</th>
2020-01-30 13:24:36 +08:00
...
2020-01-31 17:12:19 +08:00
<th fixed>价格</th> <!-- 右边固定列 -->
2020-01-30 13:24:36 +08:00
<tbody>
<tr>
2020-02-12 11:18:28 +08:00
<td align="right">DD001</td>
<td nowrap>2020-01-31</td>
2020-01-30 13:24:36 +08:00
...
2020-01-31 17:12:19 +08:00
<td>889.00</td>
2020-01-30 13:24:36 +08:00
<tr unsort>
2020-01-31 17:12:19 +08:00
<td colspan="2">合计</td>
...
<td>18988.00</td>
2020-02-06 18:51:14 +08:00
...
<tr expand="001"> <!-- 指定当前为展开行 -->
<tr expand-parent="001"> <!-- 指定当前为展开行子项 -->
<tr expand="001-001" expand-parent="001"> <!-- 指定当前为展开行及为其他行子项 -->
2020-01-13 16:25:20 +08:00
```
2020-01-30 13:24:36 +08:00
- 初始化表格
```javascript
2020-01-29 13:04:18 +08:00
new SmartTable({
2020-01-30 13:24:36 +08:00
selector: '#smartTable',
2020-02-04 11:59:05 +08:00
hoverBgColor: '#C5DFFF',
2020-02-03 11:31:15 +08:00
height: 300,
align: 'left',
2020-02-07 21:25:22 +08:00
size: 'middle',
selection: 'checkbox',
selectionKey: 1,
2020-01-28 14:20:55 +08:00
})
2020-01-13 16:55:59 +08:00
```
2020-01-30 13:24:36 +08:00
### Table Attributes
2020-01-30 13:24:36 +08:00
2020-02-06 18:51:14 +08:00
| Property | Tag Position | Description |
| :---------------- | :--------------------- | :---------------------------------------------------------------------------- |
| stripe | table | 表格是否需要斑马间隔色 |
| fixed | thead -> tr -> th | 是否固定该列 |
| sort | thead -> tr -> th | 是否对该列有排序功能默认按照string排序可指定为sort="number" |
2020-02-12 11:18:28 +08:00
| align | th or td | 对某一单元格指定水平排列方式 |
| nowrap | th or td | 对某一单元格指定内容是否允许换行 |
2020-02-06 18:51:14 +08:00
| unsort | tbody -> tr | 可指定body中的某一行不参与排序 |
| expand | tbody -> tr | 可指定body中的某一行是否需要展开 指定expand="001" 001为当前行的ID |
| expand-parent | tbody -> tr | 可指定body中的某一行是子项 指定expand-parent="001" 001为父级ID |
2020-01-30 13:24:36 +08:00
### Table Options
2020-01-30 13:24:36 +08:00
2020-02-08 12:11:25 +08:00
| Property | Type | Required | Description | Default |
| :---------------------| :----------------- | :---------- | :--------------------------------------------------------- | :------------ |
| selector | string | yes | 需要初始化的表格元素 | |
| height | number or function | no | 可指定表格的高度 | |
| align | string | no | 表格文本的水平排列方式(left、center、right) | center |
| size | string | no | 每一行的垂直高度风格(large、middle、small) | small |
| hoverBgColor | string | no | body中每行hover时的背景色 | '#EFF8FF' |
| expand | boolean | no | 是否开启树形结构(树形结构会忽略排序及固定列) | false |
| defaultExpandAll | boolean | no | 是否默认展开所有树形结构 | false |
| selection | string | no | 单选或多选radio、checkbox)选中值会存储在根节点selected属性上 | false |
2020-02-08 12:39:52 +08:00
| selectionKey | string or number | no | 单选或多选时选中取值对应的tbody中有效列的角标(角标从0开始) | 0 |
2020-02-08 12:11:25 +08:00
| radioBgColor | string | no | 单选时body中选中行的背景色 | '#D1E7FF' |
2020-02-06 16:43:18 +08:00
2020-01-30 13:24:36 +08:00
2020-01-31 17:12:19 +08:00
## 本地开发
### 启动项目
2020-01-30 13:24:36 +08:00
```
npm run serve
```
2020-01-31 17:12:19 +08:00
### build 流程
2020-01-30 13:24:36 +08:00
```
npm run build
2020-01-13 16:55:59 +08:00
```