@xq-labs/data-ui-v2 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -12
- package/docs/api/overview.md +263 -33
- package/docs/examples/bar-line-chart.md +42 -4
- package/docs/examples/local-development.md +191 -0
- package/docs/examples/pie-chart.md +48 -10
- package/docs/examples/radar-chart.md +97 -0
- package/es/bar-line-chart/index.js +3 -3
- package/es/base-chart/index.js +1 -1
- package/es/{colors-ca059479.js → colors-ec0ad9ce.js} +10 -1
- package/es/index-788e473f.js +471 -0
- package/es/{index-6af2ada7.js → index-78b6b881.js} +125 -65
- package/es/{index-6128787e.js → index-d01ce220.js} +130 -9
- package/es/index.js +8 -6
- package/es/pie-chart/3d-runtime.js +6 -0
- package/es/pie-chart/index.js +3 -3
- package/es/radar-chart/index.js +13 -0
- package/es/with-install-e405b463.js +560 -0
- package/lib/bar-line-chart/index.js +3 -3
- package/lib/base-chart/index.js +1 -1
- package/lib/{colors-55265c91.js → colors-19a7242d.js} +10 -0
- package/lib/index-6039f724.js +492 -0
- package/lib/{index-b3548b04.js → index-a0ecafa1.js} +124 -65
- package/lib/{index-ce63a14a.js → index-cc49894a.js} +129 -8
- package/lib/index.js +8 -5
- package/lib/pie-chart/3d-runtime.js +27 -0
- package/lib/pie-chart/index.js +3 -3
- package/lib/radar-chart/index.js +19 -0
- package/lib/with-install-4304a8ea.js +565 -0
- package/package.json +12 -2
- package/pie-chart/3d-runtime.js +1 -0
- package/es/with-install-befebea5.js +0 -411
- package/lib/with-install-6ce12163.js +0 -416
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @xq-labs/data-ui-v2
|
|
2
2
|
|
|
3
|
-
一套面向 Vue 2 项目的业务图表组件库,当前聚焦 `BaseChart`、`BarLineChart`、`PieChart`
|
|
3
|
+
一套面向 Vue 2 项目的业务图表组件库,当前聚焦 `BaseChart`、`BarLineChart`、`PieChart`、`RadarChart` 四个公开组件,配套 `playground` 示例库、Rollup 发布构建和本地发版脚本。
|
|
4
4
|
|
|
5
5
|
## 适用环境
|
|
6
6
|
|
|
@@ -17,13 +17,18 @@ npm install @xq-labs/data-ui-v2
|
|
|
17
17
|
|
|
18
18
|
组件库将 `vue` 与 `echarts` 作为外部依赖。
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
依赖包名为 `echarts-gl`,例如:
|
|
20
|
+
宿主项目只需确保已安装 `vue` 与 `echarts`。
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
如果你要使用 `PieChart` 的 3D 能力,
|
|
23
|
+
请先安装 `echarts-gl`,并在**使用 3D PieChart 的页面顶部**引入桥接入口:
|
|
24
|
+
|
|
25
|
+
```js
|
|
26
|
+
import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'
|
|
25
27
|
```
|
|
26
28
|
|
|
29
|
+
如果你的项目有多个页面都会使用 3D `PieChart`,
|
|
30
|
+
也可以选择在应用入口统一引入这个桥接入口。
|
|
31
|
+
|
|
27
32
|
## 整包注册
|
|
28
33
|
|
|
29
34
|
```js
|
|
@@ -38,16 +43,18 @@ Vue.use(DataUI)
|
|
|
38
43
|
- `BaseChart`
|
|
39
44
|
- `BarLineChart`
|
|
40
45
|
- `PieChart`
|
|
46
|
+
- `RadarChart`
|
|
41
47
|
|
|
42
48
|
## 按需引入
|
|
43
49
|
|
|
44
50
|
```js
|
|
45
51
|
import Vue from 'vue'
|
|
46
|
-
import { BaseChart, BarLineChart, PieChart } from '@xq-labs/data-ui-v2'
|
|
52
|
+
import { BaseChart, BarLineChart, PieChart, RadarChart } from '@xq-labs/data-ui-v2'
|
|
47
53
|
|
|
48
54
|
Vue.component(BaseChart.name, BaseChart)
|
|
49
55
|
Vue.component(BarLineChart.name, BarLineChart)
|
|
50
56
|
Vue.component(PieChart.name, PieChart)
|
|
57
|
+
Vue.component(RadarChart.name, RadarChart)
|
|
51
58
|
```
|
|
52
59
|
|
|
53
60
|
如果你的构建链路需要直接引用发布子路径,也可以按 `lib` / `es` 产物接入:
|
|
@@ -56,6 +63,7 @@ Vue.component(PieChart.name, PieChart)
|
|
|
56
63
|
import BaseChart from '@xq-labs/data-ui-v2/es/base-chart'
|
|
57
64
|
import BarLineChart from '@xq-labs/data-ui-v2/es/bar-line-chart'
|
|
58
65
|
import PieChart from '@xq-labs/data-ui-v2/es/pie-chart'
|
|
66
|
+
import RadarChart from '@xq-labs/data-ui-v2/es/radar-chart'
|
|
59
67
|
```
|
|
60
68
|
|
|
61
69
|
## 样式说明
|
|
@@ -67,16 +75,27 @@ import PieChart from '@xq-labs/data-ui-v2/es/pie-chart'
|
|
|
67
75
|
import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
68
76
|
```
|
|
69
77
|
|
|
70
|
-
## 3D
|
|
78
|
+
## 3D 饼图运行时说明
|
|
71
79
|
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
`PieChart` 使用 `dimension="3d"` 时,
|
|
81
|
+
组件库主入口**不会**代替业务项目自动加载 `echarts-gl`。
|
|
74
82
|
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
推荐接入方式:
|
|
84
|
+
|
|
85
|
+
```js
|
|
86
|
+
import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'
|
|
77
87
|
```
|
|
78
88
|
|
|
79
|
-
|
|
89
|
+
建议直接写在**使用 3D PieChart 的页面顶部**。
|
|
90
|
+
该入口只负责把 `SurfaceChart` 与 `Grid3DComponent` 注册到 `echarts/core`,
|
|
91
|
+
不会注册组件,也不会影响 2D 场景。
|
|
92
|
+
|
|
93
|
+
包内同时保留 `pie-chart/3d-runtime.js` 物理入口,
|
|
94
|
+
用于兼容不识别 `package.json#exports` 的老 webpack / Vue CLI 链路。
|
|
95
|
+
|
|
96
|
+
如果 3D runtime 未就绪,
|
|
97
|
+
组件会进入可读空态,并通过 `runtime-error` 事件抛出异常,
|
|
98
|
+
同时提示你先引入 `@xq-labs/data-ui-v2/pie-chart/3d-runtime`。
|
|
80
99
|
|
|
81
100
|
## 组件能力概览
|
|
82
101
|
|
|
@@ -97,12 +116,19 @@ npm install echarts echarts-gl
|
|
|
97
116
|
- 支持 3D 饼图、环图、按值映射高度等能力
|
|
98
117
|
- 支持标签、引导线和 `customOption` 扩展
|
|
99
118
|
|
|
119
|
+
### RadarChart
|
|
120
|
+
|
|
121
|
+
- 支持 2D 雷达图
|
|
122
|
+
- 支持字段映射式指标配置,避免 ECharts 原生 value 数组顺序错位
|
|
123
|
+
- 支持面积雷达图、折线雷达图、系列色板和 `customOption` 扩展
|
|
124
|
+
|
|
100
125
|
## 示例与文档
|
|
101
126
|
|
|
102
127
|
- API 总览:`docs/api/overview.md`
|
|
103
128
|
- 可运行示例:`playground`
|
|
104
129
|
- 示例说明:`docs/examples/pie-chart.md`
|
|
105
130
|
- 示例说明:`docs/examples/bar-line-chart.md`
|
|
131
|
+
- 示例说明:`docs/examples/radar-chart.md`
|
|
106
132
|
- npm 包内离线文档:`node_modules/@xq-labs/data-ui-v2/docs/api/overview.md`
|
|
107
133
|
- npm 包内示例说明:`node_modules/@xq-labs/data-ui-v2/docs/examples/*.md`
|
|
108
134
|
|
package/docs/api/overview.md
CHANGED
|
@@ -19,13 +19,16 @@ npm install @xq-labs/data-ui-v2
|
|
|
19
19
|
|
|
20
20
|
宿主项目需要自行安装 `vue` 与 `echarts`。
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
如果你启用 `PieChart` 的 `dimension="3d"`,
|
|
23
|
+
请先安装 `echarts-gl`,并在**业务页面**中引入 3D 桥接入口:
|
|
24
24
|
|
|
25
|
-
```
|
|
26
|
-
|
|
25
|
+
```js
|
|
26
|
+
import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
如果项目多个页面都会使用 3D `PieChart`,
|
|
30
|
+
也可以在应用入口统一引入这个桥接入口。
|
|
31
|
+
|
|
29
32
|
---
|
|
30
33
|
|
|
31
34
|
## 2. 注册方式
|
|
@@ -47,11 +50,12 @@ Vue.use(DataUI)
|
|
|
47
50
|
|
|
48
51
|
```js
|
|
49
52
|
import Vue from 'vue'
|
|
50
|
-
import { BaseChart, BarLineChart, PieChart } from '@xq-labs/data-ui-v2'
|
|
53
|
+
import { BaseChart, BarLineChart, PieChart, RadarChart } from '@xq-labs/data-ui-v2'
|
|
51
54
|
|
|
52
55
|
Vue.component(BaseChart.name, BaseChart)
|
|
53
56
|
Vue.component(BarLineChart.name, BarLineChart)
|
|
54
57
|
Vue.component(PieChart.name, PieChart)
|
|
58
|
+
Vue.component(RadarChart.name, RadarChart)
|
|
55
59
|
```
|
|
56
60
|
|
|
57
61
|
### 2.3 子路径引入
|
|
@@ -62,6 +66,7 @@ Vue.component(PieChart.name, PieChart)
|
|
|
62
66
|
import BaseChart from '@xq-labs/data-ui-v2/es/base-chart'
|
|
63
67
|
import BarLineChart from '@xq-labs/data-ui-v2/es/bar-line-chart'
|
|
64
68
|
import PieChart from '@xq-labs/data-ui-v2/es/pie-chart'
|
|
69
|
+
import RadarChart from '@xq-labs/data-ui-v2/es/radar-chart'
|
|
65
70
|
```
|
|
66
71
|
|
|
67
72
|
---
|
|
@@ -85,8 +90,9 @@ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
|
85
90
|
| `BaseChart` | 通用 ECharts 渲染壳 | 已有完整 option,只需要统一渲染、空态、loading |
|
|
86
91
|
| `BarLineChart` | 标准柱线图组件 | 基础柱图、圆柱、方柱、堆叠、双轴、柱线组合 |
|
|
87
92
|
| `PieChart` | 标准饼图组件 | 2D 饼图 / 环图 / 玫瑰图,3D 饼图 / 环图 / 标签引导线 |
|
|
93
|
+
| `RadarChart` | 标准雷达图组件 | 能力画像、指标评分、多对象指标对比 |
|
|
88
94
|
|
|
89
|
-
> 当前公开组件只有 `BaseChart`、`BarLineChart`、`PieChart`。
|
|
95
|
+
> 当前公开组件只有 `BaseChart`、`BarLineChart`、`PieChart`、`RadarChart`。
|
|
90
96
|
|
|
91
97
|
---
|
|
92
98
|
|
|
@@ -101,9 +107,10 @@ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
|
101
107
|
|
|
102
108
|
补充说明:
|
|
103
109
|
|
|
104
|
-
- 2D
|
|
105
|
-
- 3D
|
|
106
|
-
-
|
|
110
|
+
- 2D 图表不会触发 3D runtime 接入要求。
|
|
111
|
+
- 3D 饼图需要业务项目安装 `echarts-gl`,并引入 3D 桥接入口。
|
|
112
|
+
- 当前推荐在使用 3D `PieChart` 的业务页面中引入。
|
|
113
|
+
- 如果 3D runtime 未就绪,`PieChart` 会进入可读空态,并抛出 `runtime-error` 事件。
|
|
107
114
|
|
|
108
115
|
---
|
|
109
116
|
|
|
@@ -119,9 +126,9 @@ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
|
119
126
|
| Prop | 类型 | 默认值 | 说明 |
|
|
120
127
|
| --- | --- | --- | --- |
|
|
121
128
|
| `option` | `Object` | `{}` | 已构建完成的 ECharts option |
|
|
122
|
-
| `loading` | `Boolean` | `false` |
|
|
129
|
+
| `loading` | `Boolean` | `false` | 是否显示统一遮罩式 loading(非 ECharts 原生 loading) |
|
|
123
130
|
| `empty` | `Boolean` | `false` | 是否显示空态 |
|
|
124
|
-
| `
|
|
131
|
+
| `stateConfig` | `Object` | `{}` | 统一状态配置,收拢空态文案、空态图和 loading 文案 |
|
|
125
132
|
| `height` | `String \| Number` | `320` | 容器高度,数字按 px 处理 |
|
|
126
133
|
|
|
127
134
|
### 6.3 Events
|
|
@@ -133,7 +140,7 @@ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
|
133
140
|
|
|
134
141
|
### 6.4 常见场景
|
|
135
142
|
|
|
136
|
-
1. 你已经有现成的 ECharts option
|
|
143
|
+
1. 你已经有现成的 ECharts option,只需要统一遮罩式 loading、空态和实例生命周期。
|
|
137
144
|
2. 你在业务项目里做一个内部定制图表,但仍希望复用统一底层壳。
|
|
138
145
|
|
|
139
146
|
示例:
|
|
@@ -143,11 +150,42 @@ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
|
143
150
|
:option="option"
|
|
144
151
|
:loading="loading"
|
|
145
152
|
:empty="!option.series || option.series.length === 0"
|
|
146
|
-
|
|
153
|
+
:state-config="{
|
|
154
|
+
empty: {
|
|
155
|
+
text: '暂无可展示数据',
|
|
156
|
+
image: 'https://example.com/chart-empty.png'
|
|
157
|
+
},
|
|
158
|
+
loading: {
|
|
159
|
+
text: '图表加载中...'
|
|
160
|
+
}
|
|
161
|
+
}"
|
|
147
162
|
:height="360"
|
|
148
163
|
/>
|
|
149
164
|
```
|
|
150
165
|
|
|
166
|
+
### 6.5 `stateConfig` 结构
|
|
167
|
+
|
|
168
|
+
推荐结构:
|
|
169
|
+
|
|
170
|
+
```js
|
|
171
|
+
const stateConfig = {
|
|
172
|
+
empty: {
|
|
173
|
+
text: '暂无数据',
|
|
174
|
+
image: 'https://example.com/empty.png'
|
|
175
|
+
},
|
|
176
|
+
loading: {
|
|
177
|
+
text: '加载中...'
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
默认与优先级:
|
|
183
|
+
|
|
184
|
+
1. `BaseChart` 优先读取 `stateConfig.empty.text`。
|
|
185
|
+
2. 未传空态文案时回退到默认值 `暂无数据`。
|
|
186
|
+
3. 空态图未传时,`BaseEmpty` 会展示组件库内置默认图。
|
|
187
|
+
4. `loading` 布尔值仍只负责“是否显示加载态”,不放进 `stateConfig`。
|
|
188
|
+
|
|
151
189
|
---
|
|
152
190
|
|
|
153
191
|
## 7. `BarLineChart` API
|
|
@@ -168,8 +206,10 @@ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
|
168
206
|
| `preset` | `String` | `'compare'` | 预设:`compare` / `trend` / `rank` |
|
|
169
207
|
| `barWidth` | `Number` | `18` | 柱体宽度 |
|
|
170
208
|
| `barGap` | `Number \| String` | `8` | 柱间距 |
|
|
209
|
+
| `xAxisScroll` | `Object` | `{}` | X 轴类目滚动配置,只作用于横轴 |
|
|
171
210
|
| `customOption` | `Object` | `{}` | 对 ECharts option 的补充覆盖 |
|
|
172
|
-
| `loading` | `Boolean` | `false` |
|
|
211
|
+
| `loading` | `Boolean` | `false` | 是否显示统一遮罩式 loading(非 ECharts 原生 loading) |
|
|
212
|
+
| `stateConfig` | `Object` | `{}` | 统一状态配置,原样透传给 `BaseChart` |
|
|
173
213
|
| `height` | `String \| Number` | `320` | 容器高度 |
|
|
174
214
|
|
|
175
215
|
### 7.3 BarLineChart 数据格式
|
|
@@ -287,20 +327,55 @@ colors: ['#A8BEFA', '#6B98F8']
|
|
|
287
327
|
colors: ['#A8BEFA', '#6B98F8', '#3EE8FE']
|
|
288
328
|
```
|
|
289
329
|
|
|
290
|
-
### 7.6
|
|
330
|
+
### 7.6 `xAxisScroll` 字段说明
|
|
331
|
+
|
|
332
|
+
`xAxisScroll` 用于横轴类目较多的场景。
|
|
333
|
+
它底层使用 ECharts `dataZoom`,只控制 X 轴,不会影响 Y 轴。
|
|
334
|
+
|
|
335
|
+
推荐写法:
|
|
336
|
+
|
|
337
|
+
```js
|
|
338
|
+
const xAxisScroll = {
|
|
339
|
+
enabled: true,
|
|
340
|
+
visibleCount: 8,
|
|
341
|
+
startPosition: 'end',
|
|
342
|
+
showSlider: true,
|
|
343
|
+
inside: true
|
|
344
|
+
}
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
字段说明:
|
|
348
|
+
|
|
349
|
+
- `enabled`:是否开启 X 轴滚动;默认不开启。
|
|
350
|
+
- `visibleCount`:初始窗口展示的类目数量,默认按 `8` 处理。
|
|
351
|
+
- `startPosition`:初始窗口位置,支持 `start` / `end`,默认 `end`,即展示最新一段数据。
|
|
352
|
+
- `startIndex`:初始窗口起始索引;传入合法数字时,优先级高于 `startPosition`。
|
|
353
|
+
- `showSlider`:是否显示底部滚动条,默认 `true`。
|
|
354
|
+
- `inside`:是否开启鼠标滚轮 / 触控板内部滚动,默认 `true`。
|
|
355
|
+
|
|
356
|
+
默认行为:
|
|
357
|
+
|
|
358
|
+
1. 当类目数量大于 `visibleCount` 时,组件生成 `dataZoom`。
|
|
359
|
+
2. 默认从数据末尾向前取 `visibleCount` 个类目,适合“最新数据优先展示”。
|
|
360
|
+
3. 当类目数量小于等于 `visibleCount` 时,不生成 `dataZoom`。
|
|
361
|
+
4. 开启底部滚动条时,组件默认把 `grid.bottom` 提升到 `56`,避免滚动条挤压坐标轴。
|
|
362
|
+
5. `customOption.dataZoom` 与 `customOption.grid.bottom` 优先级最高,可覆盖组件生成结果。
|
|
363
|
+
|
|
364
|
+
### 7.7 Events
|
|
291
365
|
|
|
292
366
|
| 事件名 | 参数 | 说明 |
|
|
293
367
|
| --- | --- | --- |
|
|
294
368
|
| `ready` | `chart` | 底层 ECharts 实例 |
|
|
295
369
|
| `chart-click` | `params` | 点击图形元素时触发 |
|
|
296
370
|
|
|
297
|
-
### 7.
|
|
371
|
+
### 7.8 常见场景
|
|
298
372
|
|
|
299
373
|
1. **基础柱线组合**:销售额 + 完成率双轴。
|
|
300
374
|
2. **圆柱视觉**:看板类数据强调“柱体感”。
|
|
301
375
|
3. **方柱视觉**:更偏装饰型、品牌型大屏风格。
|
|
302
376
|
4. **堆叠柱图**:多个系列共享一组类目。
|
|
303
|
-
5.
|
|
377
|
+
5. **横轴类目滚动**:通过 `xAxisScroll` 默认展示最新一段数据。
|
|
378
|
+
6. **自定义展示细节**:通过 `customOption` 补 tooltip、legend、grid、dataZoom。
|
|
304
379
|
|
|
305
380
|
推荐查阅:
|
|
306
381
|
|
|
@@ -328,15 +403,16 @@ colors: ['#A8BEFA', '#6B98F8', '#3EE8FE']
|
|
|
328
403
|
| `dimension` | `String` | `'2d'` | 维度:`2d` / `3d` |
|
|
329
404
|
| `preset` | `String` | `'ratio'` | 预设:`ratio` / `rank` |
|
|
330
405
|
| `heightMode` | `String` | `'equal'` | 3D 高度:`equal` / `value` |
|
|
331
|
-
| `minHeight` | `Number` | `
|
|
332
|
-
| `maxHeight` | `Number` | `
|
|
406
|
+
| `minHeight` | `Number` | `10` | 3D 最小扇区高度 |
|
|
407
|
+
| `maxHeight` | `Number` | `25` | 3D 最大扇区高度 |
|
|
333
408
|
| `internalDiameterRatio` | `Number` | `0.6` | 环图内径比例 |
|
|
334
409
|
| `roseRadiusRange` | `Array` | `[0.75, 1.15]` | 玫瑰图外半径映射范围 |
|
|
335
410
|
| `showLabelLine` | `Boolean` | `false` | 是否显示标签引导线 |
|
|
336
411
|
| `labelOptions` | `Object` | `{}` | 标签与引导线配置 |
|
|
337
412
|
| `hideZeroValueSlices` | `Boolean` | `true` | 3D 下是否过滤 0 值扇区 |
|
|
338
413
|
| `customOption` | `Object` | `{}` | 对 ECharts option 的补充覆盖 |
|
|
339
|
-
| `loading` | `Boolean` | `false` |
|
|
414
|
+
| `loading` | `Boolean` | `false` | 是否显示统一遮罩式 loading(非 ECharts 原生 loading) |
|
|
415
|
+
| `stateConfig` | `Object` | `{}` | 统一状态配置;3D 运行时失败时内部错误文案优先级更高 |
|
|
340
416
|
| `height` | `String \| Number` | `320` | 容器高度 |
|
|
341
417
|
|
|
342
418
|
### 8.3 PieChart 数据格式
|
|
@@ -483,21 +559,35 @@ const labelOptions = {
|
|
|
483
559
|
- `percent`:组件内部计算出来的百分比。
|
|
484
560
|
- `data`:当前扇区对应的原始数据项。
|
|
485
561
|
|
|
486
|
-
### 8.6
|
|
562
|
+
### 8.6 hover tooltip 说明
|
|
563
|
+
|
|
564
|
+
`PieChart` 默认 hover tooltip 使用白底阴影卡片,
|
|
565
|
+
内容为“彩色圆点 + 名称:值”,例如 `● 已完成:140`。
|
|
566
|
+
|
|
567
|
+
3D 饼图的 surface hover 参数不是业务值,
|
|
568
|
+
组件会自动回退到扇区原始数据,避免显示参数方程采样值。
|
|
569
|
+
|
|
570
|
+
如果业务需要展示百分比、单位或多行内容,
|
|
571
|
+
可通过 `customOption.tooltip.formatter` 自定义。
|
|
572
|
+
|
|
573
|
+
### 8.7 Events
|
|
487
574
|
|
|
488
575
|
| 事件名 | 参数 | 说明 |
|
|
489
576
|
| --- | --- | --- |
|
|
490
577
|
| `ready` | `chart` | 底层 ECharts 实例 |
|
|
491
578
|
| `chart-click` | `params` | 点击图形元素时触发 |
|
|
492
|
-
| `runtime-error` | `error` | 3D
|
|
579
|
+
| `runtime-error` | `error` | 3D 运行时未就绪或接入失败时触发 |
|
|
493
580
|
|
|
494
|
-
### 8.
|
|
581
|
+
### 8.8 3D 依赖说明
|
|
495
582
|
|
|
496
|
-
- `dimension="2d"`
|
|
497
|
-
- `dimension="3d"`
|
|
498
|
-
- 3D
|
|
583
|
+
- `dimension="2d"` 时,不需要引入 `echarts-gl`。
|
|
584
|
+
- `dimension="3d"` 时,需要业务项目先安装 `echarts-gl`。
|
|
585
|
+
- 当前推荐直接在使用 3D `PieChart` 的业务页面中写 `import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'`。
|
|
586
|
+
- 如果多个页面都用 3D,也可以在应用入口统一引入这个桥接入口。
|
|
587
|
+
- 包内保留 `pie-chart/3d-runtime.js` 物理入口,用于兼容不识别 `package.json#exports` 的老 webpack / Vue CLI 链路。
|
|
588
|
+
- 若 3D 运行时未就绪,组件会优先显示内部错误文案,但仍保留 `stateConfig.empty.image` 与 `stateConfig.loading.text`。
|
|
499
589
|
|
|
500
|
-
### 8.
|
|
590
|
+
### 8.9 常见场景
|
|
501
591
|
|
|
502
592
|
1. **普通饼图**:`variant="pie"`,适合占比展示。
|
|
503
593
|
2. **环图**:`variant="ring"`,适合中心留白展示关键指标。
|
|
@@ -518,11 +608,131 @@ const labelOptions = {
|
|
|
518
608
|
|
|
519
609
|
---
|
|
520
610
|
|
|
521
|
-
## 9.
|
|
611
|
+
## 9. `RadarChart` API
|
|
612
|
+
|
|
613
|
+
### 9.1 组件定位
|
|
614
|
+
|
|
615
|
+
`RadarChart` 用于承接能力画像、指标评分、多对象指标对比等场景。
|
|
616
|
+
推荐通过 `data + indicators` 表达业务数据,由组件内部把字段映射为 ECharts `value` 数组。
|
|
617
|
+
|
|
618
|
+
### 9.2 Props
|
|
619
|
+
|
|
620
|
+
| Prop | 类型 | 默认值 | 说明 |
|
|
621
|
+
| --- | --- | --- | --- |
|
|
622
|
+
| `data` | `Array` | `[]` | 雷达图业务数据数组 |
|
|
623
|
+
| `indicators` | `Array` | `[]` | 雷达指标配置数组 |
|
|
624
|
+
| `nameKey` | `String` | `'name'` | 系列名称字段 |
|
|
625
|
+
| `variant` | `String` | `'area'` | 形态:`area` / `line` |
|
|
626
|
+
| `preset` | `String` | `'compare'` | 预设:`compare` / `score` |
|
|
627
|
+
| `colors` | `Array` | `[]` | 组件级系列色板,按数据顺序分配 |
|
|
628
|
+
| `customOption` | `Object` | `{}` | 对 ECharts option 的补充覆盖 |
|
|
629
|
+
| `loading` | `Boolean` | `false` | 是否显示统一遮罩式 loading |
|
|
630
|
+
| `stateConfig` | `Object` | `{}` | 统一状态配置,原样透传给 `BaseChart` |
|
|
631
|
+
| `height` | `String \| Number` | `320` | 容器高度 |
|
|
632
|
+
|
|
633
|
+
### 9.3 RadarChart 数据格式
|
|
634
|
+
|
|
635
|
+
`RadarChart` 的数据由两部分组成:
|
|
636
|
+
|
|
637
|
+
1. `indicators`:定义雷达轴,`key` 决定从数据中取哪个字段。
|
|
638
|
+
2. `data`:每一项代表一个雷达系列,例如本月、上月、目标值。
|
|
639
|
+
|
|
640
|
+
推荐写法:
|
|
641
|
+
|
|
642
|
+
```js
|
|
643
|
+
const indicators = [
|
|
644
|
+
{ key: 'quality', name: '质量', max: 100 },
|
|
645
|
+
{ key: 'efficiency', name: '效率', max: 100 },
|
|
646
|
+
{ key: 'cost', name: '成本控制', max: 100 },
|
|
647
|
+
{ key: 'risk', name: '风险控制', max: 100 }
|
|
648
|
+
]
|
|
649
|
+
|
|
650
|
+
const data = [
|
|
651
|
+
{
|
|
652
|
+
name: '本月',
|
|
653
|
+
quality: 86,
|
|
654
|
+
efficiency: 78,
|
|
655
|
+
cost: 92,
|
|
656
|
+
risk: 70
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
name: '上月',
|
|
660
|
+
quality: 80,
|
|
661
|
+
efficiency: 72,
|
|
662
|
+
cost: 88,
|
|
663
|
+
risk: 76
|
|
664
|
+
}
|
|
665
|
+
]
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
关键规则:
|
|
669
|
+
|
|
670
|
+
- `indicators[i].key` 必须是非空字符串,非法指标会被过滤。
|
|
671
|
+
- `indicators[i].name` 只负责展示,不参与取值。
|
|
672
|
+
- `indicators[i].max` 非法时回退为 `100`,`min` 非法时回退为 `0`。
|
|
673
|
+
- `data[i][nameKey]` 用于系列名称,缺失时回退为 `数据1`、`数据2`。
|
|
674
|
+
- `data[i][indicator.key]` 会转为数值,非法值回退为 `0`。
|
|
675
|
+
|
|
676
|
+
### 9.4 颜色配置
|
|
677
|
+
|
|
678
|
+
`RadarChart` 支持组件级色板和单系列颜色覆盖。
|
|
679
|
+
|
|
680
|
+
颜色优先级:
|
|
681
|
+
|
|
682
|
+
```text
|
|
683
|
+
data[i].color → colors[index] → DEFAULT_COLORS[index]
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
示例:
|
|
687
|
+
|
|
688
|
+
```js
|
|
689
|
+
const colors = ['#6B98F8', '#FF8A5B']
|
|
690
|
+
|
|
691
|
+
const data = [
|
|
692
|
+
{
|
|
693
|
+
name: '本月',
|
|
694
|
+
color: '#6B98F8',
|
|
695
|
+
quality: 86,
|
|
696
|
+
efficiency: 78
|
|
697
|
+
}
|
|
698
|
+
]
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
说明:
|
|
702
|
+
|
|
703
|
+
- `data[i].color` 适合单个系列特殊强调。
|
|
704
|
+
- `colors` 适合页面统一传业务色板。
|
|
705
|
+
- `variant="area"` 会使用系列色生成半透明面积填充。
|
|
706
|
+
- `variant="line"` 只使用系列色绘制折线和拐点,不生成面积填充。
|
|
707
|
+
|
|
708
|
+
### 9.5 Events
|
|
709
|
+
|
|
710
|
+
| 事件名 | 参数 | 说明 |
|
|
711
|
+
| --- | --- | --- |
|
|
712
|
+
| `ready` | `chart` | 底层 ECharts 实例 |
|
|
713
|
+
| `chart-click` | `params` | 点击图形元素时触发 |
|
|
714
|
+
|
|
715
|
+
### 9.6 常见场景
|
|
716
|
+
|
|
717
|
+
1. **能力画像**:多个能力维度综合展示。
|
|
718
|
+
2. **指标评分**:单个对象的健康度或成熟度评分。
|
|
719
|
+
3. **多对象对比**:本月/上月、团队 A/团队 B 对比。
|
|
720
|
+
4. **颜色强调**:通过 `colors` 或 `data[i].color` 控制系列色。
|
|
721
|
+
5. **自定义展示细节**:通过 `customOption` 补 title、tooltip、radar 样式。
|
|
722
|
+
|
|
723
|
+
推荐查阅:
|
|
724
|
+
|
|
725
|
+
- `docs/examples/radar-chart.md`
|
|
726
|
+
- Playground 路由:`/radar-chart/basic`
|
|
727
|
+
- Playground 路由:`/radar-chart/custom`
|
|
728
|
+
|
|
729
|
+
---
|
|
730
|
+
|
|
731
|
+
## 10. 外部配置怎么传
|
|
522
732
|
|
|
523
733
|
推荐用 `v-bind` 传一个清晰的配置对象,而不是在模板里零散写大量字面量。
|
|
524
734
|
|
|
525
|
-
###
|
|
735
|
+
### 10.1 `BarLineChart`
|
|
526
736
|
|
|
527
737
|
```vue
|
|
528
738
|
<BarLineChart
|
|
@@ -532,12 +742,14 @@ const labelOptions = {
|
|
|
532
742
|
series,
|
|
533
743
|
variant: 'cylinder',
|
|
534
744
|
preset: 'compare',
|
|
745
|
+
xAxisScroll,
|
|
746
|
+
stateConfig,
|
|
535
747
|
customOption
|
|
536
748
|
}"
|
|
537
749
|
/>
|
|
538
750
|
```
|
|
539
751
|
|
|
540
|
-
###
|
|
752
|
+
### 10.2 `PieChart`
|
|
541
753
|
|
|
542
754
|
```vue
|
|
543
755
|
<PieChart
|
|
@@ -546,10 +758,27 @@ const labelOptions = {
|
|
|
546
758
|
variant: 'ring',
|
|
547
759
|
dimension: '3d',
|
|
548
760
|
heightMode: 'value',
|
|
549
|
-
minHeight:
|
|
550
|
-
maxHeight:
|
|
761
|
+
minHeight: 10,
|
|
762
|
+
maxHeight: 25,
|
|
551
763
|
showLabelLine: true,
|
|
552
764
|
labelOptions,
|
|
765
|
+
stateConfig,
|
|
766
|
+
customOption
|
|
767
|
+
}"
|
|
768
|
+
/>
|
|
769
|
+
```
|
|
770
|
+
|
|
771
|
+
### 10.3 `RadarChart`
|
|
772
|
+
|
|
773
|
+
```vue
|
|
774
|
+
<RadarChart
|
|
775
|
+
v-bind="{
|
|
776
|
+
data,
|
|
777
|
+
indicators,
|
|
778
|
+
variant: 'area',
|
|
779
|
+
preset: 'compare',
|
|
780
|
+
colors,
|
|
781
|
+
stateConfig,
|
|
553
782
|
customOption
|
|
554
783
|
}"
|
|
555
784
|
/>
|
|
@@ -557,11 +786,12 @@ const labelOptions = {
|
|
|
557
786
|
|
|
558
787
|
---
|
|
559
788
|
|
|
560
|
-
##
|
|
789
|
+
## 11. 文档与示例导航
|
|
561
790
|
|
|
562
791
|
- API 总览:`docs/api/overview.md`
|
|
563
792
|
- 柱线图示例说明:`docs/examples/bar-line-chart.md`
|
|
564
793
|
- 饼图示例说明:`docs/examples/pie-chart.md`
|
|
794
|
+
- 雷达图示例说明:`docs/examples/radar-chart.md`
|
|
565
795
|
- 可运行 Demo 库:`playground`
|
|
566
796
|
|
|
567
797
|
建议阅读顺序:
|
|
@@ -27,7 +27,9 @@ Playground 中 `BarLineChart` 按分组路由组织:
|
|
|
27
27
|
preset,
|
|
28
28
|
barWidth,
|
|
29
29
|
barGap,
|
|
30
|
-
|
|
30
|
+
xAxisScroll,
|
|
31
|
+
customOption,
|
|
32
|
+
stateConfig
|
|
31
33
|
}"
|
|
32
34
|
/>
|
|
33
35
|
```
|
|
@@ -40,18 +42,54 @@ Playground 中 `BarLineChart` 按分组路由组织:
|
|
|
40
42
|
- `variant`:`flat` / `cylinder` / `cube`。
|
|
41
43
|
- `preset`:展示预设。
|
|
42
44
|
- `barWidth`、`barGap`:柱体宽度与间距。
|
|
45
|
+
- `xAxisScroll`:X 轴滚动配置,用于类目过多时默认展示最新数据窗口。
|
|
43
46
|
- `customOption`:ECharts 展示细节覆盖。
|
|
47
|
+
- `stateConfig`:统一收拢空态文案、空态图和 loading 文案。
|
|
48
|
+
|
|
49
|
+
推荐结构:
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
const xAxisScroll = {
|
|
53
|
+
enabled: true,
|
|
54
|
+
visibleCount: 8,
|
|
55
|
+
startPosition: 'end',
|
|
56
|
+
showSlider: true,
|
|
57
|
+
inside: true
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const stateConfig = {
|
|
61
|
+
empty: {
|
|
62
|
+
text: '暂无柱线图数据',
|
|
63
|
+
image: 'https://example.com/bar-empty.png'
|
|
64
|
+
},
|
|
65
|
+
loading: {
|
|
66
|
+
text: '柱线图加载中...'
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`xAxisScroll` 字段说明:
|
|
72
|
+
|
|
73
|
+
- `enabled`:是否开启 X 轴滚动;默认不开启。
|
|
74
|
+
- `visibleCount`:窗口内展示的类目数量,默认按 `8` 处理。
|
|
75
|
+
- `startPosition`:初始窗口位置,`end` 表示从末尾展示最新数据,`start` 表示从开头展示。
|
|
76
|
+
- `startIndex`:指定窗口起始索引;传入合法数字时优先级高于 `startPosition`。
|
|
77
|
+
- `showSlider`:是否显示底部滚动条。
|
|
78
|
+
- `inside`:是否允许鼠标滚轮 / 触控板在图表内部滚动。
|
|
44
79
|
|
|
45
80
|
## 3. 如何自定义(推荐顺序)
|
|
46
81
|
|
|
47
82
|
1. **优先 `series` 表达业务语义**:先确定字段、柱线类型、双轴和堆叠关系。
|
|
48
83
|
2. **用 `series.colors` 控制系列配色**:把业务色板放在系列层。
|
|
49
|
-
3.
|
|
84
|
+
3. **用 `xAxisScroll` 控制横轴窗口**:类目较多时默认展示最新 `visibleCount` 个类目。
|
|
85
|
+
4. **`stateConfig` 收拢状态文案**:空态图、空态文案、loading 文案统一从这里传。
|
|
86
|
+
5. **`customOption` 补充细节**:用于 tooltip、legend、grid、坐标轴样式、dataZoom 等展示项。
|
|
50
87
|
|
|
51
88
|
不建议用 `customOption` 直接整体替换关键业务结构。
|
|
89
|
+
如果必须完全自定义滚动条,可通过 `customOption.dataZoom` 覆盖 `xAxisScroll` 生成结果。
|
|
52
90
|
|
|
53
91
|
## 4. 可执行验收要点
|
|
54
92
|
|
|
55
93
|
- 页面分组名称与路由一致:基础用法、圆柱样式、方柱样式、进阶配置、customOption 与自定义、实验室。
|
|
56
|
-
- 文档示例包含 `series.colors` 与 `customOption`。
|
|
57
|
-
- 文档明确实验室边界与推荐自定义顺序。
|
|
94
|
+
- 文档示例包含 `series.colors`、`xAxisScroll`、`stateConfig` 与 `customOption`。
|
|
95
|
+
- 文档明确实验室边界与推荐自定义顺序。
|