UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

148 lines 15.7 kB
import { Pipe } from '@angular/core'; import * as i0 from "@angular/core"; const byteUnit = 'B'; /** * Methods for converting media units (i.e. bytes) into display formats. */ export var MediaConversion2; (function (MediaConversion2) { 'use strict'; const iecUnitMap = { 0: byteUnit, 1: 'KB', 2: 'MB', 3: 'GB', 4: 'TB', 5: 'PB', 6: 'XB', 7: 'ZB', 8: 'YB' }; /** * The base of byte representation to use in conversion. */ let Base; (function (Base) { Base[Base["Binary"] = 1024] = "Binary"; Base[Base["Decimal"] = 1000] = "Decimal"; })(Base = MediaConversion2.Base || (MediaConversion2.Base = {})); /** * The units used in conversion. */ let 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 = {})); /** * Converts the supplied bytes into the appropriate display string. * * @param bytes The raw number of bytes. * @param baseNumber The byte number representation base to use in conversion. */ function getConvertedValue(bytes, base) { if (bytes != null && !isNaN(bytes)) { let unit = getUnit(bytes, base); let result = convertValue(bytes, base, unit, false); const accpetableDifference = 1; if (base - result < accpetableDifference) { result = 1.0; // set to 1 whole unit unit++; // increase the unit to next highest } const displayUnit = iecUnitMap[unit]; if (displayUnit) { if (displayUnit === byteUnit) { // round so we cannot have a fraction of a byte result = MsftSme.round(result); } return '{0} {1}'.format(result, displayUnit); } return '{0} {1}'.format(bytes, byteUnit); } return '-'; } MediaConversion2.getConvertedValue = getConvertedValue; /** * 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. */ function convertValue(bytes, base, unit, floor) { const result = bytes / Math.pow(base, unit); if (floor) { return Math.floor(result); } let precisionDigits; if (result >= 1000) { precisionDigits = 4; } else { precisionDigits = 3; } return parseFloat(result.toPrecision(precisionDigits)); } /** * 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. */ function getUnit(bytes, base) { if (bytes === 0) { return bytes; } let iterator = 0; while ((bytes / Math.pow(base, iterator)) >= base) { iterator++; } return iterator; } })(MediaConversion2 || (MediaConversion2 = {})); /** * @smeDoc {@label ByteConverterPipe @id smeByteUnitConverter} * * @overview * @file {@filepath ./examples/byte-converter-overview.md} * * @example {@label Example byte Converter @id byte-converter-example } * @file {@filename component.html @filepath ./examples/byte-converter-example.component.html} * @file {@filename component.ts @filepath ./examples/byte-converter-example.component.ts} */ export class ByteUnitConverterPipe { transform(value, baseNumber) { const base = baseNumber; if (value < 0 || typeof value !== 'number') { return '-'; } return MediaConversion2.getConvertedValue(value, base); } } /** @nocollapse */ ByteUnitConverterPipe.ɵfac = function ByteUnitConverterPipe_Factory(t) { return new (t || ByteUnitConverterPipe)(); }; /** @nocollapse */ ByteUnitConverterPipe.ɵpipe = /** @pureOrBreakMyCode */ i0.ɵɵdefinePipe({ name: "smeByteUnitConverter", type: ByteUnitConverterPipe, pure: true }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ByteUnitConverterPipe, [{ type: Pipe, args: [{ name: 'smeByteUnitConverter' }] }], null, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZS11bml0LWNvbnZlcnRlci1waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvcGlwZXMvYnl0ZS11bml0LWNvbnZlcnRlci1waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUVwRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFFckI7O0dBRUc7QUFDSCxNQUFNLEtBQVEsZ0JBQWdCLENBOEg3QjtBQTlIRCxXQUFjLGdCQUFnQjtJQUMxQixZQUFZLENBQUM7SUFFYixNQUFNLFVBQVUsR0FBZ0M7UUFDNUMsQ0FBQyxFQUFFLFFBQVE7UUFDWCxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxJQUFJO0tBQ1YsQ0FBQztJQUVGOztPQUVHO0lBQ0gsSUFBWSxJQUdYO0lBSEQsV0FBWSxJQUFJO1FBQ1osc0NBQWEsQ0FBQTtRQUNiLHdDQUFjLENBQUE7SUFDbEIsQ0FBQyxFQUhXLElBQUksR0FBSixxQkFBSSxLQUFKLHFCQUFJLFFBR2Y7SUFFRDs7T0FFRztJQUNILElBQUssSUFzQko7SUF0QkQsV0FBSyxJQUFJO1FBQ0wsK0JBQVEsQ0FBQTtRQUVSLFlBQVk7UUFDWix1Q0FBWSxDQUFBO1FBQ1osdUNBQVksQ0FBQTtRQUNaLHVDQUFZLENBQUE7UUFDWix1Q0FBWSxDQUFBO1FBQ1osdUNBQVksQ0FBQTtRQUNaLHFDQUFXLENBQUE7UUFDWCx5Q0FBYSxDQUFBO1FBQ2IseUNBQWEsQ0FBQTtRQUViLGFBQWE7UUFDYix1Q0FBWSxDQUFBO1FBQ1osdUNBQVksQ0FBQTtRQUNaLHVDQUFZ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TyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7NkdBUlEscUJBQXFCO2lJQUFyQixxQkFBcUI7dUZBQXJCLHFCQUFxQjtjQUhqQyxJQUFJO2VBQUM7Z0JBQ0YsSUFBSSxFQUFFLHNCQUFzQjthQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmNvbnN0IGJ5dGVVbml0ID0gJ0InO1xyXG5cclxuLyoqXHJcbiAqIE1ldGhvZHMgZm9yIGNvbnZlcnRpbmcgbWVkaWEgdW5pdHMgKGkuZS4gYnl0ZXMpIGludG8gZGlzcGxheSBmb3JtYXRzLlxyXG4gKi9cclxuZXhwb3J0IG1vZHVsZSBNZWRpYUNvbnZlcnNpb24yIHtcclxuICAgICd1c2Ugc3RyaWN0JztcclxuXHJcbiAgICBjb25zdCBpZWNVbml0TWFwOiB7IFtpbmRleDogbnVtYmVyXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgICAgMDogYnl0ZVVuaXQsXHJcbiAgICAgICAgMTogJ0tCJyxcclxuICAgICAgICAyOiAnTUInLFxyXG4gICAgICAgIDM6ICdHQicsXHJcbiAgICAgICAgNDogJ1RCJyxcclxuICAgICAgICA1OiAnUEInLFxyXG4gICAgICAgIDY6ICdYQicsXHJcbiAgICAgICAgNzogJ1pCJyxcclxuICAgICAgICA4OiAnWUInXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGJhc2Ugb2YgYnl0ZSByZXByZXNlbnRhdGlvbiB0byB1c2UgaW4gY29udmVyc2lvbi5cclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGVudW0gQmFzZSB7XHJcbiAgICAgICAgQmluYXJ5ID0gMTAyNCxcclxuICAgICAgICBEZWNpbWFsID0gMTAwMFxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHVuaXRzIHVzZWQgaW4gY29udmVyc2lvbi5cclxuICAgICAqL1xyXG4gICAgZW51bSBVbml0IHtcclxuICAgICAgICBCeXRlID0gMCxcclxuXHJcbiAgICAgICAgLy8gU0kgUHJlZml4XHJcbiAgICAgICAgS2lsb2J5dGUgPSAxLFxyXG4gICAgICAgIE1lZ2FieXRlID0gMixcclxuICAgICAgICBHaWdhYnl0ZSA9IDMsXHJcbiAgICAgICAgVGVyYWJ5dGUgPSA0LFxyXG4gICAgICAgIFBldGFieXRlID0gNSxcclxuICAgICAgICBFeGFieXRlID0gNixcclxuICAgICAgICBaZXR0YWJ5dGUgPSA3LFxyXG4gICAgICAgIFlvdHRhYnl0ZSA9IDgsXHJcblxyXG4gICAgICAgIC8vIElFQyBQcmVmaXhcclxuICAgICAgICBLaWJpYnl0ZSA9IDEsXHJcbiAgICAgICAgTWViaWJ5dGUgPSAyLFxyXG4gICAgICAgIEdpYmlieXRlID0gMyxcclxuICAgICAgICBUZWJpYnl0ZSA9IDQsXHJcbiAgICAgICAgUGViaWJ5dGUgPSA1LFxyXG4gICAgICAgIEV4Yml5dGUgPSA2LFxyXG4gICAgICAgIFplYmlieXRlID0gNyxcclxuICAgICAgICBZZWJpYnl0ZSA9IDhcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnZlcnRzIHRoZSBzdXBwbGllZCBieXRlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBkaXNwbGF5IHN0cmluZy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYnl0ZXMgVGhlIHJhdyBudW1iZXIgb2YgYnl0ZXMuXHJcbiAgICAgKiBAcGFyYW0gYmFzZU51bWJlciBUaGUgYnl0ZSBudW1iZXIgcmVwcmVzZW50YXRpb24gYmFzZSB0byB1c2UgaW4gY29udmVyc2lvbi5cclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldENvbnZlcnRlZFZhbHVlKGJ5dGVzOiBudW1iZXIsIGJhc2U6IE1lZGlhQ29udmVyc2lvbjIuQmFzZSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGJ5dGVzICE9IG51bGwgJiYgIWlzTmFOKGJ5dGVzKSkge1xyXG4gICAgICAgICAgICBsZXQgdW5pdCA9IGdldFVuaXQoYnl0ZXMsIGJhc2UpO1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gY29udmVydFZhbHVlKGJ5dGVzLCBiYXNlLCB1bml0LCBmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBhY2NwZXRhYmxlRGlmZmVyZW5jZSA9IDE7XHJcbiAgICAgICAgICAgIGlmIChiYXNlIC0gcmVzdWx0IDwgYWNjcGV0YWJsZURpZmZlcmVuY2UgKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAxLjA7IC8vIHNldCB0byAxIHdob2xlIHVuaXRcclxuICAgICAgICAgICAgICAgIHVuaXQrKzsgLy8gaW5jcmVhc2UgdGhlIHVuaXQgdG8gbmV4dCBoaWdoZXN0XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlVbml0ID0gaWVjVW5pdE1hcFt1bml0XTtcclxuICAgICAgICAgICAgaWYgKGRpc3BsYXlVbml0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlzcGxheVVuaXQgPT09IGJ5dGVVbml0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcm91bmQgc28gd2UgY2Fubm90IGhhdmUgYSBmcmFjdGlvbiBvZiBhIGJ5dGVcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBNc2Z0U21lLnJvdW5kKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICd7MH0gezF9Jy5mb3JtYXQocmVzdWx0LCBkaXNwbGF5VW5pdCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiAnezB9IHsxfScuZm9ybWF0KGJ5dGVzLCBieXRlVW5pdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gJy0nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhlIHJhdyBieXRlcyBpbnRvIHRoZSBudW1iZXIgY29ycmVzcG9uZGluZyB0byBpdCdzIGFwcHJvcHJpYXRlIGRpc3BsYXkgdmFsdWUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGJ5dGVzIFRoZSByYXcgbnVtYmVyIG9mIGJ5dGVzLlxyXG4gICAgICogQHBhcmFtIGJhc2UgdGhlIGJ5dGUgcmVwcmVzZW50YXRpb24gYmFzZSB0byB1c2UgaW4gY29udmVyc2lvbi5cclxuICAgICAqIEBwYXJhbSB1bml0IFRoZSBkZXNpcmVkIHVuaXQgb2YgY29udmVyc2lvbi5cclxuICAgICAqIEBwYXJhbSBmbG9vciBXaGV0aGVyIG9yIG5vdCB0byBmbG9vciB0aGUgcmVzdWx0LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjb252ZXJ0VmFsdWUoYnl0ZXM6IG51bWJlciwgYmFzZTogQmFzZSwgdW5pdDogVW5pdCwgZmxvb3I/OiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBieXRlcyAvIE1hdGgucG93KGJhc2UsIHVuaXQpO1xyXG4gICAgICAgIGlmIChmbG9vcikge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHByZWNpc2lvbkRpZ2l0czogbnVtYmVyO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0ID49IDEwMDApIHtcclxuICAgICAgICAgICAgcHJlY2lzaW9uRGlnaXRzID0gNDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwcmVjaXNpb25EaWdpdHMgPSAzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQocmVzdWx0LnRvUHJlY2lzaW9uKHByZWNpc2lvbkRpZ2l0cykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgYXBwcm9wcmlhdGUgdW5pdCBmb3IgYSBudW1iZXIgb2YgcmF3IGJ5dGVzIGluIGEgcGFydGljdWxhciBiYXNlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBieXRlcyBUaGUgcmF3IG51bWJlciBvZiBieXRlcy5cclxuICAgICAqIEBwYXJhbSBiYXNlIFRoZSBieXRlIHJlcHJlc2VudGF0aW9uIGJhc2UgdG8gdXNlIGluIGNvbnZlcnNpb24uXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGdldFVuaXQoYnl0ZXM6IG51bWJlciwgYmFzZTogQmFzZSk6IFVuaXQge1xyXG4gICAgICAgIGlmIChieXRlcyA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gPFVuaXQ+Ynl0ZXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaXRlcmF0b3IgPSAwO1xyXG4gICAgICAgIHdoaWxlICgoYnl0ZXMgLyBNYXRoLnBvdyhiYXNlLCBpdGVyYXRvcikpID49IGJhc2UpIHtcclxuICAgICAgICAgICAgaXRlcmF0b3IrKztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiA8VW5pdD5pdGVyYXRvcjtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEBzbWVEb2Mge0BsYWJlbCBCeXRlQ29udmVydGVyUGlwZSBAaWQgc21lQnl0ZVVuaXRDb252ZXJ0ZXJ9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvYnl0ZS1jb252ZXJ0ZXItb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgRXhhbXBsZSBieXRlIENvbnZlcnRlciBAaWQgYnl0ZS1jb252ZXJ0ZXItZXhhbXBsZSB9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYnl0ZS1jb252ZXJ0ZXItZXhhbXBsZS5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYnl0ZS1jb252ZXJ0ZXItZXhhbXBsZS5jb21wb25lbnQudHN9XHJcbiAqL1xyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnc21lQnl0ZVVuaXRDb252ZXJ0ZXInXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCeXRlVW5pdENvbnZlcnRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciwgYmFzZU51bWJlcjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBiYXNlID0gPE1lZGlhQ29udmVyc2lvbjIuQmFzZT5iYXNlTnVtYmVyO1xyXG4gICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICByZXR1cm4gJy0nO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIE1lZGlhQ29udmVyc2lvbjIuZ2V0Q29udmVydGVkVmFsdWUodmFsdWUsIGJhc2UpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==