UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

1 lines 5.53 kB
{"version":3,"sources":["../../../packages/core/data/units.ts"],"names":[],"mappings":"AA6BA;;GAEG;AACH,oBAAY,mBAAmB;IAC3B,MAAM,OAAO;IACb,OAAO,OAAO;CACjB;AAED;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA8B;IAC7D,OAAO,CAAC,MAAM,KAAK,UAAU,GAiB5B;IAED;;;;;OAKG;WACW,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,MAAM;IAiBjF;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAU3B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;CAYzB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC7B;;;;OAIG;WACW,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAQjE","file":"units.d.ts","sourcesContent":["import { Strings } from '../generated/strings';\r\n\r\n/**\r\n * The units used in conversion.\r\n */\r\nenum Unit {\r\n Byte = 0,\r\n\r\n // SI Prefix\r\n Kilobyte = 1,\r\n Megabyte = 2,\r\n Gigabyte = 3,\r\n Terabyte = 4,\r\n Petabyte = 5,\r\n Exabyte = 6,\r\n Zettabyte = 7,\r\n Yottabyte = 8,\r\n\r\n // IEC Prefix\r\n Kibibyte = 1,\r\n Mebibyte = 2,\r\n Gibibyte = 3,\r\n Tebibyte = 4,\r\n Pebibyte = 5,\r\n Exbiyte = 6,\r\n Zebibyte = 7,\r\n Yebibyte = 8\r\n}\r\n\r\n/**\r\n * The base of byte representation to use in conversion.\r\n */\r\nexport enum MediaConversionBase {\r\n Binary = 1024,\r\n Decimal = 1000\r\n}\r\n\r\n/**\r\n * Methods for converting media units (i.e. bytes) into display formats.\r\n * @dynamic\r\n */\r\nexport class MediaConversion {\r\n private static cachedIecUnitMap: { [index: number]: string };\r\n private static get iecUnitMap(): { [index: number]: string } {\r\n if (!MediaConversion.cachedIecUnitMap) {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n MediaConversion.cachedIecUnitMap = {\r\n 0: strings.Units.MediaConversionB.label,\r\n 1: strings.Units.MediaConversionKB.label,\r\n 2: strings.Units.MediaConversionMB.label,\r\n 3: strings.Units.MediaConversionGB.label,\r\n 4: strings.Units.MediaConversionTB.label,\r\n 5: strings.Units.MediaConversionPT.label,\r\n 6: strings.Units.MediaConversionXB.label,\r\n 7: strings.Units.MediaConversionZB.label,\r\n 8: strings.Units.MediaConversionYB.label\r\n };\r\n }\r\n\r\n return MediaConversion.cachedIecUnitMap;\r\n }\r\n\r\n /**\r\n * Converts the supplied bytes into the appropriate display string.\r\n *\r\n * @param bytes The raw number of bytes.\r\n * @param base The byte representation base to use in conversion.\r\n */\r\n public static getConvertedValue(bytes: number, base: MediaConversionBase): string {\r\n if (bytes != null && !isNaN(bytes)) {\r\n const unit = MediaConversion.getUnit(bytes, base);\r\n const result = MediaConversion.convertValue(bytes, base, unit, false);\r\n const displayUnit = MediaConversion.iecUnitMap[unit];\r\n if (displayUnit) {\r\n return MsftSme.getStrings<Strings>()\r\n .MsftSmeShell.Core.Units.MediaConversionFormat.message.format(result, displayUnit);\r\n }\r\n\r\n return MsftSme.getStrings<Strings>().MsftSmeShell.Core.Units.MediaConversionFormat.message.format(\r\n bytes, MediaConversion.iecUnitMap[0]);\r\n }\r\n\r\n return MsftSme.getStrings<Strings>().MsftSmeShell.Core.Units.MediaConversionUnknownFormat.message;\r\n }\r\n\r\n /**\r\n * Converts the raw bytes into the number corresponding to it's appropriate display value.\r\n *\r\n * @param bytes The raw number of bytes.\r\n * @param base the byte representation base to use in conversion.\r\n * @param unit The desired unit of conversion.\r\n * @param floor Whether or not to floor the result.\r\n */\r\n private static convertValue(bytes: number, base: MediaConversionBase, unit: Unit, floor?: boolean): number {\r\n const fixedDecimalPlaces = 2;\r\n const result = bytes / Math.pow(base, unit);\r\n if (floor) {\r\n return Math.floor(result);\r\n }\r\n\r\n return parseFloat(result.toFixed(fixedDecimalPlaces));\r\n }\r\n\r\n /**\r\n * Gets the appropriate unit for a number of raw bytes in a particular base.\r\n *\r\n * @param bytes The raw number of bytes.\r\n * @param base The byte representation base to use in conversion.\r\n */\r\n private static getUnit(bytes: number, base: MediaConversionBase): Unit {\r\n if (bytes === 0) {\r\n return <Unit>bytes;\r\n }\r\n\r\n let iterator = 0;\r\n while ((bytes / Math.pow(base, iterator)) >= base) {\r\n iterator++;\r\n }\r\n\r\n return <Unit>iterator;\r\n }\r\n}\r\n\r\n/**\r\n * Methods for converting percentages into display formats.\r\n */\r\nexport class PercentageConversion {\r\n /**\r\n * Converts the given value to a percentage.\r\n *\r\n * @param value the value to display as percent srring.\r\n */\r\n public static getPercentageDisplayValue(value: number): string {\r\n if (value != null && !isNaN(value)) {\r\n return MsftSme.getStrings<Strings>()\r\n .MsftSmeShell.Core.Units.PercentageConversionPercentFormat.message.format(value.toString());\r\n } else {\r\n return MsftSme.getStrings<Strings>().MsftSmeShell.Core.Units.PercentageConversionUnknownFormat.message;\r\n }\r\n }\r\n}\r\n"]}