UNPKG

tsp-component

Version:

提供多端和react版本的UI组件

108 lines (107 loc) 4.49 kB
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;