@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.
@@ -0,0 +1,191 @@
1
+ # 本地临时联调说明
2
+
3
+ > 这份文档不是 API 文档。
4
+ > 它只面向当前组件库维护者,用于把当前仓库的最新发布产物,临时安装到其他本地项目里做联调验证。
5
+
6
+ ## 1. 适用场景
7
+
8
+ 适合以下情况:
9
+
10
+ - 刚改完组件能力,想马上到业务项目里验证
11
+ - 只做当天的临时联调,不做长期本地依赖维护
12
+ - 希望联调方式尽量贴近真实发布包结构
13
+
14
+ 不适合以下情况:
15
+
16
+ - 需要连续多天频繁联调
17
+ - 需要同时给多个本地项目持续推送更新
18
+ - 需要基于源码目录直接调试发布链路之外的问题
19
+
20
+ ## 2. 联调原则
21
+
22
+ 当前仓库正式发布包根目录是 `.release/`,不是仓库根目录。
23
+
24
+ 所以本地临时联调时:
25
+
26
+ - 推荐安装 `.release/`
27
+ - 不推荐直接安装仓库根目录
28
+ - 不推荐优先使用 `npm link`
29
+ - 当前文档也不使用 `yalc`
30
+
31
+ 这样做的原因是:
32
+
33
+ - `.release/` 更接近真实发包结果
34
+ - 能直接验证 `package.json`、入口文件、样式和文档是否正确
35
+ - 联调结果和正式发布后的安装结果更一致
36
+
37
+ ## 3. 当前仓库先做什么
38
+
39
+ 先在当前仓库执行构建:
40
+
41
+ ```bash
42
+ npm run build
43
+ ```
44
+
45
+ 如需顺手检查发包内容,可以再执行:
46
+
47
+ ```bash
48
+ npm run pack:check
49
+ ```
50
+
51
+ 构建完成后,确认 `.release/` 下至少存在:
52
+
53
+ - `package.json`
54
+ - `lib/`
55
+ - `es/`
56
+ - `theme-chalk/`
57
+
58
+ ## 4. 其他本地项目如何临时安装
59
+
60
+ 进入业务项目后执行:
61
+
62
+ ```bash
63
+ npm install ../data-ui-v2/.release --no-save
64
+ ```
65
+
66
+ 说明:
67
+
68
+ - `--no-save` 表示这次安装只用于临时联调
69
+ - 这样可以尽量避免把本地路径依赖长期写进项目配置
70
+ - 路径请按你的本地实际目录调整
71
+
72
+ 如果业务项目还没有安装图表运行依赖,需要补齐:
73
+
74
+ ```bash
75
+ npm install echarts
76
+ ```
77
+
78
+ 如果这次要验证 3D 饼图,再额外安装:
79
+
80
+ ```bash
81
+ npm install echarts-gl
82
+ ```
83
+
84
+ ## 5. 联调时如何使用
85
+
86
+ 业务项目里按正常方式引用即可,例如:
87
+
88
+ ```js
89
+ import DataUI from '@xq-labs/data-ui-v2'
90
+ ```
91
+
92
+ 或按需引入:
93
+
94
+ ```js
95
+ import { BarLineChart, PieChart } from '@xq-labs/data-ui-v2'
96
+ ```
97
+
98
+ 如果业务项目没有自动带上样式,可补充:
99
+
100
+ ```js
101
+ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
102
+ ```
103
+
104
+ ## 6. 组件库改完后,如何刷新联调结果
105
+
106
+ 如果你在当前仓库又改了代码,需要按下面顺序刷新:
107
+
108
+ 1. 回到组件库仓库重新构建
109
+ 2. 回到业务项目重新安装 `.release/`
110
+ 3. 重新启动业务项目,或至少重启开发服务
111
+
112
+ 命令示例:
113
+
114
+ ```bash
115
+ # 组件库仓库
116
+ npm run build
117
+
118
+ # 业务项目仓库
119
+ npm install ../data-ui-v2/.release --no-save
120
+ ```
121
+
122
+ 如果发现业务项目里还是旧内容,可以再执行一次卸载后重装:
123
+
124
+ ```bash
125
+ npm uninstall @xq-labs/data-ui-v2
126
+ npm install ../data-ui-v2/.release --no-save
127
+ ```
128
+
129
+ ## 7. 联调结束后如何恢复
130
+
131
+ 联调完成后,建议把业务项目恢复成正式依赖来源。
132
+
133
+ 如果原来就是 npm 正式版本,直接重新安装:
134
+
135
+ ```bash
136
+ npm install @xq-labs/data-ui-v2
137
+ ```
138
+
139
+ 恢复后建议顺手检查:
140
+
141
+ - `package.json`
142
+ - `package-lock.json`
143
+
144
+ 确认没有残留本地临时依赖路径。
145
+
146
+ ## 8. 常见问题
147
+
148
+ ### 8.1 为什么不直接安装仓库根目录
149
+
150
+ 因为当前仓库真正用于发布的内容统一归档在 `.release/`。
151
+
152
+ 直接安装根目录时,联调结果不一定等于真实发布结果,容易把源码工作区和发布产物结构混在一起。
153
+
154
+ ### 8.2 为什么我改了组件代码,业务项目没更新
155
+
156
+ 因为业务项目安装的是某一次构建后的产物,不会自动跟随源码变化。
157
+
158
+ 每次改完后,都需要重新执行:
159
+
160
+ ```bash
161
+ npm run build
162
+ npm install ../data-ui-v2/.release --no-save
163
+ ```
164
+
165
+ ### 8.3 为什么这里不推荐 `npm link` 或 `yalc`
166
+
167
+ 这份文档针对的是“一天内的临时联调”。
168
+
169
+ 在这个场景下,直接安装 `.release/`:
170
+
171
+ - 步骤最少
172
+ - 最接近真实发包结果
173
+ - 清理也最简单
174
+
175
+ ## 9. 最短操作路径
176
+
177
+ 如果只是想快速验证一次,直接按下面执行:
178
+
179
+ ```bash
180
+ # 组件库仓库
181
+ npm run build
182
+
183
+ # 业务项目仓库
184
+ npm install ../data-ui-v2/.release --no-save
185
+ ```
186
+
187
+ 联调结束后:
188
+
189
+ ```bash
190
+ npm install @xq-labs/data-ui-v2
191
+ ```
@@ -29,7 +29,8 @@ Playground 中 `PieChart` 采用分组路由组织,按能力查阅:
29
29
  maxHeight,
