it-tools/src/tools/data-transfer-rate-converter/data-transfer-rate-converter.service.ts
sharevb 49aa769bb8 feat(new tools): Data Storage Units Converter and Data Transfer Rate Converter
New Tool: Data Transfer Rate Converter
New Tool: Data Storage Units Converter (with MB, MiB and Mb)

Fix #539 #785 #1160 #848

Data Storage Units Converter inspired by #948 by @utf26
2024-09-11 22:46:17 +02:00

58 lines
1.7 KiB
TypeScript

import { type AllSupportedUnits, type BitsUnits, convertStorageAndRateUnits } from '../data-storage-unit-converter/data-storage-unit-converter.service';
export function transferTimeSeconds({
dataSize,
dataSizeUnit,
bitRate,
bitRateUnit,
}: {
dataSize: number
dataSizeUnit: AllSupportedUnits
bitRate: number
bitRateUnit: BitsUnits
}): number {
const dataSizeInBytes = convertStorageAndRateUnits({ value: dataSize, fromUnit: dataSizeUnit, toUnit: 'B' });
const bitRateInBytes = convertStorageAndRateUnits({ value: bitRate, fromUnit: bitRateUnit, toUnit: 'B' });
return bitRateInBytes > 0 ? dataSizeInBytes / bitRateInBytes : 0;
}
export function neededRate({
dataSize,
dataSizeUnit,
hours,
minutes,
seconds,
bitRateUnit,
}: {
dataSize: number
dataSizeUnit: AllSupportedUnits
hours: number
minutes: number
seconds: number
bitRateUnit: BitsUnits
}): number {
const dataSizeInBits = convertStorageAndRateUnits({ value: dataSize, fromUnit: dataSizeUnit, toUnit: 'b' });
const timeInSeconds = hours * 3600 + minutes * 60 + seconds;
return convertStorageAndRateUnits({ value: timeInSeconds > 0 ? dataSizeInBits / timeInSeconds : 0, fromUnit: 'b', toUnit: bitRateUnit });
}
export function amountTransferable({
bitRate,
bitRateUnit,
hours,
minutes,
seconds,
dataSizeUnit,
}: {
bitRate: number
bitRateUnit: BitsUnits
hours: number
minutes: number
seconds: number
dataSizeUnit: AllSupportedUnits
}): number {
const bitRateInBytes = convertStorageAndRateUnits({ value: bitRate, fromUnit: bitRateUnit, toUnit: 'B' });
const timeInSeconds = hours * 3600 + minutes * 60 + seconds;
return convertStorageAndRateUnits({ value: bitRateInBytes * timeInSeconds, fromUnit: 'B', toUnit: dataSizeUnit });
}