@zgfe/modules-attribution 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/esm/components/common/index.d.ts +6 -0
- package/dist/esm/components/common/index.js +21 -0
- package/dist/esm/components/common/styles/index.less +27 -0
- package/dist/esm/components/index.d.ts +6 -0
- package/dist/esm/components/index.js +6 -0
- package/dist/esm/components/option/index.d.ts +5 -0
- package/dist/esm/components/option/index.js +199 -0
- package/dist/esm/components/option/styles/index.less +17 -0
- package/dist/esm/components/option/types.d.ts +9 -0
- package/dist/esm/components/option/types.js +1 -0
- package/dist/esm/components/renderContent/index.d.ts +5 -0
- package/dist/esm/components/renderContent/index.js +92 -0
- package/dist/esm/components/renderContent/styles/index.less +21 -0
- package/dist/esm/components/renderContent/types.d.ts +15 -0
- package/dist/esm/components/renderContent/types.js +1 -0
- package/dist/esm/components/searchPanel/index.d.ts +5 -0
- package/dist/esm/components/searchPanel/index.js +122 -0
- package/dist/esm/components/searchPanel/styles/index.less +38 -0
- package/dist/esm/components/searchPanel/types.d.ts +10 -0
- package/dist/esm/components/searchPanel/types.js +1 -0
- package/dist/esm/components/showList/index.d.ts +10 -0
- package/dist/esm/components/showList/index.js +92 -0
- package/dist/esm/components/showList/listPanel.d.ts +9 -0
- package/dist/esm/components/showList/listPanel.js +118 -0
- package/dist/esm/components/showList/styles/index.less +75 -0
- package/dist/esm/components/showList/types.d.ts +9 -0
- package/dist/esm/components/showList/types.js +1 -0
- package/dist/esm/components/table/index.d.ts +5 -0
- package/dist/esm/components/table/index.js +194 -0
- package/dist/esm/components/table/styles/index.less +12 -0
- package/dist/esm/components/table/types.d.ts +11 -0
- package/dist/esm/components/table/types.js +1 -0
- package/dist/esm/components/title/index.d.ts +5 -0
- package/dist/esm/components/title/index.js +184 -0
- package/dist/esm/components/title/searchTitle.d.ts +7 -0
- package/dist/esm/components/title/searchTitle.js +47 -0
- package/dist/esm/components/title/styles/index.less +72 -0
- package/dist/esm/components/title/styles/search.less +27 -0
- package/dist/esm/components/title/types.d.ts +7 -0
- package/dist/esm/components/title/types.js +1 -0
- package/dist/esm/constants/apis.d.ts +9 -0
- package/dist/esm/constants/apis.js +9 -0
- package/dist/esm/constants/chart.d.ts +2 -0
- package/dist/esm/constants/chart.js +24 -0
- package/dist/esm/constants/color.d.ts +1 -0
- package/dist/esm/constants/color.js +1 -0
- package/dist/esm/constants/fields.d.ts +218 -0
- package/dist/esm/constants/fields.js +242 -0
- package/dist/esm/constants/index.d.ts +6 -0
- package/dist/esm/constants/index.js +6 -0
- package/dist/esm/constants/initData.d.ts +17 -0
- package/dist/esm/constants/initData.js +30 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/modules/content/index.d.ts +5 -0
- package/dist/esm/modules/content/index.js +218 -0
- package/dist/esm/modules/content/styles/index.less +7 -0
- package/dist/esm/modules/content/types.d.ts +8 -0
- package/dist/esm/modules/content/types.js +2 -0
- package/dist/esm/modules/content/utiles.d.ts +12 -0
- package/dist/esm/modules/content/utiles.js +231 -0
- package/dist/esm/modules/home/demo/create.d.ts +3 -0
- package/dist/esm/modules/home/demo/create.js +54 -0
- package/dist/esm/modules/home/demo/edit.d.ts +3 -0
- package/dist/esm/modules/home/demo/edit.js +80 -0
- package/dist/esm/modules/home/demo/index.d.ts +4 -0
- package/dist/esm/modules/home/demo/index.js +52 -0
- package/dist/esm/modules/home/demo/scene.d.ts +3 -0
- package/dist/esm/modules/home/demo/scene.js +74 -0
- package/dist/esm/modules/home/demo/styles/index.less +33 -0
- package/dist/esm/modules/home/index.d.ts +5 -0
- package/dist/esm/modules/home/index.js +172 -0
- package/dist/esm/modules/home/styles/index.less +37 -0
- package/dist/esm/modules/home/types.d.ts +19 -0
- package/dist/esm/modules/home/types.js +2 -0
- package/dist/esm/modules/leftPanel/components/globalAttribute.d.ts +8 -0
- package/dist/esm/modules/leftPanel/components/globalAttribute.js +64 -0
- package/dist/esm/modules/leftPanel/components/panel.d.ts +4 -0
- package/dist/esm/modules/leftPanel/components/panel.js +87 -0
- package/dist/esm/modules/leftPanel/demo/index.d.ts +3 -0
- package/dist/esm/modules/leftPanel/demo/index.js +28 -0
- package/dist/esm/modules/leftPanel/index.d.ts +6 -0
- package/dist/esm/modules/leftPanel/index.js +285 -0
- package/dist/esm/modules/leftPanel/styles/index.less +55 -0
- package/dist/esm/modules/leftPanel/types.d.ts +27 -0
- package/dist/esm/modules/leftPanel/types.js +2 -0
- package/dist/esm/modules/leftPanel/utils.d.ts +5 -0
- package/dist/esm/modules/leftPanel/utils.js +262 -0
- package/dist/esm/style/image/noData.png +0 -0
- package/dist/esm/style/image/ring.svg +9 -0
- package/dist/esm/style/index.less +47 -0
- package/dist/esm/style/theme.d.ts +15 -0
- package/dist/esm/style/theme.js +16 -0
- package/dist/esm/types.d.ts +46 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/utils/ajaxConfig.d.ts +8 -0
- package/dist/esm/utils/ajaxConfig.js +47 -0
- package/dist/esm/utils/base64.d.ts +23 -0
- package/dist/esm/utils/base64.js +132 -0
- package/dist/esm/utils/formData.d.ts +18 -0
- package/dist/esm/utils/formData.js +485 -0
- package/dist/esm/utils/transfer.d.ts +65 -0
- package/dist/esm/utils/transfer.js +206 -0
- package/dist/esm/utils/util.d.ts +32 -0
- package/dist/esm/utils/util.js +177 -0
- package/package.json +54 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
|
+
/**
|
|
8
|
+
* 对查询结果进行排序
|
|
9
|
+
* @param data 查询结果
|
|
10
|
+
* @param userGroup 用户群
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export function getSortData(data, userGroup) {
|
|
14
|
+
if (!data) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
// 只有一个用户群且该用户群是所有用户,返回数据中删除该用户群
|
|
18
|
+
if (userGroup && userGroup.length === 1 && userGroup[0] === 0) {
|
|
19
|
+
data.series.forEach(function (item) {
|
|
20
|
+
item.names.splice(item.names.length - 2, 1);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// 如果有维度,需要将维度追加在指标后面
|
|
25
|
+
var seriesData = (data.series || []).map(function (item) {
|
|
26
|
+
var names = item.names,
|
|
27
|
+
values = item.values;
|
|
28
|
+
var len = names.length - 1;
|
|
29
|
+
if (names[len] === '平均使用时长') {
|
|
30
|
+
names[len] += '(s)';
|
|
31
|
+
values = values.map(function (data) {
|
|
32
|
+
return Math.round(data / 10) / 100;
|
|
33
|
+
});
|
|
34
|
+
} else {
|
|
35
|
+
names[len] += item.index ? "\uFF08".concat(item.index, "\uFF09") : '';
|
|
36
|
+
}
|
|
37
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
38
|
+
names: names,
|
|
39
|
+
values: values
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
var hasUserGroup = userGroup && userGroup.length > 1;
|
|
43
|
+
var series = sortData(seriesData, hasUserGroup);
|
|
44
|
+
return {
|
|
45
|
+
x_axis: data.xAxis || [],
|
|
46
|
+
series: series
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 排序:属性->指标名称->用户群
|
|
51
|
+
* @param data 查询结果
|
|
52
|
+
* @param hasUserGroup 是否有用户群
|
|
53
|
+
* @returns
|
|
54
|
+
*/
|
|
55
|
+
export var sortData = function sortData(data, hasUserGroup) {
|
|
56
|
+
var len = data[0].names.length;
|
|
57
|
+
var compare = function compare(a, b) {
|
|
58
|
+
var flag = 0;
|
|
59
|
+
var aNames = a.names;
|
|
60
|
+
var bNames = b.names;
|
|
61
|
+
for (var i = 0; i < len; i++) {
|
|
62
|
+
var k = i;
|
|
63
|
+
if (hasUserGroup) {
|
|
64
|
+
if (i === len - 2) {
|
|
65
|
+
k = len - 1;
|
|
66
|
+
} else if (i === len - 1) {
|
|
67
|
+
k = len - 2;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
var aName = aNames[k];
|
|
71
|
+
var bName = bNames[k];
|
|
72
|
+
if (aName !== bName) {
|
|
73
|
+
flag = sortDevName(aName, bName);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return flag;
|
|
78
|
+
};
|
|
79
|
+
data.sort(compare);
|
|
80
|
+
return data;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// 按数量和排序
|
|
84
|
+
// function sortByValue(num1: number[], num2: number[]) {
|
|
85
|
+
// const sum = (arr: number[]) => {
|
|
86
|
+
// return arr.reduce((total, num) => total + num);
|
|
87
|
+
// };
|
|
88
|
+
// return sum(num2) - sum(num1);
|
|
89
|
+
// }
|
|
90
|
+
|
|
91
|
+
function sortDevName(str1, str2) {
|
|
92
|
+
str1 = String(str1);
|
|
93
|
+
str2 = String(str2);
|
|
94
|
+
var res = 0;
|
|
95
|
+
for (var i = 0;; i++) {
|
|
96
|
+
if (!str1[i] || !str2[i]) {
|
|
97
|
+
res = str1.length - str2.length;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
var char1 = str1[i];
|
|
101
|
+
var char1Type = getCharType(char1);
|
|
102
|
+
var char2 = str2[i];
|
|
103
|
+
var char2Type = getCharType(char2);
|
|
104
|
+
// 类型相同的逐个比较字符
|
|
105
|
+
if (char1Type[0] === char2Type[0]) {
|
|
106
|
+
if (char1 === char2) {
|
|
107
|
+
continue;
|
|
108
|
+
} else {
|
|
109
|
+
if (char1Type[0] === 'zh') {
|
|
110
|
+
res = char1.localeCompare(char2);
|
|
111
|
+
} else if (char1Type[0] === 'en') {
|
|
112
|
+
res = char2.charCodeAt(0) - char1.charCodeAt(0);
|
|
113
|
+
} else {
|
|
114
|
+
res = parseInt(char1) - parseInt(char2);
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
// 类型不同的,直接用返回的数字相减
|
|
120
|
+
res = char1Type[1] - char2Type[1];
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return res;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// 获取字符类型
|
|
128
|
+
function getCharType(char) {
|
|
129
|
+
// 数字可按照排序的要求进行自定义,我这边产品的要求是
|
|
130
|
+
// 数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z)
|
|
131
|
+
if (/^[\u4e00-\u9fa5]$/.test(char)) {
|
|
132
|
+
return ['zh', 300];
|
|
133
|
+
}
|
|
134
|
+
if (/^[a-zA-Z]$/.test(char)) {
|
|
135
|
+
return ['en', 200];
|
|
136
|
+
}
|
|
137
|
+
if (/^[0-9]$/.test(char)) {
|
|
138
|
+
return ['number', 100];
|
|
139
|
+
}
|
|
140
|
+
return ['others', 999];
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* 根据属性变化,判断图表类型是否需要转换
|
|
145
|
+
* @param newData 最新查询条件
|
|
146
|
+
* @param oldData 原有查询条件
|
|
147
|
+
* @returns
|
|
148
|
+
*/
|
|
149
|
+
export function getChartType(newData, oldData) {
|
|
150
|
+
var isArea = hasArea(newData.globalDimensions);
|
|
151
|
+
var isCity = isArea && ['current_city', 'city'].indexOf(newData.globalDimensions[0].attrName) > -1;
|
|
152
|
+
var chartType = oldData.chartType;
|
|
153
|
+
// 属性中是否含地图相关属性,如果是属性发生改变才可以更改图表类型
|
|
154
|
+
if (isArea) {
|
|
155
|
+
var oldFlag = hasArea(oldData.globalDimensions);
|
|
156
|
+
if (oldData.chartType !== 'map' && !oldFlag) {
|
|
157
|
+
chartType = 'map';
|
|
158
|
+
}
|
|
159
|
+
} else {
|
|
160
|
+
// 默认选择中是地图,但是属性中不含有相关属性,则默认展示趋势图
|
|
161
|
+
if (oldData.chartType === 'map') {
|
|
162
|
+
chartType = 'line';
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
isArea: isArea,
|
|
167
|
+
isCity: isCity,
|
|
168
|
+
chartType: chartType
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
function hasArea(globalDimensions) {
|
|
172
|
+
var areaData = ['current_area', 'current_city', 'area', 'city'];
|
|
173
|
+
return !!(globalDimensions && globalDimensions.length === 1 && globalDimensions[0].attrName && areaData.indexOf(globalDimensions[0].attrName) > -1);
|
|
174
|
+
}
|
|
175
|
+
export function getChartTypes(type) {
|
|
176
|
+
var result = [{
|
|
177
|
+
label: '趋势图',
|
|
178
|
+
value: 'line',
|
|
179
|
+
icon: 'qushitu1'
|
|
180
|
+
}, {
|
|
181
|
+
label: '汇总图',
|
|
182
|
+
value: 'bar',
|
|
183
|
+
icon: 'huizongtu'
|
|
184
|
+
}];
|
|
185
|
+
var gridChildren = [{
|
|
186
|
+
label: '',
|
|
187
|
+
value: 'line',
|
|
188
|
+
icon: 'qushitu1'
|
|
189
|
+
}, {
|
|
190
|
+
label: '',
|
|
191
|
+
value: 'bar',
|
|
192
|
+
icon: 'huizongtu'
|
|
193
|
+
}];
|
|
194
|
+
if (type === 'whole' || type === 'revenue') {
|
|
195
|
+
result.push({
|
|
196
|
+
label: '占比图',
|
|
197
|
+
icon: 'pie',
|
|
198
|
+
value: 'pie'
|
|
199
|
+
});
|
|
200
|
+
gridChildren.push({
|
|
201
|
+
value: 'pie',
|
|
202
|
+
icon: 'pie',
|
|
203
|
+
label: ''
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
if (type === 'event' || type === 'whole' || type === 'revenue') {
|
|
207
|
+
gridChildren.push({
|
|
208
|
+
value: 'map',
|
|
209
|
+
icon: 'ditu',
|
|
210
|
+
label: ''
|
|
211
|
+
});
|
|
212
|
+
result.push({
|
|
213
|
+
label: '地图',
|
|
214
|
+
icon: 'ditu',
|
|
215
|
+
value: 'map'
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
result.push({
|
|
219
|
+
label: '表格',
|
|
220
|
+
icon: 'biaoge',
|
|
221
|
+
value: 'grid',
|
|
222
|
+
children: gridChildren
|
|
223
|
+
});
|
|
224
|
+
result.push({
|
|
225
|
+
label: '数值',
|
|
226
|
+
icon: 'fenshu',
|
|
227
|
+
disable: true,
|
|
228
|
+
value: 'number'
|
|
229
|
+
});
|
|
230
|
+
return result;
|
|
231
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import React, { useEffect, useState } from 'react';
|
|
8
|
+
import { DemoWrapper, setGlobalConfig } from '@zgfe/business-lib';
|
|
9
|
+
import { ModuleAttribution } from '@zgfe/modules-attribution';
|
|
10
|
+
import { requestConfig } from "../../../utils/ajaxConfig";
|
|
11
|
+
import { Button } from 'antd';
|
|
12
|
+
var defaultValue = {
|
|
13
|
+
panelId: 438,
|
|
14
|
+
panelType: 'add'
|
|
15
|
+
};
|
|
16
|
+
export default (function () {
|
|
17
|
+
// 是否进入用户钻取页面
|
|
18
|
+
var _useState = useState(false),
|
|
19
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
20
|
+
isDetail = _useState2[0],
|
|
21
|
+
setIsDetail = _useState2[1];
|
|
22
|
+
var _useState3 = useState(),
|
|
23
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
24
|
+
detailParams = _useState4[0],
|
|
25
|
+
setDetailParams = _useState4[1];
|
|
26
|
+
var _useState5 = useState(defaultValue),
|
|
27
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
28
|
+
searchParams = _useState6[0],
|
|
29
|
+
setSearchParams = _useState6[1];
|
|
30
|
+
useEffect(function () {
|
|
31
|
+
setGlobalConfig(requestConfig);
|
|
32
|
+
}, []);
|
|
33
|
+
var afterEditTarget = function afterEditTarget(type, data) {
|
|
34
|
+
console.log("".concat(type, "\u56DE\u8C03"), data);
|
|
35
|
+
};
|
|
36
|
+
var onUserDrill = function onUserDrill(data, searchData) {
|
|
37
|
+
console.log('onUserDrill:', data, searchData);
|
|
38
|
+
setIsDetail(true);
|
|
39
|
+
setSearchParams(searchData);
|
|
40
|
+
setDetailParams(data);
|
|
41
|
+
};
|
|
42
|
+
return /*#__PURE__*/React.createElement(DemoWrapper, {
|
|
43
|
+
needMeta: true,
|
|
44
|
+
defaultApp: 254
|
|
45
|
+
}, isDetail ? /*#__PURE__*/React.createElement("div", null, JSON.stringify(detailParams), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Button, {
|
|
46
|
+
onClick: function onClick() {
|
|
47
|
+
return setIsDetail(false);
|
|
48
|
+
}
|
|
49
|
+
}, "\u8FD4\u56DE")) : /*#__PURE__*/React.createElement(ModuleAttribution, {
|
|
50
|
+
defaultValue: searchParams,
|
|
51
|
+
afterEditTarget: afterEditTarget,
|
|
52
|
+
onUserDrill: onUserDrill
|
|
53
|
+
}));
|
|
54
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import React, { useEffect, useState } from 'react';
|
|
8
|
+
import { DemoWrapper, setGlobalConfig } from '@zgfe/business-lib';
|
|
9
|
+
import { ModuleAttribution } from '@zgfe/modules-attribution';
|
|
10
|
+
import { requestConfig } from "../../../utils/ajaxConfig";
|
|
11
|
+
import { Button } from 'antd';
|
|
12
|
+
var defaultValue = {
|
|
13
|
+
id: 1426,
|
|
14
|
+
name: '洞察',
|
|
15
|
+
type: 0,
|
|
16
|
+
enlarged: 0,
|
|
17
|
+
panelId: 438,
|
|
18
|
+
panelType: 'edit',
|
|
19
|
+
data: {
|
|
20
|
+
app_id: 254,
|
|
21
|
+
targets: [{
|
|
22
|
+
type: 'event',
|
|
23
|
+
alias: '事件概览',
|
|
24
|
+
eventId: -100,
|
|
25
|
+
eventName: '事件概览',
|
|
26
|
+
eventGroupId: 0,
|
|
27
|
+
analysisDimension: {
|
|
28
|
+
analysisIndex: 'number'
|
|
29
|
+
}
|
|
30
|
+
}],
|
|
31
|
+
userGroup: [0],
|
|
32
|
+
time: {
|
|
33
|
+
unit: 'month',
|
|
34
|
+
relative: [2, 1],
|
|
35
|
+
begin: '2023-01-01',
|
|
36
|
+
end: '2023-03-17'
|
|
37
|
+
},
|
|
38
|
+
chartType: 'line'
|
|
39
|
+
},
|
|
40
|
+
chosen_data: ['所有用户,崩溃(人数)', '所有用户,查看商品(人数)', '所有用户,访问次数', '所有用户,购买商品(人数)', '所有用户,活跃用户', '所有用户,加购商品(人数)', '所有用户,平均使用时长(s)', '所有用户,评价商品(人数)', '所有用户,使用时长分布(访问次数)', '所有用户,使用时长分布(活跃用户)']
|
|
41
|
+
};
|
|
42
|
+
export default (function () {
|
|
43
|
+
// 是否进入用户钻取页面
|
|
44
|
+
var _useState = useState(false),
|
|
45
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
46
|
+
isDetail = _useState2[0],
|
|
47
|
+
setIsDetail = _useState2[1];
|
|
48
|
+
var _useState3 = useState(),
|
|
49
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
50
|
+
detailParams = _useState4[0],
|
|
51
|
+
setDetailParams = _useState4[1];
|
|
52
|
+
var _useState5 = useState(defaultValue),
|
|
53
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
54
|
+
searchParams = _useState6[0],
|
|
55
|
+
setSearchParams = _useState6[1];
|
|
56
|
+
useEffect(function () {
|
|
57
|
+
setGlobalConfig(requestConfig);
|
|
58
|
+
}, []);
|
|
59
|
+
var afterEditTarget = function afterEditTarget(type, data) {
|
|
60
|
+
console.log("".concat(type, "\u56DE\u8C03"), data);
|
|
61
|
+
};
|
|
62
|
+
var onUserDrill = function onUserDrill(data, searchData) {
|
|
63
|
+
console.log('onUserDrill:', data, searchData);
|
|
64
|
+
setIsDetail(true);
|
|
65
|
+
setSearchParams(searchData);
|
|
66
|
+
setDetailParams(data);
|
|
67
|
+
};
|
|
68
|
+
return /*#__PURE__*/React.createElement(DemoWrapper, {
|
|
69
|
+
needMeta: true,
|
|
70
|
+
defaultApp: 254
|
|
71
|
+
}, isDetail ? /*#__PURE__*/React.createElement("div", null, JSON.stringify(detailParams), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Button, {
|
|
72
|
+
onClick: function onClick() {
|
|
73
|
+
return setIsDetail(false);
|
|
74
|
+
}
|
|
75
|
+
}, "\u8FD4\u56DE")) : /*#__PURE__*/React.createElement(ModuleAttribution, {
|
|
76
|
+
defaultValue: searchParams,
|
|
77
|
+
afterEditTarget: afterEditTarget,
|
|
78
|
+
onUserDrill: onUserDrill
|
|
79
|
+
}));
|
|
80
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { DemoWrapper, setGlobalConfig } from '@zgfe/business-lib';
|
|
8
|
+
import React, { useEffect, useState } from 'react';
|
|
9
|
+
import { ModuleAttribution } from '@zgfe/modules-attribution';
|
|
10
|
+
import "./styles/index.less";
|
|
11
|
+
import { requestConfig } from "../../../utils/ajaxConfig";
|
|
12
|
+
import { Button } from 'antd';
|
|
13
|
+
export default (function () {
|
|
14
|
+
// 是否进入用户钻取页面
|
|
15
|
+
var _useState = useState(false),
|
|
16
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
17
|
+
isDetail = _useState2[0],
|
|
18
|
+
setIsDetail = _useState2[1];
|
|
19
|
+
var _useState3 = useState(),
|
|
20
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
21
|
+
detailParams = _useState4[0],
|
|
22
|
+
setDetailParams = _useState4[1];
|
|
23
|
+
var _useState5 = useState(),
|
|
24
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
25
|
+
searchParams = _useState6[0],
|
|
26
|
+
setSearchParams = _useState6[1];
|
|
27
|
+
useEffect(function () {
|
|
28
|
+
setGlobalConfig(requestConfig);
|
|
29
|
+
}, []);
|
|
30
|
+
var afterEditTarget = function afterEditTarget(type, data) {
|
|
31
|
+
console.log("".concat(type, "\u56DE\u8C03"), data);
|
|
32
|
+
};
|
|
33
|
+
var onUserDrill = function onUserDrill(data, searchData) {
|
|
34
|
+
console.log('onUserDrill:', data, searchData);
|
|
35
|
+
setIsDetail(true);
|
|
36
|
+
setSearchParams(searchData);
|
|
37
|
+
setDetailParams(data);
|
|
38
|
+
};
|
|
39
|
+
return /*#__PURE__*/React.createElement(DemoWrapper, {
|
|
40
|
+
needMeta: true,
|
|
41
|
+
defaultApp: 254
|
|
42
|
+
}, isDetail ? /*#__PURE__*/React.createElement("div", null, JSON.stringify(detailParams), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Button, {
|
|
43
|
+
onClick: function onClick() {
|
|
44
|
+
return setIsDetail(false);
|
|
45
|
+
}
|
|
46
|
+
}, "\u8FD4\u56DE")) : /*#__PURE__*/React.createElement(ModuleAttribution, {
|
|
47
|
+
defaultValue: searchParams,
|
|
48
|
+
enableGenerateReport: true,
|
|
49
|
+
afterEditTarget: afterEditTarget,
|
|
50
|
+
onUserDrill: onUserDrill
|
|
51
|
+
}));
|
|
52
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import React, { useEffect, useState } from 'react';
|
|
8
|
+
import { DemoWrapper, setGlobalConfig } from '@zgfe/business-lib';
|
|
9
|
+
import { ModuleAttribution } from '@zgfe/modules-attribution';
|
|
10
|
+
import { requestConfig } from "../../../utils/ajaxConfig";
|
|
11
|
+
import { Button } from 'antd';
|
|
12
|
+
var defaultValue = {
|
|
13
|
+
data: {
|
|
14
|
+
app_id: 177,
|
|
15
|
+
targets: [{
|
|
16
|
+
type: 'event',
|
|
17
|
+
alias: '事件概览',
|
|
18
|
+
eventId: -100,
|
|
19
|
+
eventName: '事件概览',
|
|
20
|
+
eventGroupId: 0,
|
|
21
|
+
analysisDimension: {
|
|
22
|
+
analysisIndex: 'number'
|
|
23
|
+
}
|
|
24
|
+
}],
|
|
25
|
+
userGroup: [0],
|
|
26
|
+
time: {
|
|
27
|
+
unit: 'month',
|
|
28
|
+
relative: [3, 1],
|
|
29
|
+
begin: '2022-09-27',
|
|
30
|
+
end: '2022-12-27'
|
|
31
|
+
},
|
|
32
|
+
chartType: 'line'
|
|
33
|
+
},
|
|
34
|
+
chosen_data: []
|
|
35
|
+
};
|
|
36
|
+
export default (function () {
|
|
37
|
+
// 是否进入用户钻取页面
|
|
38
|
+
var _useState = useState(false),
|
|
39
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
40
|
+
isDetail = _useState2[0],
|
|
41
|
+
setIsDetail = _useState2[1];
|
|
42
|
+
var _useState3 = useState(),
|
|
43
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
44
|
+
detailParams = _useState4[0],
|
|
45
|
+
setDetailParams = _useState4[1];
|
|
46
|
+
var _useState5 = useState(defaultValue),
|
|
47
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
48
|
+
searchParams = _useState6[0],
|
|
49
|
+
setSearchParams = _useState6[1];
|
|
50
|
+
useEffect(function () {
|
|
51
|
+
setGlobalConfig(requestConfig);
|
|
52
|
+
}, []);
|
|
53
|
+
var afterEditTarget = function afterEditTarget(type, data) {
|
|
54
|
+
console.log("".concat(type, "\u56DE\u8C03"), data);
|
|
55
|
+
};
|
|
56
|
+
var onUserDrill = function onUserDrill(data, searchData) {
|
|
57
|
+
console.log('onUserDrill:', data, searchData);
|
|
58
|
+
setIsDetail(true);
|
|
59
|
+
setSearchParams(searchData);
|
|
60
|
+
setDetailParams(data);
|
|
61
|
+
};
|
|
62
|
+
return /*#__PURE__*/React.createElement(DemoWrapper, {
|
|
63
|
+
needMeta: true,
|
|
64
|
+
defaultApp: 254
|
|
65
|
+
}, isDetail ? /*#__PURE__*/React.createElement("div", null, JSON.stringify(detailParams), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Button, {
|
|
66
|
+
onClick: function onClick() {
|
|
67
|
+
return setIsDetail(false);
|
|
68
|
+
}
|
|
69
|
+
}, "\u8FD4\u56DE")) : /*#__PURE__*/React.createElement(ModuleAttribution, {
|
|
70
|
+
defaultValue: searchParams,
|
|
71
|
+
afterEditTarget: afterEditTarget,
|
|
72
|
+
onUserDrill: onUserDrill
|
|
73
|
+
}));
|
|
74
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*滚动条凹槽的颜色,还可以设置边框属性 */
|
|
2
|
+
::-webkit-scrollbar-track-piece {
|
|
3
|
+
background-color: #fff;
|
|
4
|
+
-webkit-border-radius: 10px;
|
|
5
|
+
-moz-border-radius: 10px;
|
|
6
|
+
border-radius: 10px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/*滚动条的宽度*/
|
|
10
|
+
::-webkit-scrollbar {
|
|
11
|
+
width: 10px;
|
|
12
|
+
height: 10px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/*滚动条的设置*/
|
|
16
|
+
::-webkit-scrollbar-thumb {
|
|
17
|
+
background-color: #cacdd4;
|
|
18
|
+
background-clip: padding-box;
|
|
19
|
+
border: 2px solid #fff;
|
|
20
|
+
-webkit-border-radius: 10px;
|
|
21
|
+
-moz-border-radius: 10px;
|
|
22
|
+
border-radius: 10px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/*滚动条鼠标移上去*/
|
|
26
|
+
::-webkit-scrollbar-thumb:hover {
|
|
27
|
+
// background-color: #bbb;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
::-webkit-scrollbar-track-piece {
|
|
31
|
+
width: 6px;
|
|
32
|
+
height: 6px;
|
|
33
|
+
}
|