68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { Component, OnInit, RendererFactory2, Renderer2 } from '@angular/core';
|
|
import { Title } from '@angular/platform-browser';
|
|
import { Router, ActivatedRouteSnapshot, NavigationEnd } from '@angular/router';
|
|
import { TranslateService, LangChangeEvent } from '@ngx-translate/core';
|
|
import * as dayjs from 'dayjs';
|
|
|
|
import { AccountService } from 'app/core/auth/account.service';
|
|
|
|
@Component({
|
|
selector: 'jhi-main',
|
|
templateUrl: './main.component.html',
|
|
styleUrls: ['./main.component.scss'],
|
|
})
|
|
export class MainComponent implements OnInit {
|
|
private renderer: Renderer2;
|
|
|
|
constructor(
|
|
private accountService: AccountService,
|
|
private titleService: Title,
|
|
private router: Router,
|
|
private translateService: TranslateService,
|
|
rootRenderer: RendererFactory2
|
|
) {
|
|
this.renderer = rootRenderer.createRenderer(document.querySelector('html'), null);
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
// try to log in automatically
|
|
this.accountService.identity().subscribe();
|
|
|
|
this.router.events.subscribe(event => {
|
|
if (event instanceof NavigationEnd) {
|
|
this.updateTitle();
|
|
}
|
|
});
|
|
|
|
this.translateService.onLangChange.subscribe((langChangeEvent: LangChangeEvent) => {
|
|
this.updateTitle();
|
|
dayjs.locale(langChangeEvent.lang);
|
|
this.renderer.setAttribute(document.querySelector('html'), 'lang', langChangeEvent.lang);
|
|
});
|
|
}
|
|
|
|
private getPageTitle(routeSnapshot: ActivatedRouteSnapshot): string {
|
|
let title: string = routeSnapshot.data['pageTitle'] ?? '';
|
|
if (routeSnapshot.firstChild) {
|
|
title = this.getPageTitle(routeSnapshot.firstChild) || title;
|
|
}
|
|
return title;
|
|
}
|
|
|
|
private updateTitle(): void {
|
|
let pageTitle = this.getPageTitle(this.router.routerState.snapshot.root);
|
|
if (!pageTitle) {
|
|
pageTitle = 'global.title';
|
|
}
|
|
this.translateService.get(pageTitle).subscribe(title => this.titleService.setTitle(title));
|
|
}
|
|
|
|
isAdmin(): boolean {
|
|
return this.accountService.hasAnyAuthority('ROLE_ADMIN');
|
|
}
|
|
|
|
isAuthenticated(): boolean {
|
|
return this.accountService.isAuthenticated();
|
|
}
|
|
}
|