@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
60 lines • 7.34 kB
JavaScript
import { Pipe } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { find, get, isUndefined, negate } from 'lodash-es';
import { of } from 'rxjs';
import { gettext } from '@c8y/ngx-components/gettext';
import { internalApps } from './humanize-app-name.model';
import * as i0 from "@angular/core";
import * as i1 from "@ngx-translate/core";
/*
* Humanize an application name and translates it.
* Usage:
* appNameOrApp | humanizeAppName | async
*/
export class HumanizeAppNamePipe {
constructor(translateService) {
this.translateService = translateService;
}
transform(appNameOrApp) {
if (!appNameOrApp) {
return of('');
}
const appName = this.getAppName(appNameOrApp);
let text;
if (this.isPublicApp(appNameOrApp)) {
text = gettext('{{ appName | translate }} (public)');
}
else {
text = appName;
}
return this.translateService.stream(text, { appName });
}
getAppName(appNameOrApp) {
const appName = this.getFirstDefined([
get(appNameOrApp, 'name'),
get(appNameOrApp, 'contextPath'),
typeof appNameOrApp === 'string' ? appNameOrApp : undefined,
gettext('<no name>')
]);
return internalApps[appName] || this.humanize(appName);
}
getFirstDefined(values) {
return find(values, negate(isUndefined));
}
isPublicApp(appNameOrApp) {
return Boolean(get(appNameOrApp, 'public'));
}
humanize(str = '') {
return str
.split('_')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HumanizeAppNamePipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: HumanizeAppNamePipe, isStandalone: true, name: "humanizeAppName" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HumanizeAppNamePipe, decorators: [{
type: Pipe,
args: [{ name: 'humanizeAppName', standalone: true }]
}], ctorParameters: () => [{ type: i1.TranslateService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVtYW5pemUtYXBwLW5hbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2h1bWFuaXplLWFwcC1uYW1lLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUV6RDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFMUQsU0FBUyxDQUFDLFlBQW9DO1FBQzVDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU5QyxJQUFJLElBQUksQ0FBQztRQUNULElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksR0FBRyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksR0FBRyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxVQUFVLENBQUMsWUFBb0M7UUFDckQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNuQyxHQUFHLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztZQUN6QixHQUFHLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztZQUNoQyxPQUFPLFlBQVksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMzRCxPQUFPLENBQUMsV0FBVyxDQUFDO1NBQ3JCLENBQUMsQ0FBQztRQUNILE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxNQUFNO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sV0FBVyxDQUFDLFlBQW1DO1FBQ3JELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sUUFBUSxDQUFDLEdBQUcsR0FBRyxFQUFFO1FBQ3ZCLE9BQU8sR0FBRzthQUNQLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzsrR0ExQ1UsbUJBQW1COzZHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZpbmQsIGdldCwgaXNVbmRlZmluZWQsIG5lZ2F0ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZ2V0dGV4dCc7XG5pbXBvcnQgeyBpbnRlcm5hbEFwcHMgfSBmcm9tICcuL2h1bWFuaXplLWFwcC1uYW1lLm1vZGVsJztcblxuLypcbiAqIEh1bWFuaXplIGFuIGFwcGxpY2F0aW9uIG5hbWUgYW5kIHRyYW5zbGF0ZXMgaXQuXG4gKiBVc2FnZTpcbiAqICAgYXBwTmFtZU9yQXBwIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmNcbiAqL1xuQFBpcGUoeyBuYW1lOiAnaHVtYW5pemVBcHBOYW1lJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIEh1bWFuaXplQXBwTmFtZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gIHRyYW5zZm9ybShhcHBOYW1lT3JBcHA/OiBJQXBwbGljYXRpb24gfCBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICghYXBwTmFtZU9yQXBwKSB7XG4gICAgICByZXR1cm4gb2YoJycpO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcE5hbWUgPSB0aGlzLmdldEFwcE5hbWUoYXBwTmFtZU9yQXBwKTtcblxuICAgIGxldCB0ZXh0O1xuICAgIGlmICh0aGlzLmlzUHVibGljQXBwKGFwcE5hbWVPckFwcCkpIHtcbiAgICAgIHRleHQgPSBnZXR0ZXh0KCd7eyBhcHBOYW1lIHwgdHJhbnNsYXRlIH19IChwdWJsaWMpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRleHQgPSBhcHBOYW1lO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSh0ZXh0LCB7IGFwcE5hbWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFwcE5hbWUoYXBwTmFtZU9yQXBwPzogSUFwcGxpY2F0aW9uIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcHBOYW1lID0gdGhpcy5nZXRGaXJzdERlZmluZWQoW1xuICAgICAgZ2V0KGFwcE5hbWVPckFwcCwgJ25hbWUnKSxcbiAgICAgIGdldChhcHBOYW1lT3JBcHAsICdjb250ZXh0UGF0aCcpLFxuICAgICAgdHlwZW9mIGFwcE5hbWVPckFwcCA9PT0gJ3N0cmluZycgPyBhcHBOYW1lT3JBcHAgOiB1bmRlZmluZWQsXG4gICAgICBnZXR0ZXh0KCc8bm8gbmFtZT4nKVxuICAgIF0pO1xuICAgIHJldHVybiBpbnRlcm5hbEFwcHNbYXBwTmFtZV0gfHwgdGhpcy5odW1hbml6ZShhcHBOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmlyc3REZWZpbmVkKHZhbHVlcykge1xuICAgIHJldHVybiBmaW5kKHZhbHVlcywgbmVnYXRlKGlzVW5kZWZpbmVkKSk7XG4gIH1cblxuICBwcml2YXRlIGlzUHVibGljQXBwKGFwcE5hbWVPckFwcDogSUFwcGxpY2F0aW9uIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4oZ2V0KGFwcE5hbWVPckFwcCwgJ3B1YmxpYycpKTtcbiAgfVxuXG4gIHByaXZhdGUgaHVtYW5pemUoc3RyID0gJycpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHJcbiAgICAgIC5zcGxpdCgnXycpXG4gICAgICAubWFwKHdvcmQgPT4gd29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAuam9pbignICcpO1xuICB9XG59XG4iXX0=