UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

55 lines 6.53 kB
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