feat: add cpm4d + avg calculations (#241)

This commit is contained in:
Fine0830 2023-02-28 12:50:55 +08:00 committed by GitHub
parent 5cc913a332
commit 1be572a95f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 3 deletions

View File

@ -39,6 +39,7 @@ export enum Calculations {
SecondToDay = "secondToDay",
NanosecondToMillisecond = "nanosecondToMillisecond",
CPM5D = "cpm5d",
CPM5DAvg = "cpm5dAvg",
}
export enum sizeEnum {
XS = "XS",

View File

@ -17,7 +17,7 @@
import { MetricQueryTypes, Calculations } from "./data";
export function useListConfig(config: any, index: string) {
const i = Number(index);
const types = [Calculations.Average, Calculations.ApdexAvg, Calculations.PercentageAvg];
const types = [Calculations.Average, Calculations.ApdexAvg, Calculations.PercentageAvg, Calculations.CPM5DAvg];
const calculation = config.metricConfig && config.metricConfig[i] && config.metricConfig[i].calculation;
const isLinear =
[MetricQueryTypes.ReadMetricsValues, MetricQueryTypes.ReadLabeledMetricsValues].includes(config.metricTypes[i]) &&

View File

@ -290,7 +290,11 @@ export function usePodsSource(
}
if (config.metricTypes[index] === MetricQueryTypes.ReadMetricsValues) {
d[name] = {};
if ([Calculations.Average, Calculations.ApdexAvg, Calculations.PercentageAvg].includes(c.calculation)) {
if (
[Calculations.Average, Calculations.ApdexAvg, Calculations.PercentageAvg, Calculations.CPM5DAvg].includes(
c.calculation,
)
) {
d[name]["avg"] = calculateExp(resp.data[key].values.values, c);
}
d[name]["values"] = resp.data[key].values.values.map((val: { value: number }) => aggregation(val.value, c));
@ -315,7 +319,11 @@ export function usePodsSource(
if (!d[key]) {
d[key] = {};
}
if ([Calculations.Average, Calculations.ApdexAvg, Calculations.PercentageAvg].includes(c.calculation)) {
if (
[Calculations.Average, Calculations.ApdexAvg, Calculations.PercentageAvg, Calculations.CPM5DAvg].includes(
c.calculation,
)
) {
d[key]["avg"] = calculateExp(item.values.values, c);
}
d[key]["values"] = values;
@ -369,6 +377,13 @@ function calculateExp(arr: { value: number }[], config: { calculation?: string }
case Calculations.ApdexAvg:
data = [(sum / arr.length / 10000).toFixed(2)];
break;
case Calculations.CPM5DAvg:
data = [
sum / arr.length / 100000 < 1 && sum / arr.length / 100000 !== 0
? (sum / arr.length / 100000).toFixed(5)
: (sum / arr.length / 100000).toFixed(2),
];
break;
default:
data = arr.map((d) => aggregation(d.value, config));
break;
@ -416,6 +431,12 @@ export function aggregation(val: number, config: { calculation?: string }): numb
case Calculations.NanosecondToMillisecond:
data = (val / 1000 / 1000).toFixed(2);
break;
case Calculations.ApdexAvg:
data = (val / 10000).toFixed(2);
break;
case Calculations.CPM5DAvg:
data = val / 100000 < 1 && val / 100000 !== 0 ? (val / 100000).toFixed(5) : (val / 100000).toFixed(2);
break;
default:
data;
break;

View File

@ -300,6 +300,7 @@ export const CalculationOpts = [
{ label: "Apdex", value: "apdex" },
{ label: "Avg-preview", value: "average" },
{ label: "Percentage + Avg-preview", value: "percentageAvg" },
{ label: "CPM5D + Avg-preview", value: "cpm5dAvg" },
{ label: "Apdex + Avg-preview", value: "apdexAvg" },
{ label: "Byte to KB", value: "byteToKB" },
{ label: "Byte to MB", value: "byteToMB" },