2019-05-08 14:48:57 +02:00
|
|
|
import { Component, OnInit } from '@angular/core';
|
2019-04-30 16:14:24 +02:00
|
|
|
import { MatDialog } from '@angular/material';
|
2019-05-08 14:48:57 +02:00
|
|
|
import { TranslateService } from '@ngx-translate/core';
|
2019-04-30 16:14:24 +02:00
|
|
|
import { AuthService } from '../../core/services/auth/auth.service';
|
|
|
|
import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.component';
|
2019-04-24 11:26:53 +02:00
|
|
|
|
|
|
|
declare interface RouteInfo {
|
2019-05-08 14:48:57 +02:00
|
|
|
path: string;
|
|
|
|
title: string;
|
|
|
|
icon: string;
|
|
|
|
requiresAuthentication: boolean;
|
2019-04-24 11:26:53 +02:00
|
|
|
}
|
|
|
|
declare interface GroupMenuItem {
|
|
|
|
title: string;
|
|
|
|
routes: RouteInfo[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export const GENERAL_ROUTES: RouteInfo[] = [
|
2019-05-08 14:48:57 +02:00
|
|
|
{ path: '/home', title: 'SIDE-BAR.DASHBOARD', icon: 'dashboard', requiresAuthentication: true }
|
2019-04-24 11:26:53 +02:00
|
|
|
];
|
|
|
|
export const DMP_ROUTES: RouteInfo[] = [
|
2019-05-08 14:48:57 +02:00
|
|
|
{ path: '/plans', title: 'SIDE-BAR.MY-DMPS', icon: 'view_agenda', requiresAuthentication: true },
|
|
|
|
{ path: '/datasets', title: 'SIDE-BAR.MY-DATASET-DESC', icon: 'library_books', requiresAuthentication: true },
|
|
|
|
{ path: '/projects', title: 'SIDE-BAR.MY-PROJECTS', icon: 'work_outline', requiresAuthentication: true }
|
2019-04-24 11:26:53 +02:00
|
|
|
];
|
|
|
|
// export const HISTORY_ROUTES: RouteInfo[] = [
|
2019-05-08 14:48:57 +02:00
|
|
|
// { path: '/typography', title: 'SIDE-BAR.HISTORY-VISITED', icon: 'visibility'},
|
|
|
|
// { path: '/icons', title: 'SIDE-BAR.HISTORY-EDITED', icon: 'edit'}
|
2019-04-24 11:26:53 +02:00
|
|
|
// ];
|
|
|
|
export const PUBLIC_ROUTES: RouteInfo[] = [
|
2019-05-08 14:48:57 +02:00
|
|
|
{ path: '/explore', title: 'SIDE-BAR.PUBLIC-DESC', icon: 'public', requiresAuthentication: false },
|
|
|
|
{ path: '/explore-plans', title: 'SIDE-BAR.PUBLIC-DMPS', icon: 'public', requiresAuthentication: false }
|
2019-04-24 11:26:53 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
@Component({
|
2019-05-08 14:48:57 +02:00
|
|
|
selector: 'app-sidebar',
|
|
|
|
templateUrl: './sidebar.component.html',
|
|
|
|
styleUrls: ['./sidebar.component.css', './sidebar.component.scss']
|
2019-04-24 11:26:53 +02:00
|
|
|
})
|
|
|
|
export class SidebarComponent implements OnInit {
|
2019-05-08 14:48:57 +02:00
|
|
|
generalItems: GroupMenuItem;
|
|
|
|
dmpItems: GroupMenuItem;
|
|
|
|
// historyItems: GroupMenuItem;
|
|
|
|
publicItems: GroupMenuItem;
|
|
|
|
groupMenuItems: GroupMenuItem[] = [];
|
2019-04-24 11:26:53 +02:00
|
|
|
|
2019-05-08 14:48:57 +02:00
|
|
|
constructor(public translate: TranslateService, private authentication: AuthService, private dialog: MatDialog) { }
|
2019-04-24 11:26:53 +02:00
|
|
|
|
2019-05-08 14:48:57 +02:00
|
|
|
ngOnInit() {
|
|
|
|
this.generalItems = {
|
|
|
|
title: 'SIDE-BAR.GENERAL',
|
|
|
|
routes: GENERAL_ROUTES
|
|
|
|
}
|
|
|
|
this.groupMenuItems.push(this.generalItems);
|
2019-04-24 11:26:53 +02:00
|
|
|
|
2019-05-08 14:48:57 +02:00
|
|
|
this.dmpItems = {
|
|
|
|
title: 'SIDE-BAR.DMP',
|
|
|
|
routes: DMP_ROUTES
|
|
|
|
}
|
|
|
|
this.groupMenuItems.push(this.dmpItems);
|
2019-04-24 11:26:53 +02:00
|
|
|
|
2019-05-08 14:48:57 +02:00
|
|
|
// this.historyItems = {
|
|
|
|
// title: 'SIDE-BAR.HISTORY',
|
|
|
|
// routes: HISTORY_ROUTES
|
|
|
|
// }
|
|
|
|
// this.groupMenuItems.push(this.historyItems);
|
2019-04-24 11:26:53 +02:00
|
|
|
|
2019-05-08 14:48:57 +02:00
|
|
|
this.publicItems = {
|
|
|
|
title: 'SIDE-BAR.PUBLIC',
|
|
|
|
routes: PUBLIC_ROUTES
|
|
|
|
}
|
|
|
|
this.groupMenuItems.push(this.publicItems);
|
2019-04-24 11:26:53 +02:00
|
|
|
}
|
|
|
|
|
2019-04-30 16:14:24 +02:00
|
|
|
public principalHasAvatar(): boolean {
|
|
|
|
return this.authentication.current().avatarUrl != null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public getPrincipalAvatar(): string {
|
|
|
|
return this.authentication.current().avatarUrl;
|
|
|
|
}
|
|
|
|
|
|
|
|
public isAuthenticated(): boolean {
|
|
|
|
return !(!this.authentication.current());
|
|
|
|
}
|
|
|
|
|
2019-05-08 14:48:57 +02:00
|
|
|
public getMenuItems() {
|
|
|
|
|
|
|
|
if (this.isAuthenticated()) {
|
|
|
|
return this.groupMenuItems;
|
|
|
|
} else {
|
|
|
|
const groupMenuItems = this.groupMenuItems.filter(x => x);
|
|
|
|
groupMenuItems.forEach(group => {
|
|
|
|
group.routes = group.routes.filter(y => !y.requiresAuthentication);
|
|
|
|
});
|
|
|
|
return groupMenuItems.filter(x => x.routes.length > 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-04-30 16:14:24 +02:00
|
|
|
openProfile() {
|
|
|
|
const dialogRef = this.dialog.open(UserDialogComponent, {
|
|
|
|
hasBackdrop: true,
|
|
|
|
autoFocus: false,
|
|
|
|
closeOnNavigation: true,
|
|
|
|
disableClose: false,
|
|
|
|
position: { top: '64px', right: '1em' }
|
|
|
|
});
|
|
|
|
}
|
2019-04-24 11:26:53 +02:00
|
|
|
}
|