feature(dashboard): add new retention chart type
This commit is contained in:
committed by
Carl-Gerhard Lindesvärd
parent
e2065da16e
commit
f977c5454a
@@ -5,10 +5,13 @@ export const round = (num: number, decimals = 2) => {
|
||||
return Math.round((num + Number.EPSILON) * factor) / factor;
|
||||
};
|
||||
|
||||
export const average = (arr: (number | null)[]) => {
|
||||
export const average = (arr: (number | null)[], includeZero = false) => {
|
||||
const filtered = arr.filter(
|
||||
(n): n is number =>
|
||||
isNumber(n) && !Number.isNaN(n) && Number.isFinite(n) && n !== 0,
|
||||
isNumber(n) &&
|
||||
!Number.isNaN(n) &&
|
||||
Number.isFinite(n) &&
|
||||
(includeZero || n !== 0),
|
||||
);
|
||||
const avg = filtered.reduce((p, c) => p + c, 0) / filtered.length;
|
||||
return Number.isNaN(avg) ? 0 : avg;
|
||||
@@ -17,10 +20,10 @@ export const average = (arr: (number | null)[]) => {
|
||||
export const sum = (arr: (number | null | undefined)[]): number =>
|
||||
round(arr.filter(isNumber).reduce((acc, item) => acc + item, 0));
|
||||
|
||||
export const min = (arr: (number | null)[]): number =>
|
||||
export const min = (arr: (number | null | undefined)[]): number =>
|
||||
Math.min(...arr.filter(isNumber));
|
||||
|
||||
export const max = (arr: (number | null)[]): number =>
|
||||
export const max = (arr: (number | null | undefined)[]): number =>
|
||||
Math.max(...arr.filter(isNumber));
|
||||
|
||||
export const isFloat = (n: number) => n % 1 !== 0;
|
||||
|
||||
Reference in New Issue
Block a user