30
30
  hideZeroValueSlices,
31
31
  labelOptions,
32
- customOption
32
+ customOption,
33
+ stateConfig
33
34
  }"
34
35
  />
35
36
  ```
@@ -44,29 +45,66 @@ Playground 中 `PieChart` 采用分组路由组织,按能力查阅:
44
45
  - `hideZeroValueSlices`:3D 下是否隐藏 0 值扇区。
45
46
  - `labelOptions`:标签与引导线细节(格式、线长、颜色等)。
46
47
  - `customOption`:ECharts 细节覆盖(标题、提示、图例等)。
48
+ - `stateConfig`:统一收拢空态文案、空态图和 loading 文案。
49
+
50
+ 推荐结构:
51
+
52
+ ```js
53
+ const stateConfig = {
54
+ empty: {
55
+ text: '暂无占比数据',
56
+ image: 'https://example.com/pie-empty.png'
57
+ },
58
+ loading: {
59
+ text: '饼图加载中...'
60
+ }
61
+ }
62
+ ```
47
63
 
48
64
  ## 2.1 3D 依赖说明
49
65
 
50
- 3D 饼图需要安装 echarts-gl,依赖包名为 `echarts-gl`。
66
+ 如果业务页面要使用 3D `PieChart`,请先安装 `echarts-gl`,并引入 3D 桥接入口:
51
67
 
52
- 只使用 2D 饼图、环图、玫瑰图时不需要安装 `echarts-gl`。
68
+ ```js
69
+ import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'
70
+ ```
53
71
 
54
- 如果业务侧需要启用 3D 饼图,请额外安装:
72
+ 推荐直接写在**业务页面**顶部。
55
73
 
56
- ```bash
57
- npm install echarts-gl
58
- ```
74
+ 如果项目多个页面都会用到 3D `PieChart`,
75
+ 也可以在应用入口统一引入这个桥接入口。
76
+
77
+ 包内保留 `pie-chart/3d-runtime.js` 物理入口,
78
+ 用于兼容不识别 `package.json#exports` 的老 webpack / Vue CLI 链路。
79
+
80
+ 只使用 2D 饼图、环图、玫瑰图时,不需要引入 `echarts-gl`。
59
81
 
60
82
  ## 3. 如何自定义(推荐顺序)
61
83
 
