Setting page title on route change
Change-Id: I9c23d0215c7967eb3eff3a341ab3f210fb16a47a
diff --git a/src/app/core/index.ts b/src/app/core/index.ts
index 270541b..d93e627 100644
--- a/src/app/core/index.ts
+++ b/src/app/core/index.ts
@@ -6,6 +6,7 @@
import {xosTable} from './table/table';
import {RuntimeStates} from './services/runtime-states';
import {NavigationService} from './services/navigation';
+import {PageTitle} from './services/page-title';
export const xosCore = 'xosCore';
@@ -14,6 +15,7 @@
.config(routesConfig)
.provider('RuntimeStates', RuntimeStates)
.service('NavigationService', NavigationService)
+ .service('PageTitle', PageTitle)
.component('xosHeader', xosHeader)
.component('xosFooter', xosFooter)
.component('xosNav', xosNav)
diff --git a/src/app/core/services/page-title.ts b/src/app/core/services/page-title.ts
new file mode 100644
index 0000000..6f7e0c3
--- /dev/null
+++ b/src/app/core/services/page-title.ts
@@ -0,0 +1,33 @@
+import {StyleConfig} from '../../config/style.config';
+export interface IXosPageTitleService {
+ get(): string;
+ set(title: string): void;
+ formatStateName(stateName: string): string;
+}
+
+export class PageTitle {
+ static $inject = ['$window', '$transitions'];
+ constructor(
+ private $window: angular.IWindowService,
+ private $transitions: any // missing definition
+ ) {
+ console.log('page title');
+ this.$transitions.onSuccess({ to: '**' }, (transtion) => {
+ this.set(this.formatStateName(transtion.$to().name));
+ });
+ }
+
+ get() {
+ return this.$window.document.title;
+ }
+
+ set(title: string) {
+ this.$window.document.title = `${StyleConfig.projectName} - ${title}`;
+ }
+
+ private formatStateName(stateName: string): string {
+ // TODO pluralize and capitalize first letter only
+ return stateName.replace('xos.', '').toUpperCase();
+ }
+}
+