@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
55 lines • 6.53 kB
JavaScript
import { Pipe } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { gettext } from '@c8y/ngx-components';
import { SEVERITY_LABELS } from '@c8y/client';
import * as i0 from "@angular/core";
import * as i1 from "@ngx-translate/core";
/**
* Pipe for transforming an array of alarm severity types into a comma-separated string.
*
* @example
* Usage in a template: {{ ['WARNING', 'CRITICAL'] | AlarmSeveritiesToTitle }}
* Result: 'Warning, Critical'
*/
export class AlarmSeveritiesToTitlePipe {
constructor(translateService) {
this.translateService = translateService;
this.severityOptionsCount = Object.keys(SEVERITY_LABELS).length;
}
/**
* Transforms an array of alarm severity types into a comma-separated string.
*
* @param severities - Array of severity types.
* @returns - Transformed human-readable title string.
*/
transform(severities) {
const uniqueSeverities = [...new Set(severities)];
if (uniqueSeverities.some(severity => !(severity in SEVERITY_LABELS))) {
return null;
}
if (uniqueSeverities.length === this.severityOptionsCount) {
return this.translateService.instant(gettext('All alarms'));
}
const translatedChips = uniqueSeverities.map(severity => this.translateSeverityLabel(severity));
return translatedChips.join(', ');
}
/**
* Translates and converts a severity type to title case.
*
* @private
* @param chip - Severity type.
* @returns - Translated and title-cased severity type.
*/
translateSeverityLabel(chip) {
return this.translateService.instant(SEVERITY_LABELS[chip]);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmSeveritiesToTitlePipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: AlarmSeveritiesToTitlePipe, name: "AlarmSeveritiesToTitle" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmSeveritiesToTitlePipe, decorators: [{
type: Pipe,
args: [{
name: 'AlarmSeveritiesToTitle'
}]
}], ctorParameters: () => [{ type: i1.TranslateService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tc2V2ZXJpdGllcy10by10aXRsZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtLXNldmVyaXRpZXMtdG8tdGl0bGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUU1RDs7Ozs7O0dBTUc7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBR3JDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRnJDLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBRW5CLENBQUM7SUFDMUQ7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsVUFBMEI7UUFDbEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVsRCxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEcsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSyxzQkFBc0IsQ0FBQyxJQUFrQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzsrR0FoQ1UsMEJBQTBCOzZHQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBSHRDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHdCQUF3QjtpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTZXZlcml0eVR5cGUsIFNFVkVSSVRZX0xBQkVMUyB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLyoqXG4gKiBQaXBlIGZvciB0cmFuc2Zvcm1pbmcgYW4gYXJyYXkgb2YgYWxhcm0gc2V2ZXJpdHkgdHlwZXMgaW50byBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcuXG4gKlxuICogQGV4YW1wbGVcbiAqIFVzYWdlIGluIGEgdGVtcGxhdGU6IHt7IFsnV0FSTklORycsICdDUklUSUNBTCddIHwgQWxhcm1TZXZlcml0aWVzVG9UaXRsZSB9fVxuICogUmVzdWx0OiAnV2FybmluZywgQ3JpdGljYWwnXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ0FsYXJtU2V2ZXJpdGllc1RvVGl0bGUnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtU2V2ZXJpdGllc1RvVGl0bGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V2ZXJpdHlPcHRpb25zQ291bnQgPSBPYmplY3Qua2V5cyhTRVZFUklUWV9MQUJFTFMpLmxlbmd0aDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGFuIGFycmF5IG9mIGFsYXJtIHNldmVyaXR5IHR5cGVzIGludG8gYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdGllcyAtIEFycmF5IG9mIHNldmVyaXR5IHR5cGVzLlxuICAgKiBAcmV0dXJucyAtIFRyYW5zZm9ybWVkIGh1bWFuLXJlYWRhYmxlIHRpdGxlIHN0cmluZy5cbiAgICovXG4gIHRyYW5zZm9ybShzZXZlcml0aWVzOiBTZXZlcml0eVR5cGVbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgdW5pcXVlU2V2ZXJpdGllcyA9IFsuLi5uZXcgU2V0KHNldmVyaXRpZXMpXTtcblxuICAgIGlmICh1bmlxdWVTZXZlcml0aWVzLnNvbWUoc2V2ZXJpdHkgPT4gIShzZXZlcml0eSBpbiBTRVZFUklUWV9MQUJFTFMpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh1bmlxdWVTZXZlcml0aWVzLmxlbmd0aCA9PT0gdGhpcy5zZXZlcml0eU9wdGlvbnNDb3VudCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0FsbCBhbGFybXMnKSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNsYXRlZENoaXBzID0gdW5pcXVlU2V2ZXJpdGllcy5tYXAoc2V2ZXJpdHkgPT4gdGhpcy50cmFuc2xhdGVTZXZlcml0eUxhYmVsKHNldmVyaXR5KSk7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZWRDaGlwcy5qb2luKCcsICcpO1xuICB9XG4gIC8qKlxuICAgKiBUcmFuc2xhdGVzIGFuZCBjb252ZXJ0cyBhIHNldmVyaXR5IHR5cGUgdG8gdGl0bGUgY2FzZS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIGNoaXAgLSBTZXZlcml0eSB0eXBlLlxuICAgKiBAcmV0dXJucyAtIFRyYW5zbGF0ZWQgYW5kIHRpdGxlLWNhc2VkIHNldmVyaXR5IHR5cGUuXG4gICAqL1xuICBwcml2YXRlIHRyYW5zbGF0ZVNldmVyaXR5TGFiZWwoY2hpcDogU2V2ZXJpdHlUeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoU0VWRVJJVFlfTEFCRUxTW2NoaXBdKTtcbiAgfVxufVxuIl19