62
84
  1. **优先公开 props**:先用 `variant`、`dimension`、`preset`、高度参数表达业务语义。
63
85
  2. **其次 `labelOptions`**:标签文案、引导线样式优先在这里完成。
64
- 3. **最后 `customOption`**:仅用于补充 ECharts 展示细节。
86
+ 3. **状态文案统一交给 `stateConfig`**:空态图、空态文案、loading 文案不要分散到多个字段。
87
+ 4. **最后 `customOption`**:仅用于补充 ECharts 展示细节。
65
88
 
66
89
  不建议业务侧直接拼接或重写内部 `series`,避免覆盖组件内置能力与升级兼容性。
67
90
 
91
+ 默认 hover tooltip 已内置为白底阴影卡片,
92
+ 内容为“彩色圆点 + 名称:值”,例如 `● 已完成:140`。
93
+ 如需展示百分比或单位,请通过 `customOption.tooltip.formatter` 覆盖。
94
+
95
+ ## 3.1 3D 运行时失败的空态优先级
96
+
97
+ 当 `dimension="3d"` 且业务还没有先引入 3D 桥接入口时:
98
+
99
+ 1. `PieChart` 会优先显示组件内部错误文案。
100
+ 2. `stateConfig.empty.image` 仍然生效。
101
+ 3. `stateConfig.loading.text` 仍然生效。
102
+
103
+ 也就是说,业务可以继续自定义空态图,但不能覆盖这类
104
+ “请先在业务页面中执行 `import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'`”提示。
105
+
68
106
  ## 4. 可执行验收要点
69
107
 
70
108
  - 页面分组名称与路由一致:基础用法、2D 形态、3D 能力、标签与引导线、customOption 与自定义、实验室。
71
- - 文档示例包含 `hideZeroValueSlices` 与 `customOption`。
72
- - 文档明确实验室边界与推荐自定义顺序。
109
+ - 文档示例包含 `hideZeroValueSlices`、`stateConfig` 与 `customOption`。
110
+ - 文档明确实验室边界与推荐自定义顺序。
@@ -0,0 +1,97 @@
1
+ # RadarChart 示例说明(对齐 Playground Demo 库)
2
+
3
+ ## 1. 路由与分组
4
+
5
+ Playground 中 `RadarChart` 按分组路由组织:
6
+
7
+ - 基础用法:`/radar-chart/basic`
8
+ - customOption 与自定义:`/radar-chart/custom`
9
+ - 实验室:`/radar-chart/lab`
10
+
11
+ > 实验室边界:仅用于调试/验证,不作为推荐业务写法。
12
+
13
+ ## 2. 外部配置怎么传
14
+
15
+ 业务侧通过公开 props(推荐 `v-bind`)传入:
16
+
17
+ ```vue
18
+ <RadarChart
19
+ v-bind="{
20
+ data,
21
+ indicators,
22
+ nameKey,
23
+ variant,
24
+ preset,
25
+ colors,
26
+ customOption,
27
+ stateConfig
28
+ }"
29
+ />
30
+ ```
31
+
32
+ 关键字段:
33
+
34
+ - `data`:雷达图业务数据数组,每一项代表一个系列。
35
+ - `indicators`:雷达指标配置,`key` 用于映射 `data` 中的字段。
36
+ - `nameKey`:系列名称字段,默认 `name`。
37
+ - `variant`:`area` / `line`。
38
+ - `preset`:`compare` / `score`。
39
+ - `colors`:组件级系列色板,按数据顺序分配。
40
+ - `customOption`:ECharts 展示细节覆盖。
41
+ - `stateConfig`:统一收拢空态文案、空态图和 loading 文案。
42
+
43
+ 推荐结构:
44
+
45
+ ```js
46
+ const indicators = [
47
+ { key: 'quality', name: '质量', max: 100 },
48
+ { key: 'efficiency', name: '效率', max: 100 },
49
+ { key: 'cost', name: '成本控制', max: 100 },
50
+ { key: 'risk', name: '风险控制', max: 100 }
51
+ ]
52
+
53
+ const data = [
54
+ {
55
+ name: '本月',
56
+ quality: 86,
57
+ efficiency: 78,
58
+ cost: 92,
59
+ risk: 70
60
+ }
61
+ ]
62
+
63
+ const colors = ['#6B98F8', '#FF8A5B']
64
+ ```
65
+
66
+ ## 3. 颜色配置
67
+
68
+ 颜色优先级:
69
+
70
+ ```text
71
+ data[i].color → colors[index] → DEFAULT_COLORS[index]
72
+ ```
73
+
74
+ 推荐做法:
75
+
76
+ - 页面统一色板用 `colors`。
77
+ - 单个系列需要强调时,用 `data[i].color`。
78
+ - 常规业务不要直接拼 ECharts `series.data.itemStyle`。
79
+ - 完全定制时再使用 `customOption.series`。
80
+
81
+ ## 4. 如何自定义(推荐顺序)
82
+
83
+ 1. **优先 `indicators` 表达指标语义**:先确定指标字段、名称、最大值与最小值。
84
+ 2. **用 `data` 表达业务系列**:每一项代表一个对象,例如本月、上月、目标值。
85
+ 3. **用 `colors` 控制系列色板**:保持页面整体视觉一致。
86
+ 4. **用 `variant` 选择视觉形态**:`area` 更适合画像展示,`line` 更适合减少遮挡。
87
+ 5. **`stateConfig` 收拢状态文案**:空态图、空态文案、loading 文案统一从这里传。
88
+ 6. **`customOption` 补充细节**:用于 title、tooltip、radar、series 等展示项。
89
+
90
+ 不建议业务直接维护 ECharts 原生 `value` 数组,容易和指标顺序错位。
91
+
92
+ ## 5. 可执行验收要点
93
+
94
+ - 页面分组名称与路由一致:基础用法、customOption 与自定义、实验室。
95
+ - 文档示例包含 `indicators`、`colors`、`customOption` 与 `stateConfig`。
96
+ - 文档明确 `data[i].color → colors[index] → DEFAULT_COLORS[index]` 的颜色优先级。
97
+ - 文档明确实验室边界与推荐自定义顺序。
@@ -1,11 +1,11 @@
1
1
  import '../../theme-chalk/index.css';
