@yoka-ui/ui 1.0.5 → 1.0.7
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/@Docs-yoka/exports.generated.md +6 -9
- package/README.md +39 -12
- package/dist/es/assets/image/skills.zip +0 -0
- package/dist/es/business/Empty/index.js.map +1 -1
- package/dist/es/business/YkCharts/Area.d.ts +18 -0
- package/dist/es/business/YkCharts/Area.js +336 -0
- package/dist/es/business/YkCharts/Area.js.map +7 -0
- package/dist/es/business/YkCharts/Bar.d.ts +21 -0
- package/dist/es/business/YkCharts/Bar.js +316 -0
- package/dist/es/business/YkCharts/Bar.js.map +7 -0
- package/dist/es/business/YkCharts/BarProperty.d.ts +21 -0
- package/dist/es/business/YkCharts/BarProperty.js +357 -0
- package/dist/es/business/YkCharts/BarProperty.js.map +7 -0
- package/dist/es/business/YkCharts/BarTotal.d.ts +21 -0
- package/dist/es/business/YkCharts/BarTotal.js +288 -0
- package/dist/es/business/YkCharts/BarTotal.js.map +7 -0
- package/dist/es/business/YkCharts/Line.d.ts +21 -0
- package/dist/es/business/YkCharts/Line.js +342 -0
- package/dist/es/business/YkCharts/Line.js.map +7 -0
- package/dist/es/business/YkCharts/Pie.d.ts +19 -0
- package/dist/es/business/YkCharts/Pie.js +107 -0
- package/dist/es/business/YkCharts/Pie.js.map +7 -0
- package/dist/es/business/YkCharts/PieProperty.d.ts +18 -0
- package/dist/es/business/YkCharts/PieProperty.js +180 -0
- package/dist/es/business/YkCharts/PieProperty.js.map +7 -0
- package/dist/es/business/YkCharts/Pies.d.ts +26 -0
- package/dist/es/business/YkCharts/Pies.js +348 -0
- package/dist/es/business/YkCharts/Pies.js.map +7 -0
- package/dist/es/business/YkCharts/constants.d.ts +1 -0
- package/dist/es/business/YkCharts/constants.js +47 -0
- package/dist/es/business/YkCharts/constants.js.map +7 -0
- package/dist/es/business/YkCharts/hooks.d.ts +4 -0
- package/dist/es/business/YkCharts/hooks.js +37 -0
- package/dist/es/business/YkCharts/hooks.js.map +7 -0
- package/dist/es/business/YkCharts/index.d.ts +9 -0
- package/dist/es/business/YkCharts/index.js +20 -0
- package/dist/es/business/YkCharts/index.js.map +7 -0
- package/dist/es/business/YkCharts/index.module.less +164 -0
- package/dist/es/business/YkCharts/tooltip.less +92 -0
- package/dist/es/business/YkCharts/transformData.js +16 -0
- package/dist/es/business/YkCharts/transformData.js.map +7 -0
- package/dist/es/business/YkCharts/typing.d.ts +74 -0
- package/dist/es/business/YkCharts/typing.js +1 -0
- package/dist/es/business/YkCharts/typing.js.map +7 -0
- package/dist/es/business/YkCharts/utils.d.ts +4 -0
- package/dist/es/business/YkCharts/utils.js +109 -0
- package/dist/es/business/YkCharts/utils.js.map +7 -0
- package/dist/es/business/YkCharts/variables.less +13 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.d.ts +25 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.js +178 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.js.map +7 -0
- package/dist/es/business/YkLoginModule/index.d.ts +48 -0
- package/dist/es/business/YkLoginModule/index.js +198 -0
- package/dist/es/business/YkLoginModule/index.js.map +7 -0
- package/dist/es/business/YkLoginModule/styles.module.less +169 -0
- package/dist/es/business/YkSqlEdit/code-mirror-custom.module.less +154 -0
- package/dist/es/business/YkSqlEdit/index.d.ts +20 -0
- package/dist/es/business/YkSqlEdit/index.js +180 -0
- package/dist/es/business/YkSqlEdit/index.js.map +7 -0
- package/dist/es/business/YkSqlEdit/sql-language.d.ts +11 -0
- package/dist/es/business/YkSqlEdit/sql-language.js +1460 -0
- package/dist/es/business/YkSqlEdit/sql-language.js.map +7 -0
- package/dist/es/components/YKMarkdown/index.d.ts +11 -0
- package/dist/es/components/YKMarkdown/index.js +236 -0
- package/dist/es/components/YKMarkdown/index.js.map +7 -0
- package/dist/es/components/YKMarkdown/index.module.less +83 -0
- package/dist/es/components/YkDateRangePicker/YkDateRangePicker.mdx +3 -3
- package/dist/es/creative/GlassSegmentedRadio/index.d.ts +1 -1
- package/dist/es/creative/SkillsWriter/index.d.ts +3 -0
- package/dist/es/creative/SkillsWriter/index.js +191 -0
- package/dist/es/creative/SkillsWriter/index.js.map +7 -0
- package/dist/es/creative/SkillsWriter/index.module.less +21 -0
- package/dist/es/index.d.ts +4 -2
- package/dist/es/index.js +80 -76
- package/dist/es/index.js.map +2 -2
- package/dist/es/index.less +8 -1
- package/dist/es/utils/ykStorybookDoc.d.ts +15 -0
- package/dist/es/utils/ykStorybookDoc.js +24 -2
- package/dist/es/utils/ykStorybookDoc.js.map +2 -2
- package/dist/lib/assets/image/skills.zip +0 -0
- package/dist/lib/business/Empty/index.js.map +1 -1
- package/dist/lib/business/YkCharts/Area.d.ts +18 -0
- package/dist/lib/business/YkCharts/Area.js +346 -0
- package/dist/lib/business/YkCharts/Area.js.map +7 -0
- package/dist/lib/business/YkCharts/Bar.d.ts +21 -0
- package/dist/lib/business/YkCharts/Bar.js +323 -0
- package/dist/lib/business/YkCharts/Bar.js.map +7 -0
- package/dist/lib/business/YkCharts/BarProperty.d.ts +21 -0
- package/dist/lib/business/YkCharts/BarProperty.js +370 -0
- package/dist/lib/business/YkCharts/BarProperty.js.map +7 -0
- package/dist/lib/business/YkCharts/BarTotal.d.ts +21 -0
- package/dist/lib/business/YkCharts/BarTotal.js +295 -0
- package/dist/lib/business/YkCharts/BarTotal.js.map +7 -0
- package/dist/lib/business/YkCharts/Line.d.ts +21 -0
- package/dist/lib/business/YkCharts/Line.js +349 -0
- package/dist/lib/business/YkCharts/Line.js.map +7 -0
- package/dist/lib/business/YkCharts/Pie.d.ts +19 -0
- package/dist/lib/business/YkCharts/Pie.js +117 -0
- package/dist/lib/business/YkCharts/Pie.js.map +7 -0
- package/dist/lib/business/YkCharts/PieProperty.d.ts +18 -0
- package/dist/lib/business/YkCharts/PieProperty.js +193 -0
- package/dist/lib/business/YkCharts/PieProperty.js.map +7 -0
- package/dist/lib/business/YkCharts/Pies.d.ts +26 -0
- package/dist/lib/business/YkCharts/Pies.js +337 -0
- package/dist/lib/business/YkCharts/Pies.js.map +7 -0
- package/dist/lib/business/YkCharts/constants.d.ts +1 -0
- package/dist/lib/business/YkCharts/constants.js +71 -0
- package/dist/lib/business/YkCharts/constants.js.map +7 -0
- package/dist/lib/business/YkCharts/hooks.d.ts +4 -0
- package/dist/lib/business/YkCharts/hooks.js +62 -0
- package/dist/lib/business/YkCharts/hooks.js.map +7 -0
- package/dist/lib/business/YkCharts/index.d.ts +9 -0
- package/dist/lib/business/YkCharts/index.js +61 -0
- package/dist/lib/business/YkCharts/index.js.map +7 -0
- package/dist/lib/business/YkCharts/index.module.less +164 -0
- package/dist/lib/business/YkCharts/tooltip.less +92 -0
- package/dist/lib/business/YkCharts/transformData.js +40 -0
- package/dist/lib/business/YkCharts/transformData.js.map +7 -0
- package/dist/lib/business/YkCharts/typing.d.ts +74 -0
- package/dist/lib/business/YkCharts/typing.js +18 -0
- package/dist/lib/business/YkCharts/typing.js.map +7 -0
- package/dist/lib/business/YkCharts/utils.d.ts +4 -0
- package/dist/lib/business/YkCharts/utils.js +143 -0
- package/dist/lib/business/YkCharts/utils.js.map +7 -0
- package/dist/lib/business/YkCharts/variables.less +13 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.d.ts +25 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.js +171 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.js.map +7 -0
- package/dist/lib/business/YkLoginModule/index.d.ts +48 -0
- package/dist/lib/business/YkLoginModule/index.js +206 -0
- package/dist/lib/business/YkLoginModule/index.js.map +7 -0
- package/dist/lib/business/YkLoginModule/styles.module.less +169 -0
- package/dist/lib/business/YkSqlEdit/code-mirror-custom.module.less +154 -0
- package/dist/lib/business/YkSqlEdit/index.d.ts +20 -0
- package/dist/lib/business/YkSqlEdit/index.js +202 -0
- package/dist/lib/business/YkSqlEdit/index.js.map +7 -0
- package/dist/lib/business/YkSqlEdit/sql-language.d.ts +11 -0
- package/dist/lib/business/YkSqlEdit/sql-language.js +1493 -0
- package/dist/lib/business/YkSqlEdit/sql-language.js.map +7 -0
- package/dist/lib/components/YKMarkdown/index.d.ts +11 -0
- package/dist/lib/components/YKMarkdown/index.js +188 -0
- package/dist/lib/components/YKMarkdown/index.js.map +7 -0
- package/dist/lib/components/YKMarkdown/index.module.less +83 -0
- package/dist/lib/components/YkDateRangePicker/YkDateRangePicker.mdx +3 -3
- package/dist/lib/creative/GlassSegmentedRadio/index.d.ts +1 -1
- package/dist/lib/creative/SkillsWriter/index.d.ts +3 -0
- package/dist/lib/creative/SkillsWriter/index.js +200 -0
- package/dist/lib/creative/SkillsWriter/index.js.map +7 -0
- package/dist/lib/creative/SkillsWriter/index.module.less +21 -0
- package/dist/lib/index.d.ts +4 -2
- package/dist/lib/index.js +6 -0
- package/dist/lib/index.js.map +2 -2
- package/dist/lib/index.less +8 -1
- package/dist/lib/utils/ykStorybookDoc.d.ts +15 -0
- package/dist/lib/utils/ykStorybookDoc.js +23 -1
- package/dist/lib/utils/ykStorybookDoc.js.map +2 -2
- package/package.json +16 -2
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
|
|
21
|
+
// src/business/YkCharts/BarProperty.tsx
|
|
22
|
+
import { Empty } from "antd";
|
|
23
|
+
import classNames from "classnames";
|
|
24
|
+
import Decimal from "decimal.js";
|
|
25
|
+
import * as echarts from "echarts";
|
|
26
|
+
import React, { useEffect, useMemo, useRef } from "react";
|
|
27
|
+
import ReactDOMServer from "react-dom/server";
|
|
28
|
+
import { chartColors } from "./constants";
|
|
29
|
+
import styles from "./index.module.less";
|
|
30
|
+
import { formatNumber, formatValue } from "./utils";
|
|
31
|
+
function extractCombinations(baseData, validGroupByKeys) {
|
|
32
|
+
const combinations = /* @__PURE__ */ new Set();
|
|
33
|
+
baseData.forEach((item) => {
|
|
34
|
+
const combination = validGroupByKeys.map((key) => item[key]).join("|");
|
|
35
|
+
combinations.add(combination);
|
|
36
|
+
});
|
|
37
|
+
return Array.from(combinations).map((combination) => {
|
|
38
|
+
return combination.split("|");
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
var BarProperty = ({
|
|
42
|
+
count,
|
|
43
|
+
// 指标显示数量
|
|
44
|
+
metric,
|
|
45
|
+
// 指标
|
|
46
|
+
groupBys,
|
|
47
|
+
// 维度
|
|
48
|
+
tableData,
|
|
49
|
+
// 表格数据
|
|
50
|
+
baseData,
|
|
51
|
+
// 基础数据
|
|
52
|
+
columnConfigMap,
|
|
53
|
+
// 列配置
|
|
54
|
+
height
|
|
55
|
+
}) => {
|
|
56
|
+
const { x_field } = tableData;
|
|
57
|
+
const chartContainerRef = useRef(null);
|
|
58
|
+
const chartInstanceRef = useRef(null);
|
|
59
|
+
const legendNames = useMemo(() => {
|
|
60
|
+
if (groupBys && groupBys.length > 1) {
|
|
61
|
+
const validGroups = groupBys.slice(1).filter((g) => Array.isArray(g.selected) && g.selected.length > 0);
|
|
62
|
+
const arrays = validGroups.map((g) => g.selected);
|
|
63
|
+
const product = arrays.reduce(
|
|
64
|
+
(acc, curr) => {
|
|
65
|
+
const res = [];
|
|
66
|
+
acc.forEach((a) => {
|
|
67
|
+
curr.forEach((b) => {
|
|
68
|
+
res.push(Array.isArray(a) ? [...a, b] : [a, b]);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
return res;
|
|
72
|
+
},
|
|
73
|
+
[[]]
|
|
74
|
+
);
|
|
75
|
+
return product.map((arr) => arr.join(","));
|
|
76
|
+
} else {
|
|
77
|
+
return metric;
|
|
78
|
+
}
|
|
79
|
+
}, [groupBys, metric]);
|
|
80
|
+
const useX = useMemo(() => {
|
|
81
|
+
var _a, _b;
|
|
82
|
+
let rows = [];
|
|
83
|
+
let fieldType = "string";
|
|
84
|
+
if (groupBys.length === 0) {
|
|
85
|
+
rows = baseData.map((item) => item[x_field]);
|
|
86
|
+
rows = Array.from(new Set(rows));
|
|
87
|
+
fieldType = ((_a = columnConfigMap[x_field]) == null ? void 0 : _a.type) || "string";
|
|
88
|
+
} else {
|
|
89
|
+
rows = groupBys[0].options.filter((option) => groupBys[0].selected.includes(option));
|
|
90
|
+
fieldType = ((_b = columnConfigMap[groupBys[0].key]) == null ? void 0 : _b.type) || "string";
|
|
91
|
+
}
|
|
92
|
+
if (fieldType === "number") {
|
|
93
|
+
rows = rows.sort((a, b) => {
|
|
94
|
+
return Number(a) > Number(b) ? 1 : -1;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return count ? rows.slice(0, count) : rows;
|
|
98
|
+
}, [baseData, groupBys, x_field, count]);
|
|
99
|
+
const validGroupByKeys = useMemo(() => {
|
|
100
|
+
return groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0).map((g) => g.key);
|
|
101
|
+
}, [groupBys]);
|
|
102
|
+
const chartData = useMemo(() => {
|
|
103
|
+
if (groupBys && groupBys.length > 1) {
|
|
104
|
+
if (Array.isArray(groupBys) && groupBys.some((g) => Array.isArray(g.selected) && g.selected.length === 0)) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
const validGroups = groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0);
|
|
108
|
+
const arrays = validGroups.map((g) => g.selected);
|
|
109
|
+
const product = arrays.reduce(
|
|
110
|
+
(acc, curr) => {
|
|
111
|
+
const res = [];
|
|
112
|
+
acc.forEach((a) => {
|
|
113
|
+
curr.forEach((b) => {
|
|
114
|
+
res.push(Array.isArray(a) ? [...a, b] : [a, b]);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
return res;
|
|
118
|
+
},
|
|
119
|
+
[[]]
|
|
120
|
+
);
|
|
121
|
+
const productResult = extractCombinations(baseData, validGroupByKeys);
|
|
122
|
+
const result = productResult.map((arr) => {
|
|
123
|
+
const item = baseData.find((d) => {
|
|
124
|
+
return arr.every((a, i) => {
|
|
125
|
+
return d[groupBys[i].key] === a;
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
if (!item)
|
|
129
|
+
return null;
|
|
130
|
+
return __spreadProps(__spreadValues({}, item), {
|
|
131
|
+
name: arr.join(","),
|
|
132
|
+
value: item[metric[0]],
|
|
133
|
+
metricName: metric[0],
|
|
134
|
+
format: columnConfigMap[metric[0]]
|
|
135
|
+
});
|
|
136
|
+
}).filter(Boolean);
|
|
137
|
+
return count ? result.slice(0, count) : result;
|
|
138
|
+
} else if (groupBys && groupBys.length === 1) {
|
|
139
|
+
const selected = groupBys[0].selected;
|
|
140
|
+
const result = selected.map((s) => {
|
|
141
|
+
const item = baseData.find((d) => d[groupBys[0].key] === s);
|
|
142
|
+
if (!item)
|
|
143
|
+
return null;
|
|
144
|
+
return __spreadProps(__spreadValues({}, item), {
|
|
145
|
+
name: item[groupBys[0].key],
|
|
146
|
+
value: item[metric[0]],
|
|
147
|
+
metricName: metric[0],
|
|
148
|
+
format: columnConfigMap[metric[0]]
|
|
149
|
+
});
|
|
150
|
+
}).filter((item) => (item == null ? void 0 : item.name) ? useX.includes(item == null ? void 0 : item.name) : true);
|
|
151
|
+
return count ? result.slice(0, count) : result;
|
|
152
|
+
} else {
|
|
153
|
+
const result = baseData.map((item) => {
|
|
154
|
+
return __spreadProps(__spreadValues({}, item), {
|
|
155
|
+
name: item[x_field],
|
|
156
|
+
value: item[metric[0]],
|
|
157
|
+
metricName: metric[0],
|
|
158
|
+
format: columnConfigMap[metric[0]]
|
|
159
|
+
});
|
|
160
|
+
}).filter((item) => useX.includes(item.name));
|
|
161
|
+
return count ? result.slice(0, count) : result;
|
|
162
|
+
}
|
|
163
|
+
}, [baseData, x_field, groupBys, metric, columnConfigMap, count]);
|
|
164
|
+
const yAxisFormatter = useMemo(() => {
|
|
165
|
+
var _a;
|
|
166
|
+
if (metric.length === 1) {
|
|
167
|
+
return (_a = columnConfigMap[metric[0]]) == null ? void 0 : _a.format;
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}, [metric, columnConfigMap]);
|
|
171
|
+
const series = useMemo(() => {
|
|
172
|
+
return legendNames.map((name) => {
|
|
173
|
+
return {
|
|
174
|
+
name,
|
|
175
|
+
type: "bar",
|
|
176
|
+
barMaxWidth: 20,
|
|
177
|
+
stack: "stack",
|
|
178
|
+
smooth: true,
|
|
179
|
+
showSymbol: false,
|
|
180
|
+
data: useX.map((item) => {
|
|
181
|
+
const itemData = chartData.find((d) => {
|
|
182
|
+
if (groupBys && groupBys.length > 1) {
|
|
183
|
+
return (d == null ? void 0 : d.name) === item + "," + name;
|
|
184
|
+
} else {
|
|
185
|
+
return (d == null ? void 0 : d.name) === item;
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
return itemData ? itemData.value : 0;
|
|
189
|
+
})
|
|
190
|
+
};
|
|
191
|
+
});
|
|
192
|
+
}, [chartData, metric]);
|
|
193
|
+
const grid = {
|
|
194
|
+
top: 10,
|
|
195
|
+
left: 0,
|
|
196
|
+
right: 10,
|
|
197
|
+
bottom: 40,
|
|
198
|
+
containLabel: true
|
|
199
|
+
};
|
|
200
|
+
const legend = {
|
|
201
|
+
bottom: 0,
|
|
202
|
+
type: "scroll"
|
|
203
|
+
};
|
|
204
|
+
const xAxis = {
|
|
205
|
+
type: "category",
|
|
206
|
+
data: useX,
|
|
207
|
+
axisLine: {
|
|
208
|
+
lineStyle: {
|
|
209
|
+
color: "#EBEEF4"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
axisLabel: {
|
|
213
|
+
color: "#9CA4B3",
|
|
214
|
+
fontSize: 12
|
|
215
|
+
},
|
|
216
|
+
axisTick: {
|
|
217
|
+
alignWithLabel: true
|
|
218
|
+
},
|
|
219
|
+
boundaryGap: true
|
|
220
|
+
};
|
|
221
|
+
const yAxis = {
|
|
222
|
+
type: "value",
|
|
223
|
+
splitNumber: 4,
|
|
224
|
+
// 设置Y轴坐标点数量
|
|
225
|
+
axisLine: {
|
|
226
|
+
show: true,
|
|
227
|
+
lineStyle: {
|
|
228
|
+
color: "#EBEEF4",
|
|
229
|
+
shadowOffsetY: -10,
|
|
230
|
+
shadowColor: "#EBEEF4"
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
axisLabel: {
|
|
234
|
+
color: "#999999",
|
|
235
|
+
fontSize: 12,
|
|
236
|
+
formatter: (value) => {
|
|
237
|
+
if (yAxisFormatter) {
|
|
238
|
+
if (yAxisFormatter === "currency") {
|
|
239
|
+
const [result2, unit2] = formatNumber(value, true);
|
|
240
|
+
return result2 + unit2;
|
|
241
|
+
}
|
|
242
|
+
if (yAxisFormatter === "percent") {
|
|
243
|
+
return new Decimal(value).mul(100) + "%";
|
|
244
|
+
}
|
|
245
|
+
return formatValue(value, yAxisFormatter);
|
|
246
|
+
}
|
|
247
|
+
const [result, unit] = formatNumber(value, true);
|
|
248
|
+
return result + unit;
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
splitLine: {
|
|
252
|
+
lineStyle: {
|
|
253
|
+
type: [2, 3],
|
|
254
|
+
// 虚线
|
|
255
|
+
color: "#E7E7E7"
|
|
256
|
+
// 背景线颜色
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
axisTick: {
|
|
260
|
+
show: true
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
const tooltipFormatter = (params) => {
|
|
264
|
+
var _a, _b;
|
|
265
|
+
const title = (_b = (_a = params[0]) == null ? void 0 : _a.axisValue) != null ? _b : "";
|
|
266
|
+
const filterParams = params.filter((f) => {
|
|
267
|
+
const { name, seriesName } = f;
|
|
268
|
+
const itemName = name + "," + seriesName;
|
|
269
|
+
if (name === "合计") {
|
|
270
|
+
return true;
|
|
271
|
+
} else if (chartData.some((dataItem) => {
|
|
272
|
+
return (dataItem == null ? void 0 : dataItem.name) === itemName || name === (dataItem == null ? void 0 : dataItem.name);
|
|
273
|
+
})) {
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
return false;
|
|
277
|
+
});
|
|
278
|
+
const tooltipDom = /* @__PURE__ */ React.createElement("div", { className: styles.tooltip }, /* @__PURE__ */ React.createElement("div", { className: styles.title }, title), /* @__PURE__ */ React.createElement("div", { className: styles.content }, filterParams.map((m) => {
|
|
279
|
+
var _a2;
|
|
280
|
+
const columnConfig = columnConfigMap[metric[0]];
|
|
281
|
+
const format = (_a2 = columnConfig == null ? void 0 : columnConfig.format) != null ? _a2 : "string";
|
|
282
|
+
const showValue = format === "currency" ? formatNumber(m.value, true) : formatValue(m.value, format);
|
|
283
|
+
const showValueText = showValue === "" || showValue[0] === "" ? "-" : showValue;
|
|
284
|
+
return /* @__PURE__ */ React.createElement("div", { className: styles.item, key: m.seriesName }, /* @__PURE__ */ React.createElement("div", { className: classNames(styles.point, styles.pointBar), style: { background: m.color } }), /* @__PURE__ */ React.createElement("div", { className: styles.category }, m.seriesName), /* @__PURE__ */ React.createElement("div", { className: styles.value }, showValueText));
|
|
285
|
+
})));
|
|
286
|
+
return ReactDOMServer.renderToStaticMarkup(tooltipDom);
|
|
287
|
+
};
|
|
288
|
+
const tooltip = {
|
|
289
|
+
trigger: "axis",
|
|
290
|
+
padding: 0,
|
|
291
|
+
confine: true,
|
|
292
|
+
enterable: true,
|
|
293
|
+
axisPointer: {
|
|
294
|
+
type: "shadow"
|
|
295
|
+
},
|
|
296
|
+
formatter: tooltipFormatter
|
|
297
|
+
};
|
|
298
|
+
const chartOptions = useMemo(() => {
|
|
299
|
+
return {
|
|
300
|
+
color: chartColors,
|
|
301
|
+
grid,
|
|
302
|
+
legend: __spreadProps(__spreadValues({}, legend), {
|
|
303
|
+
itemWidth: 10,
|
|
304
|
+
itemHeight: 10
|
|
305
|
+
}),
|
|
306
|
+
xAxis,
|
|
307
|
+
yAxis,
|
|
308
|
+
series,
|
|
309
|
+
tooltip
|
|
310
|
+
};
|
|
311
|
+
}, [series]);
|
|
312
|
+
useEffect(() => {
|
|
313
|
+
if (!chartContainerRef.current)
|
|
314
|
+
return;
|
|
315
|
+
let chart = chartInstanceRef.current;
|
|
316
|
+
if (!chart) {
|
|
317
|
+
chart = echarts.init(chartContainerRef.current);
|
|
318
|
+
chartInstanceRef.current = chart;
|
|
319
|
+
}
|
|
320
|
+
chart == null ? void 0 : chart.setOption(chartOptions, true);
|
|
321
|
+
return () => {
|
|
322
|
+
if (chartInstanceRef.current) {
|
|
323
|
+
chartInstanceRef.current.dispose();
|
|
324
|
+
chartInstanceRef.current = null;
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
}, [chartOptions]);
|
|
328
|
+
useEffect(() => {
|
|
329
|
+
const chartElement = chartContainerRef.current;
|
|
330
|
+
if (!chartElement)
|
|
331
|
+
return;
|
|
332
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
333
|
+
const chart = chartInstanceRef.current;
|
|
334
|
+
if (chart) {
|
|
335
|
+
chart.resize();
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
resizeObserver.observe(chartElement);
|
|
339
|
+
return () => {
|
|
340
|
+
resizeObserver.unobserve(chartElement);
|
|
341
|
+
resizeObserver.disconnect();
|
|
342
|
+
};
|
|
343
|
+
}, [chartData]);
|
|
344
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, chartData.length > 0 ? /* @__PURE__ */ React.createElement(
|
|
345
|
+
"div",
|
|
346
|
+
{
|
|
347
|
+
ref: chartContainerRef,
|
|
348
|
+
className: styles.echarts,
|
|
349
|
+
style: { width: "100%", height: height || "100%", minHeight: 220 }
|
|
350
|
+
}
|
|
351
|
+
) : /* @__PURE__ */ React.createElement(Empty, { className: styles.empty, description: "暂无数据", image: Empty.PRESENTED_IMAGE_SIMPLE }));
|
|
352
|
+
};
|
|
353
|
+
var BarProperty_default = BarProperty;
|
|
354
|
+
export {
|
|
355
|
+
BarProperty_default as default
|
|
356
|
+
};
|
|
357
|
+
//# sourceMappingURL=BarProperty.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/business/YkCharts/BarProperty.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * 用户分析-柱状图\n */\n\nimport { Empty } from 'antd';\nimport classNames from 'classnames';\nimport Decimal from 'decimal.js';\nimport * as echarts from 'echarts';\nimport React, { type FC, useEffect, useMemo, useRef } from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport { chartColors } from './constants';\nimport styles from './index.module.less';\nimport type { ColumnConfig, GroupByItem, TableData } from './typing';\nimport { formatNumber, formatValue } from './utils';\n\ntype RowItem = {\n [key: string]: number | string;\n};\n\ntype PageTypes = {\n count?: number;\n metric: string[];\n groupBys: GroupByItem[];\n tableData: TableData;\n baseData: RowItem[];\n columnConfigMap: { [key: string]: ColumnConfig };\n height?: number;\n};\n\n// 从 baseData 和 validGroupByKeys 中提取组合数据\nfunction extractCombinations(baseData: RowItem[], validGroupByKeys: string[]) {\n // 获取所有唯一的组合\n const combinations = new Set<string>();\n\n baseData.forEach((item) => {\n const combination = validGroupByKeys.map((key) => item[key]).join('|');\n combinations.add(combination);\n });\n\n // 转换为数组格式\n return Array.from(combinations).map((combination) => {\n return combination.split('|');\n });\n}\n\nconst BarProperty: FC<PageTypes> = ({\n count, // 指标显示数量\n metric, // 指标\n groupBys, // 维度\n tableData, // 表格数据\n baseData, // 基础数据\n columnConfigMap, // 列配置\n height,\n}) => {\n const { x_field } = tableData;\n const chartContainerRef = useRef<HTMLDivElement | null>(null);\n const chartInstanceRef = useRef<echarts.ECharts | null>(null);\n // var count = 0; // 用于限制指标数量\n // 获取图例名称\n const legendNames = useMemo(() => {\n if (groupBys && groupBys.length > 1) {\n const validGroups = groupBys.slice(1).filter((g) => Array.isArray(g.selected) && g.selected.length > 0);\n const arrays = validGroups.map((g) => g.selected);\n const product = arrays.reduce(\n (acc, curr) => {\n const res: any[] = [];\n acc.forEach((a) => {\n curr.forEach((b) => {\n res.push(Array.isArray(a) ? [...a, b] : [a, b]);\n });\n });\n return res;\n },\n [[]],\n );\n return product.map((arr) => arr.join(','));\n } else {\n return metric;\n }\n }, [groupBys, metric]);\n\n // 获取x轴\n const useX = useMemo(() => {\n // 当没有选维度时,x轴为合计\n let rows = [];\n let fieldType = 'string';\n if (groupBys.length === 0) {\n rows = baseData.map((item) => item[x_field]);\n rows = Array.from(new Set(rows)); // 去重\n fieldType = columnConfigMap[x_field]?.type || 'string';\n } else {\n // 当选一个维度时,x轴为维度,按照 options 的顺序排序\n rows = groupBys[0].options.filter((option) => groupBys[0].selected.includes(option));\n fieldType = columnConfigMap[groupBys[0].key]?.type || 'string';\n }\n if (fieldType === 'number') {\n rows = rows.sort((a: string | number, b: string | number) => {\n return Number(a) > Number(b) ? 1 : -1;\n });\n }\n return count ? rows.slice(0, count) : rows;\n }, [baseData, groupBys, x_field, count]);\n\n const validGroupByKeys = useMemo(() => {\n return groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0).map((g) => g.key);\n }, [groupBys]);\n\n const chartData = useMemo(() => {\n // 存在多个维度\n if (groupBys && groupBys.length > 1) {\n // 如果存在已选维度为空,则不显示图表\n if (Array.isArray(groupBys) && groupBys.some((g) => Array.isArray(g.selected) && g.selected.length === 0)) {\n return [];\n }\n const validGroups = groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0);\n const arrays = validGroups.map((g) => g.selected);\n const product = arrays.reduce(\n (acc, curr) => {\n const res: any[] = [];\n acc.forEach((a) => {\n curr.forEach((b) => {\n res.push(Array.isArray(a) ? [...a, b] : [a, b]);\n });\n });\n return res;\n },\n [[]],\n );\n const productResult = extractCombinations(baseData, validGroupByKeys);\n const result = productResult\n .map((arr) => {\n const item = baseData.find((d) => {\n return arr.every((a: string, i: number) => {\n return d[groupBys[i].key] === a;\n });\n });\n if (!item) return null;\n return {\n ...item,\n name: arr.join(','),\n value: item[metric[0]],\n metricName: metric[0],\n format: columnConfigMap[metric[0]],\n };\n })\n .filter(Boolean);\n\n return count ? result.slice(0, count) : result;\n } else if (groupBys && groupBys.length === 1) {\n // 存在一个维度\n const selected = groupBys[0].selected;\n const result = selected\n .map((s) => {\n const item = baseData.find((d) => d[groupBys[0].key] === s);\n if (!item) return null;\n return {\n ...item,\n name: item[groupBys[0].key],\n value: item[metric[0]],\n metricName: metric[0],\n format: columnConfigMap[metric[0]],\n };\n })\n .filter((item) => (item?.name ? useX.includes(item?.name) : true));\n return count ? result.slice(0, count) : result;\n } else {\n // 不存在维度\n const result = baseData\n .map((item) => {\n return {\n ...item,\n name: item[x_field],\n value: item[metric[0]],\n metricName: metric[0],\n format: columnConfigMap[metric[0]],\n };\n })\n .filter((item) => useX.includes(item.name));\n return count ? result.slice(0, count) : result;\n }\n }, [baseData, x_field, groupBys, metric, columnConfigMap, count]);\n\n // 获取y轴的格式化方式\n const yAxisFormatter = useMemo(() => {\n if (metric.length === 1) {\n return columnConfigMap[metric[0]]?.format;\n }\n return null;\n }, [metric, columnConfigMap]);\n\n // 获取series\n const series = useMemo(() => {\n return legendNames.map((name) => {\n return {\n name: name,\n type: 'bar',\n barMaxWidth: 20,\n stack: 'stack',\n smooth: true,\n showSymbol: false,\n data: useX.map((item) => {\n const itemData = chartData.find((d) => {\n if (groupBys && groupBys.length > 1) {\n return d?.name === item + ',' + name;\n } else {\n return d?.name === item;\n }\n });\n return itemData ? itemData.value : 0;\n }),\n };\n });\n }, [chartData, metric]);\n\n const grid = {\n top: 10,\n left: 0,\n right: 10,\n bottom: 40,\n containLabel: true,\n };\n const legend = {\n bottom: 0,\n type: 'scroll',\n };\n const xAxis = {\n type: 'category',\n data: useX,\n axisLine: {\n lineStyle: {\n color: '#EBEEF4',\n },\n },\n axisLabel: {\n color: '#9CA4B3',\n fontSize: 12,\n },\n axisTick: {\n alignWithLabel: true,\n },\n boundaryGap: true,\n };\n const yAxis = {\n type: 'value',\n splitNumber: 4, // 设置Y轴坐标点数量\n axisLine: {\n show: true,\n lineStyle: {\n color: '#EBEEF4',\n shadowOffsetY: -10,\n shadowColor: '#EBEEF4',\n },\n },\n axisLabel: {\n color: '#999999',\n fontSize: 12,\n formatter: (value: number) => {\n // 目前只有一个指标时, Y轴进行格式化\n if (yAxisFormatter) {\n if (yAxisFormatter === 'currency') {\n const [result, unit] = formatNumber(value, true);\n return result + unit;\n }\n if (yAxisFormatter === 'percent') {\n return new Decimal(value).mul(100) + '%';\n }\n return formatValue(value, yAxisFormatter);\n }\n const [result, unit] = formatNumber(value, true);\n return result + unit;\n },\n },\n splitLine: {\n lineStyle: {\n type: [2, 3], // 虚线\n color: '#E7E7E7', // 背景线颜色\n },\n },\n axisTick: {\n show: true,\n },\n };\n const tooltipFormatter = (params: any) => {\n const title = params[0]?.axisValue ?? '';\n const filterParams = params.filter((f: any) => {\n const { name, seriesName } = f;\n const itemName = name + ',' + seriesName;\n if (name === '合计') {\n return true;\n } else if (\n chartData.some((dataItem) => {\n return dataItem?.name === itemName || name === dataItem?.name;\n })\n ) {\n return true;\n }\n return false;\n });\n const tooltipDom = (\n <div className={styles.tooltip}>\n <div className={styles.title}>{title}</div>\n <div className={styles.content}>\n {filterParams.map((m: any) => {\n const columnConfig = columnConfigMap[metric[0]];\n const format = columnConfig?.format ?? 'string'; // 使用可选链和默认值\n const showValue = format === 'currency' ? formatNumber(m.value, true) : formatValue(m.value, format);\n const showValueText = showValue === '' || showValue[0] === '' ? '-' : showValue;\n return (\n <div className={styles.item} key={m.seriesName}>\n <div className={classNames(styles.point, styles.pointBar)} style={{ background: m.color }}></div>\n <div className={styles.category}>{m.seriesName}</div>\n <div className={styles.value}>{showValueText}</div>\n </div>\n );\n })}\n </div>\n </div>\n );\n return ReactDOMServer.renderToStaticMarkup(tooltipDom);\n };\n const tooltip = {\n trigger: 'axis',\n padding: 0,\n confine: true,\n enterable: true,\n axisPointer: {\n type: 'shadow',\n },\n formatter: tooltipFormatter,\n };\n\n // 图表配置\n const chartOptions = useMemo(() => {\n return {\n color: chartColors,\n grid,\n legend: {\n ...legend,\n itemWidth: 10,\n itemHeight: 10,\n },\n xAxis,\n yAxis,\n series,\n tooltip,\n };\n }, [series]);\n\n // 初始化图表\n useEffect(() => {\n if (!chartContainerRef.current) return;\n let chart = chartInstanceRef.current;\n if (!chart) {\n chart = echarts.init(chartContainerRef.current);\n chartInstanceRef.current = chart;\n }\n chart?.setOption(chartOptions, true);\n return () => {\n if (chartInstanceRef.current) {\n chartInstanceRef.current.dispose();\n chartInstanceRef.current = null;\n }\n };\n }, [chartOptions]);\n\n // 监听图表容器大小变化\n useEffect(() => {\n const chartElement = chartContainerRef.current;\n if (!chartElement) return;\n const resizeObserver = new ResizeObserver(() => {\n const chart = chartInstanceRef.current;\n if (chart) {\n chart.resize();\n }\n });\n resizeObserver.observe(chartElement);\n return () => {\n resizeObserver.unobserve(chartElement);\n resizeObserver.disconnect();\n };\n }, [chartData]);\n\n return (\n <>\n {chartData.length > 0 ? (\n <div\n ref={chartContainerRef}\n className={styles.echarts}\n style={{ width: '100%', height: height || '100%', minHeight: 220 }}\n ></div>\n ) : (\n <Empty className={styles.empty} description='暂无数据' image={Empty.PRESENTED_IMAGE_SIMPLE} />\n )}\n </>\n );\n};\n\nexport default BarProperty;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["result", "unit", "_a"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 基础分析-合计且有维度时的柱状图
|
|
3
|
+
*/
|
|
4
|
+
import { type FC } from 'react';
|
|
5
|
+
import type { ColumnConfig, GroupByItem, TableData } from './typing';
|
|
6
|
+
type RowItem = {
|
|
7
|
+
[key: string]: number | string;
|
|
8
|
+
};
|
|
9
|
+
type PageTypes = {
|
|
10
|
+
count?: number;
|
|
11
|
+
metric: string[];
|
|
12
|
+
groupBys: GroupByItem[];
|
|
13
|
+
tableData: TableData;
|
|
14
|
+
baseData: RowItem[];
|
|
15
|
+
columnConfigMap: {
|
|
16
|
+
[key: string]: ColumnConfig;
|
|
17
|
+
};
|
|
18
|
+
height?: number;
|
|
19
|
+
};
|
|
20
|
+
declare const BarTotal: FC<PageTypes>;
|
|
21
|
+
export default BarTotal;
|