@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.
Files changed (157) hide show
  1. package/@Docs-yoka/exports.generated.md +6 -9
  2. package/README.md +39 -12
  3. package/dist/es/assets/image/skills.zip +0 -0
  4. package/dist/es/business/Empty/index.js.map +1 -1
  5. package/dist/es/business/YkCharts/Area.d.ts +18 -0
  6. package/dist/es/business/YkCharts/Area.js +336 -0
  7. package/dist/es/business/YkCharts/Area.js.map +7 -0
  8. package/dist/es/business/YkCharts/Bar.d.ts +21 -0
  9. package/dist/es/business/YkCharts/Bar.js +316 -0
  10. package/dist/es/business/YkCharts/Bar.js.map +7 -0
  11. package/dist/es/business/YkCharts/BarProperty.d.ts +21 -0
  12. package/dist/es/business/YkCharts/BarProperty.js +357 -0
  13. package/dist/es/business/YkCharts/BarProperty.js.map +7 -0
  14. package/dist/es/business/YkCharts/BarTotal.d.ts +21 -0
  15. package/dist/es/business/YkCharts/BarTotal.js +288 -0
  16. package/dist/es/business/YkCharts/BarTotal.js.map +7 -0
  17. package/dist/es/business/YkCharts/Line.d.ts +21 -0
  18. package/dist/es/business/YkCharts/Line.js +342 -0
  19. package/dist/es/business/YkCharts/Line.js.map +7 -0
  20. package/dist/es/business/YkCharts/Pie.d.ts +19 -0
  21. package/dist/es/business/YkCharts/Pie.js +107 -0
  22. package/dist/es/business/YkCharts/Pie.js.map +7 -0
  23. package/dist/es/business/YkCharts/PieProperty.d.ts +18 -0
  24. package/dist/es/business/YkCharts/PieProperty.js +180 -0
  25. package/dist/es/business/YkCharts/PieProperty.js.map +7 -0
  26. package/dist/es/business/YkCharts/Pies.d.ts +26 -0
  27. package/dist/es/business/YkCharts/Pies.js +348 -0
  28. package/dist/es/business/YkCharts/Pies.js.map +7 -0
  29. package/dist/es/business/YkCharts/constants.d.ts +1 -0
  30. package/dist/es/business/YkCharts/constants.js +47 -0
  31. package/dist/es/business/YkCharts/constants.js.map +7 -0
  32. package/dist/es/business/YkCharts/hooks.d.ts +4 -0
  33. package/dist/es/business/YkCharts/hooks.js +37 -0
  34. package/dist/es/business/YkCharts/hooks.js.map +7 -0
  35. package/dist/es/business/YkCharts/index.d.ts +9 -0
  36. package/dist/es/business/YkCharts/index.js +20 -0
  37. package/dist/es/business/YkCharts/index.js.map +7 -0
  38. package/dist/es/business/YkCharts/index.module.less +164 -0
  39. package/dist/es/business/YkCharts/tooltip.less +92 -0
  40. package/dist/es/business/YkCharts/transformData.js +16 -0
  41. package/dist/es/business/YkCharts/transformData.js.map +7 -0
  42. package/dist/es/business/YkCharts/typing.d.ts +74 -0
  43. package/dist/es/business/YkCharts/typing.js +1 -0
  44. package/dist/es/business/YkCharts/typing.js.map +7 -0
  45. package/dist/es/business/YkCharts/utils.d.ts +4 -0
  46. package/dist/es/business/YkCharts/utils.js +109 -0
  47. package/dist/es/business/YkCharts/utils.js.map +7 -0
  48. package/dist/es/business/YkCharts/variables.less +13 -0
  49. package/dist/es/business/YkLoginModule/SmsLoginForm.d.ts +25 -0
  50. package/dist/es/business/YkLoginModule/SmsLoginForm.js +178 -0
  51. package/dist/es/business/YkLoginModule/SmsLoginForm.js.map +7 -0
  52. package/dist/es/business/YkLoginModule/index.d.ts +48 -0
  53. package/dist/es/business/YkLoginModule/index.js +198 -0
  54. package/dist/es/business/YkLoginModule/index.js.map +7 -0
  55. package/dist/es/business/YkLoginModule/styles.module.less +169 -0
  56. package/dist/es/business/YkSqlEdit/code-mirror-custom.module.less +154 -0
  57. package/dist/es/business/YkSqlEdit/index.d.ts +20 -0
  58. package/dist/es/business/YkSqlEdit/index.js +180 -0
  59. package/dist/es/business/YkSqlEdit/index.js.map +7 -0
  60. package/dist/es/business/YkSqlEdit/sql-language.d.ts +11 -0
  61. package/dist/es/business/YkSqlEdit/sql-language.js +1460 -0
  62. package/dist/es/business/YkSqlEdit/sql-language.js.map +7 -0
  63. package/dist/es/components/YKMarkdown/index.d.ts +11 -0
  64. package/dist/es/components/YKMarkdown/index.js +236 -0
  65. package/dist/es/components/YKMarkdown/index.js.map +7 -0
  66. package/dist/es/components/YKMarkdown/index.module.less +83 -0
  67. package/dist/es/components/YkDateRangePicker/YkDateRangePicker.mdx +3 -3
  68. package/dist/es/creative/GlassSegmentedRadio/index.d.ts +1 -1
  69. package/dist/es/creative/SkillsWriter/index.d.ts +3 -0
  70. package/dist/es/creative/SkillsWriter/index.js +191 -0
  71. package/dist/es/creative/SkillsWriter/index.js.map +7 -0
  72. package/dist/es/creative/SkillsWriter/index.module.less +21 -0
  73. package/dist/es/index.d.ts +4 -2
  74. package/dist/es/index.js +80 -76
  75. package/dist/es/index.js.map +2 -2
  76. package/dist/es/index.less +8 -1
  77. package/dist/es/utils/ykStorybookDoc.d.ts +15 -0
  78. package/dist/es/utils/ykStorybookDoc.js +24 -2
  79. package/dist/es/utils/ykStorybookDoc.js.map +2 -2
  80. package/dist/lib/assets/image/skills.zip +0 -0
  81. package/dist/lib/business/Empty/index.js.map +1 -1
  82. package/dist/lib/business/YkCharts/Area.d.ts +18 -0
  83. package/dist/lib/business/YkCharts/Area.js +346 -0
  84. package/dist/lib/business/YkCharts/Area.js.map +7 -0
  85. package/dist/lib/business/YkCharts/Bar.d.ts +21 -0
  86. package/dist/lib/business/YkCharts/Bar.js +323 -0
  87. package/dist/lib/business/YkCharts/Bar.js.map +7 -0
  88. package/dist/lib/business/YkCharts/BarProperty.d.ts +21 -0
  89. package/dist/lib/business/YkCharts/BarProperty.js +370 -0
  90. package/dist/lib/business/YkCharts/BarProperty.js.map +7 -0
  91. package/dist/lib/business/YkCharts/BarTotal.d.ts +21 -0
  92. package/dist/lib/business/YkCharts/BarTotal.js +295 -0
  93. package/dist/lib/business/YkCharts/BarTotal.js.map +7 -0
  94. package/dist/lib/business/YkCharts/Line.d.ts +21 -0
  95. package/dist/lib/business/YkCharts/Line.js +349 -0
  96. package/dist/lib/business/YkCharts/Line.js.map +7 -0
  97. package/dist/lib/business/YkCharts/Pie.d.ts +19 -0
  98. package/dist/lib/business/YkCharts/Pie.js +117 -0
  99. package/dist/lib/business/YkCharts/Pie.js.map +7 -0
  100. package/dist/lib/business/YkCharts/PieProperty.d.ts +18 -0
  101. package/dist/lib/business/YkCharts/PieProperty.js +193 -0
  102. package/dist/lib/business/YkCharts/PieProperty.js.map +7 -0
  103. package/dist/lib/business/YkCharts/Pies.d.ts +26 -0
  104. package/dist/lib/business/YkCharts/Pies.js +337 -0
  105. package/dist/lib/business/YkCharts/Pies.js.map +7 -0
  106. package/dist/lib/business/YkCharts/constants.d.ts +1 -0
  107. package/dist/lib/business/YkCharts/constants.js +71 -0
  108. package/dist/lib/business/YkCharts/constants.js.map +7 -0
  109. package/dist/lib/business/YkCharts/hooks.d.ts +4 -0
  110. package/dist/lib/business/YkCharts/hooks.js +62 -0
  111. package/dist/lib/business/YkCharts/hooks.js.map +7 -0
  112. package/dist/lib/business/YkCharts/index.d.ts +9 -0
  113. package/dist/lib/business/YkCharts/index.js +61 -0
  114. package/dist/lib/business/YkCharts/index.js.map +7 -0
  115. package/dist/lib/business/YkCharts/index.module.less +164 -0
  116. package/dist/lib/business/YkCharts/tooltip.less +92 -0
  117. package/dist/lib/business/YkCharts/transformData.js +40 -0
  118. package/dist/lib/business/YkCharts/transformData.js.map +7 -0
  119. package/dist/lib/business/YkCharts/typing.d.ts +74 -0
  120. package/dist/lib/business/YkCharts/typing.js +18 -0
  121. package/dist/lib/business/YkCharts/typing.js.map +7 -0
  122. package/dist/lib/business/YkCharts/utils.d.ts +4 -0
  123. package/dist/lib/business/YkCharts/utils.js +143 -0
  124. package/dist/lib/business/YkCharts/utils.js.map +7 -0
  125. package/dist/lib/business/YkCharts/variables.less +13 -0
  126. package/dist/lib/business/YkLoginModule/SmsLoginForm.d.ts +25 -0
  127. package/dist/lib/business/YkLoginModule/SmsLoginForm.js +171 -0
  128. package/dist/lib/business/YkLoginModule/SmsLoginForm.js.map +7 -0
  129. package/dist/lib/business/YkLoginModule/index.d.ts +48 -0
  130. package/dist/lib/business/YkLoginModule/index.js +206 -0
  131. package/dist/lib/business/YkLoginModule/index.js.map +7 -0
  132. package/dist/lib/business/YkLoginModule/styles.module.less +169 -0
  133. package/dist/lib/business/YkSqlEdit/code-mirror-custom.module.less +154 -0
  134. package/dist/lib/business/YkSqlEdit/index.d.ts +20 -0
  135. package/dist/lib/business/YkSqlEdit/index.js +202 -0
  136. package/dist/lib/business/YkSqlEdit/index.js.map +7 -0
  137. package/dist/lib/business/YkSqlEdit/sql-language.d.ts +11 -0
  138. package/dist/lib/business/YkSqlEdit/sql-language.js +1493 -0
  139. package/dist/lib/business/YkSqlEdit/sql-language.js.map +7 -0
  140. package/dist/lib/components/YKMarkdown/index.d.ts +11 -0
  141. package/dist/lib/components/YKMarkdown/index.js +188 -0
  142. package/dist/lib/components/YKMarkdown/index.js.map +7 -0
  143. package/dist/lib/components/YKMarkdown/index.module.less +83 -0
  144. package/dist/lib/components/YkDateRangePicker/YkDateRangePicker.mdx +3 -3
  145. package/dist/lib/creative/GlassSegmentedRadio/index.d.ts +1 -1
  146. package/dist/lib/creative/SkillsWriter/index.d.ts +3 -0
  147. package/dist/lib/creative/SkillsWriter/index.js +200 -0
  148. package/dist/lib/creative/SkillsWriter/index.js.map +7 -0
  149. package/dist/lib/creative/SkillsWriter/index.module.less +21 -0
  150. package/dist/lib/index.d.ts +4 -2
  151. package/dist/lib/index.js +6 -0
  152. package/dist/lib/index.js.map +2 -2
  153. package/dist/lib/index.less +8 -1
  154. package/dist/lib/utils/ykStorybookDoc.d.ts +15 -0
  155. package/dist/lib/utils/ykStorybookDoc.js +23 -1
  156. package/dist/lib/utils/ykStorybookDoc.js.map +2 -2
  157. package/package.json +16 -2