2
- import { B as BarLineChart } from '../index-6128787e.js';
3
- import { w as withInstall } from '../with-install-befebea5.js';
2
+ import { B as BarLineChart } from '../index-d01ce220.js';
3
+ import { w as withInstall } from '../with-install-e405b463.js';
4
4
  import 'echarts/core';
5
5
  import 'echarts/charts';
6
6
  import 'echarts/components';
7
7
  import 'echarts/renderers';
8
- import '../colors-ca059479.js';
8
+ import '../colors-ec0ad9ce.js';
9
9
 
10
10
  var BarLineChartComponent = withInstall(BarLineChart);
11
11
  var install = BarLineChartComponent.install;
@@ -1,5 +1,5 @@
1
1
  import '../../theme-chalk/index.css';
2
- import { w as withInstall, B as BaseChart } from '../with-install-befebea5.js';
2
+ import { w as withInstall, B as BaseChart } from '../with-install-e405b463.js';
3
3
  import 'echarts/core';
4
4
 
5
5
  var BaseChartComponent = withInstall(BaseChart);
@@ -62,6 +62,15 @@ function _toPropertyKey(t) {
62
62
  var i = _toPrimitive(t, "string");
63
63
  return "symbol" == typeof i ? i : i + "";
64
64
  }
65
+ function _typeof(o) {
66
+ "@babel/helpers - typeof";
67
+
68
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
69
+ return typeof o;
70
+ } : function (o) {
71
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
72
+ }, _typeof(o);
73
+ }
65
74
  function _unsupportedIterableToArray(r, a) {
66
75
  if (r) {
67
76
  if ("string" == typeof r) return _arrayLikeToArray(r, a);
@@ -112,4 +121,4 @@ function mergeChartOption(baseOption, presetOption, customOption) {
112
121
 
113
122
  var DEFAULT_COLORS = ['#8979ff', '#ff928a', '#3cc3df', '#ffae4c', '#5c7cfa', '#5dd39e', '#8064d8', '#26b7d8', '#238ff2', '#f6c93d', '#59c5b5', '#5a7cc4', '#f2953f', '#82c65b', '#cf7a78', '#63c5d2', '#cfb291', '#2fa0bf', '#50a579', '#7869bd'];
114
123
 
115
- export { DEFAULT_COLORS as D, _objectSpread2 as _, _toConsumableArray as a, isEmptyData as i, mergeChartOption as m };
124
+ export { DEFAULT_COLORS as D, _objectSpread2 as _, _toConsumableArray as a, _typeof as b, isEmptyData as i, mergeChartOption as m };