Headless CMS and Content Managment Hub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

54 lines
1.2 KiB

/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved.
*/
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sqxKNumber',
pure: true,
})
export class KNumberPipe implements PipeTransform {
public transform(value: number) {
if (value > 1000) {
value /= 1000;
if (value < 10) {
value = Math.round(value * 10) / 10;
} else {
value = Math.round(value);
}
return `${value}k`;
} else if (value < 0) {
return '';
} else {
return value.toString();
}
}
}
@Pipe({
name: 'sqxFileSize',
pure: true,
})
export class FileSizePipe implements PipeTransform {
public transform(value: number) {
return calculateFileSize(value);
}
}
export function calculateFileSize(value: number, factor = 1024) {
let u = 0;
while (value >= factor || -value >= factor) {
value /= factor;
u++;
}
// eslint-disable-next-line prefer-template
return (u ? `${value.toFixed(1)} ` : value) + ' kMGTPEZY'[u] + 'B';
}