@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
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var colors = require('./colors-
|
|
3
|
+
var colors = require('./colors-19a7242d.js');
|
|
4
4
|
var echarts = require('echarts/core');
|
|
5
5
|
var charts = require('echarts/charts');
|
|
6
6
|
var components = require('echarts/components');
|
|
7
7
|
var renderers = require('echarts/renderers');
|
|
8
|
-
var withInstall = require('./with-install-
|
|
8
|
+
var withInstall = require('./with-install-4304a8ea.js');
|
|
9
9
|
|
|
10
10
|
function _interopNamespaceDefault(e) {
|
|
11
11
|
var n = Object.create(null);
|
|
@@ -90,10 +90,11 @@ var PIE_HEIGHT_MODE = {
|
|
|
90
90
|
VALUE: 'value'
|
|
91
91
|
};
|
|
92
92
|
var DEFAULT_HEIGHT_RANGE = {
|
|
93
|
-
min:
|
|
94
|
-
max:
|
|
93
|
+
min: 10,
|
|
94
|
+
max: 25
|
|
95
95
|
};
|
|
96
|
-
var
|
|
96
|
+
var DEFAULT_3D_VIEW_DISTANCE = 120;
|
|
97
|
+
var DEFAULT_3D_VIEW_ALPHA = 55;
|
|
97
98
|
var DEFAULT_INTERNAL_DIAMETER_RATIO = 0.6;
|
|
98
99
|
var DEFAULT_ROSE_RADIUS_RANGE = [0.75, 1.15];
|
|
99
100
|
var DEFAULT_LABEL_OPTIONS = {
|
|
@@ -111,6 +112,17 @@ var DEFAULT_LABEL_OPTIONS = {
|
|
|
111
112
|
verticalGap: 8,
|
|
112
113
|
radialOffset: 0.12
|
|
113
114
|
};
|
|
115
|
+
var DEFAULT_TOOLTIP_STYLE = {
|
|
116
|
+
backgroundColor: '#fff',
|
|
117
|
+
borderColor: 'transparent',
|
|
118
|
+
borderWidth: 0,
|
|
119
|
+
padding: [8, 12],
|
|
120
|
+
textStyle: {
|
|
121
|
+
color: '#333',
|
|
122
|
+
fontSize: 12
|
|
123
|
+
},
|
|
124
|
+
extraCssText: 'box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); border-radius: 4px;'
|
|
125
|
+
};
|
|
114
126
|
|
|
115
127
|
/**
|
|
116
128
|
* 将输入值转为安全数字。
|
|
@@ -217,6 +229,9 @@ function buildPieChartData(data) {
|
|
|
217
229
|
function replaceLabelTemplate(template, params) {
|
|
218
230
|
return template.replace(/\{b\}/g, params.name).replace(/\{c\}/g, params.value).replace(/\{d\}/g, params.percent);
|
|
219
231
|
}
|
|
232
|
+
function escapeTooltipHtml(value) {
|
|
233
|
+
return String(value).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
234
|
+
}
|
|
220
235
|
function formatPieLabelText(formatter, params) {
|
|
221
236
|
if (typeof formatter === 'function') {
|
|
222
237
|
return formatter(params);
|
|
@@ -226,29 +241,65 @@ function formatPieLabelText(formatter, params) {
|
|
|
226
241
|
}
|
|
227
242
|
return "".concat(params.name, "\n").concat(params.percent, "%");
|
|
228
243
|
}
|
|
244
|
+
function createFallbackTooltipMarker(color) {
|
|
245
|
+
var markerColor = escapeTooltipHtml(color || '#6B98F8');
|
|
246
|
+
return "<span style=\"display:inline-block;margin-right:4px;border-radius:50%;width:10px;height:10px;background-color:".concat(markerColor, ";\"></span>");
|
|
247
|
+
}
|
|
248
|
+
function formatPieTooltipContent(_ref) {
|
|
249
|
+
var marker = _ref.marker,
|
|
250
|
+
name = _ref.name,
|
|
251
|
+
value = _ref.value,
|
|
252
|
+
color = _ref.color;
|
|
253
|
+
var safeMarker = marker || createFallbackTooltipMarker(color);
|
|
254
|
+
return "".concat(safeMarker).concat(escapeTooltipHtml(name), ":").concat(escapeTooltipHtml(value));
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* 创建饼图统一 hover tooltip 样式。
|
|
259
|
+
* 默认呈现为白底阴影卡片,内容为“彩色圆点 + 名称:值”,贴近业务看板常见展示形态。
|
|
260
|
+
*/
|
|
261
|
+
function createPieTooltipOption(formatter) {
|
|
262
|
+
return colors._objectSpread2(colors._objectSpread2({}, DEFAULT_TOOLTIP_STYLE), {}, {
|
|
263
|
+
formatter: formatter
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function formatPie2DTooltip() {
|
|
267
|
+
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
268
|
+
return formatPieTooltipContent({
|
|
269
|
+
marker: params.marker,
|
|
270
|
+
name: params.name === undefined ? '' : params.name,
|
|
271
|
+
value: params.value === undefined ? '' : params.value,
|
|
272
|
+
color: params.color
|
|
273
|
+
});
|
|
274
|
+
}
|
|
229
275
|
|
|
230
276
|
/**
|
|
231
277
|
* 格式化 3D 饼图默认 tooltip 文案。
|
|
232
278
|
* surface 系列 hover 时拿到的 `params.value` 实际是参数方程采样值,
|
|
233
279
|
* 不能直接当业务值展示,因此统一回退到扇区自身的 `pieData`。
|
|
234
280
|
*/
|
|
235
|
-
function
|
|
236
|
-
return
|
|
281
|
+
function formatPie3DTooltip(params, pieData) {
|
|
282
|
+
return formatPieTooltipContent({
|
|
283
|
+
marker: params && params.marker,
|
|
284
|
+
name: pieData && pieData.name !== undefined ? pieData.name : '',
|
|
285
|
+
value: pieData && pieData.value !== undefined ? pieData.value : 0,
|
|
286
|
+
color: pieData && pieData.itemStyle && pieData.itemStyle.color
|
|
287
|
+
});
|
|
237
288
|
}
|
|
238
289
|
|
|
239
290
|
/**
|
|
240
291
|
* 为单个 3D 扇区生成专用 tooltip。
|
|
241
292
|
* 这样即使鼠标落在 surface 网格采样点上,展示的仍然是业务名称、原始值与百分比。
|
|
242
293
|
*/
|
|
243
|
-
function createPie3DTooltip(pieData
|
|
294
|
+
function createPie3DTooltip(pieData) {
|
|
244
295
|
var value = toNumber(pieData && pieData.value, 0);
|
|
245
|
-
var percent = totalValue > 0 ? Number((value / totalValue * 100).toFixed(2)) : 0;
|
|
246
296
|
var name = pieData && pieData.name !== undefined ? pieData.name : '';
|
|
247
|
-
return {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
297
|
+
return createPieTooltipOption(function (params) {
|
|
298
|
+
return formatPie3DTooltip(params, colors._objectSpread2(colors._objectSpread2({}, pieData), {}, {
|
|
299
|
+
name: name,
|
|
300
|
+
value: value
|
|
301
|
+
}));
|
|
302
|
+
});
|
|
252
303
|
}
|
|
253
304
|
function multiplyMat4Vec4(matrix, vector) {
|
|
254
305
|
return [matrix[0] * vector[0] + matrix[4] * vector[1] + matrix[8] * vector[2] + matrix[12] * vector[3], matrix[1] * vector[0] + matrix[5] * vector[1] + matrix[9] * vector[2] + matrix[13] * vector[3], matrix[2] * vector[0] + matrix[6] * vector[1] + matrix[10] * vector[2] + matrix[14] * vector[3], matrix[3] * vector[0] + matrix[7] * vector[1] + matrix[11] * vector[2] + matrix[15] * vector[3]];
|
|
@@ -457,11 +508,9 @@ function createHeightValues(values, mode, minHeight, maxHeight) {
|
|
|
457
508
|
}
|
|
458
509
|
return mapValueToRange(values, safeMinHeight, safeMaxHeight);
|
|
459
510
|
}
|
|
460
|
-
function
|
|
461
|
-
var baseDistance = showLabelLine ? 175 : 180;
|
|
462
|
-
var extraDistance = Math.max(0, maxHeight - 200) * 0.18;
|
|
511
|
+
function createDefaultViewControl() {
|
|
463
512
|
return {
|
|
464
|
-
distance:
|
|
513
|
+
distance: DEFAULT_3D_VIEW_DISTANCE,
|
|
465
514
|
alpha: DEFAULT_3D_VIEW_ALPHA
|
|
466
515
|
};
|
|
467
516
|
}
|
|
@@ -598,9 +647,6 @@ function buildPie3DSeries(pieData) {
|
|
|
598
647
|
var valueList = renderPieData.map(function (item) {
|
|
599
648
|
return Math.max(0, toNumber(item.value, 0));
|
|
600
649
|
});
|
|
601
|
-
var totalValue = valueList.reduce(function (sum, value) {
|
|
602
|
-
return sum + value;
|
|
603
|
-
}, 0);
|
|
604
650
|
var angleValueList = getAngleValueList(valueList);
|
|
605
651
|
var totalAngleValue = angleValueList.reduce(function (sum, value) {
|
|
606
652
|
return sum + value;
|
|
@@ -634,7 +680,7 @@ function buildPie3DSeries(pieData) {
|
|
|
634
680
|
selected: false,
|
|
635
681
|
hovered: false
|
|
636
682
|
},
|
|
637
|
-
tooltip: createPie3DTooltip(item
|
|
683
|
+
tooltip: createPie3DTooltip(item),
|
|
638
684
|
itemStyle: colors._objectSpread2({}, item.itemStyle),
|
|
639
685
|
parametricEquation: getParametricEquation(startRatio, endRatio, false, false, geometry)
|
|
640
686
|
};
|
|
@@ -729,7 +775,7 @@ function createPie3DOption(input, variant) {
|
|
|
729
775
|
hideZeroValueSlices: input.hideZeroValueSlices !== false
|
|
730
776
|
};
|
|
731
777
|
var pie3D = buildPie3DSeries(data, chartConfig);
|
|
732
|
-
var viewControl =
|
|
778
|
+
var viewControl = createDefaultViewControl();
|
|
733
779
|
return {
|
|
734
780
|
xAxis3D: {
|
|
735
781
|
min: -pie3D.axisLimit,
|
|
@@ -916,10 +962,9 @@ function buildPieOption() {
|
|
|
916
962
|
});
|
|
917
963
|
var baseOption = {
|
|
918
964
|
color: colors.DEFAULT_COLORS,
|
|
919
|
-
tooltip: {
|
|
920
|
-
trigger: 'item'
|
|
921
|
-
|
|
922
|
-
},
|
|
965
|
+
tooltip: colors._objectSpread2({
|
|
966
|
+
trigger: 'item'
|
|
967
|
+
}, createPieTooltipOption(formatPie2DTooltip)),
|
|
923
968
|
legend: {
|
|
924
969
|
data: normalizedData.map(function (item) {
|
|
925
970
|
return item.name;
|
|
@@ -948,33 +993,26 @@ function buildPieOption() {
|
|
|
948
993
|
return colors.mergeChartOption(colors.mergeChartOption(baseOption, presetOption, variantOption), customOption);
|
|
949
994
|
}
|
|
950
995
|
|
|
951
|
-
var
|
|
952
|
-
var
|
|
953
|
-
var
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
return runtimeError;
|
|
958
|
-
};
|
|
959
|
-
var importRuntime = function importRuntime() {
|
|
960
|
-
var dynamicImport = new Function('packageName', 'return import(packageName)');
|
|
961
|
-
return dynamicImport(ECHARTS_GL_PACKAGE_NAME);
|
|
996
|
+
var SURFACE_SERIES_TYPE = 'series.surface';
|
|
997
|
+
var MISSING_RUNTIME_MESSAGE = "使用 PieChart 3D 能力前,请先在业务页面中执行 import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'。";
|
|
998
|
+
var hasSurfaceSeriesRuntime = function hasSurfaceSeriesRuntime() {
|
|
999
|
+
return echarts.SeriesModel && (typeof echarts.SeriesModel.getClass === 'function' && !!echarts.SeriesModel.getClass('series', 'surface') || typeof echarts.SeriesModel.getClassesByMainType === 'function' && echarts.SeriesModel.getClassesByMainType('series').some(function (seriesClass) {
|
|
1000
|
+
return seriesClass && seriesClass.type === SURFACE_SERIES_TYPE;
|
|
1001
|
+
}));
|
|
962
1002
|
};
|
|
963
1003
|
|
|
964
1004
|
/**
|
|
965
|
-
*
|
|
1005
|
+
* 检测 PieChart 3D 运行时是否已经由业务项目接入。
|
|
966
1006
|
*
|
|
967
|
-
*
|
|
968
|
-
*
|
|
1007
|
+
* 方案 B 修订版下,组件库不再负责动态加载 `echarts-gl`,
|
|
1008
|
+
* 而是要求业务项目在使用 3D PieChart 的页面中显式执行桥接入口:
|
|
1009
|
+
* `import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'`
|
|
969
1010
|
*/
|
|
970
1011
|
function ensureEchartsGlRuntime() {
|
|
971
|
-
if (
|
|
972
|
-
|
|
973
|
-
runtimePromise = null;
|
|
974
|
-
throw createMissingRuntimeError(error);
|
|
975
|
-
});
|
|
1012
|
+
if (hasSurfaceSeriesRuntime()) {
|
|
1013
|
+
return Promise.resolve();
|
|
976
1014
|
}
|
|
977
|
-
return
|
|
1015
|
+
return Promise.reject(new Error(MISSING_RUNTIME_MESSAGE));
|
|
978
1016
|
}
|
|
979
1017
|
|
|
980
1018
|
echarts__namespace.use([charts.PieChart, components.TooltipComponent, components.LegendComponent, components.GridComponent, components.TitleComponent, components.GraphicComponent, renderers.CanvasRenderer]);
|
|
@@ -1049,7 +1087,7 @@ var script = {
|
|
|
1049
1087
|
*/
|
|
1050
1088
|
minHeight: {
|
|
1051
1089
|
type: Number,
|
|
1052
|
-
"default":
|
|
1090
|
+
"default": 10
|
|
1053
1091
|
},
|
|
1054
1092
|
/**
|
|
1055
1093
|
* 3D 模式下的最大扇区高度。
|
|
@@ -1057,7 +1095,7 @@ var script = {
|
|
|
1057
1095
|
*/
|
|
1058
1096
|
maxHeight: {
|
|
1059
1097
|
type: Number,
|
|
1060
|
-
"default":
|
|
1098
|
+
"default": 25
|
|
1061
1099
|
},
|
|
1062
1100
|
/**
|
|
1063
1101
|
* 环图内径比例。
|
|
@@ -1117,12 +1155,22 @@ var script = {
|
|
|
1117
1155
|
},
|
|
1118
1156
|
/**
|
|
1119
1157
|
* 图表 loading 状态。
|
|
1120
|
-
* 由底层 BaseChart
|
|
1158
|
+
* 由底层 BaseChart 统一负责组件层遮罩式 loading UI。
|
|
1121
1159
|
*/
|
|
1122
1160
|
loading: {
|
|
1123
1161
|
type: Boolean,
|
|
1124
1162
|
"default": false
|
|
1125
1163
|
},
|
|
1164
|
+
/**
|
|
1165
|
+
* 统一状态展示配置。
|
|
1166
|
+
* 负责收拢空态文案、空态图片与 loading 文案。
|
|
1167
|
+
*/
|
|
1168
|
+
stateConfig: {
|
|
1169
|
+
type: Object,
|
|
1170
|
+
"default": function _default() {
|
|
1171
|
+
return {};
|
|
1172
|
+
}
|
|
1173
|
+
},
|
|
1126
1174
|
/**
|
|
1127
1175
|
* 图表容器高度。
|
|
1128
1176
|
* 支持数字(按 px 处理)或原样透传的字符串高度值。
|
|
@@ -1150,13 +1198,13 @@ var script = {
|
|
|
1150
1198
|
},
|
|
1151
1199
|
/**
|
|
1152
1200
|
* 判断当前是否进入 3D 饼图能力。
|
|
1153
|
-
* 只有 3D
|
|
1201
|
+
* 只有 3D 才需要 echarts-gl 桥接入口,2D 场景不应触发任何 3D 运行时依赖。
|
|
1154
1202
|
*/
|
|
1155
1203
|
is3D: function is3D() {
|
|
1156
1204
|
return this.dimension === '3d';
|
|
1157
1205
|
},
|
|
1158
1206
|
/**
|
|
1159
|
-
* 标识 echarts-gl
|
|
1207
|
+
* 标识 echarts-gl 运行时是否已经注册完成。
|
|
1160
1208
|
* 3D option 只有在运行时就绪后才会生成 surface 序列。
|
|
1161
1209
|
*/
|
|
1162
1210
|
isEchartsGlReady: function isEchartsGlReady() {
|
|
@@ -1164,27 +1212,38 @@ var script = {
|
|
|
1164
1212
|
},
|
|
1165
1213
|
/**
|
|
1166
1214
|
* 汇总外部 loading 与 3D 运行时加载状态。
|
|
1167
|
-
* 这样 3D
|
|
1215
|
+
* 这样 3D 首次检测运行时期间,底层 BaseChart 能保持 loading 态。
|
|
1168
1216
|
*/
|
|
1169
1217
|
chartLoading: function chartLoading() {
|
|
1170
1218
|
return this.loading || this.is3D && this.echartsGlStatus === 'loading';
|
|
1171
1219
|
},
|
|
1172
1220
|
/**
|
|
1173
1221
|
* 汇总数据空态与 3D 运行时失败状态。
|
|
1174
|
-
* 缺少
|
|
1222
|
+
* 缺少 3D 桥接运行时时不让 BaseChart 继续渲染空 surface option。
|
|
1175
1223
|
*/
|
|
1176
1224
|
chartEmpty: function chartEmpty() {
|
|
1177
1225
|
return this.isEmpty || this.is3D && this.echartsGlStatus === 'failed';
|
|
1178
1226
|
},
|
|
1179
1227
|
/**
|
|
1180
|
-
*
|
|
1181
|
-
* 3D
|
|
1228
|
+
* 统一归一化传给 BaseChart 的状态配置。
|
|
1229
|
+
* 3D 运行时失败时,内部错误文案优先级最高,但仍保留业务自定义图片和 loading 文案。
|
|
1182
1230
|
*/
|
|
1183
|
-
|
|
1231
|
+
resolvedStateConfig: function resolvedStateConfig() {
|
|
1232
|
+
var stateConfig = this.stateConfig || {};
|
|
1233
|
+
var emptyConfig = stateConfig.empty || {};
|
|
1234
|
+
var loadingConfig = stateConfig.loading || {};
|
|
1184
1235
|
if (this.is3D && this.echartsGlStatus === 'failed') {
|
|
1185
|
-
return
|
|
1236
|
+
return {
|
|
1237
|
+
empty: colors._objectSpread2(colors._objectSpread2({}, emptyConfig), {}, {
|
|
1238
|
+
text: this.echartsGlErrorMessage || "使用 PieChart 3D 能力前,请先在业务页面中执行 import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'。"
|
|
1239
|
+
}),
|
|
1240
|
+
loading: colors._objectSpread2({}, loadingConfig)
|
|
1241
|
+
};
|
|
1186
1242
|
}
|
|
1187
|
-
return
|
|
1243
|
+
return {
|
|
1244
|
+
empty: colors._objectSpread2({}, emptyConfig),
|
|
1245
|
+
loading: colors._objectSpread2({}, loadingConfig)
|
|
1246
|
+
};
|
|
1188
1247
|
},
|
|
1189
1248
|
/**
|
|
1190
1249
|
* 将组件公开 props 统一汇总后交给 builder。
|
|
@@ -1216,7 +1275,7 @@ var script = {
|
|
|
1216
1275
|
watch: {
|
|
1217
1276
|
/**
|
|
1218
1277
|
* dimension 是 2D/3D 分发的公开开关。
|
|
1219
|
-
* 只有切到 3D
|
|
1278
|
+
* 只有切到 3D 时才检测 3D 运行时,避免 2D 使用方被迫安装 3D 运行时。
|
|
1220
1279
|
*/
|
|
1221
1280
|
dimension: {
|
|
1222
1281
|
immediate: true,
|
|
@@ -1248,7 +1307,7 @@ var script = {
|
|
|
1248
1307
|
this.$emit('ready', chart);
|
|
1249
1308
|
},
|
|
1250
1309
|
/**
|
|
1251
|
-
* 在真正进入 3D
|
|
1310
|
+
* 在真正进入 3D 能力时检测 echarts-gl 桥接入口是否已经注册。
|
|
1252
1311
|
*
|
|
1253
1312
|
* 返回 Promise 是为了让单测和后续业务扩展能准确等待状态变化;
|
|
1254
1313
|
* 2D、已就绪、加载中三种场景会直接返回 resolved Promise。
|
|
@@ -1264,7 +1323,7 @@ var script = {
|
|
|
1264
1323
|
_this.echartsGlStatus = 'ready';
|
|
1265
1324
|
})["catch"](function (error) {
|
|
1266
1325
|
_this.echartsGlStatus = 'failed';
|
|
1267
|
-
_this.echartsGlErrorMessage = error && error.message ? error.message :
|
|
1326
|
+
_this.echartsGlErrorMessage = error && error.message ? error.message : "使用 PieChart 3D 能力前,请先在业务页面中执行 import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'。";
|
|
1268
1327
|
_this.$emit('runtime-error', error);
|
|
1269
1328
|
});
|
|
1270
1329
|
},
|
|
@@ -1302,7 +1361,7 @@ var script = {
|
|
|
1302
1361
|
}
|
|
1303
1362
|
};
|
|
1304
1363
|
|
|
1305
|
-
var css_248z = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
|
|
1364
|
+
var css_248z = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
|
|
1306
1365
|
withInstall.styleInject(css_248z);
|
|
1307
1366
|
|
|
1308
1367
|
/* script */
|
|
@@ -1317,7 +1376,7 @@ var __vue_render__ = function __vue_render__() {
|
|
|
1317
1376
|
option: _vm.chartOption,
|
|
1318
1377
|
loading: _vm.chartLoading,
|
|
1319
1378
|
empty: _vm.chartEmpty,
|
|
1320
|
-
"
|
|
1379
|
+
"state-config": _vm.resolvedStateConfig,
|
|
1321
1380
|
height: _vm.height
|
|
1322
1381
|
},
|
|
1323
1382
|
on: {
|
|
@@ -1334,7 +1393,7 @@ __vue_render__._withStripped = true;
|
|
|
1334
1393
|
/* style */
|
|
1335
1394
|
var __vue_inject_styles__ = undefined;
|
|
1336
1395
|
/* scoped */
|
|
1337
|
-
var __vue_scope_id__ = "data-v-
|
|
1396
|
+
var __vue_scope_id__ = "data-v-7f129cbd";
|
|
1338
1397
|
/* module identifier */
|
|
1339
1398
|
var __vue_module_identifier__ = undefined;
|
|
1340
1399
|
/* functional template */
|
|
@@ -4,8 +4,8 @@ var echarts = require('echarts/core');
|
|
|
4
4
|
var charts = require('echarts/charts');
|
|
5
5
|
var components = require('echarts/components');
|
|
6
6
|
var renderers = require('echarts/renderers');
|
|
7
|
-
var withInstall = require('./with-install-
|
|
8
|
-
var colors = require('./colors-
|
|
7
|
+
var withInstall = require('./with-install-4304a8ea.js');
|
|
8
|
+
var colors = require('./colors-19a7242d.js');
|
|
9
9
|
|
|
10
10
|
function _interopNamespaceDefault(e) {
|
|
11
11
|
var n = Object.create(null);
|
|
@@ -1079,6 +1079,8 @@ function createCylinderBarLineOption(normalizedInput) {
|
|
|
1079
1079
|
}
|
|
1080
1080
|
|
|
1081
1081
|
var DEFAULT_VARIANT = 'flat';
|
|
1082
|
+
var DEFAULT_X_AXIS_SCROLL_VISIBLE_COUNT = 8;
|
|
1083
|
+
var DEFAULT_X_AXIS_SCROLL_GRID_BOTTOM = 56;
|
|
1082
1084
|
var BAR_LINE_PUBLIC_VARIANTS = ['flat', 'cylinder', 'cube'];
|
|
1083
1085
|
|
|
1084
1086
|
// 公开 variant 能力在此处收口:只允许 flat / cylinder / cube。
|
|
@@ -1124,6 +1126,93 @@ function createBaseOption(normalizedInput) {
|
|
|
1124
1126
|
}
|
|
1125
1127
|
};
|
|
1126
1128
|
}
|
|
1129
|
+
function isValidNumber(value) {
|
|
1130
|
+
return Number.isFinite(Number(value));
|
|
1131
|
+
}
|
|
1132
|
+
function normalizePositiveInteger(value, fallback) {
|
|
1133
|
+
var normalizedValue = Number(value);
|
|
1134
|
+
if (!Number.isFinite(normalizedValue) || normalizedValue <= 0) {
|
|
1135
|
+
return fallback;
|
|
1136
|
+
}
|
|
1137
|
+
return Math.floor(normalizedValue);
|
|
1138
|
+
}
|
|
1139
|
+
function normalizeStartIndex(startIndex) {
|
|
1140
|
+
if (!isValidNumber(startIndex)) {
|
|
1141
|
+
return null;
|
|
1142
|
+
}
|
|
1143
|
+
var normalizedStartIndex = Math.floor(Number(startIndex));
|
|
1144
|
+
return normalizedStartIndex >= 0 ? normalizedStartIndex : null;
|
|
1145
|
+
}
|
|
1146
|
+
function toPercent(value, total) {
|
|
1147
|
+
return Number((value / total * 100).toFixed(2));
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
/**
|
|
1151
|
+
* 归一化横轴滚动配置。
|
|
1152
|
+
* 该配置只服务 X 轴类目过多的场景,不扩展 Y 轴滚动,避免 API 语义变复杂。
|
|
1153
|
+
*/
|
|
1154
|
+
function normalizeXAxisScrollConfig() {
|
|
1155
|
+
var xAxisScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1156
|
+
var scrollConfig = xAxisScroll && colors._typeof(xAxisScroll) === 'object' ? xAxisScroll : {};
|
|
1157
|
+
return {
|
|
1158
|
+
enabled: scrollConfig.enabled === true,
|
|
1159
|
+
visibleCount: normalizePositiveInteger(scrollConfig.visibleCount, DEFAULT_X_AXIS_SCROLL_VISIBLE_COUNT),
|
|
1160
|
+
startPosition: scrollConfig.startPosition === 'start' ? 'start' : 'end',
|
|
1161
|
+
startIndex: normalizeStartIndex(scrollConfig.startIndex),
|
|
1162
|
+
showSlider: scrollConfig.showSlider !== false,
|
|
1163
|
+
inside: scrollConfig.inside !== false
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
/**
|
|
1168
|
+
* 根据横轴类目数量生成 ECharts dataZoom。
|
|
1169
|
+
* 默认从末尾向前取 `visibleCount` 个类目,满足“最新数据优先展示”的看板诉求。
|
|
1170
|
+
*/
|
|
1171
|
+
function createXAxisScrollOption() {
|
|
1172
|
+
var categories = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
1173
|
+
var xAxisScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1174
|
+
var scrollConfig = normalizeXAxisScrollConfig(xAxisScroll);
|
|
1175
|
+
var totalCount = Array.isArray(categories) ? categories.length : 0;
|
|
1176
|
+
if (!scrollConfig.enabled || totalCount <= scrollConfig.visibleCount) {
|
|
1177
|
+
return {};
|
|
1178
|
+
}
|
|
1179
|
+
var windowSize = Math.min(scrollConfig.visibleCount, totalCount);
|
|
1180
|
+
var maxStartIndex = totalCount - windowSize;
|
|
1181
|
+
var resolvedStartIndex = scrollConfig.startIndex !== null ? Math.min(scrollConfig.startIndex, maxStartIndex) : scrollConfig.startPosition === 'start' ? 0 : maxStartIndex;
|
|
1182
|
+
var start = toPercent(resolvedStartIndex, totalCount);
|
|
1183
|
+
var end = toPercent(resolvedStartIndex + windowSize, totalCount);
|
|
1184
|
+
var dataZoom = [];
|
|
1185
|
+
if (scrollConfig.showSlider) {
|
|
1186
|
+
dataZoom.push({
|
|
1187
|
+
type: 'slider',
|
|
1188
|
+
xAxisIndex: 0,
|
|
1189
|
+
start: start,
|
|
1190
|
+
end: end,
|
|
1191
|
+
height: 14,
|
|
1192
|
+
bottom: 8,
|
|
1193
|
+
brushSelect: false
|
|
1194
|
+
});
|
|
1195
|
+
}
|
|
1196
|
+
if (scrollConfig.inside) {
|
|
1197
|
+
dataZoom.push({
|
|
1198
|
+
type: 'inside',
|
|
1199
|
+
xAxisIndex: 0,
|
|
1200
|
+
start: start,
|
|
1201
|
+
end: end,
|
|
1202
|
+
zoomLock: true
|
|
1203
|
+
});
|
|
1204
|
+
}
|
|
1205
|
+
if (dataZoom.length === 0) {
|
|
1206
|
+
return {};
|
|
1207
|
+
}
|
|
1208
|
+
return colors._objectSpread2(colors._objectSpread2({}, scrollConfig.showSlider ? {
|
|
1209
|
+
grid: {
|
|
1210
|
+
bottom: DEFAULT_X_AXIS_SCROLL_GRID_BOTTOM
|
|
1211
|
+
}
|
|
1212
|
+
} : {}), {}, {
|
|
1213
|
+
dataZoom: dataZoom
|
|
1214
|
+
});
|
|
1215
|
+
}
|
|
1127
1216
|
|
|
1128
1217
|
/**
|
|
1129
1218
|
* 构建 `BarLineChart` 最终 option。
|
|
@@ -1131,7 +1220,8 @@ function createBaseOption(normalizedInput) {
|
|
|
1131
1220
|
* 1. 输入归一化
|
|
1132
1221
|
* 2. preset 合并
|
|
1133
1222
|
* 3. 变体分发
|
|
1134
|
-
* 4.
|
|
1223
|
+
* 4. X 轴滚动配置合并
|
|
1224
|
+
* 5. customOption 覆盖
|
|
1135
1225
|
*/
|
|
1136
1226
|
function buildBarLineOption() {
|
|
1137
1227
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
@@ -1144,6 +1234,7 @@ function buildBarLineOption() {
|
|
|
1144
1234
|
variant = _ref$variant === void 0 ? 'flat' : _ref$variant,
|
|
1145
1235
|
barWidth = _ref.barWidth,
|
|
1146
1236
|
barGap = _ref.barGap,
|
|
1237
|
+
xAxisScroll = _ref.xAxisScroll,
|
|
1147
1238
|
customOption = _ref.customOption;
|
|
1148
1239
|
var normalizedInput = normalizeBarLineInput({
|
|
1149
1240
|
data: data,
|
|
@@ -1159,7 +1250,8 @@ function buildBarLineOption() {
|
|
|
1159
1250
|
barWidth: barWidth,
|
|
1160
1251
|
barGap: barGap
|
|
1161
1252
|
}));
|
|
1162
|
-
|
|
1253
|
+
var xAxisScrollOption = createXAxisScrollOption(normalizedInput.categories, xAxisScroll);
|
|
1254
|
+
return colors.mergeChartOption(colors.mergeChartOption(colors.mergeChartOption(baseOption, presetOption, variantOption), xAxisScrollOption), customOption);
|
|
1163
1255
|
}
|
|
1164
1256
|
|
|
1165
1257
|
//
|
|
@@ -1173,6 +1265,7 @@ function buildBarLineOption() {
|
|
|
1173
1265
|
//
|
|
1174
1266
|
//
|
|
1175
1267
|
//
|
|
1268
|
+
//
|
|
1176
1269
|
|
|
1177
1270
|
|
|
1178
1271
|
/**
|
|
@@ -1180,7 +1273,7 @@ function buildBarLineOption() {
|
|
|
1180
1273
|
* 这里显式注册柱图、折线图、自定义系列以及笛卡尔坐标系常用组件,
|
|
1181
1274
|
* 否则运行时虽然能生成 option,但对应主类型不会真正参与渲染。
|
|
1182
1275
|
*/
|
|
1183
|
-
echarts__namespace.use([charts.BarChart, charts.LineChart, charts.CustomChart, components.TooltipComponent, components.LegendComponent, components.GridComponent, components.TitleComponent, renderers.CanvasRenderer]);
|
|
1276
|
+
echarts__namespace.use([charts.BarChart, charts.LineChart, charts.CustomChart, components.TooltipComponent, components.LegendComponent, components.GridComponent, components.TitleComponent, components.DataZoomComponent, renderers.CanvasRenderer]);
|
|
1184
1277
|
var script = {
|
|
1185
1278
|
name: 'BarLineChart',
|
|
1186
1279
|
components: {
|
|
@@ -1267,14 +1360,40 @@ var script = {
|
|
|
1267
1360
|
return {};
|
|
1268
1361
|
}
|
|
1269
1362
|
},
|
|
1363
|
+
/**
|
|
1364
|
+
* X 轴类目滚动配置。
|
|
1365
|
+
* 仅控制横轴,不扩展 Y 轴;适合月份、日期、地区等类目数量较多的看板场景。
|
|
1366
|
+
* 常用字段:
|
|
1367
|
+
* - enabled: 是否开启 X 轴滚动
|
|
1368
|
+
* - visibleCount: 初始窗口内展示的类目数量,默认按 8 个处理
|
|
1369
|
+
* - startPosition: 初始窗口位置,默认 end,即展示最新一段数据
|
|
1370
|
+
* - startIndex: 指定窗口起始索引;传入合法数字时优先级高于 startPosition
|
|
1371
|
+
* - showSlider / inside: 分别控制底部滚动条与图表内部滚轮/触控滚动
|
|
1372
|
+
*/
|
|
1373
|
+
xAxisScroll: {
|
|
1374
|
+
type: Object,
|
|
1375
|
+
"default": function _default() {
|
|
1376
|
+
return {};
|
|
1377
|
+
}
|
|
1378
|
+
},
|
|
1270
1379
|
/**
|
|
1271
1380
|
* 图表 loading 状态。
|
|
1272
|
-
* 由 BaseChart
|
|
1381
|
+
* 由 BaseChart 统一接管组件层遮罩式 loading UI。
|
|
1273
1382
|
*/
|
|
1274
1383
|
loading: {
|
|
1275
1384
|
type: Boolean,
|
|
1276
1385
|
"default": false
|
|
1277
1386
|
},
|
|
1387
|
+
/**
|
|
1388
|
+
* 统一状态展示配置。
|
|
1389
|
+
* 组件层只负责原样透传给 BaseChart,不参与文案计算。
|
|
1390
|
+
*/
|
|
1391
|
+
stateConfig: {
|
|
1392
|
+
type: Object,
|
|
1393
|
+
"default": function _default() {
|
|
1394
|
+
return {};
|
|
1395
|
+
}
|
|
1396
|
+
},
|
|
1278
1397
|
/**
|
|
1279
1398
|
* 图表容器高度。
|
|
1280
1399
|
* 支持数字像素值或原样透传的 CSS 高度字符串。
|
|
@@ -1305,13 +1424,14 @@ var script = {
|
|
|
1305
1424
|
preset: this.preset,
|
|
1306
1425
|
barWidth: this.barWidth,
|
|
1307
1426
|
barGap: this.barGap,
|
|
1427
|
+
xAxisScroll: this.xAxisScroll,
|
|
1308
1428
|
customOption: this.customOption
|
|
1309
1429
|
});
|
|
1310
1430
|
}
|
|
1311
1431
|
}
|
|
1312
1432
|
};
|
|
1313
1433
|
|
|
1314
|
-
var css_248z = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
|
|
1434
|
+
var css_248z = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
|
|
1315
1435
|
withInstall.styleInject(css_248z);
|
|
1316
1436
|
|
|
1317
1437
|
/* script */
|
|
@@ -1326,6 +1446,7 @@ var __vue_render__ = function __vue_render__() {
|
|
|
1326
1446
|
option: _vm.chartOption,
|
|
1327
1447
|
loading: _vm.loading,
|
|
1328
1448
|
empty: _vm.isEmpty,
|
|
1449
|
+
"state-config": _vm.stateConfig,
|
|
1329
1450
|
height: _vm.height
|
|
1330
1451
|
},
|
|
1331
1452
|
on: {
|
|
@@ -1344,7 +1465,7 @@ __vue_render__._withStripped = true;
|
|
|
1344
1465
|
/* style */
|
|
1345
1466
|
var __vue_inject_styles__ = undefined;
|
|
1346
1467
|
/* scoped */
|
|
1347
|
-
var __vue_scope_id__ = "data-v-
|
|
1468
|
+
var __vue_scope_id__ = "data-v-0c9a6292";
|
|
1348
1469
|
/* module identifier */
|
|
1349
1470
|
var __vue_module_identifier__ = undefined;
|
|
1350
1471
|
/* functional template */
|
package/lib/index.js
CHANGED
|
@@ -3,19 +3,21 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
require('../theme-chalk/index.css');
|
|
6
|
-
var withInstall = require('./with-install-
|
|
7
|
-
var index$1 = require('./index-
|
|
8
|
-
var index$2 = require('./index-
|
|
6
|
+
var withInstall = require('./with-install-4304a8ea.js');
|
|
7
|
+
var index$1 = require('./index-cc49894a.js');
|
|
8
|
+
var index$2 = require('./index-a0ecafa1.js');
|
|
9
|
+
var index$3 = require('./index-6039f724.js');
|
|
9
10
|
require('echarts/core');
|
|
10
11
|
require('echarts/charts');
|
|
11
12
|
require('echarts/components');
|
|
12
13
|
require('echarts/renderers');
|
|
13
|
-
require('./colors-
|
|
14
|
+
require('./colors-19a7242d.js');
|
|
14
15
|
|
|
15
16
|
withInstall.withInstall(withInstall.BaseChart);
|
|
16
17
|
withInstall.withInstall(index$1.BarLineChart);
|
|
17
18
|
withInstall.withInstall(index$2.PieChart);
|
|
18
|
-
|
|
19
|
+
withInstall.withInstall(index$3.RadarChart);
|
|
20
|
+
var components = [withInstall.BaseChart, index$1.BarLineChart, index$2.PieChart, index$3.RadarChart];
|
|
19
21
|
|
|
20
22
|
// 发布根入口复用组件清单,确保与 src/index.js 行为一致。
|
|
21
23
|
var install = function install(Vue) {
|
|
@@ -30,5 +32,6 @@ var index = {
|
|
|
30
32
|
exports.BaseChart = withInstall.BaseChart;
|
|
31
33
|
exports.BarLineChart = index$1.BarLineChart;
|
|
32
34
|
exports.PieChart = index$2.PieChart;
|
|
35
|
+
exports.RadarChart = index$3.RadarChart;
|
|
33
36
|
exports.default = index;
|
|
34
37
|
exports.install = install;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var echarts = require('echarts/core');
|
|
4
|
+
var charts = require('echarts-gl/charts');
|
|
5
|
+
var components = require('echarts-gl/components');
|
|
6
|
+
|
|
7
|
+
function _interopNamespaceDefault(e) {
|
|
8
|
+
var n = Object.create(null);
|
|
9
|
+
if (e) {
|
|
10
|
+
Object.keys(e).forEach(function (k) {
|
|
11
|
+
if (k !== 'default') {
|
|
12
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
13
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return e[k]; }
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
n.default = e;
|
|
21
|
+
return Object.freeze(n);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var echarts__namespace = /*#__PURE__*/_interopNamespaceDefault(echarts);
|
|
25
|
+
|
|
26
|
+
// PieChart 3D 只需要 surface 序列与 grid3D 坐标系,显式注册到组件库同一个 echarts/core 实例。
|
|
27
|
+
echarts__namespace.use([charts.SurfaceChart, components.Grid3DComponent]);
|