OpenSlides/client/src/app/site/site.component.ts

117 lines
3.1 KiB
TypeScript
Raw Normal View History

2018-08-24 13:05:03 +02:00
import { Component, OnInit, ViewChild } from '@angular/core';
import { AuthService } from 'app/core/services/auth.service';
import { OperatorService } from 'app/core/services/operator.service';
2018-08-29 13:21:25 +02:00
import { TranslateService } from '@ngx-translate/core';
import { BaseComponent } from 'app/base.component';
import { pageTransition, navItemAnim } from 'app/shared/animations';
import { MatDialog, MatSidenav } from '@angular/material';
import { ViewportService } from '../core/services/viewport.service';
@Component({
selector: 'app-site',
animations: [pageTransition, navItemAnim],
templateUrl: './site.component.html',
styleUrls: ['./site.component.scss']
})
export class SiteComponent extends BaseComponent implements OnInit {
/**
* HTML element of the side panel
*/
2018-08-29 13:21:25 +02:00
@ViewChild('sideNav') public sideNav: MatSidenav;
/**
* Get the username from the operator (should be known already)
*/
public username: string;
/**
* is the user logged in, or the anonymous is active.
*/
public isLoggedIn: boolean;
2018-08-07 12:30:21 +02:00
/**
* Constructor
*
* @param authService
* @param operator
* @param vp
* @param translate
* @param dialog
*/
2018-08-29 13:21:25 +02:00
public constructor(
2018-06-25 17:03:52 +02:00
private authService: AuthService,
2018-08-29 13:21:25 +02:00
operator: OperatorService,
public vp: ViewportService,
2018-08-07 12:30:21 +02:00
public translate: TranslateService,
public dialog: MatDialog
) {
super();
operator.getObservable().subscribe(user => {
if (user) {
this.username = user.full_name;
} else {
this.username = translate.instant('Guest');
}
this.isLoggedIn = !!user;
});
}
2018-06-25 17:03:52 +02:00
/**
* Initialize the site component
*/
2018-08-29 13:21:25 +02:00
public ngOnInit() {
this.vp.checkForChange();
2018-08-22 16:03:49 +02:00
// get a translation via code: use the translation service
2018-08-16 17:03:39 +02:00
// this.translate.get('Motions').subscribe((res: string) => {
2018-08-22 16:03:49 +02:00
// console.log('translation of motions in the target language: ' + res);
// });
2018-08-24 13:05:03 +02:00
}
/**
* Closes the sidenav in mobile view
*/
2018-08-29 13:21:25 +02:00
public toggleSideNav() {
if (this.vp.isMobile) {
this.sideNav.toggle();
}
}
/**
* Let the user change the language
* @param lang the desired language (en, de, fr, ...)
*/
2018-08-29 13:21:25 +02:00
public selectLang(selection: string): void {
2018-08-07 12:30:21 +02:00
this.translate.use(selection).subscribe();
}
2018-08-07 12:30:21 +02:00
/**
* Get the name of a Language by abbreviation.
*/
2018-08-29 13:21:25 +02:00
public getLangName(abbreviation: string): string {
2018-08-07 12:30:21 +02:00
if (abbreviation === 'en') {
return this.translate.instant('English');
} else if (abbreviation === 'de') {
return this.translate.instant('German');
} else if (abbreviation === 'fr') {
return this.translate.instant('French');
}
2018-06-25 17:03:52 +02:00
}
// TODO: Implement this
2018-08-29 13:21:25 +02:00
public editProfile() {}
// TODO: Implement this
2018-08-29 13:21:25 +02:00
public changePassword() {}
/**
* Function to log out the current user
*/
2018-08-29 13:21:25 +02:00
public logout() {
this.authService.logout();
}
}