diff --git a/src/hooks/data.ts b/src/hooks/data.ts index 4a20f739..d51271c8 100644 --- a/src/hooks/data.ts +++ b/src/hooks/data.ts @@ -39,6 +39,7 @@ export enum Calculations { SecondToDay = "secondToDay", NanosecondToMillisecond = "nanosecondToMillisecond", CPM5D = "cpm5d", + CPM5DAvg = "cpm5dAvg", } export enum sizeEnum { XS = "XS", diff --git a/src/hooks/useListConfig.ts b/src/hooks/useListConfig.ts index 61b09248..0e2e57d5 100644 --- a/src/hooks/useListConfig.ts +++ b/src/hooks/useListConfig.ts @@ -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]) && diff --git a/src/hooks/useMetricsProcessor.ts b/src/hooks/useMetricsProcessor.ts index 637ee074..d401ebe7 100644 --- a/src/hooks/useMetricsProcessor.ts +++ b/src/hooks/useMetricsProcessor.ts @@ -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; diff --git a/src/views/dashboard/data.ts b/src/views/dashboard/data.ts index 5499543d..ad1a7067 100644 --- a/src/views/dashboard/data.ts +++ b/src/views/dashboard/data.ts @@ -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" },