@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
58 lines • 8.6 kB
JavaScript
import * as angular from 'angular';
function c8yTitleDecorator($q, $delegate, $injector, $rootScope, $location, $templateCache, $compile, c8yHeaderService) {
'ngInject';
$delegate.changeTitle = changeTitle;
$delegate.setTitleElement = setTitleElement;
$rootScope.$on('$routeChangeStart', () => {
changeTitle({});
});
$rootScope.$on('$routeChangeSuccess', event => {
resolveTitle(event);
});
$rootScope.$on('$routeUpdate', event => {
resolveTitle(event);
});
function resolveTitle(event) {
const title = $delegate.get($location.path());
if (title) {
const titleData = $q.when(title.data ? $injector.invoke(title.data) : {});
titleData.then(data => {
const { templateUrl } = data;
if (templateUrl) {
const template = $templateCache.get(templateUrl);
setTitleElement($compile(template)(event.targetScope));
}
else {
changeTitle(data);
}
});
}
}
function changeTitle(newTitleSubtitleObjOrPromise, options = { skipTitleTranslation: false, skipSubtitleTranslation: false }) {
$q.when(newTitleSubtitleObjOrPromise).then(newTitleSubtitleObj => changeTitleInAngular(translate(newTitleSubtitleObj, options)));
}
function translate({ title = '', subtitle = '' }, { skipTitleTranslation = false, skipSubtitleTranslation = false }) {
const titleTemplate = skipTitleTranslation ? '{{ title }}' : '{{ title | translate }}';
const subtitleTemplate = skipSubtitleTranslation
? '{{ subtitle }}'
: '{{ subtitle | translate }}';
const template = `
<h1 class="text-truncate">${titleTemplate}
<small>${subtitleTemplate}</small></h1>
`;
const isolatedScope = $rootScope.$new(true);
isolatedScope.title = title;
isolatedScope.subtitle = subtitle;
return $compile(angular.element(template))(isolatedScope)[0];
}
function changeTitleInAngular(domElement) {
c8yHeaderService.changeTitle(domElement);
}
function setTitleElement($element) {
$element.show();
changeTitleInAngular($element[0]);
}
return $delegate;
}
export { c8yTitleDecorator };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdXBncmFkZS9uZzEvdGl0bGUuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBRW5DLFNBQVMsaUJBQWlCLENBQ3hCLEVBQUUsRUFDRixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1QsY0FBYyxFQUNkLFFBQVEsRUFDUixnQkFBZ0I7SUFFaEIsVUFBVSxDQUFDO0lBRVgsU0FBUyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDcEMsU0FBUyxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFFNUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDdkMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUM1QyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNyQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLFlBQVksQ0FBQyxLQUFVO1FBQzlCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ2pELGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELENBQUM7cUJBQU0sQ0FBQztvQkFDTixXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxXQUFXLENBQ2xCLDRCQUE0QixFQUM1QixPQUFPLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFO1FBRXpFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUMvRCxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLFNBQVMsQ0FDaEIsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLFFBQVEsR0FBRyxFQUFFLEVBQUUsRUFDN0IsRUFBRSxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsdUJBQXVCLEdBQUcsS0FBSyxFQUFFO1FBRWpFLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDO1FBQ3ZGLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCO1lBQzlDLENBQUMsQ0FBQyxnQkFBZ0I7WUFDbEIsQ0FBQyxDQUFDLDRCQUE0QixDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHO2tDQUNhLGFBQWE7ZUFDaEMsZ0JBQWdCO0tBQzFCLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGFBQWEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRWxDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsU0FBUyxvQkFBb0IsQ0FBQyxVQUFVO1FBQ3RDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsU0FBUyxlQUFlLENBQUMsUUFBUTtRQUMvQixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhcic7XG5cbmZ1bmN0aW9uIGM4eVRpdGxlRGVjb3JhdG9yKFxuICAkcSxcbiAgJGRlbGVnYXRlLFxuICAkaW5qZWN0b3IsXG4gICRyb290U2NvcGUsXG4gICRsb2NhdGlvbixcbiAgJHRlbXBsYXRlQ2FjaGUsXG4gICRjb21waWxlLFxuICBjOHlIZWFkZXJTZXJ2aWNlXG4pIHtcbiAgJ25nSW5qZWN0JztcblxuICAkZGVsZWdhdGUuY2hhbmdlVGl0bGUgPSBjaGFuZ2VUaXRsZTtcbiAgJGRlbGVnYXRlLnNldFRpdGxlRWxlbWVudCA9IHNldFRpdGxlRWxlbWVudDtcblxuICAkcm9vdFNjb3BlLiRvbignJHJvdXRlQ2hhbmdlU3RhcnQnLCAoKSA9PiB7XG4gICAgY2hhbmdlVGl0bGUoe30pO1xuICB9KTtcblxuICAkcm9vdFNjb3BlLiRvbignJHJvdXRlQ2hhbmdlU3VjY2VzcycsIGV2ZW50ID0+IHtcbiAgICByZXNvbHZlVGl0bGUoZXZlbnQpO1xuICB9KTtcblxuICAkcm9vdFNjb3BlLiRvbignJHJvdXRlVXBkYXRlJywgZXZlbnQgPT4ge1xuICAgIHJlc29sdmVUaXRsZShldmVudCk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHJlc29sdmVUaXRsZShldmVudDogYW55KSB7XG4gICAgY29uc3QgdGl0bGUgPSAkZGVsZWdhdGUuZ2V0KCRsb2NhdGlvbi5wYXRoKCkpO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgY29uc3QgdGl0bGVEYXRhID0gJHEud2hlbih0aXRsZS5kYXRhID8gJGluamVjdG9yLmludm9rZSh0aXRsZS5kYXRhKSA6IHt9KTtcbiAgICAgIHRpdGxlRGF0YS50aGVuKGRhdGEgPT4ge1xuICAgICAgICBjb25zdCB7IHRlbXBsYXRlVXJsIH0gPSBkYXRhO1xuICAgICAgICBpZiAodGVtcGxhdGVVcmwpIHtcbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCh0ZW1wbGF0ZVVybCk7XG4gICAgICAgICAgc2V0VGl0bGVFbGVtZW50KCRjb21waWxlKHRlbXBsYXRlKShldmVudC50YXJnZXRTY29wZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNoYW5nZVRpdGxlKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjaGFuZ2VUaXRsZShcbiAgICBuZXdUaXRsZVN1YnRpdGxlT2JqT3JQcm9taXNlLFxuICAgIG9wdGlvbnMgPSB7IHNraXBUaXRsZVRyYW5zbGF0aW9uOiBmYWxzZSwgc2tpcFN1YnRpdGxlVHJhbnNsYXRpb246IGZhbHNlIH1cbiAgKSB7XG4gICAgJHEud2hlbihuZXdUaXRsZVN1YnRpdGxlT2JqT3JQcm9taXNlKS50aGVuKG5ld1RpdGxlU3VidGl0bGVPYmogPT5cbiAgICAgIGNoYW5nZVRpdGxlSW5Bbmd1bGFyKHRyYW5zbGF0ZShuZXdUaXRsZVN1YnRpdGxlT2JqLCBvcHRpb25zKSlcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKFxuICAgIHsgdGl0bGUgPSAnJywgc3VidGl0bGUgPSAnJyB9LFxuICAgIHsgc2tpcFRpdGxlVHJhbnNsYXRpb24gPSBmYWxzZSwgc2tpcFN1YnRpdGxlVHJhbnNsYXRpb24gPSBmYWxzZSB9XG4gICkge1xuICAgIGNvbnN0IHRpdGxlVGVtcGxhdGUgPSBza2lwVGl0bGVUcmFuc2xhdGlvbiA/ICd7eyB0aXRsZSB9fScgOiAne3sgdGl0bGUgfCB0cmFuc2xhdGUgfX0nO1xuICAgIGNvbnN0IHN1YnRpdGxlVGVtcGxhdGUgPSBza2lwU3VidGl0bGVUcmFuc2xhdGlvblxuICAgICAgPyAne3sgc3VidGl0bGUgfX0nXG4gICAgICA6ICd7eyBzdWJ0aXRsZSB8IHRyYW5zbGF0ZSB9fSc7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBgXG4gICAgICA8aDEgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+JHt0aXRsZVRlbXBsYXRlfVxuICAgICAgPHNtYWxsPiR7c3VidGl0bGVUZW1wbGF0ZX08L3NtYWxsPjwvaDE+XG4gICAgYDtcblxuICAgIGNvbnN0IGlzb2xhdGVkU2NvcGUgPSAkcm9vdFNjb3BlLiRuZXcodHJ1ZSk7XG4gICAgaXNvbGF0ZWRTY29wZS50aXRsZSA9IHRpdGxlO1xuICAgIGlzb2xhdGVkU2NvcGUuc3VidGl0bGUgPSBzdWJ0aXRsZTtcblxuICAgIHJldHVybiAkY29tcGlsZShhbmd1bGFyLmVsZW1lbnQodGVtcGxhdGUpKShpc29sYXRlZFNjb3BlKVswXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNoYW5nZVRpdGxlSW5Bbmd1bGFyKGRvbUVsZW1lbnQpIHtcbiAgICBjOHlIZWFkZXJTZXJ2aWNlLmNoYW5nZVRpdGxlKGRvbUVsZW1lbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0VGl0bGVFbGVtZW50KCRlbGVtZW50KSB7XG4gICAgJGVsZW1lbnQuc2hvdygpO1xuICAgIGNoYW5nZVRpdGxlSW5Bbmd1bGFyKCRlbGVtZW50WzBdKTtcbiAgfVxuXG4gIHJldHVybiAkZGVsZWdhdGU7XG59XG5cbmV4cG9ydCB7IGM4eVRpdGxlRGVjb3JhdG9yIH07XG4iXX0=