index.uts 4.0 KB
Newer Older
M
mehaotian 已提交
1 2
// AppShowReportParams, AppHideReportParams, PageReportParams,
import { StatDefault } from '../../interface.uts'
M
mehaotian 已提交
3

M
mehaotian 已提交
4
import { AppShowParamsKeys, AppHideParamsKeys, PageShowParamsKeys, PushParamsKeys, EventParamsKeys, ErrorParamsKeys } from '../core/stat-type.uts'
M
mehaotian 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

/**
 * 序列化url参数
 * @param {Object} obj
 * @example  
 */
export function Serialize(obj : UTSJSONObject) : string {
	let str : string[] = [];
	for (let p in obj) {
		if (obj.hasOwnProperty(p)) {
			let key = obj[p]
			if (obj[p] == null) {
				key = ''
			}
			const text = p + "=" + key
			str.push(text);
		}
	}
	return "?" + str.join("&");
}

export function IsNumber(value : any | null) : boolean {
	return typeof value === 'number';
	// if (value.trim() === "") {
	// 	return false;
	// }
	// const num = parseInt(value);
	// if (isNaN(num)) {
	// 	return false;
	// }
	// return true;
}

/**
 * 上报参数过滤
 */
export function FilterParam<T>(keys : string[] = [], data : StatDefault) : T {
	let result = {};
	keys.forEach(key => {
		result[key] = data[key];
	});
	let formdata : T = result as T
	return formdata;
}


/**
 * 日志输出
 * @param {StatDefault} data 统计数据
 * @param {Boolean} type 打印类型,如果是type=true ,则是最终上报数据
 */
export function Log(data : StatDefault, type : Boolean = false) {

	let logData = getEventData(data.lt!, data)
	let msg_type : string = ''

	switch (data.lt) {
		case '1':
			msg_type = '应用启动'
			break
		case '3':
			msg_type = '应用进入后台'
			break

		case '11':
			msg_type = '页面切换'
			break
		case '21':
			msg_type = '事件触发'
			break
		case '31':
			msg_type = '应用错误'
			break
		case '101':
			msg_type = 'PUSH'
			break
	}

	if (type) {
M
mehaotian 已提交
84 85 86
		console.log(`=== 统计队列数据上报 :`, logData)
		// console.log(logData)
		// console.log(`=== 上报结束 ===`)
M
mehaotian 已提交
87 88 89 90
		return
	}

	if (msg_type != '') {
M
mehaotian 已提交
91 92 93
		console.log(`=== 统计数据采集:${msg_type} :`,logData)
		// console.log(logData)
		// console.log(`=== 采集结束 ===`)
M
mehaotian 已提交
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
	}
}

/**
 * map 转 string
 */
export function Map2String(statData : Map<string, StatDefault[]>) : string {
	let statDataJson = {}
	statData.forEach((rd : StatDefault[], key : string) => {
		statDataJson[key] = rd
	});
	return JSON.stringify(statDataJson)
}

export function Map2Json(statData : Map<string, StatDefault[]>) : UTSJSONObject {
	let statDataJson = {}
	statData.forEach((rd : StatDefault[], key : string) => {
		let arr : object[] = [];
		rd.forEach((elm : StatDefault) => {
			let data = getEventData(key, elm)

			arr.push(data)
		})

		statDataJson[key] = arr

	});

	return statDataJson
}



/**
 * 处理上报参数
 * @param {Object}  statData 需要处理的数据
 */
export const handle_data = (statData : Map<string, StatDefault[]>) : string => {
	let firstArr : any[] = []
	let contentArr : any[] = []
	let lastArr : any[] = []
	statData.forEach((rd : StatDefault[], key : string) => {
		rd.forEach((elm : StatDefault) => {
			let data = getEventData(key, elm)
			if (key == '1') {
				firstArr.push(data)
			} else if (key == '4') {
				lastArr.push(data)
			} else {
				contentArr.push(data)
			}
		})
	});
	firstArr.push(...contentArr, ...lastArr)
	return JSON.stringify(firstArr)
}

/**
 * 获取具体的上报参数对象
 */
function getEventData(lt : string, elm : StatDefault) : any {
	let data : any = {}
	switch (lt) {
		case '1'://应用启动
M
mehaotian 已提交
158
			data = FilterParam(AppShowParamsKeys, elm)
M
mehaotian 已提交
159 160 161 162 163 164 165 166 167 168
			break
		case '3': // 应用进入后台
			data = FilterParam(AppHideParamsKeys, elm)
			break
		case '11': //页面切换
			data = FilterParam(PageShowParamsKeys, elm)
			break
		case '21': // 事件触发
			data = FilterParam(EventParamsKeys, elm)
			break
M
mehaotian 已提交
169
		case '31': // 应用错误
M
mehaotian 已提交
170 171 172 173 174
			data = FilterParam(ErrorParamsKeys, elm)
			break
		case '101': // PUSH
			data = FilterParam(PushParamsKeys, elm)
			break
M
mehaotian 已提交
175 176
	}

M
mehaotian 已提交
177 178
	return data
}