@tmsfe/tms-core 0.0.136 → 0.0.138
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/package.json
CHANGED
package/src/report/formatV2.ts
CHANGED
|
@@ -66,7 +66,9 @@ function getBaseData(page: IPage, deviceData: IDeviceData): { arr: DataItem[], n
|
|
|
66
66
|
arr[26] = helper.getLifeReportKey();
|
|
67
67
|
// 27: f27,生成用户唯一id,方便追踪未登录接口
|
|
68
68
|
arr[27] = helper.getTmsUUID();
|
|
69
|
-
// 28
|
|
69
|
+
// 28: f28,实际执行页面url
|
|
70
|
+
arr[28] = page.execRoute;
|
|
71
|
+
// 29 ~ 30: 预留字段给后续扩展使用
|
|
70
72
|
// 31 ~ 40: 提供给开发自定义
|
|
71
73
|
// --------------------------字段列表--------------------------
|
|
72
74
|
return { arr, nextIndex: 31 };
|
|
@@ -94,7 +96,13 @@ function jointData(page: IPage, data: any[], deviceData: IDeviceData): DataItem[
|
|
|
94
96
|
*/
|
|
95
97
|
function formatData(data: any[]): Promise<DataItem[]> {
|
|
96
98
|
// getDeviceData可能会太慢导致页面已跳转完,所以先获取page比较准确
|
|
99
|
+
// 提取最后一个数据项的 execPage 属性,并处理 data 为空数组的情况
|
|
100
|
+
const lastData = data.length > 0 ? data[data.length - 1] : null;
|
|
97
101
|
const page = helper.getPageInfo();
|
|
102
|
+
if (lastData?.execPage) {
|
|
103
|
+
data.pop();
|
|
104
|
+
page.execRoute = lastData.execPage.route;
|
|
105
|
+
}
|
|
98
106
|
return new Promise<DataItem[]>((resolve) => {
|
|
99
107
|
helper.getDeviceData().then((deviceData: IDeviceData) => {
|
|
100
108
|
const arr = jointData(page, data, deviceData);
|
|
@@ -38,12 +38,14 @@ function proxyBindEvent(componentName: string, methods: any, methodName: string,
|
|
|
38
38
|
// eslint-disable-next-line no-param-reassign
|
|
39
39
|
methods[methodName] = function (...args: any[]): any {
|
|
40
40
|
// 执行原函数之后再发埋点
|
|
41
|
-
return helper.executeFunc(this, original, args, () => {
|
|
41
|
+
return helper.executeFunc(this, original, args, (execPage) => {
|
|
42
42
|
const extra = helper.getEventExtra(args[0]) ; // 把触发事件附加数据也带上
|
|
43
43
|
const data = helper.cloneData(this);
|
|
44
44
|
const eventName = `Component_${componentName}_${methodName}`;
|
|
45
45
|
helper.setLastBindEvent({ eventName, data, extra, bindType });
|
|
46
|
-
helper.reportData(eventName, data, extra, bindType
|
|
46
|
+
helper.reportData(eventName, data, extra, bindType, {
|
|
47
|
+
execPage,
|
|
48
|
+
});
|
|
47
49
|
});
|
|
48
50
|
};
|
|
49
51
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import clone from '../clone';
|
|
7
|
+
import helper from '../helper';
|
|
7
8
|
import { IInitOptions, IBindEvent } from './types';
|
|
8
9
|
|
|
9
10
|
let initOptions: IInitOptions;
|
|
@@ -77,24 +78,26 @@ function emptyFunc(): void {
|
|
|
77
78
|
* @param callback
|
|
78
79
|
*/
|
|
79
80
|
function executeFunc(context: any, func: Function, args: any[], callback: Function): any {
|
|
81
|
+
// 获取当前page: route、options、depth
|
|
82
|
+
const page = helper.getPageInfo();
|
|
80
83
|
let value: any;
|
|
81
84
|
try {
|
|
82
85
|
value = func.apply(context, args);
|
|
83
86
|
} catch (e) {
|
|
84
|
-
callback();
|
|
87
|
+
callback(page);
|
|
85
88
|
throw e;
|
|
86
89
|
}
|
|
87
90
|
// 如果不会返回promise
|
|
88
91
|
if (!value || !value.then || typeof value.then !== 'function') {
|
|
89
|
-
callback();
|
|
92
|
+
callback(page);
|
|
90
93
|
return value;
|
|
91
94
|
}
|
|
92
95
|
|
|
93
96
|
return value.then((res: any) => {
|
|
94
|
-
callback();
|
|
97
|
+
callback(page);
|
|
95
98
|
return res;
|
|
96
99
|
}).catch((err: any) => {
|
|
97
|
-
callback();
|
|
100
|
+
callback(page);
|
|
98
101
|
return Promise.reject(err);
|
|
99
102
|
});
|
|
100
103
|
}
|
package/src/report/proxy/page.ts
CHANGED
|
@@ -96,11 +96,13 @@ function proxyBindEvent(pageOptions: any, methodName: string, bindType: string):
|
|
|
96
96
|
pageOptions[methodName] = function (...args: any[]): any {
|
|
97
97
|
const extra = helper.getEventExtra(args[0]) ; // 把触发事件附加数据也带上
|
|
98
98
|
// 执行原函数之后再发埋点
|
|
99
|
-
return helper.executeFunc(this, original, args, () => {
|
|
99
|
+
return helper.executeFunc(this, original, args, (execPage) => {
|
|
100
100
|
const data = helper.cloneData(this);
|
|
101
101
|
const eventName = `Page_${methodName}`;
|
|
102
102
|
helper.setLastBindEvent({ eventName, data, extra, bindType });
|
|
103
|
-
helper.reportData(eventName, data, extra, bindType
|
|
103
|
+
helper.reportData(eventName, data, extra, bindType, {
|
|
104
|
+
execPage,
|
|
105
|
+
});
|
|
104
106
|
});
|
|
105
107
|
};
|
|
106
108
|
}
|