@platox/pivot-table 0.0.93 → 0.0.95
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/es/dashboard-workbench/components/InputWrapper/index.js.map +1 -1
- package/es/dashboard-workbench/components/SelectWrapper/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-btn/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/custome-data.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/index.js +20 -2
- package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/CombinationChartOptionPicker.js +0 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/CombinationChartOptionPicker.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/GroupFieldConfigPicker.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/config.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-data.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-styles.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/index.js +31 -2
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/interface.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-data.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-styles.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/index.js +27 -2
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/EnumSelect.js +2 -2
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/EnumSelect.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/config.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/select-color/index.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/ConditionRowItem.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.js +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/FieldPicker.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/index.js +1 -2
- package/es/dashboard-workbench/components/global-filter-condition/index.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/useContext.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/util.js.map +1 -1
- package/es/dashboard-workbench/components/modal-editor-header/index.js.map +1 -1
- package/es/dashboard-workbench/components/modal-editor-header/index.module.less.js +3 -3
- package/es/dashboard-workbench/components/module-content/calendar-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/calendar-module/locales/zh.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/Empty.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/base-chart/index.js +27 -1
- package/es/dashboard-workbench/components/module-content/chart-module/base-chart/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/index.js +90 -39
- package/es/dashboard-workbench/components/module-content/chart-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/utils.d.ts +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/utils.js +153 -35
- package/es/dashboard-workbench/components/module-content/chart-module/utils.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/statistics-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/statistics-module/utils.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/text-module/editor/index.js +1 -1
- package/es/dashboard-workbench/components/module-content/text-module/editor/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/text-module/editor/useDebounce.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/text-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/utils.js.map +1 -1
- package/es/dashboard-workbench/components/module-header/index.js.map +1 -1
- package/es/dashboard-workbench/context.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-Filter.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-bar-percentage.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-bar-pile.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-bar.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-calendar.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-chart-combination.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-drag.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-editor.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-empty.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-line-smooth.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-line.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-move.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-pie-circular.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-pie.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-statistics.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-strip-bar-percentage.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-strip-bar-pile.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-strip-bar.js.map +1 -1
- package/es/dashboard-workbench/index.js +215 -43
- package/es/dashboard-workbench/index.js.map +1 -1
- package/es/dashboard-workbench/lang/en-US.d.ts +7 -0
- package/es/dashboard-workbench/lang/en-US.js +9 -2
- package/es/dashboard-workbench/lang/en-US.js.map +1 -1
- package/es/dashboard-workbench/lang/index.js.map +1 -1
- package/es/dashboard-workbench/lang/zh-CN.d.ts +7 -0
- package/es/dashboard-workbench/lang/zh-CN.js +9 -2
- package/es/dashboard-workbench/lang/zh-CN.js.map +1 -1
- package/es/dashboard-workbench/utils/index.js +2 -2
- package/es/dashboard-workbench/utils/index.js.map +1 -1
- package/es/style.css +1 -1
- package/package.json +2 -2
- package/umd/pivot-table.umd.cjs +49 -47
- package/umd/style.css +1 -1
|
@@ -108,7 +108,7 @@ const ChartModule = ({
|
|
|
108
108
|
const chartOptions = useMemo(() => {
|
|
109
109
|
if (customData && chartData && customData.type && chartData.length > 0) {
|
|
110
110
|
const getChartOptions = (_chartData) => {
|
|
111
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
111
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
112
112
|
const getFieldVal = ({
|
|
113
113
|
item,
|
|
114
114
|
field,
|
|
@@ -119,7 +119,8 @@ const ChartModule = ({
|
|
|
119
119
|
val: item[field],
|
|
120
120
|
field,
|
|
121
121
|
fieldMap: globalData == null ? void 0 : globalData.fieldMap,
|
|
122
|
-
timeGroupInterval
|
|
122
|
+
timeGroupInterval,
|
|
123
|
+
showNill: false
|
|
123
124
|
});
|
|
124
125
|
};
|
|
125
126
|
const getFieldLabel = (field) => {
|
|
@@ -140,7 +141,7 @@ const ChartModule = ({
|
|
|
140
141
|
field: newXAxisField,
|
|
141
142
|
timeGroupInterval: customData == null ? void 0 : customData.timeGroupInterval
|
|
142
143
|
});
|
|
143
|
-
return category;
|
|
144
|
+
return category ?? "Unknown";
|
|
144
145
|
});
|
|
145
146
|
let chartData2 = Object.keys(groupData).map((key) => {
|
|
146
147
|
let groupList = groupData[key];
|
|
@@ -166,10 +167,9 @@ const ChartModule = ({
|
|
|
166
167
|
item,
|
|
167
168
|
field: newXAxisField,
|
|
168
169
|
timeGroupInterval: customData == null ? void 0 : customData.timeGroupInterval
|
|
169
|
-
});
|
|
170
|
+
}) ?? "Unknown";
|
|
170
171
|
const val = customData.yAxis === "recordTotal" ? item == null ? void 0 : item.count : item[customData == null ? void 0 : customData.yAxisFieldType] || 0;
|
|
171
|
-
|
|
172
|
-
valueCounts[key] = val;
|
|
172
|
+
valueCounts[category] = val;
|
|
173
173
|
});
|
|
174
174
|
if ((customData == null ? void 0 : customData.isGroup) && (customData == null ? void 0 : customData.groupField)) {
|
|
175
175
|
_chartData.forEach((item) => {
|
|
@@ -177,16 +177,15 @@ const ChartModule = ({
|
|
|
177
177
|
item,
|
|
178
178
|
field: newXAxisField,
|
|
179
179
|
timeGroupInterval: customData == null ? void 0 : customData.timeGroupInterval
|
|
180
|
-
});
|
|
180
|
+
}) ?? "Unknown";
|
|
181
181
|
const val = customData.yAxis === "recordTotal" ? item == null ? void 0 : item.count : item[customData == null ? void 0 : customData.yAxisFieldType] || 0;
|
|
182
182
|
const stackCategory = getFieldVal({
|
|
183
183
|
item,
|
|
184
184
|
field: newGroupField
|
|
185
|
-
});
|
|
186
|
-
const key = category ?? t("unknown");
|
|
185
|
+
}) ?? "Unknown";
|
|
187
186
|
stackCategories.add(stackCategory);
|
|
188
187
|
if (!valueGroups[stackCategory]) valueGroups[stackCategory] = {};
|
|
189
|
-
valueGroups[stackCategory][
|
|
188
|
+
valueGroups[stackCategory][category] = val;
|
|
190
189
|
});
|
|
191
190
|
}
|
|
192
191
|
console.log("test", { groupData, categories, stackCategories, valueGroups, valueCounts });
|
|
@@ -244,7 +243,7 @@ const ChartModule = ({
|
|
|
244
243
|
item,
|
|
245
244
|
field: newXAxisField,
|
|
246
245
|
timeGroupInterval: customData == null ? void 0 : customData.timeGroupInterval
|
|
247
|
-
})
|
|
246
|
+
}) ?? "Unknown"
|
|
248
247
|
);
|
|
249
248
|
categories.clear();
|
|
250
249
|
sortedCategories.forEach((cat) => categories.add(cat));
|
|
@@ -267,9 +266,10 @@ const ChartModule = ({
|
|
|
267
266
|
});
|
|
268
267
|
}
|
|
269
268
|
const formatter = (data) => (customData == null ? void 0 : customData.isGroup) && (customData == null ? void 0 : customData.groupField) ? (data == null ? void 0 : data.value) == 0 ? "" : `${data == null ? void 0 : data.value}` : `${data == null ? void 0 : data.value}`;
|
|
269
|
+
const isStripBar = (_a = customData == null ? void 0 : customData.type) == null ? void 0 : _a.includes("strip-bar");
|
|
270
270
|
const label = {
|
|
271
|
-
show: (
|
|
272
|
-
position: "top",
|
|
271
|
+
show: (_b = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _b.includes("label"),
|
|
272
|
+
position: isStripBar ? "right" : "top",
|
|
273
273
|
formatter
|
|
274
274
|
};
|
|
275
275
|
const labels = Array.from(categories);
|
|
@@ -281,7 +281,7 @@ const ChartModule = ({
|
|
|
281
281
|
});
|
|
282
282
|
const formatValue = (v) => isNumber(v) ? Math.floor(v * 100) / 100 : v;
|
|
283
283
|
if ((customData == null ? void 0 : customData.isGroup) && (customData == null ? void 0 : customData.groupField)) {
|
|
284
|
-
stackLabels.forEach((stackCategory) => {
|
|
284
|
+
stackLabels.forEach((stackCategory, idx) => {
|
|
285
285
|
var _a2, _b2;
|
|
286
286
|
const data = ["chart-bar-percentage", "chart-strip-bar-percentage"].includes(
|
|
287
287
|
customData.type
|
|
@@ -307,7 +307,8 @@ const ChartModule = ({
|
|
|
307
307
|
name: stackCategory,
|
|
308
308
|
isGroup: customData == null ? void 0 : customData.isGroup,
|
|
309
309
|
groupField: customData == null ? void 0 : customData.groupField,
|
|
310
|
-
labels
|
|
310
|
+
labels,
|
|
311
|
+
colorIndex: idx
|
|
311
312
|
});
|
|
312
313
|
seriesItem.yAxisIndex = yAxisPos == "left" ? 0 : 1;
|
|
313
314
|
series.push(seriesItem);
|
|
@@ -322,9 +323,9 @@ const ChartModule = ({
|
|
|
322
323
|
let type = customData.type;
|
|
323
324
|
let yAxisPos = "left";
|
|
324
325
|
if (type == ChartType["chartCombination"]) {
|
|
325
|
-
type = ((
|
|
326
|
+
type = ((_c = customData == null ? void 0 : customData.yAxisFieldConfig) == null ? void 0 : _c.chartType) ?? ChartType["ChartBar"];
|
|
326
327
|
} else {
|
|
327
|
-
yAxisPos = ((
|
|
328
|
+
yAxisPos = ((_d = customData == null ? void 0 : customData.yAxisFieldConfig) == null ? void 0 : _d.yAxisPos) ?? "left";
|
|
328
329
|
}
|
|
329
330
|
let seriesItem = getSerie({
|
|
330
331
|
type,
|
|
@@ -333,27 +334,40 @@ const ChartModule = ({
|
|
|
333
334
|
name: customData.yAxis === "recordTotal" ? t("pb.statisticsText") : getFieldLabel(customData == null ? void 0 : customData.yAxisField),
|
|
334
335
|
isGroup: customData == null ? void 0 : customData.isGroup,
|
|
335
336
|
groupField: customData == null ? void 0 : customData.groupField,
|
|
336
|
-
labels
|
|
337
|
+
labels,
|
|
338
|
+
colorIndex: 0
|
|
337
339
|
});
|
|
338
340
|
seriesItem.yAxisIndex = yAxisPos == "left" ? 0 : 1;
|
|
339
341
|
series.push(seriesItem);
|
|
340
342
|
}
|
|
341
343
|
console.log("series", series, customData);
|
|
342
344
|
const grids = getGrid({ series, chartConfig, width, customeStyle });
|
|
343
|
-
const isShowLegend = (
|
|
345
|
+
const isShowLegend = (_e = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _e.includes("legend");
|
|
346
|
+
const isPieType = (customData == null ? void 0 : customData.type) === "chart-pie" || (customData == null ? void 0 : customData.type) === "chart-pie-circular";
|
|
344
347
|
const isLeftYAxisShow = series.some((item) => (item == null ? void 0 : item.yAxisIndex) == 0);
|
|
345
348
|
const isRightYAxisShow = series.some((item) => (item == null ? void 0 : item.yAxisIndex) == 1);
|
|
346
349
|
const yAxisConfig = {
|
|
347
350
|
...chartConfig.yAxis,
|
|
348
|
-
axisTick: {
|
|
349
|
-
|
|
351
|
+
axisTick: {
|
|
352
|
+
show: (_f = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _f.includes("axis"),
|
|
353
|
+
lineStyle: { color: "#e5e6eb" }
|
|
354
|
+
},
|
|
355
|
+
axisLine: {
|
|
356
|
+
show: (_g = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _g.includes("axis"),
|
|
357
|
+
lineStyle: { color: "#e5e6eb" }
|
|
358
|
+
},
|
|
350
359
|
axisLabel: {
|
|
351
|
-
show: (
|
|
360
|
+
show: (_h = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _h.includes("label"),
|
|
361
|
+
color: "#86909C",
|
|
362
|
+
fontSize: 12,
|
|
352
363
|
formatter: (value) => value.length > 15 ? `${value.slice(0, 15)}...` : value,
|
|
353
364
|
hideOverlap: true,
|
|
354
|
-
...(
|
|
365
|
+
...(_i = chartConfig.yAxis) == null ? void 0 : _i.axisLabel
|
|
355
366
|
},
|
|
356
|
-
splitLine: {
|
|
367
|
+
splitLine: {
|
|
368
|
+
show: (_j = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _j.includes("splitLine"),
|
|
369
|
+
lineStyle: { color: "#f2f3f5", type: "dashed" }
|
|
370
|
+
}
|
|
357
371
|
};
|
|
358
372
|
const options = {
|
|
359
373
|
legend: {
|
|
@@ -362,8 +376,11 @@ const ChartModule = ({
|
|
|
362
376
|
right: "center",
|
|
363
377
|
top: "0",
|
|
364
378
|
show: isShowLegend,
|
|
365
|
-
itemWidth:
|
|
366
|
-
itemHeight:
|
|
379
|
+
itemWidth: 16,
|
|
380
|
+
itemHeight: 8,
|
|
381
|
+
itemGap: 16,
|
|
382
|
+
icon: "roundRect",
|
|
383
|
+
textStyle: { color: "#86909C", fontSize: 12 },
|
|
367
384
|
data: (series == null ? void 0 : series.map((item) => (item == null ? void 0 : item.name) || "")) || []
|
|
368
385
|
},
|
|
369
386
|
grid: grids,
|
|
@@ -375,9 +392,9 @@ const ChartModule = ({
|
|
|
375
392
|
bottom: "10px",
|
|
376
393
|
style: {
|
|
377
394
|
text: (customeStyle == null ? void 0 : customeStyle.xtitle) || "",
|
|
378
|
-
fill: "#
|
|
395
|
+
fill: "#86909C",
|
|
379
396
|
fontSize: 12,
|
|
380
|
-
fontWeight: "
|
|
397
|
+
fontWeight: "normal"
|
|
381
398
|
}
|
|
382
399
|
},
|
|
383
400
|
{
|
|
@@ -386,9 +403,9 @@ const ChartModule = ({
|
|
|
386
403
|
top: "center",
|
|
387
404
|
style: {
|
|
388
405
|
text: (customeStyle == null ? void 0 : customeStyle.ytitle) || "",
|
|
389
|
-
fill: "#
|
|
406
|
+
fill: "#86909C",
|
|
390
407
|
fontSize: 12,
|
|
391
|
-
fontWeight: "
|
|
408
|
+
fontWeight: "normal"
|
|
392
409
|
},
|
|
393
410
|
rotation: Math.PI / 2
|
|
394
411
|
}
|
|
@@ -396,16 +413,27 @@ const ChartModule = ({
|
|
|
396
413
|
},
|
|
397
414
|
xAxis: {
|
|
398
415
|
...chartConfig.xAxis,
|
|
399
|
-
axisTick: {
|
|
400
|
-
|
|
416
|
+
axisTick: {
|
|
417
|
+
show: (_k = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _k.includes("axis"),
|
|
418
|
+
lineStyle: { color: "#e5e6eb" }
|
|
419
|
+
},
|
|
420
|
+
axisLine: {
|
|
421
|
+
show: (_l = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _l.includes("axis"),
|
|
422
|
+
lineStyle: { color: "#e5e6eb" }
|
|
423
|
+
},
|
|
401
424
|
axisLabel: {
|
|
402
|
-
show: (
|
|
425
|
+
show: (_m = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _m.includes("label"),
|
|
403
426
|
rotate: grids.axisLabelRotate,
|
|
404
427
|
interval: "auto",
|
|
428
|
+
color: "#86909C",
|
|
429
|
+
fontSize: 12,
|
|
405
430
|
formatter: (value) => value.length > 15 ? `${value.slice(0, 15)}...` : value,
|
|
406
|
-
...((
|
|
431
|
+
...((_n = chartConfig.xAxis) == null ? void 0 : _n.axisLabel) ?? {}
|
|
407
432
|
},
|
|
408
|
-
splitLine: {
|
|
433
|
+
splitLine: {
|
|
434
|
+
show: (_o = customData == null ? void 0 : customData.chartOptions) == null ? void 0 : _o.includes("splitLine"),
|
|
435
|
+
lineStyle: { color: "#f2f3f5", type: "dashed" }
|
|
436
|
+
}
|
|
409
437
|
},
|
|
410
438
|
yAxis: [
|
|
411
439
|
{ show: isLeftYAxisShow, ...yAxisConfig },
|
|
@@ -413,11 +441,34 @@ const ChartModule = ({
|
|
|
413
441
|
],
|
|
414
442
|
series,
|
|
415
443
|
tooltip: {
|
|
416
|
-
trigger: "item",
|
|
444
|
+
trigger: isPieType ? "item" : "axis",
|
|
445
|
+
enterable: isPieType,
|
|
446
|
+
confine: true,
|
|
417
447
|
axisPointer: { type: "shadow" },
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
448
|
+
backgroundColor: "rgba(255, 255, 255, 0.96)",
|
|
449
|
+
borderColor: "transparent",
|
|
450
|
+
borderRadius: 8,
|
|
451
|
+
textStyle: { color: "#1d2129", fontSize: 13 },
|
|
452
|
+
extraCssText: "max-width:30vw; white-space:pre-wrap; word-break:break-all; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);",
|
|
453
|
+
appendTo: "body",
|
|
454
|
+
...isPieType ? {} : {
|
|
455
|
+
formatter: (params) => {
|
|
456
|
+
var _a2;
|
|
457
|
+
if (!Array.isArray(params)) return "";
|
|
458
|
+
const title = `<div style="margin-bottom:6px;font-weight:500;color:#1d2129">${((_a2 = params[0]) == null ? void 0 : _a2.axisValueLabel) ?? ""}</div>`;
|
|
459
|
+
const items = params.map(
|
|
460
|
+
(p) => {
|
|
461
|
+
var _a3, _b2, _c2;
|
|
462
|
+
return `<div style="display:flex;align-items:center;justify-content:space-between;gap:12px;line-height:22px"><span style="display:inline-flex;align-items:center;gap:6px"><span style="display:inline-block;width:8px;height:8px;border-radius:50%;background:${((_c2 = (_b2 = (_a3 = p.color) == null ? void 0 : _a3.colorStops) == null ? void 0 : _b2[0]) == null ? void 0 : _c2.color) ?? p.color}"></span>${p.seriesName}</span><span style="font-weight:500">${p.value}</span></div>`;
|
|
463
|
+
}
|
|
464
|
+
).join("");
|
|
465
|
+
return title + items;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
animation: true,
|
|
470
|
+
animationDuration: 600,
|
|
471
|
+
animationEasing: "cubicOut"
|
|
421
472
|
};
|
|
422
473
|
return options;
|
|
423
474
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../packages/dashboard-workbench/components/module-content/chart-module/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { message, Spin } from 'antd'\nimport { useDebounceEffect, useMemoizedFn, useSize } from 'ahooks'\nimport { EChartsOption, LabelFormatterCallback } from 'echarts'\nimport { t } from 'i18next'\nimport { groupBy, isNumber } from 'lodash-es'\nimport {\n ChartCustomDataType,\n ChartCustomeStylesTypes,\n TimeGroupInterval,\n} from '@platox/pivot-table/components/add-module-modal/add-chart-modal/interface'\nimport { useAppContext } from '../../../context'\nimport { FieldItem, ModuleDataApi } from '../../../types'\nimport { getTransformValue } from '../../../utils'\nimport { ChartType } from '../../add-module-modal/add-chart-modal/interface'\nimport { ConditionBlock } from '../../add-module-modal/components/condition-modal/interface'\nimport { mapConditionsToPostgrest } from '../utils'\nimport BaseChart from './base-chart'\nimport Empty from './Empty'\nimport { getChartConfig, getGrid, getSerie } from './utils'\n\ninterface ChartModuleProps {\n customData?: ChartCustomDataType\n customeStyle?: ChartCustomeStylesTypes\n onChange?: (val: unknown) => void\n moduleDataApi?: ModuleDataApi\n width?: number\n height?: number\n}\n\nconst ChartModule: React.FC<ChartModuleProps> = ({\n moduleDataApi,\n customData,\n customeStyle,\n width = 2,\n height = 2,\n}) => {\n const { globalData, globalFilterCondition } = useAppContext()\n\n /* ============================== split =============================== */\n let matchGlobalFilterCondition = useMemo(() => {\n let matchGlobalFilterCondition = globalFilterCondition?.find(\n item => item?.dataSourceId === customData?.dataSourceId\n )\n return matchGlobalFilterCondition\n }, [globalFilterCondition, customData?.dataSourceId])\n\n const [chartData, setChartData] = useState<any>()\n const [loading, setloading] = useState<any>()\n\n const fetchChartData = useMemoizedFn(async () => {\n setChartData([])\n if (customData) {\n // 调用方法\n setloading(true)\n let queryString = ''\n const newXAxisField = customData?.xAxis === 'tags' ? 'tag' : customData?.xAxis\n const newGroupField = customData?.groupField === 'tags' ? 'tag' : customData?.groupField\n\n if (!customData.isGroup) {\n if (customData.yAxis === 'recordTotal') {\n queryString += `select=${newXAxisField},id.count()`\n }\n\n if (customData.yAxis === 'fieldValue' && customData?.yAxisField) {\n queryString += `select=${newXAxisField},${customData?.yAxisField}.${customData?.yAxisFieldType}()`\n }\n } else {\n if (customData.yAxis === 'recordTotal') {\n queryString += `select=${newXAxisField},${newGroupField},id.count()`\n }\n if (customData.yAxis === 'fieldValue' && customData?.yAxisField) {\n queryString += `select=${newXAxisField},${newGroupField},${customData?.yAxisField}.${customData?.yAxisFieldType}()`\n }\n }\n\n // 筛选\n let conditionBlockList = []\n if ((matchGlobalFilterCondition?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(matchGlobalFilterCondition)\n }\n if ((customData?.conditionData?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(customData?.conditionData)\n }\n if (conditionBlockList.length > 0) {\n let DSLStr = mapConditionsToPostgrest(conditionBlockList as ConditionBlock[])\n queryString += !!DSLStr ? `&${DSLStr}` : ''\n }\n\n if (customData?.dataSourceId) {\n moduleDataApi?.({\n id: customData?.dataSourceId,\n query: queryString,\n })\n .then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n\n setChartData(res.data)\n })\n .finally(() => {\n setloading(false)\n })\n }\n } else {\n setChartData([])\n }\n })\n\n useDebounceEffect(\n () => {\n if (customData) {\n fetchChartData()\n }\n },\n [\n customData?.dataSourceId,\n customData?.conditionData,\n customData?.sortField,\n customData?.sortOrder,\n customData?.xAxis,\n customData?.yAxis,\n customData?.yAxisField,\n customData?.yAxisFieldType,\n customData?.isGroup,\n customData?.groupField,\n matchGlobalFilterCondition,\n ],\n { wait: 60 }\n )\n\n /* ============================== split =============================== */\n const fieldOptions = useMemo(() => {\n let ret = globalData?.sourceData?.find(item => item.value === customData?.dataSourceId)?.fields\n return ret\n }, [globalData, customData?.dataSourceId])\n\n /**\n * @description: 根据 customData 和 chartData 动态生成 ECharts 配置项\n * 主要逻辑:\n * 1. 根据字段配置和分组字段构造数据;\n * 2. 支持分组、百分比、排序、显示范围;\n * 3. 根据自定义配置生成 series、legend、xAxis/yAxis、grid、tooltip 等。\n */\n const chartOptions = useMemo(() => {\n if (customData && chartData && customData.type && chartData.length > 0) {\n /**\n * 根据 chartData 生成完整的 ECharts 配置\n */\n const getChartOptions = (_chartData: any) => {\n /**\n * @description 获取字段值(带字段映射与时间分组转换)\n */\n const getFieldVal = ({\n item,\n field,\n timeGroupInterval,\n }: {\n item: any\n field: any\n timeGroupInterval?: TimeGroupInterval\n }) => {\n return getTransformValue({\n fieldOptions,\n val: item[field],\n field: field,\n fieldMap: globalData?.fieldMap,\n timeGroupInterval,\n })\n }\n\n /** 获取字段对应的标签名(label) */\n const getFieldLabel = (field: string) => {\n const fieldData = fieldOptions?.find(item => item.value === field)\n return fieldData?.label\n }\n\n /** 判断是否为时间类型字段 */\n const isTimeField = (fieldName: string) => {\n return fieldOptions?.find(item => item.value === fieldName)?.type === 'timestamp'\n }\n\n // 后端字段映射修正\n const mapping = { tags: 'tag' }\n\n const newXAxisField =\n mapping[customData?.xAxis as keyof typeof mapping] ?? customData?.xAxis\n const newGroupField =\n mapping[customData?.groupField as keyof typeof mapping] ?? customData?.groupField\n\n console.log(\"newGroupField\", newGroupField)\n\n /**\n * Step 1. 分组整理数据(以 xAxis 为主键)\n */\n let groupData = groupBy(_chartData, item => {\n const category = getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n return category\n })\n\n /** 合并同名分组数据 */\n let chartData = Object.keys(groupData).map(key => {\n let groupList = groupData[key]\n let mergeObj = groupList.reduce((acc, item) => {\n Object.keys(item).forEach(k => {\n let value = item[k]\n if (isNumber(value)) {\n acc[k] = acc?.[k] ? acc[k] + value : value\n } else {\n acc[k] = value\n }\n })\n return acc\n }, {})\n return mergeObj\n })\n\n /**\n * Step 2. 初始化容器\n */\n const categories = new Set<string>() // x 轴标签集合\n const stackCategories = new Set<string>() // 分组类别\n const valueGroups: Record<string, Record<string, number>> = {} // 分组下的值\n const valueCounts: Record<string, number> = {} // 无分组的值\n\n /**\n * Step 3. 提取每一项的数据\n */\n chartData.forEach((item: any) => {\n const category = getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n const val =\n customData.yAxis === 'recordTotal' ? item?.count : item[customData?.yAxisFieldType] || 0\n\n const key = category ?? t('unknown')\n valueCounts[key] = val\n\n // 分组数据处理\n // if (customData?.isGroup && customData?.groupField) {\n // const stackCategory = getFieldVal({\n // item,\n // field: newGroupField,\n // })\n // const key = category ?? t('unknown')\n // stackCategories.add(stackCategory)\n // if (!valueGroups[stackCategory]) valueGroups[stackCategory] = {}\n // valueGroups[stackCategory][key] = val\n // }\n })\n // 修bug先不影响其他的\n // https://applink.larksuite.com/client/todo/detail?guid=f7ad264e-bbea-4978-b908-c97ff55bb230&suite_entity_num=t107825\n if (customData?.isGroup && customData?.groupField) {\n _chartData.forEach((item: any) => {\n const category = getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n const val =\n customData.yAxis === 'recordTotal' ? item?.count : item[customData?.yAxisFieldType] || 0\n\n const stackCategory = getFieldVal({\n item,\n field: newGroupField,\n })\n const key = category ?? t('unknown')\n stackCategories.add(stackCategory)\n if (!valueGroups[stackCategory]) valueGroups[stackCategory] = {}\n valueGroups[stackCategory][key] = val\n })\n }\n\n\n console.log(\"test\", { groupData, categories, stackCategories, valueGroups, valueCounts })\n\n /**\n * Step 4. 计算百分比(针对百分比图)\n */\n const valuePercentages: Record<string, number> = {}\n const valueGroupPercentages: Record<string, Record<string, number>> = {}\n\n if (customData?.isGroup && customData?.groupField) {\n const totalPerCategory: Record<string, number> = {}\n\n Object.keys(valueGroups).forEach(stackCategory => {\n Object.entries(valueGroups[stackCategory]).forEach(([key, val]) => {\n totalPerCategory[key] = (totalPerCategory[key] || 0) + val\n })\n })\n\n Object.keys(valueGroups).forEach(stackCategory => {\n valueGroupPercentages[stackCategory] = {}\n Object.entries(valueGroups[stackCategory]).forEach(([key, val]) => {\n const total = totalPerCategory[key] || 1\n valueGroupPercentages[stackCategory][key] = (val / total) * 100\n })\n })\n } else {\n Object.entries(valueCounts).forEach(([key, val]) => {\n const total = val || 1\n valuePercentages[key] = (val / total) * 100\n })\n }\n\n /**\n * Step 5. 排序\n */\n let sortField = customData?.sortField ?? 'xAxis'\n let sortOrder = customData?.sortOrder ?? 'asc'\n\n const sortedChartData = [...chartData].sort((a, b) => {\n let valA, valB\n switch (sortField) {\n case 'xAxis':\n valA = getFieldVal({\n item: a,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n valB = getFieldVal({\n item: b,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n break\n case 'yAxisField':\n valA =\n customData.yAxis === 'recordTotal' ? a?.count : a[customData?.yAxisFieldType] || 0\n valB =\n customData.yAxis === 'recordTotal' ? b?.count : b[customData?.yAxisFieldType] || 0\n break\n default:\n break\n }\n\n const orderMultiplier = sortOrder === 'asc' ? 1 : -1\n if (valA > valB) return 1 * orderMultiplier\n if (valA < valB) return -1 * orderMultiplier\n return 0\n })\n\n // 更新排序后的 categories\n const sortedCategories = sortedChartData.map(item =>\n getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n )\n categories.clear()\n sortedCategories.forEach(cat => categories.add(cat))\n\n /**\n * Step 6. Display Range 限制(TOP / BOTTOM)\n */\n if (\n !isTimeField(customData?.xAxis) &&\n customData.displayRange !== 'ALL' &&\n !!customData.displayRange\n ) {\n let sortedByCountCategories = Array.from(categories).sort((a, b) => {\n return valueCounts[b] - valueCounts[a]\n })\n\n let ableCategories: string[] = []\n let [pos, count] = customData.displayRange.split('_')\n if (pos === 'TOP') {\n ableCategories = sortedByCountCategories.slice(0, Number(count))\n } else {\n ableCategories = sortedByCountCategories.slice(-Number(count))\n }\n\n Array.from(categories).forEach(item => {\n if (!ableCategories.includes(item)) {\n categories.delete(item)\n }\n return item\n })\n }\n\n /**\n * Step 7. 生成 series、xAxis/yAxis、legend 等图表配置\n */\n const formatter: LabelFormatterCallback = data =>\n customData?.isGroup && customData?.groupField\n ? data?.value == 0\n ? ''\n : `${data?.value}`\n : `${data?.value}`\n\n const label = {\n show: customData?.chartOptions?.includes('label'),\n position: 'top',\n formatter,\n }\n\n const labels = Array.from(categories)\n const stackLabels = Array.from(stackCategories)\n\n const series = []\n const chartConfig = getChartConfig({\n type: customData?.type as ChartType,\n categories: labels,\n }) as any\n\n const formatValue = (v: any) => (isNumber(v) ? Math.floor(v * 100) / 100 : v)\n\n // === 分组图表 ===\n if (customData?.isGroup && customData?.groupField) {\n stackLabels.forEach(stackCategory => {\n const data = ['chart-bar-percentage', 'chart-strip-bar-percentage'].includes(\n customData.type\n )\n ? labels.map(label => formatValue(valueGroupPercentages[stackCategory][label] || 0))\n : labels.map(label => formatValue(valueGroups[stackCategory][label] || 0))\n\n // 组合图(左右双轴处理)\n let type = customData.type\n let yAxisPos = 'left'\n if (type == ChartType['chartCombination']) {\n let matchCombinationChartConfig = (customData?.groupFieldConfig ?? []).find(\n item =>\n getFieldVal({\n item: {\n [newGroupField]: item?.value,\n },\n field: newGroupField,\n }) == stackCategory\n )\n type = matchCombinationChartConfig?.config?.chartType ?? ChartType['ChartBar']\n yAxisPos = matchCombinationChartConfig?.config?.yAxisPos ?? 'left'\n }\n\n let seriesItem = getSerie({\n type,\n data,\n label,\n name: stackCategory,\n isGroup: customData?.isGroup,\n groupField: customData?.groupField,\n labels,\n })\n seriesItem.yAxisIndex = yAxisPos == 'left' ? 0 : 1\n series.push(seriesItem)\n })\n } else {\n // === 非分组图表 ===\n const data = ['chart-bar-percentage', 'chart-strip-bar-percentage'].includes(\n customData.type\n )\n ? labels.map(label => formatValue(valuePercentages[label]?.toFixed(2) || 0))\n : labels.map(label => formatValue(valueCounts[label] || 0))\n\n let type = customData.type\n let yAxisPos = 'left'\n if (type == ChartType['chartCombination']) {\n type = customData?.yAxisFieldConfig?.chartType ?? ChartType['ChartBar']\n } else {\n yAxisPos = customData?.yAxisFieldConfig?.yAxisPos ?? 'left'\n }\n\n let seriesItem = getSerie({\n type,\n data,\n label,\n name:\n customData.yAxis === 'recordTotal'\n ? t('pb.statisticsText')\n : getFieldLabel(customData?.yAxisField),\n isGroup: customData?.isGroup,\n groupField: customData?.groupField,\n labels,\n })\n seriesItem.yAxisIndex = yAxisPos == 'left' ? 0 : 1\n series.push(seriesItem)\n }\n\n console.log(\"series\", series, customData)\n\n /**\n * Step 8. 生成 grid / legend / tooltip 等通用配置\n */\n const grids = getGrid({ series, chartConfig, width, customeStyle })\n const isShowLegend = customData?.chartOptions?.includes('legend')\n\n const isLeftYAxisShow = series.some(item => item?.yAxisIndex == 0)\n const isRightYAxisShow = series.some(item => item?.yAxisIndex == 1)\n\n const yAxisConfig = {\n ...chartConfig.yAxis,\n axisTick: { show: customData?.chartOptions?.includes('axis') },\n axisLine: { show: customData?.chartOptions?.includes('axis') },\n axisLabel: {\n show: customData?.chartOptions?.includes('label'),\n formatter: (value: string) =>\n value.length > 15 ? `${value.slice(0, 15)}...` : value,\n hideOverlap: true,\n ...chartConfig.yAxis?.axisLabel,\n },\n splitLine: { show: customData?.chartOptions?.includes('splitLine') },\n }\n\n /** ✅ 最终返回 ECharts 配置项 */\n const options: EChartsOption = {\n legend: {\n type: 'scroll',\n left: 'center',\n right: 'center',\n top: '0',\n show: isShowLegend,\n itemWidth: 12,\n itemHeight: 12,\n data: series?.map((item: any) => item?.name || '') || [],\n },\n grid: grids,\n graphic: {\n elements: [\n {\n type: 'text',\n left: 'center',\n bottom: '10px',\n style: {\n text: customeStyle?.xtitle || '',\n fill: '#333',\n fontSize: 12,\n fontWeight: 'bold',\n },\n },\n {\n type: 'text',\n left: '10px',\n top: 'center',\n style: {\n text: customeStyle?.ytitle || '',\n fill: '#333',\n fontSize: 12,\n fontWeight: 'bold',\n },\n rotation: Math.PI / 2,\n },\n ],\n },\n xAxis: {\n ...chartConfig.xAxis,\n axisTick: { show: customData?.chartOptions?.includes('axis') },\n axisLine: { show: customData?.chartOptions?.includes('axis') },\n axisLabel: {\n show: customData?.chartOptions?.includes('label'),\n rotate: grids.axisLabelRotate,\n interval: 'auto',\n formatter: (value: string) =>\n value.length > 15 ? `${value.slice(0, 15)}...` : value,\n ...(chartConfig.xAxis?.axisLabel ?? {}),\n },\n splitLine: { show: customData?.chartOptions?.includes('splitLine') },\n },\n yAxis: [\n { show: isLeftYAxisShow, ...yAxisConfig },\n { show: isRightYAxisShow, ...yAxisConfig },\n ],\n series,\n tooltip: {\n trigger: 'item',\n axisPointer: { type: 'shadow' },\n extraCssText: 'max-width:30vw; white-space:pre-wrap; word-break:break-all',\n appendTo: 'body',\n },\n }\n\n return options\n }\n\n return getChartOptions(chartData)\n } else {\n return null\n }\n }, [\n customData?.sortField,\n customData?.sortOrder,\n customData?.type,\n customData?.chartOptions,\n customData?.timeGroupInterval,\n customData?.groupFieldConfig,\n customData?.yAxisFieldConfig,\n customData?.displayRange,\n customeStyle,\n chartData,\n width,\n height,\n fieldOptions,\n ])\n\n\n /* ============================== split =============================== */\n const echartRef = useRef<any>()\n const containerRef = useRef<HTMLDivElement>(null)\n const size = useSize(containerRef)\n\n useEffect(() => {\n if (!!size) {\n echartRef?.current?.resize()\n }\n }, [size])\n\n const isLoading = loading\n const isEmpyt = !loading && !chartOptions\n const isOk = !isLoading && !!chartOptions\n return (\n <div style={{ width: '100%', height: '100%' }} ref={containerRef}>\n {isLoading && (\n <Spin\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n spinning={loading}\n />\n )}\n {isEmpyt && <Empty />}\n {isOk && <BaseChart echartRef={echartRef} options={chartOptions ?? {}} />}\n </div>\n )\n}\n\nexport default React.memo(ChartModule)\n"],"names":["matchGlobalFilterCondition","_a","chartData","label","_b","BaseChart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/dashboard-workbench/components/module-content/chart-module/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { message, Spin } from 'antd'\nimport { useDebounceEffect, useMemoizedFn, useSize } from 'ahooks'\nimport { EChartsOption, LabelFormatterCallback } from 'echarts'\nimport { t } from 'i18next'\nimport { groupBy, isNumber } from 'lodash-es'\nimport {\n ChartCustomDataType,\n ChartCustomeStylesTypes,\n TimeGroupInterval,\n} from '@platox/pivot-table/components/add-module-modal/add-chart-modal/interface'\nimport { useAppContext } from '../../../context'\nimport { FieldItem, ModuleDataApi } from '../../../types'\nimport { getTransformValue } from '../../../utils'\nimport { ChartType } from '../../add-module-modal/add-chart-modal/interface'\nimport { ConditionBlock } from '../../add-module-modal/components/condition-modal/interface'\nimport { mapConditionsToPostgrest } from '../utils'\nimport BaseChart from './base-chart'\nimport Empty from './Empty'\nimport { getChartConfig, getGrid, getSerie } from './utils'\n\ninterface ChartModuleProps {\n customData?: ChartCustomDataType\n customeStyle?: ChartCustomeStylesTypes\n onChange?: (val: unknown) => void\n moduleDataApi?: ModuleDataApi\n width?: number\n height?: number\n}\n\nconst ChartModule: React.FC<ChartModuleProps> = ({\n moduleDataApi,\n customData,\n customeStyle,\n width = 2,\n height = 2,\n}) => {\n const { globalData, globalFilterCondition } = useAppContext()\n\n /* ============================== split =============================== */\n let matchGlobalFilterCondition = useMemo(() => {\n let matchGlobalFilterCondition = globalFilterCondition?.find(\n item => item?.dataSourceId === customData?.dataSourceId\n )\n return matchGlobalFilterCondition\n }, [globalFilterCondition, customData?.dataSourceId])\n\n const [chartData, setChartData] = useState<any>()\n const [loading, setloading] = useState<any>()\n\n const fetchChartData = useMemoizedFn(async () => {\n setChartData([])\n if (customData) {\n // 调用方法\n setloading(true)\n let queryString = ''\n const newXAxisField = customData?.xAxis === 'tags' ? 'tag' : customData?.xAxis\n const newGroupField = customData?.groupField === 'tags' ? 'tag' : customData?.groupField\n\n if (!customData.isGroup) {\n if (customData.yAxis === 'recordTotal') {\n queryString += `select=${newXAxisField},id.count()`\n }\n\n if (customData.yAxis === 'fieldValue' && customData?.yAxisField) {\n queryString += `select=${newXAxisField},${customData?.yAxisField}.${customData?.yAxisFieldType}()`\n }\n } else {\n if (customData.yAxis === 'recordTotal') {\n queryString += `select=${newXAxisField},${newGroupField},id.count()`\n }\n if (customData.yAxis === 'fieldValue' && customData?.yAxisField) {\n queryString += `select=${newXAxisField},${newGroupField},${customData?.yAxisField}.${customData?.yAxisFieldType}()`\n }\n }\n\n // 筛选\n let conditionBlockList = []\n if ((matchGlobalFilterCondition?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(matchGlobalFilterCondition)\n }\n if ((customData?.conditionData?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(customData?.conditionData)\n }\n if (conditionBlockList.length > 0) {\n let DSLStr = mapConditionsToPostgrest(conditionBlockList as ConditionBlock[])\n queryString += !!DSLStr ? `&${DSLStr}` : ''\n }\n\n if (customData?.dataSourceId) {\n moduleDataApi?.({\n id: customData?.dataSourceId,\n query: queryString,\n })\n .then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n\n setChartData(res.data)\n })\n .finally(() => {\n setloading(false)\n })\n }\n } else {\n setChartData([])\n }\n })\n\n useDebounceEffect(\n () => {\n if (customData) {\n fetchChartData()\n }\n },\n [\n customData?.dataSourceId,\n customData?.conditionData,\n customData?.sortField,\n customData?.sortOrder,\n customData?.xAxis,\n customData?.yAxis,\n customData?.yAxisField,\n customData?.yAxisFieldType,\n customData?.isGroup,\n customData?.groupField,\n matchGlobalFilterCondition,\n ],\n { wait: 60 }\n )\n\n /* ============================== split =============================== */\n const fieldOptions = useMemo(() => {\n let ret = globalData?.sourceData?.find(item => item.value === customData?.dataSourceId)?.fields\n return ret\n }, [globalData, customData?.dataSourceId])\n\n /**\n * @description: 根据 customData 和 chartData 动态生成 ECharts 配置项\n * 主要逻辑:\n * 1. 根据字段配置和分组字段构造数据;\n * 2. 支持分组、百分比、排序、显示范围;\n * 3. 根据自定义配置生成 series、legend、xAxis/yAxis、grid、tooltip 等。\n */\n const chartOptions = useMemo(() => {\n if (customData && chartData && customData.type && chartData.length > 0) {\n /**\n * 根据 chartData 生成完整的 ECharts 配置\n */\n const getChartOptions = (_chartData: any) => {\n /**\n * @description 获取字段值(带字段映射与时间分组转换)\n */\n const getFieldVal = ({\n item,\n field,\n timeGroupInterval,\n }: {\n item: any\n field: any\n timeGroupInterval?: TimeGroupInterval\n }) => {\n return getTransformValue({\n fieldOptions,\n val: item[field],\n field: field,\n fieldMap: globalData?.fieldMap,\n timeGroupInterval,\n showNill: false,\n })\n }\n\n /** 获取字段对应的标签名(label) */\n const getFieldLabel = (field: string) => {\n const fieldData = fieldOptions?.find(item => item.value === field)\n return fieldData?.label\n }\n\n /** 判断是否为时间类型字段 */\n const isTimeField = (fieldName: string) => {\n return fieldOptions?.find(item => item.value === fieldName)?.type === 'timestamp'\n }\n\n // 后端字段映射修正\n const mapping = { tags: 'tag' }\n\n const newXAxisField =\n mapping[customData?.xAxis as keyof typeof mapping] ?? customData?.xAxis\n const newGroupField =\n mapping[customData?.groupField as keyof typeof mapping] ?? customData?.groupField\n\n console.log(\"newGroupField\", newGroupField)\n\n /**\n * Step 1. 分组整理数据(以 xAxis 为主键)\n */\n let groupData = groupBy(_chartData, item => {\n const category = getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n return category ?? 'Unknown'\n })\n\n /** 合并同名分组数据 */\n let chartData = Object.keys(groupData).map(key => {\n let groupList = groupData[key]\n let mergeObj = groupList.reduce((acc, item) => {\n Object.keys(item).forEach(k => {\n let value = item[k]\n if (isNumber(value)) {\n acc[k] = acc?.[k] ? acc[k] + value : value\n } else {\n acc[k] = value\n }\n })\n return acc\n }, {})\n return mergeObj\n })\n\n /**\n * Step 2. 初始化容器\n */\n const categories = new Set<string>() // x 轴标签集合\n const stackCategories = new Set<string>() // 分组类别\n const valueGroups: Record<string, Record<string, number>> = {} // 分组下的值\n const valueCounts: Record<string, number> = {} // 无分组的值\n\n /**\n * Step 3. 提取每一项的数据\n */\n chartData.forEach((item: any) => {\n const category = getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n }) ?? 'Unknown'\n const val =\n customData.yAxis === 'recordTotal' ? item?.count : item[customData?.yAxisFieldType] || 0\n\n valueCounts[category] = val\n\n // 分组数据处理\n // if (customData?.isGroup && customData?.groupField) {\n // const stackCategory = getFieldVal({\n // item,\n // field: newGroupField,\n // })\n // const key = category ?? 'Unknown'\n // stackCategories.add(stackCategory)\n // if (!valueGroups[stackCategory]) valueGroups[stackCategory] = {}\n // valueGroups[stackCategory][key] = val\n // }\n })\n // 修bug先不影响其他的\n // https://applink.larksuite.com/client/todo/detail?guid=f7ad264e-bbea-4978-b908-c97ff55bb230&suite_entity_num=t107825\n if (customData?.isGroup && customData?.groupField) {\n _chartData.forEach((item: any) => {\n const category = getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n }) ?? 'Unknown'\n const val =\n customData.yAxis === 'recordTotal' ? item?.count : item[customData?.yAxisFieldType] || 0\n\n const stackCategory = getFieldVal({\n item,\n field: newGroupField,\n }) ?? 'Unknown'\n stackCategories.add(stackCategory)\n if (!valueGroups[stackCategory]) valueGroups[stackCategory] = {}\n valueGroups[stackCategory][category] = val\n })\n }\n\n\n console.log(\"test\", { groupData, categories, stackCategories, valueGroups, valueCounts })\n\n /**\n * Step 4. 计算百分比(针对百分比图)\n */\n const valuePercentages: Record<string, number> = {}\n const valueGroupPercentages: Record<string, Record<string, number>> = {}\n\n if (customData?.isGroup && customData?.groupField) {\n const totalPerCategory: Record<string, number> = {}\n\n Object.keys(valueGroups).forEach(stackCategory => {\n Object.entries(valueGroups[stackCategory]).forEach(([key, val]) => {\n totalPerCategory[key] = (totalPerCategory[key] || 0) + val\n })\n })\n\n Object.keys(valueGroups).forEach(stackCategory => {\n valueGroupPercentages[stackCategory] = {}\n Object.entries(valueGroups[stackCategory]).forEach(([key, val]) => {\n const total = totalPerCategory[key] || 1\n valueGroupPercentages[stackCategory][key] = (val / total) * 100\n })\n })\n } else {\n Object.entries(valueCounts).forEach(([key, val]) => {\n const total = val || 1\n valuePercentages[key] = (val / total) * 100\n })\n }\n\n /**\n * Step 5. 排序\n */\n let sortField = customData?.sortField ?? 'xAxis'\n let sortOrder = customData?.sortOrder ?? 'asc'\n\n const sortedChartData = [...chartData].sort((a, b) => {\n let valA, valB\n switch (sortField) {\n case 'xAxis':\n valA = getFieldVal({\n item: a,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n valB = getFieldVal({\n item: b,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n break\n case 'yAxisField':\n valA =\n customData.yAxis === 'recordTotal' ? a?.count : a[customData?.yAxisFieldType] || 0\n valB =\n customData.yAxis === 'recordTotal' ? b?.count : b[customData?.yAxisFieldType] || 0\n break\n default:\n break\n }\n\n const orderMultiplier = sortOrder === 'asc' ? 1 : -1\n if (valA > valB) return 1 * orderMultiplier\n if (valA < valB) return -1 * orderMultiplier\n return 0\n })\n\n // 更新排序后的 categories\n const sortedCategories = sortedChartData.map(item =>\n getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n }) ?? 'Unknown'\n )\n categories.clear()\n sortedCategories.forEach(cat => categories.add(cat))\n\n /**\n * Step 6. Display Range 限制(TOP / BOTTOM)\n */\n if (\n !isTimeField(customData?.xAxis) &&\n customData.displayRange !== 'ALL' &&\n !!customData.displayRange\n ) {\n let sortedByCountCategories = Array.from(categories).sort((a, b) => {\n return valueCounts[b] - valueCounts[a]\n })\n\n let ableCategories: string[] = []\n let [pos, count] = customData.displayRange.split('_')\n if (pos === 'TOP') {\n ableCategories = sortedByCountCategories.slice(0, Number(count))\n } else {\n ableCategories = sortedByCountCategories.slice(-Number(count))\n }\n\n Array.from(categories).forEach(item => {\n if (!ableCategories.includes(item)) {\n categories.delete(item)\n }\n return item\n })\n }\n\n /**\n * Step 7. 生成 series、xAxis/yAxis、legend 等图表配置\n */\n const formatter: LabelFormatterCallback = data =>\n customData?.isGroup && customData?.groupField\n ? data?.value == 0\n ? ''\n : `${data?.value}`\n : `${data?.value}`\n\n const isStripBar = customData?.type?.includes('strip-bar')\n const label = {\n show: customData?.chartOptions?.includes('label'),\n position: isStripBar ? 'right' : 'top',\n formatter,\n }\n\n const labels = Array.from(categories)\n const stackLabels = Array.from(stackCategories)\n\n const series = []\n const chartConfig = getChartConfig({\n type: customData?.type as ChartType,\n categories: labels,\n }) as any\n\n const formatValue = (v: any) => (isNumber(v) ? Math.floor(v * 100) / 100 : v)\n\n // === 分组图表 ===\n if (customData?.isGroup && customData?.groupField) {\n stackLabels.forEach((stackCategory, idx) => {\n const data = ['chart-bar-percentage', 'chart-strip-bar-percentage'].includes(\n customData.type\n )\n ? labels.map(label => formatValue(valueGroupPercentages[stackCategory][label] || 0))\n : labels.map(label => formatValue(valueGroups[stackCategory][label] || 0))\n\n // 组合图(左右双轴处理)\n let type = customData.type\n let yAxisPos = 'left'\n if (type == ChartType['chartCombination']) {\n let matchCombinationChartConfig = (customData?.groupFieldConfig ?? []).find(\n item =>\n getFieldVal({\n item: {\n [newGroupField]: item?.value,\n },\n field: newGroupField,\n }) == stackCategory\n )\n type = matchCombinationChartConfig?.config?.chartType ?? ChartType['ChartBar']\n yAxisPos = matchCombinationChartConfig?.config?.yAxisPos ?? 'left'\n }\n\n let seriesItem = getSerie({\n type,\n data,\n label,\n name: stackCategory,\n isGroup: customData?.isGroup,\n groupField: customData?.groupField,\n labels,\n colorIndex: idx,\n })\n seriesItem.yAxisIndex = yAxisPos == 'left' ? 0 : 1\n series.push(seriesItem)\n })\n } else {\n // === 非分组图表 ===\n const data = ['chart-bar-percentage', 'chart-strip-bar-percentage'].includes(\n customData.type\n )\n ? labels.map(label => formatValue(valuePercentages[label]?.toFixed(2) || 0))\n : labels.map(label => formatValue(valueCounts[label] || 0))\n\n let type = customData.type\n let yAxisPos = 'left'\n if (type == ChartType['chartCombination']) {\n type = customData?.yAxisFieldConfig?.chartType ?? ChartType['ChartBar']\n } else {\n yAxisPos = customData?.yAxisFieldConfig?.yAxisPos ?? 'left'\n }\n\n let seriesItem = getSerie({\n type,\n data,\n label,\n name:\n customData.yAxis === 'recordTotal'\n ? t('pb.statisticsText')\n : getFieldLabel(customData?.yAxisField),\n isGroup: customData?.isGroup,\n groupField: customData?.groupField,\n labels,\n colorIndex: 0,\n })\n seriesItem.yAxisIndex = yAxisPos == 'left' ? 0 : 1\n series.push(seriesItem)\n }\n\n console.log(\"series\", series, customData)\n\n /**\n * Step 8. 生成 grid / legend / tooltip 等通用配置\n */\n const grids = getGrid({ series, chartConfig, width, customeStyle })\n const isShowLegend = customData?.chartOptions?.includes('legend')\n const isPieType = customData?.type === 'chart-pie' || customData?.type === 'chart-pie-circular'\n\n const isLeftYAxisShow = series.some(item => item?.yAxisIndex == 0)\n const isRightYAxisShow = series.some(item => item?.yAxisIndex == 1)\n\n const yAxisConfig = {\n ...chartConfig.yAxis,\n axisTick: {\n show: customData?.chartOptions?.includes('axis'),\n lineStyle: { color: '#e5e6eb' },\n },\n axisLine: {\n show: customData?.chartOptions?.includes('axis'),\n lineStyle: { color: '#e5e6eb' },\n },\n axisLabel: {\n show: customData?.chartOptions?.includes('label'),\n color: '#86909C',\n fontSize: 12,\n formatter: (value: string) =>\n value.length > 15 ? `${value.slice(0, 15)}...` : value,\n hideOverlap: true,\n ...chartConfig.yAxis?.axisLabel,\n },\n splitLine: {\n show: customData?.chartOptions?.includes('splitLine'),\n lineStyle: { color: '#f2f3f5', type: 'dashed' },\n },\n }\n\n /** ✅ 最终返回 ECharts 配置项 */\n const options: EChartsOption = {\n legend: {\n type: 'scroll',\n left: 'center',\n right: 'center',\n top: '0',\n show: isShowLegend,\n itemWidth: 16,\n itemHeight: 8,\n itemGap: 16,\n icon: 'roundRect',\n textStyle: { color: '#86909C', fontSize: 12 },\n data: series?.map((item: any) => item?.name || '') || [],\n },\n grid: grids,\n graphic: {\n elements: [\n {\n type: 'text',\n left: 'center',\n bottom: '10px',\n style: {\n text: customeStyle?.xtitle || '',\n fill: '#86909C',\n fontSize: 12,\n fontWeight: 'normal',\n },\n },\n {\n type: 'text',\n left: '10px',\n top: 'center',\n style: {\n text: customeStyle?.ytitle || '',\n fill: '#86909C',\n fontSize: 12,\n fontWeight: 'normal',\n },\n rotation: Math.PI / 2,\n },\n ],\n },\n xAxis: {\n ...chartConfig.xAxis,\n axisTick: {\n show: customData?.chartOptions?.includes('axis'),\n lineStyle: { color: '#e5e6eb' },\n },\n axisLine: {\n show: customData?.chartOptions?.includes('axis'),\n lineStyle: { color: '#e5e6eb' },\n },\n axisLabel: {\n show: customData?.chartOptions?.includes('label'),\n rotate: grids.axisLabelRotate,\n interval: 'auto',\n color: '#86909C',\n fontSize: 12,\n formatter: (value: string) =>\n value.length > 15 ? `${value.slice(0, 15)}...` : value,\n ...(chartConfig.xAxis?.axisLabel ?? {}),\n },\n splitLine: {\n show: customData?.chartOptions?.includes('splitLine'),\n lineStyle: { color: '#f2f3f5', type: 'dashed' },\n },\n },\n yAxis: [\n { show: isLeftYAxisShow, ...yAxisConfig },\n { show: isRightYAxisShow, ...yAxisConfig },\n ],\n series,\n tooltip: {\n trigger: isPieType ? 'item' : 'axis',\n enterable: isPieType,\n confine: true,\n axisPointer: { type: 'shadow' },\n backgroundColor: 'rgba(255, 255, 255, 0.96)',\n borderColor: 'transparent',\n borderRadius: 8,\n textStyle: { color: '#1d2129', fontSize: 13 },\n extraCssText:\n 'max-width:30vw; white-space:pre-wrap; word-break:break-all; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);',\n appendTo: 'body',\n ...(isPieType\n ? {}\n : {\n formatter: (params: any) => {\n if (!Array.isArray(params)) return ''\n const title = `<div style=\"margin-bottom:6px;font-weight:500;color:#1d2129\">${params[0]?.axisValueLabel ?? ''}</div>`\n const items = params\n .map(\n (p: any) =>\n `<div style=\"display:flex;align-items:center;justify-content:space-between;gap:12px;line-height:22px\"><span style=\"display:inline-flex;align-items:center;gap:6px\"><span style=\"display:inline-block;width:8px;height:8px;border-radius:50%;background:${p.color?.colorStops?.[0]?.color ?? p.color}\"></span>${p.seriesName}</span><span style=\"font-weight:500\">${p.value}</span></div>`\n )\n .join('')\n return title + items\n },\n }),\n },\n animation: true,\n animationDuration: 600,\n animationEasing: 'cubicOut',\n }\n\n return options\n }\n\n return getChartOptions(chartData)\n } else {\n return null\n }\n }, [\n customData?.sortField,\n customData?.sortOrder,\n customData?.type,\n customData?.chartOptions,\n customData?.timeGroupInterval,\n customData?.groupFieldConfig,\n customData?.yAxisFieldConfig,\n customData?.displayRange,\n customeStyle,\n chartData,\n width,\n height,\n fieldOptions,\n ])\n\n\n /* ============================== split =============================== */\n const echartRef = useRef<any>()\n const containerRef = useRef<HTMLDivElement>(null)\n const size = useSize(containerRef)\n\n useEffect(() => {\n if (!!size) {\n echartRef?.current?.resize()\n }\n }, [size])\n\n const isLoading = loading\n const isEmpyt = !loading && !chartOptions\n const isOk = !isLoading && !!chartOptions\n return (\n <div style={{ width: '100%', height: '100%' }} ref={containerRef}>\n {isLoading && (\n <Spin\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n spinning={loading}\n />\n )}\n {isEmpyt && <Empty />}\n {isOk && <BaseChart echartRef={echartRef} options={chartOptions ?? {}} />}\n </div>\n )\n}\n\nexport default React.memo(ChartModule)\n"],"names":["matchGlobalFilterCondition","_a","chartData","label","_b","_c","BaseChart"],"mappings":"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"}
|
|
@@ -97,7 +97,7 @@ export declare const getChartConfig: (props: {
|
|
|
97
97
|
type: string;
|
|
98
98
|
};
|
|
99
99
|
};
|
|
100
|
-
export declare const getSerie: ({ type, data, label, name, isGroup, groupField, labels }: any) => any;
|
|
100
|
+
export declare const getSerie: ({ type, data, label, name, isGroup, groupField, labels, colorIndex }: any) => any;
|
|
101
101
|
export declare const getGrid: ({ customeStyle, series, chartConfig, width }: any) => {
|
|
102
102
|
top: string;
|
|
103
103
|
left: string;
|