no message

This commit is contained in:
Ioannis Kalyvas 2018-06-28 12:28:16 +03:00
parent 92ddb33eb8
commit 8eb3632fd2
15 changed files with 137 additions and 66 deletions

View File

@ -12,8 +12,7 @@ const appRoutes: Routes = [
path: 'datasets', path: 'datasets',
loadChildren: './datasets/dataset.module#DatasetModule', loadChildren: './datasets/dataset.module#DatasetModule',
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: 'Folder'
}, },
canActivate: [AuthGuard] canActivate: [AuthGuard]
}, },
@ -21,8 +20,7 @@ const appRoutes: Routes = [
path: 'about', path: 'about',
loadChildren: './about/about.module#AboutModule', loadChildren: './about/about.module#AboutModule',
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: 'About'
}, },
canActivate: [AuthGuard] canActivate: [AuthGuard]
}, },
@ -30,8 +28,7 @@ const appRoutes: Routes = [
path: 'projects', path: 'projects',
loadChildren: './projects/projects.module#ProjectsModule', loadChildren: './projects/projects.module#ProjectsModule',
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: 'Projects'
}, },
canActivate: [AuthGuard] canActivate: [AuthGuard]
}, },
@ -39,8 +36,7 @@ const appRoutes: Routes = [
path: "dmps", path: "dmps",
loadChildren: './dmps/dmps.module#DataManagementPlanModule', loadChildren: './dmps/dmps.module#DataManagementPlanModule',
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: 'DMPs'
}, },
canActivate: [AuthGuard] canActivate: [AuthGuard]
}, },
@ -48,8 +44,7 @@ const appRoutes: Routes = [
path: "dmp-profiles", path: "dmp-profiles",
loadChildren: './dmp-profiles/dmp-profile.module#DataManagamentPlanProfileModule', loadChildren: './dmp-profiles/dmp-profile.module#DataManagamentPlanProfileModule',
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: 'DMP Profiles'
}, },
canActivate: [AuthGuard] canActivate: [AuthGuard]
}, },
@ -57,8 +52,7 @@ const appRoutes: Routes = [
path: 'form', path: 'form',
loadChildren: './dataset-profile-form/dataset-profile.module#DatasetProfileModule', loadChildren: './dataset-profile-form/dataset-profile.module#DatasetProfileModule',
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: 'Dataset Profile'
}, },
canActivate: [AuthGuard] canActivate: [AuthGuard]
}, },
@ -66,8 +60,7 @@ const appRoutes: Routes = [
path: 'home', path: 'home',
component: HomepageComponent, component: HomepageComponent,
data: { data: {
// Interpolates values resolved by the router breadcrumb: false
breadcrumbs: 'Home'
}, },
canActivate: [AuthGuard] canActivate: [AuthGuard]
}, },
@ -75,8 +68,7 @@ const appRoutes: Routes = [
path: '', path: '',
redirectTo: '/welcome', redirectTo: '/welcome',
data: { data: {
// Interpolates values resolved by the router breadcrumbs: true
breadcrumbs: 'Home'
}, },
pathMatch: 'full' pathMatch: 'full'
}, },
@ -84,7 +76,7 @@ const appRoutes: Routes = [
path: "unauthorized", path: "unauthorized",
loadChildren: './unauthorized/unauthorized.module#UnauthorizedModule', loadChildren: './unauthorized/unauthorized.module#UnauthorizedModule',
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
}, },
}, },
{ {
@ -95,23 +87,20 @@ const appRoutes: Routes = [
path: "datasetsProfiles", path: "datasetsProfiles",
loadChildren: './datasets-admin-listing/dataset-admin.module#DatasetAdminModule', loadChildren: './datasets-admin-listing/dataset-admin.module#DatasetAdminModule',
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: 'Datasets Profiles'
}, },
}, },
{ {
path: "welcome", path: "welcome",
component: WelcomepageComponent, component: WelcomepageComponent,
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: 'Home'
}, },
}, },
{ {
path: "api/oauth/authorized/b2access", path: "api/oauth/authorized/b2access",
component: B2AccessLoginComponent, component: B2AccessLoginComponent,
data: { data: {
// Interpolates values resolved by the router
}, },
} }
]; ];

