diff options
Diffstat (limited to 'client/src/root-helpers')
-rw-r--r-- | client/src/root-helpers/bytes.ts | 31 | ||||
-rw-r--r-- | client/src/root-helpers/index.ts | 1 |
2 files changed, 32 insertions, 0 deletions
diff --git a/client/src/root-helpers/bytes.ts b/client/src/root-helpers/bytes.ts new file mode 100644 index 000000000..ec8b55faa --- /dev/null +++ b/client/src/root-helpers/bytes.ts | |||
@@ -0,0 +1,31 @@ | |||
1 | const dictionary: Array<{ max: number; type: string }> = [ | ||
2 | { max: 1024, type: 'B' }, | ||
3 | { max: 1048576, type: 'KB' }, | ||
4 | { max: 1073741824, type: 'MB' }, | ||
5 | { max: 1.0995116e12, type: 'GB' } | ||
6 | ] | ||
7 | |||
8 | function getBytes (value: number, precision?: number | undefined): string | number { | ||
9 | const format = dictionary.find(d => value < d.max) || dictionary[dictionary.length - 1] | ||
10 | const calc = value / (format.max / 1024) | ||
11 | |||
12 | const num = precision === undefined | ||
13 | ? calc | ||
14 | : applyPrecision(calc, precision) | ||
15 | |||
16 | return `${num} ${format.type}` | ||
17 | } | ||
18 | |||
19 | function applyPrecision (num: number, precision: number) { | ||
20 | if (precision <= 0) { | ||
21 | return Math.round(num) | ||
22 | } | ||
23 | |||
24 | const tho = 10 ** precision | ||
25 | |||
26 | return Math.round(num * tho) / tho | ||
27 | } | ||
28 | |||
29 | export { | ||
30 | getBytes | ||
31 | } | ||
diff --git a/client/src/root-helpers/index.ts b/client/src/root-helpers/index.ts index 59468b31c..036a7677d 100644 --- a/client/src/root-helpers/index.ts +++ b/client/src/root-helpers/index.ts | |||
@@ -1,3 +1,4 @@ | |||
1 | export * from './users' | 1 | export * from './users' |
2 | export * from './bytes' | ||
2 | export * from './peertube-web-storage' | 3 | export * from './peertube-web-storage' |
3 | export * from './utils' | 4 | export * from './utils' |