diff --git a/dmp-frontend/src/app/app-routing.module.ts b/dmp-frontend/src/app/app-routing.module.ts
index 867ad6ab1..ac9c630c0 100644
--- a/dmp-frontend/src/app/app-routing.module.ts
+++ b/dmp-frontend/src/app/app-routing.module.ts
@@ -12,8 +12,7 @@ const appRoutes: Routes = [
path: 'datasets',
loadChildren: './datasets/dataset.module#DatasetModule',
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'Folder'
+ breadcrumb: true
},
canActivate: [AuthGuard]
},
@@ -21,8 +20,7 @@ const appRoutes: Routes = [
path: 'about',
loadChildren: './about/about.module#AboutModule',
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'About'
+ breadcrumb: true
},
canActivate: [AuthGuard]
},
@@ -30,8 +28,7 @@ const appRoutes: Routes = [
path: 'projects',
loadChildren: './projects/projects.module#ProjectsModule',
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'Projects'
+ breadcrumb: true
},
canActivate: [AuthGuard]
},
@@ -39,8 +36,7 @@ const appRoutes: Routes = [
path: "dmps",
loadChildren: './dmps/dmps.module#DataManagementPlanModule',
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'DMPs'
+ breadcrumb: true
},
canActivate: [AuthGuard]
},
@@ -48,8 +44,7 @@ const appRoutes: Routes = [
path: "dmp-profiles",
loadChildren: './dmp-profiles/dmp-profile.module#DataManagamentPlanProfileModule',
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'DMP Profiles'
+ breadcrumb: true
},
canActivate: [AuthGuard]
},
@@ -57,8 +52,7 @@ const appRoutes: Routes = [
path: 'form',
loadChildren: './dataset-profile-form/dataset-profile.module#DatasetProfileModule',
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'Dataset Profile'
+ breadcrumb: true
},
canActivate: [AuthGuard]
},
@@ -66,8 +60,7 @@ const appRoutes: Routes = [
path: 'home',
component: HomepageComponent,
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'Home'
+ breadcrumb: false
},
canActivate: [AuthGuard]
},
@@ -75,8 +68,7 @@ const appRoutes: Routes = [
path: '',
redirectTo: '/welcome',
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'Home'
+ breadcrumbs: true
},
pathMatch: 'full'
},
@@ -84,7 +76,7 @@ const appRoutes: Routes = [
path: "unauthorized",
loadChildren: './unauthorized/unauthorized.module#UnauthorizedModule',
data: {
- // Interpolates values resolved by the router
+ breadcrumb: true
},
},
{
@@ -95,23 +87,20 @@ const appRoutes: Routes = [
path: "datasetsProfiles",
loadChildren: './datasets-admin-listing/dataset-admin.module#DatasetAdminModule',
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'Datasets Profiles'
+ breadcrumb: true
},
},
{
path: "welcome",
component: WelcomepageComponent,
data: {
- // Interpolates values resolved by the router
- breadcrumbs: 'Home'
+ breadcrumb: true
},
},
{
path: "api/oauth/authorized/b2access",
component: B2AccessLoginComponent,
data: {
- // Interpolates values resolved by the router
},
}
];
diff --git a/dmp-frontend/src/app/app.component.html b/dmp-frontend/src/app/app.component.html
index ba98603d4..b80834747 100644
--- a/dmp-frontend/src/app/app.component.html
+++ b/dmp-frontend/src/app/app.component.html
@@ -9,7 +9,7 @@
diff --git a/dmp-frontend/src/app/app.component.ts b/dmp-frontend/src/app/app.component.ts
index bf7bf8656..cbd0b406a 100644
--- a/dmp-frontend/src/app/app.component.ts
+++ b/dmp-frontend/src/app/app.component.ts
@@ -1,8 +1,9 @@
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
-import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, ActivatedRoute, NavigationExtras } from '@angular/router';
+import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, ActivatedRoute, NavigationExtras, NavigationEnd } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { LanguageResolverService } from './services/language-resolver/language-resolver.service';
import { BreadCrumbResolverService } from './services/breadcrumb/breadcrumb-resolver.service';
+import { Observable } from 'rxjs/Observable';
declare const gapi: any;
@@ -17,6 +18,7 @@ declare var $: any;
})
export class AppComponent implements OnInit {
+ hasBreadCrumb = Observable.of(false);
constructor(
private router: Router,
private route: ActivatedRoute,
@@ -40,6 +42,12 @@ export class AppComponent implements OnInit {
}
ngOnInit() {
+ this.hasBreadCrumb = this.router.events
+ .filter(event => event instanceof NavigationEnd)
+ .map(() => this.route)
+ .map(route => route.firstChild)
+ .switchMap(route => route.data)
+ .map(data => data['breadcrumb'])
}
login() {
diff --git a/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.ts b/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.ts
index 0f5691e6e..7f8574d99 100644
--- a/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.ts
+++ b/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.ts
@@ -30,6 +30,9 @@ import { ServiceModel } from '../../models/services/ServiceModel';
import { DataRepositoryModel } from '../../models/dataRepositories/DataRepositoryModel';
import { ExternalSourcesConfigurationService } from '../../services/external-sources/external-sources-configuration.service';
import { ExternalSourcesConfiguration } from '../../models/external-sources/ExternalSourcesConfiguration';
+import { IBreadCrumbComponent } from '../../shared/components/breadcrumb/definition/IBreadCrumbComponent';
+import { Observable } from 'rxjs/Observable';
+import { BreadcrumbItem } from '../../shared/components/breadcrumb/definition/breadcrumb-item';
@Component({
selector: 'app-dataset-wizard-component',
@@ -37,7 +40,8 @@ import { ExternalSourcesConfiguration } from '../../models/external-sources/Exte
styleUrls: ['./dataset-wizard.component.scss'],
encapsulation: ViewEncapsulation.None
})
-export class DatasetWizardComponent {
+export class DatasetWizardComponent implements OnInit, IBreadCrumbComponent {
+ breadCrumbs: Observable;
@ViewChild('stepper') stepper: MatStepper;
//autocomplete Display Functions;
@@ -111,6 +115,30 @@ export class DatasetWizardComponent {
this.datasetWizardService.getSingle(this.itemId).map(data => data as DatasetWizardModel)
.subscribe(data => {
this.datasetWizardModel = JsonSerializer.fromJSONObject(data, DatasetWizardModel);
+ this.breadCrumbs = Observable.of([
+ {
+ parentComponentName: null,
+ label: "Datasets",
+ url: "/datasets",
+ notFoundResolver: [
+ {
+ parentComponentName: null,
+ label: this.datasetWizardModel.dmp.project.label,
+ url: "/projects/edit/" + this.datasetWizardModel.dmp.project.id
+ },
+ {
+ parentComponentName: null,
+ label: this.datasetWizardModel.dmp.label,
+ url: "/dmps/edit/" + this.datasetWizardModel.dmp.id,
+ },
+ ]
+ },
+ {
+ parentComponentName: null,
+ label: this.datasetWizardModel.label,
+ url: "/datasets/" + this.datasetWizardModel.id
+ }
+ ])
this.formGroup = this.datasetWizardModel.buildForm();
this.loadDatasetProfiles();
});
diff --git a/dmp-frontend/src/app/datasets/dataset.routes.ts b/dmp-frontend/src/app/datasets/dataset.routes.ts
index c023af169..bf9958fc9 100644
--- a/dmp-frontend/src/app/datasets/dataset.routes.ts
+++ b/dmp-frontend/src/app/datasets/dataset.routes.ts
@@ -4,9 +4,44 @@ import { RouterModule, Routes } from '@angular/router';
import { AuthGuard } from '../shared/guards/auth.guard';
export const DatasetRoutes: Routes = [
- { path: "new/:dmpId", component: DatasetWizardComponent, canActivate: [AuthGuard] },
- { path: "edit/:id", component: DatasetWizardComponent, canActivate: [AuthGuard] },
- { path: "new", component: DatasetWizardComponent, canActivate: [AuthGuard] },
- { path: '', component: DatasetListingComponent, canActivate: [AuthGuard] },
- { path: "dmp/:dmpId", component: DatasetListingComponent, canActivate: [AuthGuard] }
+ {
+ path: "new/:dmpId",
+ component: DatasetWizardComponent,
+ canActivate: [AuthGuard],
+ data: {
+ breadcrumb: true
+ },
+ },
+ {
+ path: "edit/:id",
+ component: DatasetWizardComponent,
+ canActivate: [AuthGuard],
+ data: {
+ breadcrumb: true
+ },
+ },
+ {
+ path: "new",
+ component: DatasetWizardComponent,
+ canActivate: [AuthGuard],
+ data: {
+ breadcrumb: true
+ },
+ },
+ {
+ path: '',
+ component: DatasetListingComponent,
+ canActivate: [AuthGuard],
+ data: {
+ breadcrumb: true
+ },
+ },
+ {
+ path: "dmp/:dmpId",
+ component: DatasetListingComponent,
+ canActivate: [AuthGuard],
+ data: {
+ breadcrumb: true
+ },
+ }
];
diff --git a/dmp-frontend/src/app/datasets/listing/dataset-listing.component.ts b/dmp-frontend/src/app/datasets/listing/dataset-listing.component.ts
index 739760b64..e8b119a3a 100644
--- a/dmp-frontend/src/app/datasets/listing/dataset-listing.component.ts
+++ b/dmp-frontend/src/app/datasets/listing/dataset-listing.component.ts
@@ -56,13 +56,14 @@ export class DatasetListingComponent implements OnInit, IBreadCrumbComponent {
ngOnInit() {
- this.route.params.subscribe((params: Params) => {
+ this.route.params.subscribe(async (params: Params) => {
this.dmpId = params['dmpId'];
this.criteria.setCriteria(this.getDefaultCriteria(this.dmpId));
this.refresh();
this.criteria.setRefreshCallback(() => this.refresh());
if (this.dmpId != null) {
- this.breadCrumbs = Observable.of([{ parentComponentName: "DataManagementPlanEditorComponent", label: params['dmpLabel'], url: "dmps/edit/" + this.dmpId }, { parentComponentName: null, label: 'Datasets', url: "dmps" }])
+ let dmp = await this.dataManagementPlanService.getSingle(this.dmpId).toPromise()
+ this.breadCrumbs = Observable.of([{ parentComponentName: "DataManagementPlanEditorComponent", label: dmp.label, url: "dmps/edit/" + this.dmpId }, { parentComponentName: null, label: 'Datasets', url: "dmps" }])
if (params['dmpLabel'] != undefined)
this.titlePrefix = "for " + params['dmpLabel'];
} else {
diff --git a/dmp-frontend/src/app/dmps/dmps.routes.ts b/dmp-frontend/src/app/dmps/dmps.routes.ts
index 773261739..b1469ff98 100644
--- a/dmp-frontend/src/app/dmps/dmps.routes.ts
+++ b/dmp-frontend/src/app/dmps/dmps.routes.ts
@@ -10,29 +10,29 @@ export const DataManagementPlanRoutes: Routes = [
path: '',
component: DataManagementPlanListingComponent,
data: {
- breadcrumbs: ''
- }
+ breadcrumb: true
+ },
},
{
path: 'viewversions/:groupId',
component: DataManagementPlanListingComponent,
data: {
- breadcrumbs: 'group'
- }
+ breadcrumb: true
+ },
},
{
path: 'project/:projectId',
component: DataManagementPlanListingComponent,
data: {
- breadcrumbs: 'project'
- }
+ breadcrumb: true
+ },
},
{
path: 'edit/:id',
component: DataManagementPlanEditorComponent,
data: {
- breadcrumbs: 'edit'
- }
+ breadcrumb: true
+ },
},
{
path: 'new',
@@ -46,22 +46,22 @@ export const DataManagementPlanRoutes: Routes = [
component: DataManagementPlanWizardComponent,
data: {
clone: false,
- breadcrumbs: 'new version'
- }
+ breadcrumb: true
+ },
},
{
path: 'clone/:id',
component: DataManagementPlanWizardComponent,
data: {
- clone: true,
- breadcrumbs: 'clone'
- }
+ clone: false,
+ breadcrumb: true
+ },
},
{
path: "invitation/:id",
component: InvitationAcceptedComponent,
data: {
- breadcrumbs: 'ivitation'
- }
+ breadcrumb: true
+ },
}
];
diff --git a/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts b/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts
index 2652f0d84..bd21fc334 100644
--- a/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts
+++ b/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts
@@ -78,7 +78,6 @@ export class DataManagementPlanEditorComponent implements AfterViewInit, IBreadC
private languageResolverService: LanguageResolverService
) {
this.filteredOptions = dmpProfileService.getAll({ criteria: new DataManagementPlanProfileCriteria() });
-
}
ngAfterViewInit() {
diff --git a/dmp-frontend/src/app/dmps/listing/dmp-listing.component.html b/dmp-frontend/src/app/dmps/listing/dmp-listing.component.html
index f8d01161c..4da90fbb5 100644
--- a/dmp-frontend/src/app/dmps/listing/dmp-listing.component.html
+++ b/dmp-frontend/src/app/dmps/listing/dmp-listing.component.html
@@ -63,7 +63,7 @@
add{{'DMP-LISTING.ACTIONS.ADD-DATASET' | translate}}
-