View File

@ -9,7 +9,7 @@
<help-content position="left"></help-content> <help-content position="left"></help-content>
</div> </div>
<div class="col-md-8"> <div class="col-md-8">
<app-breadcrumb></app-breadcrumb> <app-breadcrumb *ngIf="hasBreadCrumb | async"></app-breadcrumb>
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet> <router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
</div> </div>
<div class="col-md-2"> <div class="col-md-2">

View File

@ -1,8 +1,9 @@
import { Component, OnInit, ViewEncapsulation } from '@angular/core'; 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 { TranslateService } from '@ngx-translate/core';
import { LanguageResolverService } from './services/language-resolver/language-resolver.service'; import { LanguageResolverService } from './services/language-resolver/language-resolver.service';
import { BreadCrumbResolverService } from './services/breadcrumb/breadcrumb-resolver.service'; import { BreadCrumbResolverService } from './services/breadcrumb/breadcrumb-resolver.service';
import { Observable } from 'rxjs/Observable';
declare const gapi: any; declare const gapi: any;
@ -17,6 +18,7 @@ declare var $: any;
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
hasBreadCrumb = Observable.of(false);
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
@ -40,6 +42,12 @@ export class AppComponent implements OnInit {
} }
ngOnInit() { 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() { login() {

View File

@ -30,6 +30,9 @@ import { ServiceModel } from '../../models/services/ServiceModel';
import { DataRepositoryModel } from '../../models/dataRepositories/DataRepositoryModel'; import { DataRepositoryModel } from '../../models/dataRepositories/DataRepositoryModel';
import { ExternalSourcesConfigurationService } from '../../services/external-sources/external-sources-configuration.service'; import { ExternalSourcesConfigurationService } from '../../services/external-sources/external-sources-configuration.service';
import { ExternalSourcesConfiguration } from '../../models/external-sources/ExternalSourcesConfiguration'; 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({ @Component({
selector: 'app-dataset-wizard-component', selector: 'app-dataset-wizard-component',
@ -37,7 +40,8 @@ import { ExternalSourcesConfiguration } from '../../models/external-sources/Exte
styleUrls: ['./dataset-wizard.component.scss'], styleUrls: ['./dataset-wizard.component.scss'],
encapsulation: ViewEncapsulation.None encapsulation: ViewEncapsulation.None
}) })
export class DatasetWizardComponent { export class DatasetWizardComponent implements OnInit, IBreadCrumbComponent {
breadCrumbs: Observable<BreadcrumbItem[]>;
@ViewChild('stepper') stepper: MatStepper; @ViewChild('stepper') stepper: MatStepper;
//autocomplete Display Functions; //autocomplete Display Functions;
@ -111,6 +115,30 @@ export class DatasetWizardComponent {
this.datasetWizardService.getSingle(this.itemId).map(data => data as DatasetWizardModel) this.datasetWizardService.getSingle(this.itemId).map(data => data as DatasetWizardModel)
.subscribe(data => { .subscribe(data => {
this.datasetWizardModel = JsonSerializer.fromJSONObject(data, DatasetWizardModel); 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.formGroup = this.datasetWizardModel.buildForm();
this.loadDatasetProfiles(); this.loadDatasetProfiles();
}); });

View File

@ -4,9 +4,44 @@ import { RouterModule, Routes } from '@angular/router';
import { AuthGuard } from '../shared/guards/auth.guard'; import { AuthGuard } from '../shared/guards/auth.guard';
export const DatasetRoutes: Routes = [ export const DatasetRoutes: Routes = [
{ path: "new/:dmpId", component: DatasetWizardComponent, canActivate: [AuthGuard] }, {
{ path: "edit/:id", component: DatasetWizardComponent, canActivate: [AuthGuard] }, path: "new/:dmpId",
{ path: "new", component: DatasetWizardComponent, canActivate: [AuthGuard] }, component: DatasetWizardComponent,
{ path: '', component: DatasetListingComponent, canActivate: [AuthGuard] }, canActivate: [AuthGuard],
{ path: "dmp/:dmpId", component: DatasetListingComponent, 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
},
}
]; ];

View File

@ -56,13 +56,14 @@ export class DatasetListingComponent implements OnInit, IBreadCrumbComponent {
ngOnInit() { ngOnInit() {
this.route.params.subscribe((params: Params) => { this.route.params.subscribe(async (params: Params) => {
this.dmpId = params['dmpId']; this.dmpId = params['dmpId'];
this.criteria.setCriteria(this.getDefaultCriteria(this.dmpId)); this.criteria.setCriteria(this.getDefaultCriteria(this.dmpId));
this.refresh(); this.refresh();
this.criteria.setRefreshCallback(() => this.refresh()); this.criteria.setRefreshCallback(() => this.refresh());
if (this.dmpId != null) { 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) if (params['dmpLabel'] != undefined)
this.titlePrefix = "for " + params['dmpLabel']; this.titlePrefix = "for " + params['dmpLabel'];
} else { } else {

View File

@ -10,29 +10,29 @@ export const DataManagementPlanRoutes: Routes = [
path: '', path: '',
component: DataManagementPlanListingComponent, component: DataManagementPlanListingComponent,
data: { data: {
breadcrumbs: '' breadcrumb: true
} },
}, },
{ {
path: 'viewversions/:groupId', path: 'viewversions/:groupId',
component: DataManagementPlanListingComponent, component: DataManagementPlanListingComponent,
data: { data: {
breadcrumbs: 'group' breadcrumb: true
} },
}, },
{ {
path: 'project/:projectId', path: 'project/:projectId',
component: DataManagementPlanListingComponent, component: DataManagementPlanListingComponent,
data: { data: {
breadcrumbs: 'project' breadcrumb: true
} },
}, },
{ {
path: 'edit/:id', path: 'edit/:id',
component: DataManagementPlanEditorComponent, component: DataManagementPlanEditorComponent,
data: { data: {
breadcrumbs: 'edit' breadcrumb: true
} },
}, },
{ {
path: 'new', path: 'new',
@ -46,22 +46,22 @@ export const DataManagementPlanRoutes: Routes = [
component: DataManagementPlanWizardComponent, component: DataManagementPlanWizardComponent,
data: { data: {
clone: false, clone: false,
breadcrumbs: 'new version' breadcrumb: true
} },
}, },
{ {
path: 'clone/:id', path: 'clone/:id',
component: DataManagementPlanWizardComponent, component: DataManagementPlanWizardComponent,
data: { data: {
clone: true, clone: false,
breadcrumbs: 'clone' breadcrumb: true
} },
}, },
{ {
path: "invitation/:id", path: "invitation/:id",
component: InvitationAcceptedComponent, component: InvitationAcceptedComponent,
data: { data: {
breadcrumbs: 'ivitation' breadcrumb: true
} },
} }
]; ];

View File

@ -78,7 +78,6 @@ export class DataManagementPlanEditorComponent implements AfterViewInit, IBreadC
private languageResolverService: LanguageResolverService private languageResolverService: LanguageResolverService
) { ) {
this.filteredOptions = dmpProfileService.getAll({ criteria: new DataManagementPlanProfileCriteria() }); this.filteredOptions = dmpProfileService.getAll({ criteria: new DataManagementPlanProfileCriteria() });
} }
ngAfterViewInit() { ngAfterViewInit() {

View File

@ -63,7 +63,7 @@
<mat-icon>add</mat-icon>{{'DMP-LISTING.ACTIONS.ADD-DATASET' | translate}}</button> <mat-icon>add</mat-icon>{{'DMP-LISTING.ACTIONS.ADD-DATASET' | translate}}</button>
<button mat-menu-item (click)="showDatasets(row.id, row.label)"> <button mat-menu-item (click)="showDatasets(row.id, row.label)">
<mat-icon>list</mat-icon>{{'DMP-LISTING.ACTIONS.DATASETS' | translate}}</button> <mat-icon>list</mat-icon>{{'DMP-LISTING.ACTIONS.DATASETS' | translate}}</button>
<button mat-menu-item (click)="viewVersions(row.groupId)"> <button mat-menu-item (click)="viewVersions(row.groupId, row.label)">
<mat-icon>library_books</mat-icon>{{'DMP-LISTING.ACTIONS.VIEW-VERSION' | translate}}</button> <mat-icon>library_books</mat-icon>{{'DMP-LISTING.ACTIONS.VIEW-VERSION' | translate}}</button>
</mat-menu> </mat-menu>
<button mat-icon-button [matMenuTriggerFor]="actionsMenu"> <button mat-icon-button [matMenuTriggerFor]="actionsMenu">

View File

@ -68,7 +68,11 @@ export class DataManagementPlanListingComponent implements OnInit, IBreadCrumbCo
this.itemId = params['groupId']; this.itemId = params['groupId'];
this.showProject = true; this.showProject = true;
let breadCrumbs = []; let breadCrumbs = [];
if (this.itemId) breadCrumbs.push({ parentComponentName: null, label: 'DMPs For ' + this.itemId, url: "/dmps/viewversions/" + this.itemId })
if (this.itemId) {
let dmplabel = this.route.snapshot.queryParams.groupLabel
breadCrumbs.push({ parentComponentName: null, label: 'DMPs', url: "/dmps" }, { parentComponentName: null, label: 'DMPs Versions Of ' + dmplabel, url: "/dmps/viewversions/" + this.itemId })
}
else breadCrumbs.push({ parentComponentName: null, label: 'DMPs', url: "/dmps" }) else breadCrumbs.push({ parentComponentName: null, label: 'DMPs', url: "/dmps" })
this.breadCrumbs = Observable.of(breadCrumbs) this.breadCrumbs = Observable.of(breadCrumbs)
@ -100,8 +104,8 @@ export class DataManagementPlanListingComponent implements OnInit, IBreadCrumbCo
this.router.navigate(['/datasets/dmp/' + rowId, { dmpLabel: rowLabel }]); this.router.navigate(['/datasets/dmp/' + rowId, { dmpLabel: rowLabel }]);
} }
viewVersions(rowId: String) { viewVersions(rowId: String, rowLabel: String) {
this.router.navigate(['/dmps/viewversions/' + rowId]); this.router.navigate(['/dmps/viewversions/' + rowId], { queryParams: { groupLabel: rowLabel } });
} }
getDefaultCriteria(): DataManagementPlanCriteria { getDefaultCriteria(): DataManagementPlanCriteria {

View File

@ -14,8 +14,8 @@ import { DataRepositoryModel } from "../dataRepositories/DataRepositoryModel";
import { ExternalDatasetModel } from '../../models/external-dataset/ExternalDatasetModel'; import { ExternalDatasetModel } from '../../models/external-dataset/ExternalDatasetModel';
export class DatasetWizardModel implements Serializable<DatasetWizardModel> { export class DatasetWizardModel implements Serializable<DatasetWizardModel> {
public id: String; public id: string;
public label: String; public label: string;
public profile: DatasetProfileModel = new DatasetProfileModel(); public profile: DatasetProfileModel = new DatasetProfileModel();
public uri: String; public uri: String;
public status: String; public status: String;

View File

@ -7,15 +7,14 @@ export const ProjectRoutes: Routes = [
path: '', path: '',
component: ProjectListingComponent, component: ProjectListingComponent,
data: { data: {
breadcrumbs: '' breadcrumb: true
} },
}, },
{ {
path: 'edit/:id', path: 'edit/:id',
component: ProjectEditorComponent, component: ProjectEditorComponent,
data: { data: {
// Interpolates values resolved by the router breadcrumb: true
breadcrumbs: '{{ project.text }}'
}, },
/* resolve: { /* resolve: {
project: ProjectResolver project: ProjectResolver
@ -25,8 +24,8 @@ export const ProjectRoutes: Routes = [
path: 'new', path: 'new',
component: ProjectEditorComponent, component: ProjectEditorComponent,
data: { data: {
breadcrumbs: 'new' breadcrumb: true
} },
}, },
]; ];

View File

@ -43,6 +43,7 @@ export class BreadCrumbResolverService {
private getComponentsFromRoute(activatedRoute: ActivatedRoute, routeComponents: any[]): any[] { private getComponentsFromRoute(activatedRoute: ActivatedRoute, routeComponents: any[]): any[] {
activatedRoute.children.forEach(x => { activatedRoute.children.forEach(x => {
if (x.children.length > 0) this.getComponentsFromRoute(x.children[0], routeComponents); if (x.children.length > 0) this.getComponentsFromRoute(x.children[0], routeComponents);
if (x.component) routeComponents.push(x.component['name'])
}) })
if (activatedRoute.component) routeComponents.push(activatedRoute.component['name']) if (activatedRoute.component) routeComponents.push(activatedRoute.component['name'])

View File

@ -11,7 +11,6 @@ import { Observable } from 'rxjs/Observable';
encapsulation: ViewEncapsulation.None encapsulation: ViewEncapsulation.None
}) })
export class BreadcrumbComponent implements OnInit { export class BreadcrumbComponent implements OnInit {
breadcrumbs$ = this.router.events breadcrumbs$ = this.router.events
.filter(event => event instanceof NavigationEnd) .filter(event => event instanceof NavigationEnd)
.distinctUntilChanged() .distinctUntilChanged()
@ -23,12 +22,15 @@ export class BreadcrumbComponent implements OnInit {
private router: Router, private router: Router,
private breadCrumbService: BreadCrumbResolverService private breadCrumbService: BreadCrumbResolverService
) { ) {
} }
ngOnInit() { ngOnInit() {
} }
buildBreadCrumb(route: ActivatedRoute): Observable<BreadcrumbItem[]> { buildBreadCrumb(route: ActivatedRoute): Observable<BreadcrumbItem[]> {
return this.breadCrumbService.resolve(route); return this.breadCrumbService.resolve(route);
} }

View File

@ -4,23 +4,28 @@ import { DashboardService } from '../../app/services/dashboard/dashboard.service
import { DashboardStatisticsModel } from '../models/dashboard/DashboardStatisticsModel'; import { DashboardStatisticsModel } from '../models/dashboard/DashboardStatisticsModel';
import { JsonSerializer } from '../utilities/JsonSerializer'; import { JsonSerializer } from '../utilities/JsonSerializer';
import { HomepageComponent } from '../homepage/homepage.component' import { HomepageComponent } from '../homepage/homepage.component'
import { IBreadcrumb } from 'ngx-breadcrumbs';
import { IBreadCrumbComponent } from '../shared/components/breadcrumb/definition/IBreadCrumbComponent';
import { Observable } from 'rxjs/Observable';
import { BreadcrumbItem } from '../shared/components/breadcrumb/definition/breadcrumb-item';
@Component({ @Component({
selector: 'welcomepage', selector: 'welcomepage',
templateUrl: './welcomepage.component.html', templateUrl: './welcomepage.component.html',
// styleUrls: ['./homepage.component.css'], // styleUrls: ['./homepage.component.css'],
providers: [DashboardService] providers: [DashboardService]
}) })
export class WelcomepageComponent implements OnInit { export class WelcomepageComponent implements OnInit, IBreadCrumbComponent {
breadCrumbs: Observable<BreadcrumbItem[]> = Observable.of([]);
private userInfo: any; private userInfo: any;
private dashboardStatisticsData: DashboardStatisticsModel = new DashboardStatisticsModel(); private dashboardStatisticsData: DashboardStatisticsModel = new DashboardStatisticsModel();
constructor( ) { constructor() {
} }
ngOnInit() { ngOnInit() {
this.breadCrumbs = Observable.of([{ parentComponentName: null, label: 'Home', url: "/welcome" }])
} }
} }