tsp-component
Version:
提供多端和react版本的UI组件
108 lines (107 loc) • 4.49 kB
JavaScript
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
import { getDefaultValue } from '../util/date';
import assign from 'object-assign';
import Exception from '../exception';
import { userAgent } from '../util/device';
var EventTracking = (function () {
function EventTracking() {
this.currentPageTrack = {};
this.setRecordEventTracking = this.setRecordEventTracking.bind(this);
}
EventTracking.onUnload = function () {
if (navigator && navigator.sendBeacon) {
window.removeEventListener('unload', function () {
var url = EventTracking.host + EventTracking.api.api;
navigator.sendBeacon(url, JSON.stringify({ dataStr: JSON.stringify(EventTracking.sendBeaconData) }));
});
}
};
EventTracking.getPrevPage = function () {
return EventTracking.history[EventTracking.history.length - 1];
};
EventTracking.prototype.setRecordEventTracking = function (value) {
this.isRecordEventTracking = value;
};
EventTracking.prototype.listen = function (params, common) {
var _this = this;
params.forEach(function (value) {
_this.currentPageTrack[value.key] = {
actionName: value.actionName,
buildingProjectId: common ? common.buildingProjectId : undefined,
houseId: common ? common.houseId : undefined,
terminal_id: common.terminal_id,
time: new Date().getTime(),
data: []
};
});
};
EventTracking.prototype.trigger = function (key, params) {
var currentLog = this.currentPageTrack[key];
var time = new Date().getTime();
try {
this.currentPageTrack[key].data.push({
buildingProjectId: currentLog.buildingProjectId,
houseId: currentLog.houseId,
terminal_id: currentLog.terminal_id,
topModule: currentLog.topModule,
secondaryModule: currentLog.secondaryModule,
actionName: params && params.actionName || currentLog.actionName,
behaviorName: currentLog.behaviorName,
mainType: currentLog.mainType,
subType: currentLog.subType,
createTime: getDefaultValue(time, 'string'),
detailedData: params ? JSON.stringify(params) : undefined,
parentPage: EventTracking.getPrevPage(),
stopSeconds: time - currentLog.time,
userAgent: userAgent
});
this.currentPageTrack[key].time = time;
console.log('行为记录触发,动作名称:' + currentLog.actionName + ', 当前记录数据');
console.log(this.currentPageTrack);
}
catch (e) {
Exception.catchSend(e);
}
};
EventTracking.prototype.disconnect = function (pageName) {
var _this = this;
var data = {};
Object.keys(this.currentPageTrack).map(function (key) {
if (_this.currentPageTrack[key].data) {
data[key] = _this.currentPageTrack[key].data;
}
});
EventTracking.request(assign({}, EventTracking.api, { params: assign({}, EventTracking.exParams, {
dataStr: JSON.stringify(data)
}) }));
console.log('结束监听,当前上传的数据:');
console.log(data);
EventTracking.sendBeaconData = data;
if (pageName) {
EventTracking.history.push(pageName);
}
};
EventTracking.prototype.onUnmount = function (key, value, actionName) {
if (key) {
this.trigger(key, __assign({}, value));
}
if (this.isRecordEventTracking || EventTracking.isRecordEventTracking) {
this.disconnect(actionName);
}
else {
this.disconnect(actionName + "-\u8FD4\u56DE\u6309\u94AE");
}
EventTracking.isRecordEventTracking = false;
};
EventTracking.history = [];
EventTracking.exParams = {};
return EventTracking;
}());
export default EventTracking;