101 lines
2.6 KiB
TypeScript
101 lines
2.6 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, ActivatedRoute, NavigationEnd } from '@angular/router';
|
|
import {BreadcrumbModule,MenuItem} from 'primeng/primeng';
|
|
|
|
@Component({
|
|
selector: 'breadcrumb',
|
|
templateUrl: './breadcrumb.component.html',
|
|
styleUrls: ['./breadcrumb.component.css']
|
|
})
|
|
export class BreadcrumbComponent implements OnInit {
|
|
|
|
|
|
breadcrumbHome: MenuItem = {icon: 'fa fa-home', routerLink: "/welcome"};
|
|
breadcrumbData: MenuItem[] = new Array<MenuItem>();
|
|
|
|
ngOnInit() {
|
|
|
|
}
|
|
|
|
constructor(private router: Router, private route: ActivatedRoute) {
|
|
router.events.subscribe(
|
|
event =>{
|
|
console.log("Router event captured")
|
|
console.log(event)
|
|
|
|
|
|
if(event instanceof NavigationEnd){
|
|
//this.breadcrumbData.push("")
|
|
console.log(event.urlAfterRedirects);
|
|
console.log(this.route);
|
|
|
|
|
|
//this.breadcrumbData.length = 0;
|
|
this.route.children.forEach( child => {
|
|
let menuItem : MenuItem = this.guessMenuItemFromActivatedRoute(child, event);
|
|
if(menuItem != null) {
|
|
this.adaptBreadcrumbByMenuItem(menuItem);
|
|
//this.breadcrumbData.push(menuItem);
|
|
}
|
|
})
|
|
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
|
|
guessMenuItemFromActivatedRoute(activatedRoute : any, event : NavigationEnd) { //it's important to leave it as "any"
|
|
|
|
let menuItem : MenuItem = null;
|
|
let componentName = activatedRoute.component.name;
|
|
|
|
let params = activatedRoute.queryParams.getValue();
|
|
let url = event.urlAfterRedirects.split("?")[0];
|
|
let label = null;
|
|
|
|
if(componentName == "ProjectsComponent") {
|
|
label = "My Projects";
|
|
}
|
|
if(componentName == "DmpComponent"){
|
|
label = "My Data Management Plans";
|
|
}
|
|
|
|
if(componentName == "DatasetsComponent"){
|
|
label = "Datasets of DMP '"+params["label"]+"'";
|
|
}
|
|
|
|
if(componentName == "DynamicFormComponent"){
|
|
label = "Form of dataset '"+params["label"]+"'";
|
|
}
|
|
|
|
|
|
if(label != null)
|
|
menuItem = {"label": label, "routerLink": url, "queryParams" : params };
|
|
|
|
console.log("COMPONENT NAME="+componentName);
|
|
|
|
return menuItem;
|
|
}
|
|
|
|
|
|
adaptBreadcrumbByMenuItem(menuItem : MenuItem){
|
|
|
|
let breadcrumbDataNew: MenuItem[] = new Array<MenuItem>();
|
|
for(var i=0; i<this.breadcrumbData.length;i++){
|
|
if(this.breadcrumbData[i].label == menuItem.label)
|
|
break;
|
|
else
|
|
breadcrumbDataNew.push(this.breadcrumbData[i]);
|
|
}
|
|
this.breadcrumbData = breadcrumbDataNew;
|
|
|
|
this.breadcrumbData.push(menuItem);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|