@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
94 lines • 15.3 kB
JavaScript
import { Directive, Injector, Input } from '@angular/core';
import { CoreBaseComponent } from './base.component';
import * as i0 from "@angular/core";
// eslint-disable-next-line @angular-eslint/directive-class-suffix
export class CapacityBase extends CoreBaseComponent {
constructor(injector) {
super(injector);
this.warningThreshold = CapacityBase.defaults.warningThreshold;
this.criticalThreshold = CapacityBase.defaults.criticalThreshold;
this.normalColorScheme = CapacityBase.defaults.greenColorScheme;
this.warningColorScheme = CapacityBase.defaults.yellowColorScheme;
this.criticalColorScheme = CapacityBase.defaults.redColorScheme;
this.freeColor = CapacityBase.defaults.freeColor;
}
/**
* Sets the yellow threshold. Default is 0.75, use yellowThreshold='disabled' to disable
* @deprecated since 07/23/18. Please use 'CapacityBase.warningThreshold' instead
*/
set yellowThreshold(value) {
this.internalYellowThreshold = value;
}
get yellowThreshold() {
return this.internalYellowThreshold;
}
/**
* Sets the red threshold. Default is 0.9, use redThreshold='disabled' to disable
* @deprecated since 07/23/18. Please use 'CapacityBase.criticalThreshold' instead
*/
set redThreshold(value) {
this.internalRedThreshold = value;
}
get redThreshold() {
return this.internalRedThreshold;
}
getColorScheme(amountUsed) {
if (this.isAboveThreshold(amountUsed, this.redThreshold || this.criticalThreshold)) {
return this.reverseThresholdOrder ? this.normalColorScheme : this.criticalColorScheme;
}
if (this.isAboveThreshold(amountUsed, this.yellowThreshold || this.warningThreshold)) {
return this.warningColorScheme;
}
return this.reverseThresholdOrder ? this.criticalColorScheme : this.normalColorScheme;
}
getStateString(amountUsed) {
if (this.isAboveThreshold(amountUsed, this.redThreshold || this.criticalThreshold)) {
return this.reverseThresholdOrder ?
this.strings.MsftSmeShell.Angular.Common.Capacity.normalState
: this.strings.MsftSmeShell.Angular.Common.Capacity.criticalState;
}
if (this.isAboveThreshold(amountUsed, this.yellowThreshold || this.warningThreshold)) {
return this.strings.MsftSmeShell.Angular.Common.Capacity.warningState;
}
return this.reverseThresholdOrder ?
this.strings.MsftSmeShell.Angular.Common.Capacity.criticalState
: this.strings.MsftSmeShell.Angular.Common.Capacity.normalState;
}
isAboveThreshold(amountUsed, threshold) {
return threshold !== 'disabled' && amountUsed / this.total > threshold;
}
}
CapacityBase.defaults = {
warningThreshold: 0.75,
criticalThreshold: 0.9,
greenColorScheme: ['#02a28c', '#1bdbb6'],
redColorScheme: ['#f64747', '#ffb6b6'],
yellowColorScheme: ['#Fbbc05', '#FFEB4D'],
freeColor: '#DDD'
};
/** @nocollapse */ CapacityBase.ɵfac = function CapacityBase_Factory(t) { return new (t || CapacityBase)(i0.ɵɵdirectiveInject(i0.Injector)); };
/** @nocollapse */ CapacityBase.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: CapacityBase, inputs: { yellowThreshold: "yellowThreshold", redThreshold: "redThreshold", warningThreshold: "warningThreshold", criticalThreshold: "criticalThreshold", reverseThresholdOrder: "reverseThresholdOrder", total: "total", normalColorScheme: "normalColorScheme", warningColorScheme: "warningColorScheme", criticalColorScheme: "criticalColorScheme", freeColor: "freeColor" }, features: [i0.ɵɵInheritDefinitionFeature] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CapacityBase, [{
type: Directive
}], function () { return [{ type: i0.Injector }]; }, { yellowThreshold: [{
type: Input
}], redThreshold: [{
type: Input
}], warningThreshold: [{
type: Input
}], criticalThreshold: [{
type: Input
}], reverseThresholdOrder: [{
type: Input
}], total: [{
type: Input
}], normalColorScheme: [{
type: Input
}], warningColorScheme: [{
type: Input
}], criticalColorScheme: [{
type: Input
}], freeColor: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWNpdHktYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9jb21tb24vY2FwYWNpdHktYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUdyRCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQixZQUFhLFNBQVEsaUJBQWlCO0lBbUZ4RCxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUNyRCxDQUFDO0lBaEZEOzs7T0FHRztJQUNILElBQ1csZUFBZSxDQUFDLEtBQXNCO1FBQzdDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUNELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7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QkFBcEIsS0FBSztZQUtVLGlCQUFpQjtrQkFBaEMsS0FBSztZQU1VLGtCQUFrQjtrQkFBakMsS0FBSztZQU1VLG1CQUFtQjtrQkFBbEMsS0FBSztZQU1VLFNBQVM7a0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2FwYWNpdHlCYXNlIGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQge1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdHMgPSB7XHJcbiAgICAgICAgd2FybmluZ1RocmVzaG9sZDogMC43NSxcclxuICAgICAgICBjcml0aWNhbFRocmVzaG9sZDogMC45LFxyXG4gICAgICAgIGdyZWVuQ29sb3JTY2hlbWU6IFsnIzAyYTI4YycsICcjMWJkYmI2J10sXHJcbiAgICAgICAgcmVkQ29sb3JTY2hlbWU6IFsnI2Y2NDc0NycsICcjZmZiNmI2J10sXHJcbiAgICAgICAgeWVsbG93Q29sb3JTY2hlbWU6IFsnI0ZiYmMwNScsICcjRkZFQjREJ10sXHJcbiAgICAgICAgZnJlZUNvbG9yOiAnI0RERCdcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSB5ZWxsb3cgdGhyZXNob2xkLiBEZWZhdWx0IGlzIDAuNzUsIHVzZSB5ZWxsb3dUaHJlc2hvbGQ9J2Rpc2FibGVkJyB0byBkaXNhYmxlXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSAwNy8yMy8xOC4gUGxlYXNlIHVzZSAnQ2FwYWNpdHlCYXNlLndhcm5pbmdUaHJlc2hvbGQnIGluc3RlYWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgeWVsbG93VGhyZXNob2xkKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmludGVybmFsWWVsbG93VGhyZXNob2xkID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHllbGxvd1RocmVzaG9sZCgpOiBudW1iZXIgfCBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsWWVsbG93VGhyZXNob2xkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgcmVkIHRocmVzaG9sZC4gRGVmYXVsdCBpcyAwLjksIHVzZSByZWRUaHJlc2hvbGQ9J2Rpc2FibGVkJyB0byBkaXNhYmxlXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSAwNy8yMy8xOC4gUGxlYXNlIHVzZSAnQ2FwYWNpdHlCYXNlLmNyaXRpY2FsVGhyZXNob2xkJyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHJlZFRocmVzaG9sZCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFJlZFRocmVzaG9sZCA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCByZWRUaHJlc2hvbGQoKTogbnVtYmVyIHwgc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFJlZFRocmVzaG9sZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHdhcm5pbmcgdGhyZXNob2xkLiBEZWZhdWx0IGlzIDAuNzUsIHVzZSB3YXJuaW5nVGhyZXNob2xkPSdkaXNhYmxlZCcgdG8gZGlzYWJsZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHdhcm5pbmdUaHJlc2hvbGQ/OiBudW1iZXIgfCBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBjcml0aWNhbCB0aHJlc2hvbGQuIERlZmF1bHQgaXMgMC45LCB1c2UgY3JpdGljYWxUaHJlc2hvbGQ9J2Rpc2FibGVkJyB0byBkaXNhYmxlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY3JpdGljYWxUaHJlc2hvbGQ/OiBudW1iZXIgfCBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBjb2xvciBjaGFuZ2UgdGhyZXNob2xkcyBpbiByZXZlcnNlIG9yZGVyIChyZWQgaXMgbG93IGFuZCBncmVlbiBpcyBoaWdoKVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgcmV2ZXJzZVRocmVzaG9sZE9yZGVyPzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0b3RhbCBjYXBhY2l0eSBvZiB0aGUgY2hhcnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHRvdGFsPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRoZSBjb2xvciBzY2hlbWUgZm9yIHZhbHVlcyBsZXNzIHRoYW4gdGhlIHllbGxvdyB0aHJlc2hvbGQgdmFsdWUuIERlZmF1bHRzIHRvIGRlZmF1bHQgZ3JlZW4gY29sb3Igc2NoZW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBub3JtYWxDb2xvclNjaGVtZT86IHN0cmluZ1tdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRoZSBjb2xvciBzY2hlbWUgZm9yIHZhbHVlcyBncmVhdGVyIHRoYW4gdGhlIHllbGxvdyB0aHJlc2hvbGQgdmFsdWUgYnV0IGVzcyB0aGFuIHRoZSByZWQgdGhyZXNob2xkLlxyXG4gICAgICogRGVmYXVsdHMgdG8gZGVmYXVsdCB5ZWxsb3cgY29sb3Igc2NoZW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB3YXJuaW5nQ29sb3JTY2hlbWU/OiBzdHJpbmdbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0aGUgY29sb3Igc2NoZW1lIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIHRoYW4gdGhlIHllbGxvdyB0aHJlc2hvbGQgdmFsdWUuXHJcbiAgICAgKiBEZWZhdWx0cyB0byBkZWZhdWx0IHJlZCBjb2xvciBzY2hlbWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGNyaXRpY2FsQ29sb3JTY2hlbWU/OiBzdHJpbmdbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0aGUgY29sb3Igc2NoZW1lIGZvciB0aGUgYmFja2dyb3VuZCBiYXIgY29sb3JcclxuICAgICAqIERlZmF1bHRzIHRvIGRlZmF1bHQgZnJlZSBjb2xvclxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZnJlZUNvbG9yPzogc3RyaW5nO1xyXG5cclxuICAgIHB1YmxpYyBpbnRlcm5hbFJlZFRocmVzaG9sZDogbnVtYmVyIHwgc3RyaW5nO1xyXG4gICAgcHVibGljIGludGVybmFsWWVsbG93VGhyZXNob2xkOiBudW1iZXIgfCBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMud2FybmluZ1RocmVzaG9sZCA9IENhcGFjaXR5QmFzZS5kZWZhdWx0cy53YXJuaW5nVGhyZXNob2xkO1xyXG4gICAgICAgIHRoaXMuY3JpdGljYWxUaHJlc2hvbGQgPSBDYXBhY2l0eUJhc2UuZGVmYXVsdHMuY3JpdGljYWxUaHJlc2hvbGQ7XHJcbiAgICAgICAgdGhpcy5ub3JtYWxDb2xvclNjaGVtZSA9IENhcGFjaXR5QmFzZS5kZWZhdWx0cy5ncmVlbkNvbG9yU2NoZW1lO1xyXG4gICAgICAgIHRoaXMud2FybmluZ0NvbG9yU2NoZW1lID0gQ2FwYWNpdHlCYXNlLmRlZmF1bHRzLnllbGxvd0NvbG9yU2NoZW1lO1xyXG4gICAgICAgIHRoaXMuY3JpdGljYWxDb2xvclNjaGVtZSA9IENhcGFjaXR5QmFzZS5kZWZhdWx0cy5yZWRDb2xvclNjaGVtZTtcclxuICAgICAgICB0aGlzLmZyZWVDb2xvciA9IENhcGFjaXR5QmFzZS5kZWZhdWx0cy5mcmVlQ29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldENvbG9yU2NoZW1lKGFtb3VudFVzZWQ6IG51bWJlcik6IHN0cmluZ1tdIHtcclxuICAgICAgICBpZiAodGhpcy5pc0Fib3ZlVGhyZXNob2xkKGFtb3VudFVzZWQsIHRoaXMucmVkVGhyZXNob2xkIHx8IHRoaXMuY3JpdGljYWxUaHJlc2hvbGQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldmVyc2VUaHJlc2hvbGRPcmRlciA/IHRoaXMubm9ybWFsQ29sb3JTY2hlbWUgOiB0aGlzLmNyaXRpY2FsQ29sb3JTY2hlbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pc0Fib3ZlVGhyZXNob2xkKGFtb3VudFVzZWQsIHRoaXMueWVsbG93VGhyZXNob2xkIHx8IHRoaXMud2FybmluZ1RocmVzaG9sZCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FybmluZ0NvbG9yU2NoZW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZVRocmVzaG9sZE9yZGVyID8gdGhpcy5jcml0aWNhbENvbG9yU2NoZW1lIDogdGhpcy5ub3JtYWxDb2xvclNjaGVtZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0U3RhdGVTdHJpbmcoYW1vdW50VXNlZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5pc0Fib3ZlVGhyZXNob2xkKGFtb3VudFVzZWQsIHRoaXMucmVkVGhyZXNob2xkIHx8IHRoaXMuY3JpdGljYWxUaHJlc2hvbGQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldmVyc2VUaHJlc2hvbGRPcmRlciA/XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLkNhcGFjaXR5Lm5vcm1hbFN0YXRlXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uQ2FwYWNpdHkuY3JpdGljYWxTdGF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBYm92ZVRocmVzaG9sZChhbW91bnRVc2VkLCB0aGlzLnllbGxvd1RocmVzaG9sZCB8fCB0aGlzLndhcm5pbmdUaHJlc2hvbGQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLkNhcGFjaXR5Lndhcm5pbmdTdGF0ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2VUaHJlc2hvbGRPcmRlciA/XHJcbiAgICAgICAgICAgIHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uQ2FwYWNpdHkuY3JpdGljYWxTdGF0ZVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uQ2FwYWNpdHkubm9ybWFsU3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0Fib3ZlVGhyZXNob2xkKGFtb3VudFVzZWQ6IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIgfCBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhyZXNob2xkICE9PSAnZGlzYWJsZWQnICYmIGFtb3VudFVzZWQgLyB0aGlzLnRvdGFsID4gdGhyZXNob2xkO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=