argos/dmp-frontend/src/app/app.component.ts

167 lines
5.9 KiB
TypeScript
Raw Normal View History

2019-11-19 17:28:25 +01:00
import { of as observableOf, Subscription } from 'rxjs';
2020-05-27 16:19:38 +02:00
import { switchMap, filter, map, takeUntil } from 'rxjs/operators';
2019-01-18 18:03:45 +01:00
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
2017-12-14 11:41:26 +01:00
import { TranslateService } from '@ngx-translate/core';
2018-08-30 13:09:36 +02:00
import { environment } from '../environments/environment';
2019-01-18 18:03:45 +01:00
import { AuthService } from './core/services/auth/auth.service';
import { CultureService } from './core/services/culture/culture-service';
import { BreadCrumbResolverService } from './ui/misc/breadcrumb/service/breadcrumb.service';
2019-09-16 17:46:19 +02:00
import { Title } from '@angular/platform-browser';
2019-11-19 17:28:25 +01:00
import { NgcCookieConsentService, NgcStatusChangeEvent } from "ngx-cookieconsent";
import { CookieService } from "ngx-cookie-service";
import { LanguageService } from './core/services/language/language.service';
import { ConfigurationService } from './core/services/configuration/configuration.service';
2017-11-08 14:33:14 +01:00
declare const gapi: any;
2017-12-19 18:34:00 +01:00
declare var $: any;
2019-01-18 18:03:45 +01:00
@Component({
2018-10-05 17:00:54 +02:00
selector: 'app-root',
templateUrl: './app.component.html',
2019-01-18 18:03:45 +01:00
styleUrls: ['./app.component.scss']
})
2017-11-02 15:19:12 +01:00
export class AppComponent implements OnInit {
2017-11-14 15:06:00 +01:00
2019-09-23 10:17:03 +02:00
hasBreadCrumb = observableOf(false);
2018-10-05 17:00:54 +02:00
sideNavOpen = false;
2020-05-27 16:19:38 +02:00
helpContentEnabled: boolean;
2019-11-19 17:28:25 +01:00
private statusChangeSubscription: Subscription;
2020-05-27 16:19:38 +02:00
onlySplash = true;
2018-10-05 17:00:54 +02:00
constructor(
private router: Router,
private route: ActivatedRoute,
private authentication: AuthService,
private translate: TranslateService,
private breadCrumbResolverService: BreadCrumbResolverService,
2019-09-16 17:46:19 +02:00
private titleService: Title,
2019-11-19 17:28:25 +01:00
private cultureService: CultureService,
private cookieService: CookieService,
private ccService: NgcCookieConsentService,
private language: LanguageService,
private configurationService: ConfigurationService
2018-10-05 17:00:54 +02:00
) {
this.initializeServices();
this.helpContentEnabled = configurationService.helpService.enabled;
2018-10-05 17:00:54 +02:00
}
onActivate(event: any) {
this.breadCrumbResolverService.push(event);
}
onDeactivate(event: any) {
//this.breadCrumbResolverService.clear()
}
ngOnInit() {
2020-05-27 16:19:38 +02:00
if (!this.configurationService.useSplash) {
this.onlySplash = false;
this.router.navigate(['/reload']).then(() => this.router.navigate(['/home']));
} else {
this.onlySplash = true;
this.router.navigate(['/reload']).then(() => this.router.navigate(['/splash']));
}
2019-11-19 17:28:25 +01:00
if (!this.cookieService.check("cookiesConsent")) {
this.cookieService.set("cookiesConsent", "false", 356);
}
2019-09-23 10:17:03 +02:00
this.hasBreadCrumb = this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
map(() => this.route),
map(route => route.firstChild),
switchMap(route => route.data),
2019-11-19 17:28:25 +01:00
map(data => data['breadcrumb']));
2019-09-16 17:46:19 +02:00
const appTitle = this.titleService.getTitle();
this.router
.events.pipe(
filter(event => event instanceof NavigationEnd),
map(() => {
let child = this.route.firstChild;
while (child.firstChild) {
child = child.firstChild;
}
if (child.snapshot.data['title']) {
return child.snapshot.data['title'];
}
return appTitle;
})
).subscribe((ttl: string) => {
if (ttl.length > 0) {
this.translate.get(ttl).subscribe((translated: string) => {
this.translate.get('GENERAL.TITLES.PREFIX').subscribe((titlePrefix: string) => {
2019-09-16 17:46:19 +02:00
this.titleService.setTitle(titlePrefix + translated);
});
});
} else {
this.translate.get('GENERAL.TITLES.GENERAL').subscribe((translated: string) => {
2019-09-16 17:46:19 +02:00
this.titleService.setTitle(translated);
});
}
});
2019-11-19 17:28:25 +01:00
this.statusChangeSubscription = this.ccService.statusChange$.subscribe((event: NgcStatusChangeEvent) => {
if (event.status == "dismiss") {
this.cookieService.set("cookiesConsent", "true", 365);
}
});
this.ccService.getConfig().content.href = this.configurationService.app + "terms-of-service";
this.ccService.getConfig().cookie.domain = this.configurationService.app;
this.translate
.get(['COOKIE.MESSAGE', 'COOKIE.DISMISS', 'COOKIE.DENY', 'COOKIE.LINK', 'COOKIE.POLICY'])
.subscribe(data => {
this.ccService.getConfig().content = this.ccService.getConfig().content || {};
// Override default messages with the translated ones
this.ccService.getConfig().content.message = data['COOKIE.MESSAGE'];
this.ccService.getConfig().content.dismiss = data['COOKIE.DISMISS'];
this.ccService.getConfig().content.deny = data['COOKIE.DENY'];
this.ccService.getConfig().content.link = data['COOKIE.LINK'];
this.ccService.getConfig().content.policy = data['COOKIE.POLICY'];
if (this.cookieService.get("cookiesConsent") == "true") {
this.ccService.getConfig().enabled = false;
2019-11-19 17:28:25 +01:00
}
this.ccService.destroy();
this.ccService.init(this.ccService.getConfig());
})
2019-11-19 17:28:25 +01:00
}
ngOnDestroy() {
this.statusChangeSubscription.unsubscribe();
2018-10-05 17:00:54 +02:00
}
login() {
//redirect to login page
this.router.navigate(['/login'], { queryParams: { /*refresh : Math.random() ,returnUrl: this.state.url*/ } });
}
logout() {
}
public isAuthenticated(): boolean {
return !(!this.authentication.current());
}
goToDMPs() {
2019-01-18 18:03:45 +01:00
this.router.navigate(['/plans'], { queryParams: { /*refresh : Math.random() ,returnUrl: this.state.url*/ } });
2018-10-05 17:00:54 +02:00
}
// ----------- UNCOMMENT TO ADD AGAIN GRANTS --------
// goToGrants() {
// this.router.navigate(['/grants'], { queryParams: { /*refresh : Math.random() ,returnUrl: this.state.url*/ } });
// }
2018-10-05 17:00:54 +02:00
initializeServices() {
this.translate.setDefaultLang('en');
this.authentication.current() && this.authentication.current().culture ? this.cultureService.cultureSelected(this.authentication.current().culture) : this.cultureService.cultureSelected(this.configurationService.defaultCulture);
this.authentication.current() && this.authentication.current().language ? this.language.changeLanguage(this.authentication.current().language) : this.language.changeLanguage('en');
2018-10-05 17:00:54 +02:00
}
}
2017-11-01 18:18:27 +01:00