UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

96 lines (91 loc) 3.1 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var number_number = require('../../number/number.js'); var SORT_KEY = 'PageUv'; function formatNum(num) { if (typeof num !== 'number') { return num; } return +num.toFixed(2); } /** * 解析汇总数据 * @ignore * @param {object} options 配置 * @param {Array<object>} options.data 汇总数据 * @param {object} options.extraDataMap 额外数据Map,键为 ProjectId * @param {Array<number>} options.ignoreProjectIdList 忽略的projectIdList * @param {Array<string>} options.sortKeyList 排序key列表 * @returns {Array<object>} 处理后的数据 * @example * * const result = parseSummaryScore({ * data * }) * // 结果如下: * [ * { * ProjectName: { name: 'ProjectName', value: '脚手架' }, * PagePv: { name: 'PagePv', value: 544343 }, * PageUv: { name: 'PageUv', value: 225275 }, * Score: { name: 'Score', value: 90 }, * PageDuration: { name: 'PageDuration', value: 2894.08 }, * PageError: { name: 'PageError', value: 627 }, * PageErrorRatio: { name: 'PageErrorRatio', value: 0.12 }, * ApiNum: { name: 'ApiNum', value: 2506167 }, * ApiFail: { name: 'ApiFail', value: 3468 }, * ApiFailRatio: { name: 'ApiFailRatio', value: 0.14 }, * ApiDuration: { name: 'ApiDuration', value: 337.67 }, * StaticNum: { name: 'StaticNum', value: 9857894 }, * StaticFail: { name: 'StaticFail', value: 1174 }, * StaticFailRatio: { name: 'StaticFailRatio', value: 0.01 }, * StaticDuration: { name: 'StaticDuration', value: 154.5 }, * }, * { * ProjectName: { name: 'ProjectName', value: '社区' }, * // ... * }, * ] */ function parseSummaryScore(_a) { var data = _a.data, _b = _a.extraDataMap, extraDataMap = _b === void 0 ? {} : _b, _c = _a.ignoreProjectIdList, ignoreProjectIdList = _c === void 0 ? [] : _c, _d = _a.sortKeyList, sortKeyList = _d === void 0 ? [] : _d; var res = data.filter(function (item) { return !ignoreProjectIdList.includes(+item.ProjectId); }).sort(function (a, b) { return +b[SORT_KEY] - +a[SORT_KEY]; }).map(function (item) { var temp = {}; var projectId = item.ProjectId; var list = Object.keys(item).map(function (iKey) { return { name: iKey, value: formatNum(item[iKey]) }; }).concat([{ name: 'ApiFailRatio', value: number_number.getPartRatio(item.ApiNum, item.ApiFail) }, { name: 'StaticFailRatio', value: number_number.getPartRatio(item.StaticNum, item.StaticFail) }, { name: 'PageErrorRatio', value: number_number.getPartRatio(item.PagePv, item.PageError) }]).concat(extraDataMap[projectId] || []).filter(function (item) { return sortKeyList.includes(item.name); }).sort(function (a, b) { return sortKeyList.indexOf(a.name) - sortKeyList.indexOf(b.name); }); list.forEach(function (item) { temp[item.name] = item; }); return temp; }); return res; } exports.parseSummaryScore = parseSummaryScore;