UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

58 lines 8.6 kB
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=