@@ -0,0 +1,370 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/business/YkCharts/BarProperty.tsx
30
+ var BarProperty_exports = {};
31
+ __export(BarProperty_exports, {
32
+ default: () => BarProperty_default
33
+ });
34
+ module.exports = __toCommonJS(BarProperty_exports);
35
+ var import_antd = require("antd");
36
+ var import_classnames = __toESM(require("classnames"));
37
+ var import_decimal = __toESM(require("decimal.js"));
38
+ var echarts = __toESM(require("echarts"));
39
+ var import_react = __toESM(require("react"));
40
+ var import_server = __toESM(require("react-dom/server"));
41
+ var import_constants = require("./constants");
42
+ var import_index_module = __toESM(require("./index.module.less"));
43
+ var import_utils = require("./utils");
44
+ function extractCombinations(baseData, validGroupByKeys) {
45
+ const combinations = /* @__PURE__ */ new Set();
46
+ baseData.forEach((item) => {
47
+ const combination = validGroupByKeys.map((key) => item[key]).join("|");
48
+ combinations.add(combination);
49
+ });
50
+ return Array.from(combinations).map((combination) => {
51
+ return combination.split("|");
52
+ });
53
+ }
54
+ var BarProperty = ({
55
+ count,
56
+ // 指标显示数量
57
+ metric,
58
+ // 指标
59
+ groupBys,
60
+ // 维度
61
+ tableData,
62
+ // 表格数据
63
+ baseData,
64
+ // 基础数据
65
+ columnConfigMap,
66
+ // 列配置
67
+ height
68
+ }) => {
69
+ const { x_field } = tableData;
70
+ const chartContainerRef = (0, import_react.useRef)(null);
71
+ const chartInstanceRef = (0, import_react.useRef)(null);
72
+ const legendNames = (0, import_react.useMemo)(() => {
73
+ if (groupBys && groupBys.length > 1) {
74
+ const validGroups = groupBys.slice(1).filter((g) => Array.isArray(g.selected) && g.selected.length > 0);
75
+ const arrays = validGroups.map((g) => g.selected);
76
+ const product = arrays.reduce(
77
+ (acc, curr) => {
78
+ const res = [];
79
+ acc.forEach((a) => {
80
+ curr.forEach((b) => {
81
+ res.push(Array.isArray(a) ? [...a, b] : [a, b]);
82
+ });
83
+ });
84
+ return res;
85
+ },
86
+ [[]]
87
+ );
88
+ return product.map((arr) => arr.join(","));
89
+ } else {
90
+ return metric;
91
+ }
92
+ }, [groupBys, metric]);
93
+ const useX = (0, import_react.useMemo)(() => {
94
+ var _a, _b;
95
+ let rows = [];
96
+ let fieldType = "string";
97
+ if (groupBys.length === 0) {
98
+ rows = baseData.map((item) => item[x_field]);
99
+ rows = Array.from(new Set(rows));
100
+ fieldType = ((_a = columnConfigMap[x_field]) == null ? void 0 : _a.type) || "string";
101
+ } else {
102
+ rows = groupBys[0].options.filter((option) => groupBys[0].selected.includes(option));
103
+ fieldType = ((_b = columnConfigMap[groupBys[0].key]) == null ? void 0 : _b.type) || "string";
104
+ }
105
+ if (fieldType === "number") {
106
+ rows = rows.sort((a, b) => {
107
+ return Number(a) > Number(b) ? 1 : -1;
108
+ });
109
+ }
110
+ return count ? rows.slice(0, count) : rows;
111
+ }, [baseData, groupBys, x_field, count]);
112
+ const validGroupByKeys = (0, import_react.useMemo)(() => {
113
+ return groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0).map((g) => g.key);
114
+ }, [groupBys]);
115
+ const chartData = (0, import_react.useMemo)(() => {
116
+ if (groupBys && groupBys.length > 1) {
117
+ if (Array.isArray(groupBys) && groupBys.some((g) => Array.isArray(g.selected) && g.selected.length === 0)) {
118
+ return [];
119
+ }
120
+ const validGroups = groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0);
121
+ const arrays = validGroups.map((g) => g.selected);
122
+ const product = arrays.reduce(
123
+ (acc, curr) => {
124
+ const res = [];
125
+ acc.forEach((a) => {
126
+ curr.forEach((b) => {
127
+ res.push(Array.isArray(a) ? [...a, b] : [a, b]);
128
+ });
129
+ });
130
+ return res;
131
+ },
132
+ [[]]
133
+ );
134
+ const productResult = extractCombinations(baseData, validGroupByKeys);
135
+ const result = productResult.map((arr) => {
136
+ const item = baseData.find((d) => {
137
+ return arr.every((a, i) => {
138
+ return d[groupBys[i].key] === a;
139
+ });
140
+ });
141
+ if (!item)
142
+ return null;
143
+ return {
144
+ ...item,
145
+ name: arr.join(","),
146
+ value: item[metric[0]],
147
+ metricName: metric[0],
148
+ format: columnConfigMap[metric[0]]
149
+ };
150
+ }).filter(Boolean);
151
+ return count ? result.slice(0, count) : result;
152
+ } else if (groupBys && groupBys.length === 1) {
153
+ const selected = groupBys[0].selected;
154
+ const result = selected.map((s) => {
155
+ const item = baseData.find((d) => d[groupBys[0].key] === s);
156
+ if (!item)
157
+ return null;
158
+ return {
159
+ ...item,
160
+ name: item[groupBys[0].key],
161
+ value: item[metric[0]],
162
+ metricName: metric[0],
163
+ format: columnConfigMap[metric[0]]
164
+ };
165
+ }).filter((item) => (item == null ? void 0 : item.name) ? useX.includes(item == null ? void 0 : item.name) : true);
166
+ return count ? result.slice(0, count) : result;
167
+ } else {
168
+ const result = baseData.map((item) => {
169
+ return {
170
+ ...item,
171
+ name: item[x_field],
172
+ value: item[metric[0]],
173
+ metricName: metric[0],
174
+ format: columnConfigMap[metric[0]]
175
+ };
176
+ }).filter((item) => useX.includes(item.name));
177
+ return count ? result.slice(0, count) : result;
178
+ }
179
+ }, [baseData, x_field, groupBys, metric, columnConfigMap, count]);
180
+ const yAxisFormatter = (0, import_react.useMemo)(() => {
181
+ var _a;
182
+ if (metric.length === 1) {
183
+ return (_a = columnConfigMap[metric[0]]) == null ? void 0 : _a.format;
184
+ }
185
+ return null;
186
+ }, [metric, columnConfigMap]);
187
+ const series = (0, import_react.useMemo)(() => {
188
+ return legendNames.map((name) => {
189
+ return {
190
+ name,
191
+ type: "bar",
192
+ barMaxWidth: 20,
193
+ stack: "stack",
194
+ smooth: true,
195
+ showSymbol: false,
196
+ data: useX.map((item) => {
197
+ const itemData = chartData.find((d) => {
198
+ if (groupBys && groupBys.length > 1) {
199
+ return (d == null ? void 0 : d.name) === item + "," + name;
200
+ } else {
201
+ return (d == null ? void 0 : d.name) === item;
202
+ }
203
+ });
204
+ return itemData ? itemData.value : 0;
205
+ })
206
+ };
207
+ });
208
+ }, [chartData, metric]);
209
+ const grid = {
210
+ top: 10,
211
+ left: 0,
212
+ right: 10,
213
+ bottom: 40,
214
+ containLabel: true
215
+ };
216
+ const legend = {
217
+ bottom: 0,
218
+ type: "scroll"
219
+ };
220
+ const xAxis = {
221
+ type: "category",
222
+ data: useX,
223
+ axisLine: {
224
+ lineStyle: {
225
+ color: "#EBEEF4"
226
+ }
227
+ },
228
+ axisLabel: {
229
+ color: "#9CA4B3",
230
+ fontSize: 12
231
+ },
232
+ axisTick: {
233
+ alignWithLabel: true
234
+ },
235
+ boundaryGap: true
236
+ };
237
+ const yAxis = {
238
+ type: "value",
239
+ splitNumber: 4,
240
+ // 设置Y轴坐标点数量
241
+ axisLine: {
242
+ show: true,
243
+ lineStyle: {
244
+ color: "#EBEEF4",
245
+ shadowOffsetY: -10,
246
+ shadowColor: "#EBEEF4"
247
+ }
248
+ },
249
+ axisLabel: {
250
+ color: "#999999",
251
+ fontSize: 12,
252
+ formatter: (value) => {
253
+ if (yAxisFormatter) {
254
+ if (yAxisFormatter === "currency") {
255
+ const [result2, unit2] = (0, import_utils.formatNumber)(value, true);
256
+ return result2 + unit2;
257
+ }
258
+ if (yAxisFormatter === "percent") {
259
+ return new import_decimal.default(value).mul(100) + "%";
260
+ }
261
+ return (0, import_utils.formatValue)(value, yAxisFormatter);
262
+ }
263
+ const [result, unit] = (0, import_utils.formatNumber)(value, true);
264
+ return result + unit;
265
+ }
266
+ },
267
+ splitLine: {
268
+ lineStyle: {
269
+ type: [2, 3],
270
+ // 虚线
271
+ color: "#E7E7E7"
272
+ // 背景线颜色
273
+ }
274
+ },
275
+ axisTick: {
276
+ show: true
277
+ }
278
+ };
279
+ const tooltipFormatter = (params) => {
280
+ var _a;
281
+ const title = ((_a = params[0]) == null ? void 0 : _a.axisValue) ?? "";
282
+ const filterParams = params.filter((f) => {
283
+ const { name, seriesName } = f;
284
+ const itemName = name + "," + seriesName;
285
+ if (name === "合计") {
286
+ return true;
287
+ } else if (chartData.some((dataItem) => {
288
+ return (dataItem == null ? void 0 : dataItem.name) === itemName || name === (dataItem == null ? void 0 : dataItem.name);
289
+ })) {
290
+ return true;
291
+ }
292
+ return false;
293
+ });
294
+ const tooltipDom = /* @__PURE__ */ import_react.default.createElement("div", { className: import_index_module.default.tooltip }, /* @__PURE__ */ import_react.default.createElement("div", { className: import_index_module.default.title }, title), /* @__PURE__ */ import_react.default.createElement("div", { className: import_index_module.default.content }, filterParams.map((m) => {
295
+ const columnConfig = columnConfigMap[metric[0]];
296
+ const format = (columnConfig == null ? void 0 : columnConfig.format) ?? "string";
297
+ const showValue = format === "currency" ? (0, import_utils.formatNumber)(m.value, true) : (0, import_utils.formatValue)(m.value, format);
298
+ const showValueText = showValue === "" || showValue[0] === "" ? "-" : showValue;
299
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: import_index_module.default.item, key: m.seriesName }, /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)(import_index_module.default.point, import_index_module.default.pointBar), style: { background: m.color } }), /* @__PURE__ */ import_react.default.createElement("div", { className: import_index_module.default.category }, m.seriesName), /* @__PURE__ */ import_react.default.createElement("div", { className: import_index_module.default.value }, showValueText));
300
+ })));
301
+ return import_server.default.renderToStaticMarkup(tooltipDom);
302
+ };
303
+ const tooltip = {
304
+ trigger: "axis",
305
+ padding: 0,
306
+ confine: true,
307
+ enterable: true,
308
+ axisPointer: {
309
+ type: "shadow"
310
+ },
311
+ formatter: tooltipFormatter
312
+ };
313
+ const chartOptions = (0, import_react.useMemo)(() => {
314
+ return {
315
+ color: import_constants.chartColors,
316
+ grid,
317
+ legend: {
318
+ ...legend,
319
+ itemWidth: 10,
320
+ itemHeight: 10
321
+ },
322
+ xAxis,
323
+ yAxis,
324
+ series,
325
+ tooltip
326
+ };
327
+ }, [series]);
328
+ (0, import_react.useEffect)(() => {
329
+ if (!chartContainerRef.current)
330
+ return;
331
+ let chart = chartInstanceRef.current;
332
+ if (!chart) {
333
+ chart = echarts.init(chartContainerRef.current);
334
+ chartInstanceRef.current = chart;
335
+ }
336
+ chart == null ? void 0 : chart.setOption(chartOptions, true);
337
+ return () => {
338
+ if (chartInstanceRef.current) {
339
+ chartInstanceRef.current.dispose();
340
+ chartInstanceRef.current = null;
341
+ }
342
+ };
343
+ }, [chartOptions]);
344
+ (0, import_react.useEffect)(() => {
345
+ const chartElement = chartContainerRef.current;
346
+ if (!chartElement)
347
+ return;
348
+ const resizeObserver = new ResizeObserver(() => {
349
+ const chart = chartInstanceRef.current;
350
+ if (chart) {
351
+ chart.resize();
352
+ }
353
+ });
354
+ resizeObserver.observe(chartElement);
355
+ return () => {
356
+ resizeObserver.unobserve(chartElement);
357
+ resizeObserver.disconnect();
358
+ };
359
+ }, [chartData]);
360
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, chartData.length > 0 ? /* @__PURE__ */ import_react.default.createElement(
361
+ "div",
362
+ {
363
+ ref: chartContainerRef,
364
+ className: import_index_module.default.echarts,
365
+ style: { width: "100%", height: height || "100%", minHeight: 220 }
366
+ }
367
+ ) : /* @__PURE__ */ import_react.default.createElement(import_antd.Empty, { className: import_index_module.default.empty, description: "暂无数据", image: import_antd.Empty.PRESENTED_IMAGE_SIMPLE }));
368
+ };
369
+ var BarProperty_default = BarProperty;
370
+ //# 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", "Decimal", "React", "styles", "classNames", "ReactDOMServer"]
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;