UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

130 lines (128 loc) 4.88 kB
/** * 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