@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
130 lines (128 loc) • 4.88 kB
JavaScript
/**
* The units used in conversion.
*/
var Unit;
(function (Unit) {
Unit[Unit["Byte"] = 0] = "Byte";
// SI Prefix
Unit[Unit["Kilobyte"] = 1] = "Kilobyte";
Unit[Unit["Megabyte"] = 2] = "Megabyte";
Unit[Unit["Gigabyte"] = 3] = "Gigabyte";
Unit[Unit["Terabyte"] = 4] = "Terabyte";
Unit[Unit["Petabyte"] = 5] = "Petabyte";
Unit[Unit["Exabyte"] = 6] = "Exabyte";
Unit[Unit["Zettabyte"] = 7] = "Zettabyte";
Unit[Unit["Yottabyte"] = 8] = "Yottabyte";
// IEC Prefix
Unit[Unit["Kibibyte"] = 1] = "Kibibyte";
Unit[Unit["Mebibyte"] = 2] = "Mebibyte";
Unit[Unit["Gibibyte"] = 3] = "Gibibyte";
Unit[Unit["Tebibyte"] = 4] = "Tebibyte";
Unit[Unit["Pebibyte"] = 5] = "Pebibyte";
Unit[Unit["Exbiyte"] = 6] = "Exbiyte";
Unit[Unit["Zebibyte"] = 7] = "Zebibyte";
Unit[Unit["Yebibyte"] = 8] = "Yebibyte";
})(Unit || (Unit = {}));
/**
* The base of byte representation to use in conversion.
*/
export var MediaConversionBase;
(function (MediaConversionBase) {
MediaConversionBase[MediaConversionBase["Binary"] = 1024] = "Binary";
MediaConversionBase[MediaConversionBase["Decimal"] = 1000] = "Decimal";
})(MediaConversionBase || (MediaConversionBase = {}));
/**
* Methods for converting media units (i.e. bytes) into display formats.
* @dynamic
*/
export class MediaConversion {
static cachedIecUnitMap;
static get iecUnitMap() {
if (!MediaConversion.cachedIecUnitMap) {
const strings = MsftSme.getStrings().MsftSmeShell.Core;
MediaConversion.cachedIecUnitMap = {
0: strings.Units.MediaConversionB.label,
1: strings.Units.MediaConversionKB.label,
2: strings.Units.MediaConversionMB.label,
3: strings.Units.MediaConversionGB.label,
4: strings.Units.MediaConversionTB.label,
5: strings.Units.MediaConversionPT.label,
6: strings.Units.MediaConversionXB.label,
7: strings.Units.MediaConversionZB.label,
8: strings.Units.MediaConversionYB.label
};
}
return MediaConversion.cachedIecUnitMap;
}
/**
* Converts the supplied bytes into the appropriate display string.
*
* @param bytes The raw number of bytes.
* @param base The byte representation base to use in conversion.
*/
static getConvertedValue(bytes, base) {
if (bytes != null && !isNaN(bytes)) {
const unit = MediaConversion.getUnit(bytes, base);
const result = MediaConversion.convertValue(bytes, base, unit, false);
const displayUnit = MediaConversion.iecUnitMap[unit];
if (displayUnit) {
return MsftSme.getStrings()
.MsftSmeShell.Core.Units.MediaConversionFormat.message.format(result, displayUnit);
}
return MsftSme.getStrings().MsftSmeShell.Core.Units.MediaConversionFormat.message.format(bytes, MediaConversion.iecUnitMap[0]);
}
return MsftSme.getStrings().MsftSmeShell.Core.Units.MediaConversionUnknownFormat.message;
}
/**
* Converts the raw bytes into the number corresponding to it's appropriate display value.
*
* @param bytes The raw number of bytes.
* @param base the byte representation base to use in conversion.
* @param unit The desired unit of conversion.
* @param floor Whether or not to floor the result.
*/
static convertValue(bytes, base, unit, floor) {
const fixedDecimalPlaces = 2;
const result = bytes / Math.pow(base, unit);
if (floor) {
return Math.floor(result);
}
return parseFloat(result.toFixed(fixedDecimalPlaces));
}
/**
* Gets the appropriate unit for a number of raw bytes in a particular base.
*
* @param bytes The raw number of bytes.
* @param base The byte representation base to use in conversion.
*/
static getUnit(bytes, base) {
if (bytes === 0) {
return bytes;
}
let iterator = 0;
while ((bytes / Math.pow(base, iterator)) >= base) {
iterator++;
}
return iterator;
}
}
/**
* Methods for converting percentages into display formats.
*/
export class PercentageConversion {
/**
* Converts the given value to a percentage.
*
* @param value the value to display as percent srring.
*/
static getPercentageDisplayValue(value) {
if (value != null && !isNaN(value)) {
return MsftSme.getStrings()
.MsftSmeShell.Core.Units.PercentageConversionPercentFormat.message.format(value.toString());
}
else {
return MsftSme.getStrings().MsftSmeShell.Core.Units.PercentageConversionUnknownFormat.message;
}
}
}
//# sourceMappingURL=units.js.map