add avg calculations

This commit is contained in:
Qiuxia Fan 2022-04-14 17:16:52 +08:00
parent 69a9c6de13
commit 69af56dc84
4 changed files with 38 additions and 5 deletions

View File

@ -34,6 +34,8 @@ export enum Calculations {
ConvertMilliseconds = "convertMilliseconds",
MsTos = "msTos",
Average = "average",
PercentageAvg = "percentageAvg",
ApdexAvg = "apdexAvg",
}
export enum sizeEnum {
XS = "XS",

View File

@ -17,16 +17,21 @@
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 calculation =
config.metricConfig &&
config.metricConfig[i] &&
config.metricConfig[i].calculation;
const line =
config.metricTypes[i] === MetricQueryTypes.ReadMetricsValues &&
calculation !== Calculations.Average;
!types.includes(calculation);
const isAvg =
config.metricTypes[i] === MetricQueryTypes.ReadMetricsValues &&
calculation === Calculations.Average;
types.includes(calculation);
return {
isLinear: line,
isAvg,

View File

@ -278,14 +278,20 @@ export function usePodsSource(
}
const data = pods.map((d: Instance | any, idx: number) => {
config.metrics.map((name: string, index: number) => {
const c = (config.metricConfig && config.metricConfig[index]) || {};
const c: any = (config.metricConfig && config.metricConfig[index]) || {};
const key = name + idx + index;
if (config.metricTypes[index] === MetricQueryTypes.ReadMetricsValue) {
d[name] = aggregation(resp.data[key], c);
}
if (config.metricTypes[index] === MetricQueryTypes.ReadMetricsValues) {
d[name] = {};
if (c.calculation === Calculations.Average) {
if (
[
Calculations.Average,
Calculations.ApdexAvg,
Calculations.PercentageAvg,
].includes(c.calculation)
) {
d[name]["avg"] = calculateExp(resp.data[key].values.values, c);
}
d[name]["values"] = resp.data[key].values.values.map(
@ -337,6 +343,24 @@ function calculateExp(
).toFixed(2),
];
break;
case Calculations.PercentageAvg:
data = [
(
arr.map((d: { value: number }) => d.value).reduce((a, b) => a + b) /
arr.length /
100
).toFixed(2),
];
break;
case Calculations.ApdexAvg:
data = [
(
arr.map((d: { value: number }) => d.value).reduce((a, b) => a + b) /
arr.length /
10000
).toFixed(2),
];
break;
default:
data = arr.map((d) => aggregation(d.value, config));
break;

View File

@ -263,10 +263,12 @@ export const TextColors: { [key: string]: string } = {
export const CalculationOpts = [
{ label: "Percentage", value: "percentage" },
{ label: "Apdex", value: "apdex" },
{ label: "Avg-preview", value: "average" },
{ label: "Percentage + Avg-preview", value: "percentageAvg" },
{ label: "Apdex + Avg-preview", value: "apdexAvg" },
{ label: "Byte to KB", value: "byteToKB" },
{ label: "Byte to MB", value: "byteToMB" },
{ label: "Byte to GB", value: "byteToGB" },
{ label: "Average", value: "average" },
{
label: "Milliseconds to YYYY-MM-DD HH:mm:ss",
value: "convertMilliseconds",