GSI - Employe Self Service Mobile
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

98 lines
3.0 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildMetricsTableRow = exports.parseBucket = exports.parseTimeseriesResponse = void 0;
const semver = require("semver");
const clc = require("colorette");
function parseTimeseriesResponse(series) {
const ret = [];
for (const s of series) {
const ref = buildRef(s);
if (ref === undefined) {
continue;
}
let valueToday;
let value7dAgo;
let value28dAgo;
if (s.points.length >= 28 && s.points[27].value.int64Value !== undefined) {
value28dAgo = parseBucket(s.points[27].value.int64Value);
}
if (s.points.length >= 7 && s.points[6].value.int64Value !== undefined) {
value7dAgo = parseBucket(s.points[6].value.int64Value);
}
if (s.points.length >= 1 && s.points[0].value.int64Value !== undefined) {
valueToday = parseBucket(s.points[0].value.int64Value);
}
ret.push({
ref,
valueToday,
value7dAgo,
value28dAgo,
});
}
ret.sort((a, b) => {
if (a.ref.version === "all") {
return 1;
}
if (b.ref.version === "all") {
return -1;
}
return semver.lt(a.ref.version, b.ref.version) ? 1 : -1;
});
return ret;
}
exports.parseTimeseriesResponse = parseTimeseriesResponse;
function parseBucket(value) {
const v = Number(value);
if (v >= 200) {
return { low: v - 100, high: v };
}
if (v >= 10) {
return { low: v - 10, high: v };
}
return { low: 0, high: 0 };
}
exports.parseBucket = parseBucket;
function buildMetricsTableRow(metric) {
const ret = [metric.ref.version];
if (metric.valueToday) {
ret.push(`${metric.valueToday.low} - ${metric.valueToday.high}`);
}
else {
ret.push("Insufficient data");
}
ret.push(renderChangeCell(metric.value7dAgo, metric.valueToday));
ret.push(renderChangeCell(metric.value28dAgo, metric.valueToday));
return ret;
}
exports.buildMetricsTableRow = buildMetricsTableRow;
function renderChangeCell(before, after) {
if (!(before && after)) {
return "Insufficient data";
}
if (before.high === after.high) {
return "-";
}
if (before.high > after.high) {
const diff = before.high - after.high;
const tolerance = diff < 100 ? 10 : 100;
return clc.red("▼ ") + `-${diff}${tolerance})`;
}
else {
const diff = after.high - before.high;
const tolerance = diff < 100 ? 10 : 100;
return clc.green("▲ ") + `${diff}${tolerance})`;
}
}
function buildRef(ts) {
const publisherId = ts.resource.labels["publisher"];
const extensionId = ts.resource.labels["extension"];
const version = ts.resource.labels["version"];
if (!(publisherId && extensionId && version)) {
return undefined;
}
return {
publisherId,
extensionId,
version,
};
}