remove server side normalization
This commit is contained in:
1 parent
093553f9ba
commit
8a608961e6
7 files changed
+3
-118
No files matched your search
@@ -1,4 +1,3 @@
|
||||
import type { HasResponseTime, NormalizedCheck } from "@/domain/checks/check.type.js";
|
||||
import { type DateRange } from "@/types/query.js";
|
||||
|
||||
export const getDateForRange = (dateRange: DateRange): Date => {
|
||||
@@ -32,32 +31,3 @@ export const getDateFormat = (dateRange: DateRange): string => {
|
||||
};
|
||||
return formatLookup[dateRange];
|
||||
};
|
||||
|
||||
const percentileBy = <T>(arr: T[], percentile: number, value: (item: T) => number): number => {
|
||||
const sorted = arr.slice().sort((a, b) => value(a) - value(b));
|
||||
const index = (percentile / 100) * (sorted.length - 1);
|
||||
const lower = Math.floor(index);
|
||||
const upper = lower + 1;
|
||||
const weight = index % 1;
|
||||
if (upper >= sorted.length) return value(sorted[lower]!);
|
||||
return value(sorted[lower]!) * (1 - weight) + value(sorted[upper]!) * weight;
|
||||
};
|
||||
|
||||
const rescale = (raw: number, min: number, max: number, rangeMin: number, rangeMax: number): number => {
|
||||
const scaled = rangeMin + ((raw - min) * (rangeMax - rangeMin)) / (max - min);
|
||||
return Math.max(rangeMin, Math.min(rangeMax, scaled));
|
||||
};
|
||||
|
||||
export const NormalizeData = <T extends HasResponseTime>(checks: T[], rangeMin: number, rangeMax: number): NormalizedCheck<T>[] => {
|
||||
const original = (check: T) => (typeof check.responseTime === "number" ? check.responseTime : 0);
|
||||
if (checks.length <= 1) {
|
||||
return checks.map((check) => ({ ...check, originalResponseTime: original(check) }));
|
||||
}
|
||||
const min = percentileBy(checks, 0, (c) => c.responseTime);
|
||||
const max = percentileBy(checks, 95, (c) => c.responseTime);
|
||||
return checks.map((check) => ({
|
||||
...check,
|
||||
responseTime: rescale(check.responseTime, min, max, rangeMin, rangeMax),
|
||||
originalResponseTime: original(check),
|
||||
}));
|
||||
};
|
||||
Reference in new issue
Block a user