angular update to version 8

Remove_explore
Diamantis Tziotzios 5 years ago
parent 4f507eddf3
commit e6891861e5

@ -0,0 +1,12 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# You can see what browsers were selected by your queries by running:
# npx browserslist
> 0.5%
last 2 versions
Firefox ESR
not dead
not IE 9-11 # For IE 9-11 support, remove 'not'.

@ -1,63 +1,58 @@
{ {
"name": "dmp-frontend2", "name": "dmp-frontend2",
"version": "0.0.0", "version": "0.0.0",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",
"build": "ng build --prod", "build": "ng build --prod",
"test": "ng test", "test": "ng test",
"lint": "ng lint", "lint": "ng lint",
"e2e": "ng e2e" "e2e": "ng e2e"
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^6.1.7", "@angular/animations": "^8.2.7",
"@angular/common": "^6.1.7", "@angular/common": "^8.2.7",
"@angular/compiler": "^6.1.7", "@angular/compiler": "^8.2.7",
"@angular/core": "^6.1.7", "@angular/core": "^8.2.7",
"@angular/flex-layout": "6.0.0-beta.18", "@angular/forms": "^8.2.7",
"@angular/forms": "^6.1.7", "@angular/material-moment-adapter": "^8.2.0",
"@angular/material-moment-adapter": "^6.4.7", "@angular/platform-browser": "^8.2.7",
"@angular/platform-browser": "^6.1.7", "@ngx-translate/core": "^11.0.1",
"@ngx-translate/core": "^10.0.2", "@ngx-translate/http-loader": "^4.0.0",
"@ngx-translate/http-loader": "^3.0.1", "@swimlane/ngx-datatable": "^16.0.2",
"@swimlane/ngx-datatable": "^13.1.0", "bootstrap": "^4.3.1",
"bootstrap": "^4.1.3", "core-js": "^2.5.5",
"core-js": "^2.5.5", "file-saver": "^2.0.2",
"file-saver": "^2.0.0-rc.3", "moment": "^2.24.0",
"moment": "^2.22.2", "moment-timezone": "^0.5.26",
"moment-timezone": "^0.5.23", "ngx-cookie-service": "^2.2.0",
"ngx-cookie-service": "^1.0.10", "rxjs": "^6.3.2",
"rxjs": "^6.3.2", "tslib": "^1.10.0",
"rxjs-compat": "^6.3.2", "web-animations-js": "^2.3.2",
"web-animations-js": "^2.3.1", "zone.js": "~0.9.1"
"zone.js": "^0.8.26" },
}, "devDependencies": {
"devDependencies": { "@angular-devkit/build-angular": "~0.803.5",
"@angular-devkit/build-angular": "^0.8.5", "@angular/cdk": "^8.2.0",
"@angular/cdk": "^6.3.0", "@angular/material": "^8.2.0",
"@angular/material": "^6.4.7", "@angular/cli": "8.3.5",
"@angular/cli": "6.2.5", "@angular/compiler-cli": "^8.2.7",
"@angular/compiler-cli": "^6.1.10", "@angular/platform-browser-dynamic": "^8.2.7",
"@angular/http": "^6.1.10", "@angular/router": "^8.2.7",
"@angular/platform-browser-dynamic": "^6.1.10", "@angular/language-service": "^8.2.7",
"@angular/router": "^6.1.10", "@types/facebook-js-sdk": "^3.3.0",
"@angular/language-service": "^6.1.10", "@types/file-saver": "^2.0.1",
"@types/facebook-js-sdk": "^2.8.4", "@types/gapi": "^0.0.39",
"@types/file-saver": "^1.3.1", "@types/gapi.auth2": "^0.0.50",
"@types/gapi": "^0.0.36", "@types/jasmine": "~3.4.0",
"@types/gapi.auth2": "^0.0.47", "@types/jasminewd2": "~2.0.6",
"@types/jasmine": "~2.8.9", "@types/moment-timezone": "^0.5.12",
"@types/jasminewd2": "~2.0.5", "@types/node": "^10.11.7",
"@types/moment-timezone": "^0.5.4", "codelyzer": "^5.1.1",
"@types/node": "^10.11.7", "ts-node": "~8.4.1",
"codelyzer": "~4.5.0", "tslint": "~5.20.0",
"jasmine-core": "^3.2.1", "typescript": "3.5.3"
"jasmine-spec-reporter": "^4.2.1", }
"protractor": "~5.4.1",
"ts-node": "~7.0.1",
"tslint": "~5.11.0",
"typescript": "2.9.1"
}
} }

@ -14,7 +14,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'datasetcreatewizard', path: 'datasetcreatewizard',
loadChildren: './ui/dataset-create-wizard/dataset-create-wizard.module#DatasetCreateWizardModule', loadChildren: () => import('./ui/dataset-create-wizard/dataset-create-wizard.module').then(m => m.DatasetCreateWizardModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DATASETCREATEWIZARD' title: 'GENERAL.TITLES.DATASETCREATEWIZARD'
@ -22,7 +22,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'explore', path: 'explore',
loadChildren: './ui/explore-dataset/explore-dataset.module#ExploreDatasetModule', loadChildren: () => import('./ui/explore-dataset/explore-dataset.module').then(m => m.ExploreDatasetModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.EXPLORE' title: 'GENERAL.TITLES.EXPLORE'
@ -30,7 +30,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'explore-plans', path: 'explore-plans',
loadChildren: './ui/explore-dmp/explore-dmp.module#ExploreDmpModule', loadChildren: () => import('./ui/explore-dmp/explore-dmp.module').then(m => m.ExploreDmpModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.EXPLORE-PLANS' title: 'GENERAL.TITLES.EXPLORE-PLANS'
@ -38,7 +38,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'datasets', path: 'datasets',
loadChildren: './ui/dataset/dataset.module#DatasetModule', loadChildren: () => import('./ui/dataset/dataset.module').then(m => m.DatasetModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DATASETS' title: 'GENERAL.TITLES.DATASETS'
@ -46,7 +46,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'about', path: 'about',
loadChildren: './ui/about/about.module#AboutModule', loadChildren: () => import('./ui/about/about.module').then(m => m.AboutModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.ABOUT' title: 'GENERAL.TITLES.ABOUT'
@ -54,7 +54,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'grants', path: 'grants',
loadChildren: './ui/grant/grant.module#GrantModule', loadChildren: () => import('./ui/grant/grant.module').then(m => m.GrantModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.GRANTS' title: 'GENERAL.TITLES.GRANTS'
@ -62,7 +62,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'plans', path: 'plans',
loadChildren: './ui/dmp/dmp.module#DmpModule', loadChildren: () => import('./ui/dmp/dmp.module').then(m => m.DmpModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.PLANS' title: 'GENERAL.TITLES.PLANS'
@ -70,7 +70,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'dmp-profiles', path: 'dmp-profiles',
loadChildren: './ui/admin/dmp-profile/dmp-profile.module#DmpProfileModule', loadChildren: () => import('./ui/admin/dmp-profile/dmp-profile.module').then(m => m.DmpProfileModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DMP-PROFILES' title: 'GENERAL.TITLES.DMP-PROFILES'
@ -78,7 +78,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'quick-wizard', path: 'quick-wizard',
loadChildren: './ui/quick-wizard/quick-wizard.module#OuickWizardModule', loadChildren: () => import('./ui/quick-wizard/quick-wizard.module').then(m => m.OuickWizardModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: "GENERAL.TITLES.QUICK-WIZARD" title: "GENERAL.TITLES.QUICK-WIZARD"
@ -86,7 +86,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'dataset-profiles', path: 'dataset-profiles',
loadChildren: './ui/admin/dataset-profile/dataset-profile.module#DatasetProfileModule', loadChildren: () => import('./ui/admin/dataset-profile/dataset-profile.module').then(m => m.DatasetProfileModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DATASET-PROFILES' title: 'GENERAL.TITLES.DATASET-PROFILES'
@ -94,21 +94,21 @@ const appRoutes: Routes = [
}, },
{ {
path: 'home', path: 'home',
loadChildren: './ui/dashboard/dashboard.module#DashboardModule', loadChildren: () => import('./ui/dashboard/dashboard.module').then(m => m.DashboardModule),
data: { data: {
breadcrumb: true breadcrumb: true
} }
}, },
{ {
path: 'unauthorized', path: 'unauthorized',
loadChildren: './ui/misc/unauthorized/unauthorized.module#UnauthorizedModule', loadChildren: () => import('./ui/misc/unauthorized/unauthorized.module').then(m => m.UnauthorizedModule),
data: { data: {
breadcrumb: true breadcrumb: true
}, },
}, },
{ {
path: 'users', path: 'users',
loadChildren: './ui/admin/user/user.module#UserModule', loadChildren: () => import('./ui/admin/user/user.module').then(m => m.UserModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.USERS' title: 'GENERAL.TITLES.USERS'
@ -116,7 +116,7 @@ const appRoutes: Routes = [
}, },
{ {
path: 'profile', path: 'profile',
loadChildren: './ui/user-profile/user-profile.module#UserProfileModule', loadChildren: () => import('./ui/user-profile/user-profile.module').then(m => m.UserProfileModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.PROFILE' title: 'GENERAL.TITLES.PROFILE'
@ -124,14 +124,14 @@ const appRoutes: Routes = [
}, },
{ {
path: 'login/admin', path: 'login/admin',
loadChildren: './ui/auth/admin-login/admin-login.module#AdminLoginModule', loadChildren: () => import('./ui/auth/admin-login/admin-login.module').then(m => m.AdminLoginModule),
data: { data: {
breadcrumb: true breadcrumb: true
}, },
}, },
{ {
path: 'login', path: 'login',
loadChildren: './ui/auth/login/login.module#LoginModule', loadChildren: () => import('./ui/auth/login/login.module').then(m => m.LoginModule),
data: { data: {
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.LOGIN' title: 'GENERAL.TITLES.LOGIN'

@ -1,12 +1,14 @@
import {of as observableOf, Observable } from 'rxjs';
import {switchMap, filter, map } from 'rxjs/operators';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { environment } from '../environments/environment'; import { environment } from '../environments/environment';
import { AuthService } from './core/services/auth/auth.service'; import { AuthService } from './core/services/auth/auth.service';
import { CultureService } from './core/services/culture/culture-service'; import { CultureService } from './core/services/culture/culture-service';
import { BreadCrumbResolverService } from './ui/misc/breadcrumb/service/breadcrumb.service'; import { BreadCrumbResolverService } from './ui/misc/breadcrumb/service/breadcrumb.service';
import { filter, map } from 'rxjs/operators';
import { Title } from '@angular/platform-browser'; import { Title } from '@angular/platform-browser';
@ -20,7 +22,7 @@ declare var $: any;
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
hasBreadCrumb = Observable.of(false); hasBreadCrumb = observableOf(false);
sideNavOpen = false; sideNavOpen = false;
helpContentEnabled = environment.HelpService.Enabled; helpContentEnabled = environment.HelpService.Enabled;
@ -46,12 +48,12 @@ export class AppComponent implements OnInit {
} }
ngOnInit() { ngOnInit() {
this.hasBreadCrumb = this.router.events this.hasBreadCrumb = this.router.events.pipe(
.filter(event => event instanceof NavigationEnd) filter(event => event instanceof NavigationEnd),
.map(() => this.route) map(() => this.route),
.map(route => route.firstChild) map(route => route.firstChild),
.switchMap(route => route.data) switchMap(route => route.data),
.map(data => data['breadcrumb']); map(data => data['breadcrumb']),);
const appTitle = this.titleService.getTitle(); const appTitle = this.titleService.getTitle();
this.router this.router

@ -1,7 +1,7 @@
import { OverlayModule } from '@angular/cdk/overlay'; import { OverlayModule } from '@angular/cdk/overlay';
import { HttpClient, HttpClientModule } from '@angular/common/http'; import { HttpClient, HttpClientModule } from '@angular/common/http';
import { LOCALE_ID, NgModule } from '@angular/core'; import { LOCALE_ID, NgModule } from '@angular/core';
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material'; import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
import { MatMomentDateModule, MAT_MOMENT_DATE_FORMATS } from '@angular/material-moment-adapter'; import { MatMomentDateModule, MAT_MOMENT_DATE_FORMATS } from '@angular/material-moment-adapter';
import { BrowserModule, Title } from '@angular/platform-browser'; import { BrowserModule, Title } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

@ -1,5 +1,5 @@
import { Inject, Injectable, Optional } from '@angular/core'; import { Inject, Injectable, Optional } from '@angular/core';
import { MAT_DATE_LOCALE } from '@angular/material'; import { MAT_DATE_LOCALE } from '@angular/material/core';
import { MomentDateAdapter } from '@angular/material-moment-adapter'; import { MomentDateAdapter } from '@angular/material-moment-adapter';
import * as moment from 'moment'; import * as moment from 'moment';
import { Moment } from 'moment'; import { Moment } from 'moment';

@ -1,6 +1,6 @@
import { HttpHandler, HttpHeaderResponse, HttpProgressEvent, HttpRequest, HttpResponse, HttpSentEvent, HttpUserEvent } from '@angular/common/http'; import { HttpHandler, HttpHeaderResponse, HttpProgressEvent, HttpRequest, HttpResponse, HttpSentEvent, HttpUserEvent } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { MatSnackBar } from '@angular/material'; import { MatSnackBar } from '@angular/material/snack-bar';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { BaseInterceptor } from './base.interceptor'; import { BaseInterceptor } from './base.interceptor';

@ -1,3 +1,5 @@
import {tap} from 'rxjs/operators';
import { Injectable } from "@angular/core"; import { Injectable } from "@angular/core";
import { BaseInterceptor } from "./base.interceptor"; import { BaseInterceptor } from "./base.interceptor";
import { InterceptorType } from "./interceptor-type"; import { InterceptorType } from "./interceptor-type";
@ -10,11 +12,11 @@ export class StatusCodeInterceptor extends BaseInterceptor {
type: InterceptorType; type: InterceptorType;
interceptRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent <any>> { interceptRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent <any>> {
return next.handle(req).do(event => { }, err => { return next.handle(req).pipe(tap(event => { }, err => {
if (err.status === 480) { if (err.status === 480) {
this.router.navigate(['confirmation']); this.router.navigate(['confirmation']);
} }
}); }));
} }
constructor( constructor(

@ -1,37 +1,35 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { import { MatAutocompleteModule } from '@angular/material/autocomplete';
MatButtonModule, import { MatButtonModule } from '@angular/material/button';
MatToolbarModule, import { MatButtonToggleModule } from '@angular/material/button-toggle';
MatIconModule, import { MatCardModule } from '@angular/material/card';
MatCardModule, import { MatCheckboxModule } from '@angular/material/checkbox';
MatGridListModule, import { MatChipsModule } from '@angular/material/chips';
MatSnackBarModule, import { MatOptionModule } from '@angular/material/core';
MatSidenavModule, import { MatDatepickerModule } from '@angular/material/datepicker';
MatListModule, import { MatDialogModule } from '@angular/material/dialog';
MatChipsModule, import { MatExpansionModule } from '@angular/material/expansion';
MatFormFieldModule, import { MatFormFieldModule } from '@angular/material/form-field';
MatSelectModule, import { MatGridListModule } from '@angular/material/grid-list';
MatOptionModule, import { MatIconModule } from '@angular/material/icon';
MatInputModule, import { MatInputModule } from '@angular/material/input';
MatExpansionModule, import { MatListModule } from '@angular/material/list';
MatAutocompleteModule, import { MatMenuModule } from '@angular/material/menu';
MatProgressSpinnerModule, import { MatPaginatorModule } from '@angular/material/paginator';
MatTabsModule, import { MatProgressBarModule } from '@angular/material/progress-bar';
MatDialogModule, import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
MatMenuModule, import { MatRadioModule } from '@angular/material/radio';
MatRadioModule, import { MatSelectModule } from '@angular/material/select';
MatStepperModule, import { MatSidenavModule } from '@angular/material/sidenav';
MatTooltipModule, import { MatSlideToggleModule } from '@angular/material/slide-toggle';
MatProgressBarModule, import { MatSliderModule } from '@angular/material/slider';
MatCheckboxModule, import { MatSnackBarModule } from '@angular/material/snack-bar';
MatDatepickerModule, import { MatSortModule } from '@angular/material/sort';
MatButtonToggleModule, import { MatStepperModule } from '@angular/material/stepper';
MatSliderModule, import { MatTableModule } from '@angular/material/table';
MatSlideToggleModule, import { MatTabsModule } from '@angular/material/tabs';
MatTableModule, import { MatToolbarModule } from '@angular/material/toolbar';
MatPaginatorModule, import { MatTooltipModule } from '@angular/material/tooltip';
MatSortModule,
} from '@angular/material';
import { CdkTableModule } from '@angular/cdk/table'; import { CdkTableModule } from '@angular/cdk/table';
@NgModule({ @NgModule({

@ -1,10 +1,9 @@
import { DmpModel } from "../dmp" import { FormBuilder, FormGroup, Validators } from "@angular/forms";
import { DatasetProfileModel } from "../../dataset/dataset-profile";
import { FormGroup } from "@angular/forms/src/model";
import { ValidationContext } from "../../../../common/forms/validation/validation-context";
import { Validators, FormBuilder } from "@angular/forms";
import { BackendErrorValidator } from "../../../../common/forms/validation/custom-validator"; import { BackendErrorValidator } from "../../../../common/forms/validation/custom-validator";
import { ValidationErrorModel } from "../../../../common/forms/validation/error-model/validation-error-model"; import { ValidationErrorModel } from "../../../../common/forms/validation/error-model/validation-error-model";
import { ValidationContext } from "../../../../common/forms/validation/validation-context";
import { DatasetProfileModel } from "../../dataset/dataset-profile";
import { DmpModel } from "../dmp";
export class DmpCreateWizardFormModel { export class DmpCreateWizardFormModel {
dmp: DmpModel; dmp: DmpModel;
@ -18,7 +17,7 @@ export class DmpCreateWizardFormModel {
return this; return this;
} }
buildForm(context: ValidationContext = null): FormGroup{ buildForm(context: ValidationContext = null): FormGroup {
if (context == null) { context = this.createValidationContext(); } if (context == null) { context = this.createValidationContext(); }
const formBuilder = new FormBuilder(); const formBuilder = new FormBuilder();
const formGroup = formBuilder.group({ const formGroup = formBuilder.group({
@ -37,6 +36,3 @@ export class DmpCreateWizardFormModel {
return baseContext; return baseContext;
} }
} }

@ -1,10 +1,12 @@
import {of as observableOf, throwError as observableThrowError, Observable } from 'rxjs';
import {map, catchError, takeUntil } from 'rxjs/operators';
import { HttpClient, HttpHeaders } from '@angular/common/http'; import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { MatSnackBar } from '@angular/material'; import { MatSnackBar } from '@angular/material/snack-bar';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { takeUntil } from 'rxjs/operators';
import { Observable } from 'rxjs/Rx';
import { environment } from '../../../../environments/environment'; import { environment } from '../../../../environments/environment';
import { SnackBarNotificationComponent } from '../../../library/notification/snack-bar/snack-bar-notification.component'; import { SnackBarNotificationComponent } from '../../../library/notification/snack-bar/snack-bar-notification.component';
import { BaseService } from '../../common/base/base.service'; import { BaseService } from '../../common/base/base.service';
@ -67,31 +69,31 @@ export class AuthService extends BaseService {
public login(loginInfo: LoginInfo): Observable<Principal> { public login(loginInfo: LoginInfo): Observable<Principal> {
const url = this.actionUrl + 'externallogin'; const url = this.actionUrl + 'externallogin';
return this.http.post(url, loginInfo, { headers: this.headers }) return this.http.post(url, loginInfo, { headers: this.headers }).pipe(
.map((res: any) => { map((res: any) => {
const principal = this.current(res.payload); const principal = this.current(res.payload);
//this.loginContextSubject.next(true); //this.loginContextSubject.next(true);
return principal; return principal;
}) }),
.catch((error: any) => { catchError((error: any) => {
//this.loginContextSubject.next(false); //this.loginContextSubject.next(false);
return Observable.throw(error); return observableThrowError(error);
}); }),);
} }
public nativeLogin(credentials: Credential): Observable<Principal> { public nativeLogin(credentials: Credential): Observable<Principal> {
const url = this.actionUrl + 'nativelogin'; const url = this.actionUrl + 'nativelogin';
return this.http.post(url, credentials, { headers: this.headers }) return this.http.post(url, credentials, { headers: this.headers }).pipe(
.map((res: any) => { map((res: any) => {
const principal = this.current(res.payload); const principal = this.current(res.payload);
//this.loginContextSubject.next(true); //this.loginContextSubject.next(true);
return principal; return principal;
}) }),
.catch((error: any) => { catchError((error: any) => {
//this.loginContextSubject.next(false); //this.loginContextSubject.next(false);
return Observable.throw(error); return observableThrowError(error);
}); }),);
} }
@ -116,22 +118,22 @@ export class AuthService extends BaseService {
const principal = this.current(); const principal = this.current();
if (!principal) { if (!principal) {
this.clear(); this.clear();
return Observable.of<Principal>(); return observableOf<Principal>();
} }
let headers = this.headers; let headers = this.headers;
headers = headers.set('AuthToken', principal.token); headers = headers.set('AuthToken', principal.token);
return this.http.post(url, null, { headers: headers }) return this.http.post(url, null, { headers: headers }).pipe(
.map((res: any) => { map((res: any) => {
const princ = this.current(res.payload); const princ = this.current(res.payload);
return princ; return princ;
}) }),
.catch((error: any) => { catchError((error: any) => {
//console.warn('could not retrieve me info:\n', error); //console.warn('could not retrieve me info:\n', error);
this.clear(); this.clear();
const princ = this.current(); const princ = this.current();
this.router.navigate(['/login']); this.router.navigate(['/login']);
return Observable.of<Principal>(princ); return observableOf<Principal>(princ);
}); }),);
} }
public onLogOutSuccess(logoutMessage: any) { public onLogOutSuccess(logoutMessage: any) {

@ -2,17 +2,14 @@ import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { environment } from '../../../../environments/environment'; import { environment } from '../../../../environments/environment';
import { RequestItem } from '../../query/request-item'; import { BaseHttpParams } from '../../../common/http/base-http-params';
import { InterceptorType } from '../../../common/http/interceptors/interceptor-type';
import { DatasetProfileDefinitionModel } from '../../model/dataset-profile-definition/dataset-profile-definition'; import { DatasetProfileDefinitionModel } from '../../model/dataset-profile-definition/dataset-profile-definition';
import { DatasetProfileModel } from '../../model/dataset/dataset-profile'; import { DatasetProfileModel } from '../../model/dataset/dataset-profile';
import { DatasetWizardModel } from '../../model/dataset/dataset-wizard'; import { DatasetWizardModel } from '../../model/dataset/dataset-wizard';
import { DmpModel } from '../../model/dmp/dmp';
import { DatasetProfileCriteria } from '../../query/dataset-profile/dataset-profile-criteria'; import { DatasetProfileCriteria } from '../../query/dataset-profile/dataset-profile-criteria';
import { DmpCriteria } from '../../query/dmp/dmp-criteria'; import { RequestItem } from '../../query/request-item';
import { BaseHttpService } from '../http/base-http.service'; import { BaseHttpService } from '../http/base-http.service';
import { ContentType } from '@angular/http/src/enums';
import { BaseHttpParams } from '../../../common/http/base-http-params';
import { InterceptorType } from '../../../common/http/interceptors/interceptor-type';
@Injectable() @Injectable()
export class DatasetWizardService { export class DatasetWizardService {
@ -70,7 +67,7 @@ export class DatasetWizardService {
return this.http.get<DatasetWizardModel>(this.actionUrl + id + '/unlock', { headers: this.headers }); return this.http.get<DatasetWizardModel>(this.actionUrl + id + '/unlock', { headers: this.headers });
} }
public uploadXml(fileList: FileList, datasetTitle: string, dmpId: string, datasetProfileId: string): Observable<ContentType> { public uploadXml(fileList: FileList, datasetTitle: string, dmpId: string, datasetProfileId: string): Observable<any> {
const formData: FormData = new FormData(); const formData: FormData = new FormData();
if (fileList instanceof FileList) { if (fileList instanceof FileList) {
for (let i = 0; i < fileList.length; i++) { for (let i = 0; i < fileList.length; i++) {
@ -90,6 +87,6 @@ export class DatasetWizardService {
} }
public updateDatasetProfile(id: String): Observable<DatasetWizardModel> { public updateDatasetProfile(id: String): Observable<DatasetWizardModel> {
return this.http.get<DatasetWizardModel>(this.actionUrl + "profile/"+ id, { headers: this.headers }); return this.http.get<DatasetWizardModel>(this.actionUrl + "profile/" + id, { headers: this.headers });
} }
} }

@ -2,23 +2,22 @@ import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { environment } from '../../../../environments/environment'; import { environment } from '../../../../environments/environment';
import { BaseHttpParams } from '../../../common/http/base-http-params';
import { InterceptorType } from '../../../common/http/interceptors/interceptor-type';
import { DynamicFieldGrantCriteria } from '../../../models/dynamic-field-grant/DynamicFieldGrantCriteria'; import { DynamicFieldGrantCriteria } from '../../../models/dynamic-field-grant/DynamicFieldGrantCriteria';
import { DataTableData } from '../../model/data-table/data-table-data'; import { DataTableData } from '../../model/data-table/data-table-data';
import { DataTableRequest } from '../../model/data-table/data-table-request'; import { DataTableRequest } from '../../model/data-table/data-table-request';
import { DatasetListingModel } from '../../model/dataset/dataset-listing';
import { DatasetProfileModel } from '../../model/dataset/dataset-profile'; import { DatasetProfileModel } from '../../model/dataset/dataset-profile';
import { DatasetsToBeFinalized } from '../../model/dataset/datasets-toBeFinalized';
import { DmpModel } from '../../model/dmp/dmp'; import { DmpModel } from '../../model/dmp/dmp';
import { DmpListingModel } from '../../model/dmp/dmp-listing'; import { DmpListingModel } from '../../model/dmp/dmp-listing';
import { DmpOverviewModel } from '../../model/dmp/dmp-overview';
import { DatasetProfileCriteria } from '../../query/dataset-profile/dataset-profile-criteria'; import { DatasetProfileCriteria } from '../../query/dataset-profile/dataset-profile-criteria';
import { DmpCriteria } from '../../query/dmp/dmp-criteria'; import { DmpCriteria } from '../../query/dmp/dmp-criteria';
import { ExploreDmpCriteriaModel } from '../../query/explore-dmp/explore-dmp-criteria';
import { RequestItem } from '../../query/request-item'; import { RequestItem } from '../../query/request-item';
import { BaseHttpService } from '../http/base-http.service'; import { BaseHttpService } from '../http/base-http.service';
import { ContentType } from '@angular/http/src/enums';
import { BaseHttpParams } from '../../../common/http/base-http-params';
import { InterceptorType } from '../../../common/http/interceptors/interceptor-type';
import { ExploreDmpCriteriaModel } from '../../query/explore-dmp/explore-dmp-criteria';
import { DmpOverviewModel } from '../../model/dmp/dmp-overview';
import { DatasetListingModel } from '../../model/dataset/dataset-listing';
import { DatasetsToBeFinalized } from '../../model/dataset/datasets-toBeFinalized';
@Injectable() @Injectable()
export class DmpService { export class DmpService {
@ -93,7 +92,7 @@ export class DmpService {
} }
getDoi(id: string): Observable<string> { getDoi(id: string): Observable<string> {
return this.http.post<string>(this.actionUrl + 'createZenodoDoi/' + id, {headers: this.headers}); return this.http.post<string>(this.actionUrl + 'createZenodoDoi/' + id, { headers: this.headers });
} }
getDynamicField(requestItem: RequestItem<DynamicFieldGrantCriteria>): any { getDynamicField(requestItem: RequestItem<DynamicFieldGrantCriteria>): any {
@ -119,7 +118,7 @@ export class DmpService {
return this.httpClient.get(this.actionUrl + 'rda/' + id, { responseType: 'blob', observe: 'response' }); return this.httpClient.get(this.actionUrl + 'rda/' + id, { responseType: 'blob', observe: 'response' });
} }
public uploadXml(fileList: FileList, dmpTitle: string): Observable<ContentType> { public uploadXml(fileList: FileList, dmpTitle: string): Observable<any> {
const formData: FormData = new FormData(); const formData: FormData = new FormData();
if (fileList instanceof FileList) { if (fileList instanceof FileList) {
for (let i = 0; i < fileList.length; i++) { for (let i = 0; i < fileList.length; i++) {

@ -1,7 +1,7 @@
import { HttpHeaders } from '@angular/common/http';
import { Injectable } from "@angular/core"; import { Injectable } from "@angular/core";
import { HttpHeaders } from "@angular/common/http/src/headers";
import { BaseHttpService } from "../http/base-http.service";
import { environment } from "../../../../environments/environment"; import { environment } from "../../../../environments/environment";
import { BaseHttpService } from "../http/base-http.service";
@Injectable() @Injectable()
export class EmailConfirmationService { export class EmailConfirmationService {
@ -17,6 +17,6 @@ export class EmailConfirmationService {
} }
public sendConfirmationEmail(email: string) { public sendConfirmationEmail(email: string) {
return this.http.post<String>(this.actioUrl, email, {headers: this.headers}); return this.http.post<String>(this.actioUrl, email, { headers: this.headers });
} }
} }

@ -1,55 +1,57 @@
import { HttpClient } from '@angular/common/http';
/** /**
* Created by stefania on 7/17/17. * Created by stefania on 7/17/17.
*/ */
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http'; import { Observable, throwError as observableThrowError } from 'rxjs';
import { Observable } from 'rxjs/Rx'; import { catchError, map } from 'rxjs/operators';
import { environment } from '../../../../environments/environment'; import { environment } from '../../../../environments/environment';
import { PageHelpContent } from '../../model/help-content/page-help-content'; import { PageHelpContent } from '../../model/help-content/page-help-content';
import { CachedContentItem } from './cached-content-item'; import { CachedContentItem } from './cached-content-item';
@Injectable() @Injectable()
export class HelpContentService { export class HelpContentService {
private _helpServiceUrl = environment.HelpService.Url; private _helpServiceUrl = environment.HelpService.Url;
cache = new Map<String, CachedContentItem>(); cache = new Map<String, CachedContentItem>();
constructor(private http: Http) { constructor(private http: HttpClient) {
} }
getActivePageContent(route: string) { // getActivePageContent(route: string) {
if (!this.cache.get(route) || !this.isValidCachedItem(route)) { // if (!this.cache.get(route) || !this.isValidCachedItem(route)) {
return this.http.get(this._helpServiceUrl + '/page/route?q=' + route) // return this.http.get(this._helpServiceUrl + '/page/route?q=' + route).pipe(
.map(res => { // map((res: Response) => {
this.cache.set(route, { timestamp: Date.now(), content: <PageHelpContent>res.json() }); // this.cache.set(route, { timestamp: Date.now(), content: res.json() as PageHelpContent });
return res.json(); // return res.json();
}) // }),
.catch(this.handleError); // catchError(this.handleError));
} // }
return Observable.create(observer => observer.next(this.cache.get(route).content)); // return Observable.create(observer => observer.next(this.cache.get(route).content));
} // }
private extractData(res: Response) { // private extractData(res: Response) {
const body = res.json(); // const body = res.json();
return body.data || {}; // return body. || {};
} // }
private handleError(error: Response | any) { // private handleError(error: Response | any) {
// In a real world app, we might use a remote logging infrastructure // // In a real world app, we might use a remote logging infrastructure
// We'd also dig deeper into the error to get a better message // // We'd also dig deeper into the error to get a better message
let errMsg = ''; // let errMsg = '';
if (error instanceof Response) { // if (error instanceof Response) {
const body = error.text() || ''; // const body = error.text() || '';
//const err = body.error || JSON.stringify(body); // //const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${body}`; // errMsg = `${error.status} - ${error.statusText || ''} ${body}`;
} else { // } else {
errMsg = (error.message) ? error.message : // errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error'; // error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead // console.error(errMsg); // log to console instead
} // }
return Observable.throw(errMsg); // return observableThrowError(errMsg);
} // }
isValidCachedItem(route) { // isValidCachedItem(route) {
const cachedTimestamp = this.cache.get(route).timestamp; // const cachedTimestamp = this.cache.get(route).timestamp;
const currentTimestamp = Date.now(); // const currentTimestamp = Date.now();
if (currentTimestamp - cachedTimestamp > 30000) { return false; } else { return true; } // if (currentTimestamp - cachedTimestamp > 30000) { return false; } else { return true; }
} // }
} }

@ -1,3 +1,5 @@
import {map} from 'rxjs/operators';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
@ -39,7 +41,7 @@ export class BaseHttpService {
} }
private interceptRepsonse<T>(observable: Observable<Object>): Observable<T> { private interceptRepsonse<T>(observable: Observable<Object>): Observable<T> {
return observable return observable.pipe(
// .catch((errorResponse) => { // .catch((errorResponse) => {
// if (errorResponse.status === 401) { // if (errorResponse.status === 401) {
// this.snackBar.openFromComponent(SnackBarNotificationComponent, { // this.snackBar.openFromComponent(SnackBarNotificationComponent, {
@ -69,7 +71,7 @@ export class BaseHttpService {
// } // }
// } // }
// }) // })
.map(response => { map(response => {
if (response instanceof Blob) { return response; } if (response instanceof Blob) { return response; }
if (response['statusCode'] === ApiMessageCode.SUCCESS_MESSAGE) { if (response['statusCode'] === ApiMessageCode.SUCCESS_MESSAGE) {
//throw new Error('Request failed'); //throw new Error('Request failed');
@ -83,6 +85,6 @@ export class BaseHttpService {
} else { } else {
return response['payload']; return response['payload'];
} }
}); }));
} }
} }

@ -2,7 +2,9 @@ import { FocusMonitor } from '@angular/cdk/a11y';
import { COMMA, ENTER } from '@angular/cdk/keycodes'; import { COMMA, ENTER } from '@angular/cdk/keycodes';
import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, Self, ViewChild } from '@angular/core'; import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, Self, ViewChild } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms'; import { ControlValueAccessor, NgControl } from '@angular/forms';
import { MatAutocompleteSelectedEvent, MatAutocompleteTrigger, MatChipInputEvent, MatFormFieldControl } from '@angular/material'; import { MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { MatChipInputEvent } from '@angular/material/chips';
import { MatFormFieldControl } from '@angular/material/form-field';
import { Observable, of as observableOf, Subject } from 'rxjs'; import { Observable, of as observableOf, Subject } from 'rxjs';
import { debounceTime, distinctUntilChanged, map, mergeMap, startWith, tap } from 'rxjs/operators'; import { debounceTime, distinctUntilChanged, map, mergeMap, startWith, tap } from 'rxjs/operators';
import { AutoCompleteGroup } from '../auto-complete-group'; import { AutoCompleteGroup } from '../auto-complete-group';
@ -87,8 +89,8 @@ export class MultipleAutoCompleteComponent implements OnInit, MatFormFieldContro
} }
private _selectedValue; private _selectedValue;
@ViewChild('textInput') textInput: ElementRef; @ViewChild('textInput', { static: true }) textInput: ElementRef;
@ViewChild(MatAutocompleteTrigger) autocomplete: MatAutocompleteTrigger; @ViewChild(MatAutocompleteTrigger, { static: true }) autocomplete: MatAutocompleteTrigger;
constructor( constructor(
private fm: FocusMonitor, private fm: FocusMonitor,

@ -2,7 +2,8 @@ import { FocusMonitor } from '@angular/cdk/a11y';
import { COMMA, ENTER } from '@angular/cdk/keycodes'; import { COMMA, ENTER } from '@angular/cdk/keycodes';
import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, Self } from '@angular/core'; import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, Self } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms'; import { ControlValueAccessor, NgControl } from '@angular/forms';
import { MatAutocompleteSelectedEvent, MatFormFieldControl } from '@angular/material'; import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatFormFieldControl } from '@angular/material/form-field';
import { Observable, of as observableOf, Subject } from 'rxjs'; import { Observable, of as observableOf, Subject } from 'rxjs';
import { debounceTime, distinctUntilChanged, map, mergeMap, startWith, tap } from 'rxjs/operators'; import { debounceTime, distinctUntilChanged, map, mergeMap, startWith, tap } from 'rxjs/operators';
import { AutoCompleteGroup } from '../auto-complete-group'; import { AutoCompleteGroup } from '../auto-complete-group';

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
@Component({ @Component({
selector: 'app-confirmation-dialog', selector: 'app-confirmation-dialog',

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
@Component({ @Component({

@ -1,5 +1,5 @@
import { Component, OnInit, Inject } from '@angular/core'; import { Component, OnInit, Inject } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
@Component({ @Component({

@ -1,5 +1,6 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MatDialog, MatSnackBar } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../core/common/base/base.component'; import { BaseComponent } from '../../core/common/base/base.component';
import { UiNotificationService, UiNotificationType, PopupNotification, SnackBarNotification, SnackBarNotificationLevel } from '../../core/services/notification/ui-notification-service'; import { UiNotificationService, UiNotificationType, PopupNotification, SnackBarNotification, SnackBarNotificationLevel } from '../../core/services/notification/ui-notification-service';

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { PopupNotification } from '../../../core/services/notification/ui-notification-service'; import { PopupNotification } from '../../../core/services/notification/ui-notification-service';
@Component({ @Component({

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { MAT_SNACK_BAR_DATA } from '@angular/material'; import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
import { SnackBarNotification } from '../../../core/services/notification/ui-notification-service'; import { SnackBarNotification } from '../../../core/services/notification/ui-notification-service';
@Component({ @Component({

@ -1,7 +1,10 @@
import { HttpErrorResponse } from '@angular/common/http';
import {of as observableOf, Observable } from 'rxjs';
import { HttpErrorResponse } from '@angular/common/http';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { FormArray, FormControl, FormGroup } from '@angular/forms'; import { FormArray, FormControl, FormGroup } from '@angular/forms';
import { MatHorizontalStepper, MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { MatHorizontalStepper } from '@angular/material/stepper';
import { ActivatedRoute, ParamMap, Router } from '@angular/router'; import { ActivatedRoute, ParamMap, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { map, takeUntil } from 'rxjs/operators'; import { map, takeUntil } from 'rxjs/operators';
@ -18,7 +21,6 @@ import { ConfirmationDialogComponent } from '../../../../library/confirmation-di
import { DatasetProfileEnum } from '../../../../core/common/enum/dataset-profile'; import { DatasetProfileEnum } from '../../../../core/common/enum/dataset-profile';
import * as FileSaver from 'file-saver'; import * as FileSaver from 'file-saver';
import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-item'; import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-item';
import { Observable } from 'rxjs';
import { DatasetStatus } from '../../../../core/common/enum/dataset-status'; import { DatasetStatus } from '../../../../core/common/enum/dataset-status';
//import * as data from 'src/assets/resources/skipDisable.json'; //import * as data from 'src/assets/resources/skipDisable.json';
@ -42,7 +44,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
newVersionId: string; newVersionId: string;
dataWizardModel: DatasetWizardModel; dataWizardModel: DatasetWizardModel;
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
@ViewChild('stepper') stepper: MatHorizontalStepper; @ViewChild('stepper', { static: false }) stepper: MatHorizontalStepper;
viewOnly = false; viewOnly = false;
constructor( constructor(
@ -88,7 +90,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
}, },
error => this.onCallbackError(error) error => this.onCallbackError(error)
); );
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: 'DatasetProfileListingComponent', parentComponentName: 'DatasetProfileListingComponent',
label: this.language.instant('NAV-BAR.TEMPLATE'), label: this.language.instant('NAV-BAR.TEMPLATE'),
url: '/dataset-profiles/' + this.datasetProfileId url: '/dataset-profiles/' + this.datasetProfileId

@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { ValidationErrorModel } from '../../../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../../../common/forms/validation/error-model/validation-error-model';

@ -1,4 +1,4 @@
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { Inject, Component } from '@angular/core'; import { Inject, Component } from '@angular/core';

@ -1,9 +1,12 @@
import {merge as observableMerge, of as observableOf, Observable } from 'rxjs';
import {switchMap, startWith, map, takeUntil } from 'rxjs/operators';
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator, MatSort, PageEvent } from '@angular/material'; import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; import { DataTableRequest } from '../../../../core/model/data-table/data-table-request';
import { DatasetListingModel } from '../../../../core/model/dataset/dataset-listing'; import { DatasetListingModel } from '../../../../core/model/dataset/dataset-listing';
@ -24,9 +27,9 @@ import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-i
}) })
export class DatasetProfileListingComponent extends BaseComponent implements OnInit { export class DatasetProfileListingComponent extends BaseComponent implements OnInit {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: true }) sort: MatSort;
@ViewChild(DatasetProfileCriteriaComponent) criteria: DatasetProfileCriteriaComponent; @ViewChild(DatasetProfileCriteriaComponent, { static: true }) criteria: DatasetProfileCriteriaComponent;
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
dataSource: DatasetDataSource | null; dataSource: DatasetDataSource | null;
@ -70,7 +73,7 @@ export class DatasetProfileListingComponent extends BaseComponent implements OnI
this.criteria.setCriteria(this.getDefaultCriteria()); this.criteria.setCriteria(this.getDefaultCriteria());
this.refresh(); this.refresh();
this.criteria.setRefreshCallback(() => this.refresh()); this.criteria.setRefreshCallback(() => this.refresh());
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: null, parentComponentName: null,
label: this.language.instant('NAV-BAR.DATASET-TEMPLATES'), label: this.language.instant('NAV-BAR.DATASET-TEMPLATES'),
url: '/dataset-profiles' url: '/dataset-profiles'
@ -80,7 +83,7 @@ export class DatasetProfileListingComponent extends BaseComponent implements OnI
} }
setDmpTitle(dmpId: String) { setDmpTitle(dmpId: String) {
this.dmpService.getSingle(dmpId).map(data => data as DmpModel) this.dmpService.getSingle(dmpId).pipe(map(data => data as DmpModel))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(data => { .subscribe(data => {
this.titlePrefix = data.label; this.titlePrefix = data.label;
@ -140,9 +143,9 @@ export class DatasetDataSource extends DataSource<DatasetListingModel> {
//this._sort.matSortChange //this._sort.matSortChange
]; ];
return Observable.merge(...displayDataChanges) return observableMerge(...displayDataChanges).pipe(
.startWith(null) startWith(null),
.switchMap(() => { switchMap(() => {
const startIndex = this._paginator.pageIndex * this._paginator.pageSize; const startIndex = this._paginator.pageIndex * this._paginator.pageSize;
let fields: Array<string> = new Array(); let fields: Array<string> = new Array();
if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; } if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; }
@ -153,7 +156,7 @@ export class DatasetDataSource extends DataSource<DatasetListingModel> {
request.criteria.allVersions = true; request.criteria.allVersions = true;
} }
return this._service.getPaged(request); return this._service.getPaged(request);
}) }),
/*.catch((error: any) => { /*.catch((error: any) => {
this._snackBar.openFromComponent(SnackBarNotificationComponent, { this._snackBar.openFromComponent(SnackBarNotificationComponent, {
data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService }, data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService },
@ -163,14 +166,14 @@ export class DatasetDataSource extends DataSource<DatasetListingModel> {
//this._criteria.criteria.onCallbackError(error); //this._criteria.criteria.onCallbackError(error);
return Observable.of(null); return Observable.of(null);
})*/ })*/
.map(result => { map(result => {
return result; return result;
}) }),
.map(result => { map(result => {
if (!result) { return []; } if (!result) { return []; }
if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; }
return result.data; return result.data;
}); }),);
} }
disconnect() { disconnect() {

@ -1,6 +1,6 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
import { DatasetProfileService } from '../../../../core/services/dataset-profile/dataset-profile.service'; import { DatasetProfileService } from '../../../../core/services/dataset-profile/dataset-profile.service';

@ -1,9 +1,12 @@
import {of as observableOf, Observable } from 'rxjs';
import {map, takeUntil } from 'rxjs/operators';
import { AfterViewInit, Component, OnInit } from '@angular/core'; import { AfterViewInit, Component, OnInit } from '@angular/core';
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import * as FileSaver from 'file-saver'; import * as FileSaver from 'file-saver';
import { takeUntil } from 'rxjs/operators';
import { environment } from '../../../../../environments/environment'; import { environment } from '../../../../../environments/environment';
import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
@ -16,7 +19,6 @@ import { SnackBarNotificationLevel, UiNotificationService } from '../../../../co
import { EnumUtils } from '../../../../core/services/utilities/enum-utils.service'; import { EnumUtils } from '../../../../core/services/utilities/enum-utils.service';
import { DmpProfileEditorModel, DmpProfileFieldEditorModel } from './dmp-profile-editor.model'; import { DmpProfileEditorModel, DmpProfileFieldEditorModel } from './dmp-profile-editor.model';
import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-item'; import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-item';
import { Observable } from 'rxjs';
import { DmpProfileExternalAutoCompleteFieldDataEditorModel } from './external-autocomplete/dmp-profile-external-autocomplete-field-editor.model'; import { DmpProfileExternalAutoCompleteFieldDataEditorModel } from './external-autocomplete/dmp-profile-external-autocomplete-field-editor.model';
@Component({ @Component({
@ -53,7 +55,7 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie
if (this.dmpProfileId != null) { if (this.dmpProfileId != null) {
this.isNew = false; this.isNew = false;
this.dmpProfileService.getSingle(this.dmpProfileId).map(data => data as DmpProfile) this.dmpProfileService.getSingle(this.dmpProfileId).pipe(map(data => data as DmpProfile))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(data => { .subscribe(data => {
this.dmpProfileModel = new DmpProfileEditorModel().fromModel(data); this.dmpProfileModel = new DmpProfileEditorModel().fromModel(data);
@ -62,7 +64,7 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie
this.formGroup.disable(); this.formGroup.disable();
this.viewOnly = true this.viewOnly = true
} }
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: 'DmpProfileListingComponent', parentComponentName: 'DmpProfileListingComponent',
label: this.language.instant('NAV-BAR.TEMPLATE'), label: this.language.instant('NAV-BAR.TEMPLATE'),
url: '/dmp-profiles/' + this.dmpProfileId url: '/dmp-profiles/' + this.dmpProfileId
@ -74,7 +76,7 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie
this.formGroup = this.dmpProfileModel.buildForm(); this.formGroup = this.dmpProfileModel.buildForm();
this.addField(); this.addField();
}); });
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: 'DmpProfileListingComponent', parentComponentName: 'DmpProfileListingComponent',
label: this.language.instant('NAV-BAR.TEMPLATE'), label: this.language.instant('NAV-BAR.TEMPLATE'),
url: '/dmp-profiles/' + this.dmpProfileId url: '/dmp-profiles/' + this.dmpProfileId

@ -1,4 +1,4 @@
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { Inject, Component } from '@angular/core'; import { Inject, Component } from '@angular/core';

@ -5,7 +5,7 @@ import { DmpCriteria } from '../../../../../core/query/dmp/dmp-criteria';
import { DmpProfileCriteria } from '../../../../../core/query/dmp/dmp-profile-criteria'; import { DmpProfileCriteria } from '../../../../../core/query/dmp/dmp-profile-criteria';
import { BaseCriteriaComponent } from '../../../../misc/criteria/base-criteria.component'; import { BaseCriteriaComponent } from '../../../../misc/criteria/base-criteria.component';
import { DialodConfirmationUploadDmpProfiles } from './dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component'; import { DialodConfirmationUploadDmpProfiles } from './dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { DmpProfileService } from '../../../../../core/services/dmp/dmp-profile.service'; import { DmpProfileService } from '../../../../../core/services/dmp/dmp-profile.service';

@ -1,10 +1,14 @@
import {merge as observableMerge, of as observableOf, Observable } from 'rxjs';
import {map, switchMap, startWith, takeUntil } from 'rxjs/operators';
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator, MatSnackBar, MatSort, PageEvent } from '@angular/material'; import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatSort } from '@angular/material/sort';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
import { DmpProfileListing } from '../../../../core/model/dmp-profile/dmp-profile-listing'; import { DmpProfileListing } from '../../../../core/model/dmp-profile/dmp-profile-listing';
import { DmpProfileCriteria } from '../../../../core/query/dmp/dmp-profile-criteria'; import { DmpProfileCriteria } from '../../../../core/query/dmp/dmp-profile-criteria';
@ -20,9 +24,9 @@ import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-i
}) })
export class DmpProfileListingComponent extends BaseComponent implements OnInit { export class DmpProfileListingComponent extends BaseComponent implements OnInit {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: true }) sort: MatSort;
@ViewChild(DmpProfileCriteriaComponent) criteria: DmpProfileCriteriaComponent; @ViewChild(DmpProfileCriteriaComponent, { static: true }) criteria: DmpProfileCriteriaComponent;
dataSource: DatasetDataSource | null; dataSource: DatasetDataSource | null;
displayedColumns: String[] = ['label', 'status', 'created']; displayedColumns: String[] = ['label', 'status', 'created'];
@ -54,7 +58,7 @@ export class DmpProfileListingComponent extends BaseComponent implements OnInit
this.criteria.setCriteria(this.getDefaultCriteria()); this.criteria.setCriteria(this.getDefaultCriteria());
this.refresh(); this.refresh();
this.criteria.setRefreshCallback(() => this.refresh()); this.criteria.setRefreshCallback(() => this.refresh());
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: null, parentComponentName: null,
label: this.languageService.instant('NAV-BAR.DMP-TEMPLATES'), label: this.languageService.instant('NAV-BAR.DMP-TEMPLATES'),
url: '/dmp-profiles' url: '/dmp-profiles'
@ -101,16 +105,16 @@ export class DatasetDataSource extends DataSource<DmpProfileListing> {
//this._sort.matSortChange //this._sort.matSortChange
]; ];
return Observable.merge(...displayDataChanges) return observableMerge(...displayDataChanges).pipe(
.startWith(null) startWith(null),
.switchMap(() => { switchMap(() => {
const startIndex = this._paginator.pageIndex * this._paginator.pageSize; const startIndex = this._paginator.pageIndex * this._paginator.pageSize;
let fields: Array<string> = new Array(); let fields: Array<string> = new Array();
if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; } if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; }
const request = new DataTableRequest<DmpProfileCriteria>(startIndex, this._paginator.pageSize, { fields: fields }); const request = new DataTableRequest<DmpProfileCriteria>(startIndex, this._paginator.pageSize, { fields: fields });
request.criteria = this._criteria.criteria; request.criteria = this._criteria.criteria;
return this._service.getPaged(request); return this._service.getPaged(request);
}) }),
/*.catch((error: any) => { /*.catch((error: any) => {
this._snackBar.openFromComponent(SnackBarNotificationComponent, { this._snackBar.openFromComponent(SnackBarNotificationComponent, {
data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService }, data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService },
@ -120,14 +124,14 @@ export class DatasetDataSource extends DataSource<DmpProfileListing> {
//this._criteria.criteria.onCallbackError(error); //this._criteria.criteria.onCallbackError(error);
return Observable.of(null); return Observable.of(null);
})*/ })*/
.map(result => { map(result => {
return result; return result;
}) }),
.map(result => { map(result => {
if (!result) { return []; } if (!result) { return []; }
if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; }
return result.data; return result.data;
}); }),);
} }
disconnect() { disconnect() {

@ -1,8 +1,13 @@
import {of as observableOf, merge as observableMerge, Observable } from 'rxjs';
import {map, catchError, switchMap, startWith} from 'rxjs/operators';
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core'; import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator, MatSnackBar, MatSort } from '@angular/material'; import { MatPaginator } from '@angular/material/paginator';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatSort } from '@angular/material/sort';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { UserListingModel } from '../../../../core/model/user/user-listing'; import { UserListingModel } from '../../../../core/model/user/user-listing';
import { UserCriteria } from '../../../../core/query/user/user-criteria'; import { UserCriteria } from '../../../../core/query/user/user-criteria';
import { UserService } from '../../../../core/services/user/user.service'; import { UserService } from '../../../../core/services/user/user.service';
@ -41,28 +46,28 @@ export class UsersDataSource extends DataSource<UserListingModel> {
// this._paginator.pageIndex = 0; // this._paginator.pageIndex = 0;
//}) //})
return Observable.merge(...displayDataChanges) return observableMerge(...displayDataChanges).pipe(
.startWith(null) startWith(null),
.switchMap(() => { switchMap(() => {
const startIndex = this._paginator.pageIndex * this._paginator.pageSize; const startIndex = this._paginator.pageIndex * this._paginator.pageSize;
let fields: Array<string> = new Array(); let fields: Array<string> = new Array();
if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; } if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; }
const request = new DataTableRequest<UserCriteria>(startIndex, this._paginator.pageSize, { fields: fields }); const request = new DataTableRequest<UserCriteria>(startIndex, this._paginator.pageSize, { fields: fields });
request.criteria = this._criteria.getFormData(); request.criteria = this._criteria.getFormData();
return this._service.getPaged(request); return this._service.getPaged(request);
}) }),
.catch((error: any) => { catchError((error: any) => {
this._snackBar.openFromComponent(SnackBarNotificationComponent, { this._snackBar.openFromComponent(SnackBarNotificationComponent, {
data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService }, data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService },
duration: 3000, duration: 3000,
}); });
this._criteria.onCallbackError(error); this._criteria.onCallbackError(error);
return Observable.of(null); return observableOf(null);
}) }),
.map(result => { map(result => {
return result; return result;
}) }),
.map(result => { map(result => {
if (!result) { return []; } if (!result) { return []; }
if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; }
//result.data.forEach((element: any) => { //result.data.forEach((element: any) => {
@ -75,7 +80,7 @@ export class UsersDataSource extends DataSource<UserListingModel> {
// element.roles = roles; // element.roles = roles;
//}); //});
return result.data; return result.data;
}); }),);
} }
disconnect() { disconnect() {
@ -90,9 +95,9 @@ export class UsersDataSource extends DataSource<UserListingModel> {
}) })
export class UserListingComponent implements OnInit, AfterViewInit { export class UserListingComponent implements OnInit, AfterViewInit {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: true }) sort: MatSort;
@ViewChild(UserCriteriaComponent) criteria: UserCriteriaComponent; @ViewChild(UserCriteriaComponent, { static: true }) criteria: UserCriteriaComponent;
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
dataSource: UsersDataSource | null; dataSource: UsersDataSource | null;
@ -107,7 +112,7 @@ export class UserListingComponent implements OnInit, AfterViewInit {
} }
ngOnInit() { ngOnInit() {
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: null, parentComponentName: null,
label: this.languageService.instant('NAV-BAR.USERS-BREADCRUMB'), label: this.languageService.instant('NAV-BAR.USERS-BREADCRUMB'),
url: "/users" url: "/users"

@ -1,7 +1,10 @@
import {of as observableOf, Observable } from 'rxjs';
import {mergeMap, takeUntil } from 'rxjs/operators';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms'; import { FormControl } from '@angular/forms';
import { Router, ActivatedRoute, Params } from '@angular/router'; import { Router, ActivatedRoute, Params } from '@angular/router';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../core/common/base/base.component'; import { BaseComponent } from '../../core/common/base/base.component';
import { RecentActivityType } from '../../core/common/enum/recent-activity-type'; import { RecentActivityType } from '../../core/common/enum/recent-activity-type';
import { DashboardStatisticsModel } from '../../core/model/dashboard/dashboard-statistics-model'; import { DashboardStatisticsModel } from '../../core/model/dashboard/dashboard-statistics-model';
@ -24,7 +27,6 @@ import { DatasetService } from '../../core/services/dataset/dataset.service';
import { ExploreDatasetCriteriaModel } from '../../core/query/explore-dataset/explore-dataset-criteria'; import { ExploreDatasetCriteriaModel } from '../../core/query/explore-dataset/explore-dataset-criteria';
import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item'; import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item';
import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent'; import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent';
import { Observable } from 'rxjs';
@Component({ @Component({
selector: 'app-dashboard', selector: 'app-dashboard',
@ -90,7 +92,7 @@ export class DashboardComponent extends BaseComponent implements OnInit, IBreadC
// }; // };
const breadCrumbs = []; const breadCrumbs = [];
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
if (!this.isAuthenticated()) { if (!this.isAuthenticated()) {
this.dashboardService.getStatistics() this.dashboardService.getStatistics()
@ -109,9 +111,9 @@ export class DashboardComponent extends BaseComponent implements OnInit, IBreadC
}); });
} }
this.filteredOptions = this.searchControl.valueChanges.flatMap(x => { this.filteredOptions = this.searchControl.valueChanges.pipe(mergeMap(x => {
return this.searchBarService.search(x); return this.searchBarService.search(x);
}); }));
} }
public isAuthenticated(): boolean { public isAuthenticated(): boolean {

@ -2,7 +2,7 @@ import { BaseComponent } from "../../../core/common/base/base.component";
import { OnInit, Component } from "@angular/core"; import { OnInit, Component } from "@angular/core";
import { Router, ActivatedRoute } from "@angular/router"; import { Router, ActivatedRoute } from "@angular/router";
import { TranslateService } from "@ngx-translate/core"; import { TranslateService } from "@ngx-translate/core";
import { MatSnackBar } from "@angular/material"; import { MatSnackBar } from "@angular/material/snack-bar";
@Component({ @Component({
selector: 'app-quick-wizard-create-add-component', selector: 'app-quick-wizard-create-add-component',

@ -10,7 +10,7 @@ import { Router } from '@angular/router';
import { Principal } from '../../../core/model/auth/Principal'; import { Principal } from '../../../core/model/auth/Principal';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { ConfirmationDialogComponent } from '../../../library/confirmation-dialog/confirmation-dialog.component'; import { ConfirmationDialogComponent } from '../../../library/confirmation-dialog/confirmation-dialog.component';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { ExportMethodDialogComponent } from '../../../library/export-method-dialog/export-method-dialog.component'; import { ExportMethodDialogComponent } from '../../../library/export-method-dialog/export-method-dialog.component';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { UiNotificationService, SnackBarNotificationLevel } from '../../../core/services/notification/ui-notification-service'; import { UiNotificationService, SnackBarNotificationLevel } from '../../../core/services/notification/ui-notification-service';

@ -1,12 +1,14 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms'; import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
import { MatStepper, MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { MatStepper } from '@angular/material/stepper';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { BaseComponent } from '../../core/common/base/base.component'; import { BaseComponent } from '../../core/common/base/base.component';
import { QuickWizardService } from '../../core/services/quick-wizard/quick-wizard.service'; import { QuickWizardService } from '../../core/services/quick-wizard/quick-wizard.service';
import { DatasetCreateWizardModel } from './dataset-create-wizard.model'; import { DatasetCreateWizardModel } from './dataset-create-wizard.model';
import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent'; import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item'; import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item';
import { SnackBarNotificationLevel, UiNotificationService } from '../../core/services/notification/ui-notification-service'; import { SnackBarNotificationLevel, UiNotificationService } from '../../core/services/notification/ui-notification-service';
@ -22,14 +24,14 @@ import { ConfirmationDialogComponent } from '../../library/confirmation-dialog/c
}) })
export class DatasetCreateWizard extends BaseComponent implements OnInit, IBreadCrumbComponent { export class DatasetCreateWizard extends BaseComponent implements OnInit, IBreadCrumbComponent {
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
@ViewChild(DatasetEditorWizardComponent) datasetEditorWizardComponent: DatasetEditorWizardComponent; @ViewChild(DatasetEditorWizardComponent, { static: false }) datasetEditorWizardComponent: DatasetEditorWizardComponent;
isLinear = false; isLinear = false;
isNew = true; isNew = true;
formGroup: FormGroup; formGroup: FormGroup;
datasetCreateWizardModel: DatasetCreateWizardModel; datasetCreateWizardModel: DatasetCreateWizardModel;
@ViewChild('stepper') stepper: MatStepper; @ViewChild('stepper', { static: true }) stepper: MatStepper;
constructor( constructor(
private router: Router, private router: Router,
@ -46,7 +48,7 @@ export class DatasetCreateWizard extends BaseComponent implements OnInit, IBread
this.datasetCreateWizardModel = new DatasetCreateWizardModel(); this.datasetCreateWizardModel = new DatasetCreateWizardModel();
this.formGroup = this.datasetCreateWizardModel.buildForm(); this.formGroup = this.datasetCreateWizardModel.buildForm();
this.language.get('NAV-BAR.DATASET-DESCRIPTION-WIZARD').pipe(takeUntil(this._destroyed)).subscribe(x => { this.language.get('NAV-BAR.DATASET-DESCRIPTION-WIZARD').pipe(takeUntil(this._destroyed)).subscribe(x => {
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: 'Dashboard', parentComponentName: 'Dashboard',
label: x, label: x,

@ -1,25 +1,23 @@
import { Component, OnInit, ViewChild, Input } from '@angular/core';
import { BaseComponent } from '../../../core/common/base/base.component'; import { Component, Input, OnInit } from '@angular/core';
import { IBreadCrumbComponent } from '../../misc/breadcrumb/definition/IBreadCrumbComponent'; import { FormArray, FormControl, FormGroup } from '@angular/forms';
import { MatStepper } from '@angular/material/stepper';
import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { BreadcrumbItem } from '../../misc/breadcrumb/definition/breadcrumb-item'; import { map, takeUntil } from 'rxjs/operators';
import { MatStepper, MatSnackBar } from '@angular/material'; import { BaseComponent } from '../../../core/common/base/base.component';
import { FormGroup, FormArray } from '@angular/forms'; import { DmpStatus } from '../../../core/common/enum/dmp-status';
import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile';
import { takeUntil } from 'rxjs/operators';
import { RequestItem } from '../../../core/query/request-item';
import { DmpCriteria } from '../../../core/query/dmp/dmp-criteria';
import { Params, ActivatedRoute, Router } from '@angular/router';
import { DatasetProfileCriteria } from '../../../core/query/dataset-profile/dataset-profile-criteria';
import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; import { DataTableRequest } from '../../../core/model/data-table/data-table-request';
import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile';
import { DmpListingModel } from '../../../core/model/dmp/dmp-listing'; import { DmpListingModel } from '../../../core/model/dmp/dmp-listing';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { DatasetProfileCriteria } from '../../../core/query/dataset-profile/dataset-profile-criteria';
import { SingleAutoCompleteConfiguration } from '../../../library/auto-complete/single/single-auto-complete-configuration'; import { DmpCriteria } from '../../../core/query/dmp/dmp-criteria';
import { RequestItem } from '../../../core/query/request-item';
import { DatasetWizardService } from '../../../core/services/dataset-wizard/dataset-wizard.service'; import { DatasetWizardService } from '../../../core/services/dataset-wizard/dataset-wizard.service';
import { TranslateService } from '@ngx-translate/core';
import { DmpService } from '../../../core/services/dmp/dmp.service'; import { DmpService } from '../../../core/services/dmp/dmp.service';
import { FormControl } from '@angular/forms/src/model'; import { SingleAutoCompleteConfiguration } from '../../../library/auto-complete/single/single-auto-complete-configuration';
import { DmpStatus } from '../../../core/common/enum/dmp-status'; import { BreadcrumbItem } from '../../misc/breadcrumb/definition/breadcrumb-item';
import { IBreadCrumbComponent } from '../../misc/breadcrumb/definition/IBreadCrumbComponent';
@Component({ @Component({
selector: 'dataset-dmp-selector-component', selector: 'dataset-dmp-selector-component',
@ -79,8 +77,8 @@ export class DatasetDmpSelector extends BaseComponent implements OnInit, IBreadC
dmpDataTableRequest.criteria.status = DmpStatus.Draft; dmpDataTableRequest.criteria.status = DmpStatus.Draft;
dmpDataTableRequest.criteria.like = query; dmpDataTableRequest.criteria.like = query;
return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete") return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(
.map(y => y.data); map(y => y.data));
} }
loadDatasetProfiles() { loadDatasetProfiles() {

@ -1,5 +1,7 @@
import {map} from 'rxjs/operators';
import { Component } from "@angular/core"; import { Component } from "@angular/core";
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material"; import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
import { SingleAutoCompleteConfiguration } from "../../../../library/auto-complete/single/single-auto-complete-configuration"; import { SingleAutoCompleteConfiguration } from "../../../../library/auto-complete/single/single-auto-complete-configuration";
import { Observable } from "rxjs"; import { Observable } from "rxjs";
import { DataTableRequest } from "../../../../core/model/data-table/data-table-request"; import { DataTableRequest } from "../../../../core/model/data-table/data-table-request";
@ -57,19 +59,19 @@ export class DatasetCopyDialogueComponent {
const dmpDataTableRequest: DataTableRequest<DmpCriteria> = new DataTableRequest(0, null, { fields: fields }); const dmpDataTableRequest: DataTableRequest<DmpCriteria> = new DataTableRequest(0, null, { fields: fields });
dmpDataTableRequest.criteria = new DmpCriteria(); dmpDataTableRequest.criteria = new DmpCriteria();
dmpDataTableRequest.criteria.like = query; dmpDataTableRequest.criteria.like = query;
return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").map(x => x.data); return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data));
} }
datasetProfileValidate() { datasetProfileValidate() {
return this.dmpService.getSingle(this.data.formControl.value.id).map(result => result as DmpModel) return this.dmpService.getSingle(this.data.formControl.value.id).pipe(map(result => result as DmpModel),
.map(result => { map(result => {
this.dmpModel = result this.dmpModel = result
this.dmpModel.profiles.forEach((element) => { this.dmpModel.profiles.forEach((element) => {
if (element.id == this.data.datasetProfileId) { if (element.id == this.data.datasetProfileId) {
this.data.datasetProfileExist = true; this.data.datasetProfileExist = true;
} }
}) })
}); }),);
} }
getErrorMessage() { getErrorMessage() {

@ -1,11 +1,15 @@
import {of as observableOf, Observable } from 'rxjs';
import {map, catchError, takeUntil } from 'rxjs/operators';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms'; import { FormControl, FormGroup } from '@angular/forms';
import { MatDialog, MatSnackBar, MatStepper } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatStepper } from '@angular/material/stepper';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import * as FileSaver from 'file-saver'; import * as FileSaver from 'file-saver';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { DatasetStatus } from '../../../core/common/enum/dataset-status'; import { DatasetStatus } from '../../../core/common/enum/dataset-status';
@ -40,7 +44,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
viewOnly = false; viewOnly = false;
@ViewChild('stepper') stepper: MatStepper; @ViewChild('stepper', { static: false }) stepper: MatStepper;
editMode = false; editMode = false;
publicMode = false; publicMode = false;
@ -109,7 +113,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
.subscribe(data => { .subscribe(data => {
this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data);
this.needsUpdate(); this.needsUpdate();
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: null, parentComponentName: null,
label: this.datasetWizardModel.label, label: this.datasetWizardModel.label,
@ -140,11 +144,11 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
error => { error => {
this.uiNotificationService.snackBarNotification(this.language.instant('DATASET-WIZARD.MESSAGES.DATAESET-NOT-FOUND'), SnackBarNotificationLevel.Error); this.uiNotificationService.snackBarNotification(this.language.instant('DATASET-WIZARD.MESSAGES.DATAESET-NOT-FOUND'), SnackBarNotificationLevel.Error);
this.router.navigate(['/plans']); this.router.navigate(['/plans']);
return Observable.of(null); return observableOf(null);
}); });
} else if (dmpId != null) { } else if (dmpId != null) {
this.isNew = true; this.isNew = true;
this.dmpService.getSingle(dmpId).map(data => data as DmpModel) this.dmpService.getSingle(dmpId).pipe(map(data => data as DmpModel))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(data => { .subscribe(data => {
this.datasetWizardModel = new DatasetWizardEditorModel(); this.datasetWizardModel = new DatasetWizardEditorModel();
@ -158,7 +162,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
this.registerFormListeners(); this.registerFormListeners();
// this.availableProfiles = data.profiles; // this.availableProfiles = data.profiles;
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: null, parentComponentName: null,
label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'), label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'),
@ -186,7 +190,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data);
this.formGroup = this.datasetWizardModel.buildForm(); this.formGroup = this.datasetWizardModel.buildForm();
this.formGroup.get('id').setValue(null); this.formGroup.get('id').setValue(null);
this.dmpService.getSingle(newDmpId).map(data => data as DmpModel) this.dmpService.getSingle(newDmpId).pipe(map(data => data as DmpModel))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(data => { .subscribe(data => {
setTimeout(() => { setTimeout(() => {
@ -194,7 +198,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
this.formGroup.get('dmp').setValue(this.datasetWizardModel.dmp); this.formGroup.get('dmp').setValue(this.datasetWizardModel.dmp);
this.loadDatasetProfiles(); this.loadDatasetProfiles();
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: null, parentComponentName: null,
label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'), label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'),
@ -226,12 +230,12 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
} else if (this.publicId != null) { // For Finalized -> Public Datasets } else if (this.publicId != null) { // For Finalized -> Public Datasets
this.isNew = false; this.isNew = false;
this.datasetWizardService.getSinglePublic(this.publicId) this.datasetWizardService.getSinglePublic(this.publicId)
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed)).pipe(
.catch((error: any) => { catchError((error: any) => {
this.uiNotificationService.snackBarNotification(error.error.message, SnackBarNotificationLevel.Error); this.uiNotificationService.snackBarNotification(error.error.message, SnackBarNotificationLevel.Error);
this.router.navigate(['/explore']); this.router.navigate(['/explore']);
return Observable.of(null); return observableOf(null);
}) }))
.subscribe(data => { .subscribe(data => {
if (data) { if (data) {
this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data);
@ -246,7 +250,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
const breadcrumbs = []; const breadcrumbs = [];
breadcrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC DATASETS'), url: '/explore' }); breadcrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC DATASETS'), url: '/explore' });
breadcrumbs.push({ parentComponentName: null, label: this.datasetWizardModel.label, url: '/datasets/publicEdit/' + this.datasetWizardModel.id }); breadcrumbs.push({ parentComponentName: null, label: this.datasetWizardModel.label, url: '/datasets/publicEdit/' + this.datasetWizardModel.id });
this.breadCrumbs = Observable.of(breadcrumbs); this.breadCrumbs = observableOf(breadcrumbs);
} }
}); });
this.publicMode = true; this.publicMode = true;
@ -256,7 +260,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
.subscribe(data => { .subscribe(data => {
this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data);
this.needsUpdate(); this.needsUpdate();
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: null, parentComponentName: null,
label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'), label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'),
@ -294,7 +298,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
//if (this.viewOnly) { this.formGroup.disable(); } // For future use, to make Dataset edit like DMP. //if (this.viewOnly) { this.formGroup.disable(); } // For future use, to make Dataset edit like DMP.
this.registerFormListeners(); this.registerFormListeners();
this.dmpValueChanged(null); this.dmpValueChanged(null);
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: null, parentComponentName: null,
label: this.language.instant('DATASET-LISTING.ACTIONS.CREATE-NEW').toUpperCase(), label: this.language.instant('DATASET-LISTING.ACTIONS.CREATE-NEW').toUpperCase(),
@ -349,7 +353,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
const dmpDataTableRequest: DataTableRequest<DmpCriteria> = new DataTableRequest(0, null, { fields: fields }); const dmpDataTableRequest: DataTableRequest<DmpCriteria> = new DataTableRequest(0, null, { fields: fields });
dmpDataTableRequest.criteria = new DmpCriteria(); dmpDataTableRequest.criteria = new DmpCriteria();
dmpDataTableRequest.criteria.like = query; dmpDataTableRequest.criteria.like = query;
return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").map(x => x.data); return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data));
} }
loadDatasetProfiles() { loadDatasetProfiles() {

@ -1,6 +1,6 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { FormArray, FormGroup } from '@angular/forms'; import { FormArray, FormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';

@ -1,6 +1,6 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../../../core/common/base/base.component';
import { ExternalDataRepositoryService } from '../../../../../../core/services/external-sources/data-repository/extternal-data-repository.service'; import { ExternalDataRepositoryService } from '../../../../../../core/services/external-sources/data-repository/extternal-data-repository.service';

@ -1,6 +1,6 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../../../core/common/base/base.component';
import { ExternalDatasetService } from '../../../../../../core/services/external-sources/dataset/external-dataset.service'; import { ExternalDatasetService } from '../../../../../../core/services/external-sources/dataset/external-dataset.service';

@ -1,6 +1,6 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../../../core/common/base/base.component';
import { ExternalRegistryService } from '../../../../../../core/services/external-sources/registry/external-registry.service'; import { ExternalRegistryService } from '../../../../../../core/services/external-sources/registry/external-registry.service';

@ -1,6 +1,6 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../../../core/common/base/base.component';
import { ExternalServiceService } from '../../../../../../core/services/external-sources/service/external-service.service'; import { ExternalServiceService } from '../../../../../../core/services/external-sources/service/external-service.service';

@ -1,39 +1,38 @@
import { Component, OnInit } from '@angular/core';
import { Component, Input, OnInit } from '@angular/core';
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map, takeUntil } from 'rxjs/operators';
import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model';
import { DatasetStatus } from '../../../../core/common/enum/dataset-status'; import { DatasetStatus } from '../../../../core/common/enum/dataset-status';
import { DataTableData } from '../../../../core/model/data-table/data-table-data';
import { DataTableRequest } from '../../../../core/model/data-table/data-table-request';
import { DmpListingModel } from '../../../../core/model/dmp/dmp-listing';
import { ExternalSourceItemModel } from '../../../../core/model/external-sources/external-source-item'; import { ExternalSourceItemModel } from '../../../../core/model/external-sources/external-source-item';
import { DatasetProfileCriteria } from '../../../../core/query/dataset-profile/dataset-profile-criteria';
import { DatasetCriteria } from '../../../../core/query/dataset/dataset-criteria'; import { DatasetCriteria } from '../../../../core/query/dataset/dataset-criteria';
import { DmpCriteria } from '../../../../core/query/dmp/dmp-criteria';
import { GrantCriteria } from '../../../../core/query/grant/grant-criteria';
import { OrganisationCriteria } from '../../../../core/query/organisation/organisation-criteria';
import { RequestItem } from '../../../../core/query/request-item';
import { TagCriteria } from '../../../../core/query/tag/tag-criteria'; import { TagCriteria } from '../../../../core/query/tag/tag-criteria';
import { UserCriteria } from '../../../../core/query/user/user-criteria';
import { DatasetWizardService } from '../../../../core/services/dataset-wizard/dataset-wizard.service';
import { DatasetService } from '../../../../core/services/dataset/dataset.service';
import { DmpService } from '../../../../core/services/dmp/dmp.service';
import { ExternalSourcesService } from '../../../../core/services/external-sources/external-sources.service'; import { ExternalSourcesService } from '../../../../core/services/external-sources/external-sources.service';
import { GrantService } from '../../../../core/services/grant/grant.service';
import { SnackBarNotificationLevel, UiNotificationService } from '../../../../core/services/notification/ui-notification-service';
import { OrganisationService } from '../../../../core/services/organisation/organisation.service';
import { UserService } from '../../../../core/services/user/user.service';
import { EnumUtils } from '../../../../core/services/utilities/enum-utils.service'; import { EnumUtils } from '../../../../core/services/utilities/enum-utils.service';
import { RequestItem } from '../../../../core/query/request-item'; import { MultipleAutoCompleteConfiguration } from '../../../../library/auto-complete/multiple/multiple-auto-complete-configuration';
import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.component'; import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.component';
import { DmpCriteria } from '../../../../core/query/dmp/dmp-criteria';
import { DmpService } from '../../../../core/services/dmp/dmp.service';
import { DataTableRequest } from '../../../../core/model/data-table/data-table-request';
import { DataTableData } from '../../../../core/model/data-table/data-table-data';
import { DmpListingModel } from '../../../../core/model/dmp/dmp-listing';
import { Input } from '@angular/core';
import { MatDialog, MatSnackBar } from '@angular/material';
import { DatasetUploadDialogue } from './dataset-upload-dialogue/dataset-upload-dialogue.component'; import { DatasetUploadDialogue } from './dataset-upload-dialogue/dataset-upload-dialogue.component';
import { takeUntil } from 'rxjs/operators';
import { reserveSlots } from '@angular/core/src/render3/instructions';
import { DatasetWizardService } from '../../../../core/services/dataset-wizard/dataset-wizard.service';
import { ViewChild } from '@angular/core';
import { UiNotificationService, SnackBarNotificationLevel } from '../../../../core/services/notification/ui-notification-service';
import { Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { FormGroup, FormBuilder, FormControl } from '@angular/forms';
import { MultipleAutoCompleteConfiguration } from '../../../../library/auto-complete/multiple/multiple-auto-complete-configuration';
import { OrganisationCriteria } from '../../../../core/query/organisation/organisation-criteria';
import { OrganisationService } from '../../../../core/services/organisation/organisation.service';
import { GrantCriteria } from '../../../../core/query/grant/grant-criteria';
import { GrantService } from '../../../../core/services/grant/grant.service';
import { UserCriteria } from '../../../../core/query/user/user-criteria';
import { UserService } from '../../../../core/services/user/user.service';
import { DatasetProfileCriteria } from '../../../../core/query/dataset-profile/dataset-profile-criteria';
import { DatasetService } from '../../../../core/services/dataset/dataset.service';
@Component({ @Component({
selector: 'app-dataset-criteria-component', selector: 'app-dataset-criteria-component',
@ -65,43 +64,43 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
tagsAutoCompleteConfiguration = { tagsAutoCompleteConfiguration = {
filterFn: this.filterTags.bind(this), filterFn: this.filterTags.bind(this),
initialItems: (excludedItems: any[]) => this.filterTags('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterTags('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
}; };
datasetTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { datasetTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterDatasetTemplate.bind(this), filterFn: this.filterDatasetTemplate.bind(this),
initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'], titleFn: (item) => item['label'],
subtitleFn: (item) => item['description'] subtitleFn: (item) => item['description']
}; };
dmpAutoCompleteConfiguration = { dmpAutoCompleteConfiguration = {
filterFn: (x, excluded) => this.filterDmps(x).map(x => x.data), filterFn: (x, excluded) => this.filterDmps(x).pipe(map(x => x.data)),
initialItems: (extraData) => this.filterDmps('').map(x => x.data), initialItems: (extraData) => this.filterDmps('').pipe(map(x => x.data)),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };
collaboratorsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { collaboratorsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterCollaborators.bind(this), filterFn: this.filterCollaborators.bind(this),
initialItems: (excludedItems: any[]) => this.filterCollaborators('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterCollaborators('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
}; };
grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterGrant.bind(this), filterFn: this.filterGrant.bind(this),
initialItems: (excludedItems: any[]) => this.filterGrant('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterGrant('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };
organisationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { organisationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterOrganisations.bind(this), filterFn: this.filterOrganisations.bind(this),
initialItems: (excludedItems: any[]) => this.filterOrganisations('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
} }
@ -200,7 +199,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
const datasetTemplateRequestItem: DataTableRequest<DatasetProfileCriteria> = new DataTableRequest(0, null, { fields: fields }); const datasetTemplateRequestItem: DataTableRequest<DatasetProfileCriteria> = new DataTableRequest(0, null, { fields: fields });
datasetTemplateRequestItem.criteria = new DatasetProfileCriteria(); datasetTemplateRequestItem.criteria = new DatasetProfileCriteria();
datasetTemplateRequestItem.criteria.like = query; datasetTemplateRequestItem.criteria.like = query;
return this.datasetService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).map(x => x.data); return this.datasetService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).pipe(map(x => x.data));
} }
filterDmps(value: string): Observable<DataTableData<DmpListingModel>> { filterDmps(value: string): Observable<DataTableData<DmpListingModel>> {
@ -218,7 +217,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
const grantRequestItem: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields }); const grantRequestItem: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields });
grantRequestItem.criteria = new GrantCriteria(); grantRequestItem.criteria = new GrantCriteria();
grantRequestItem.criteria.like = query; grantRequestItem.criteria.like = query;
return this.grantService.getPaged(grantRequestItem, "autocomplete").map(x => x.data); return this.grantService.getPaged(grantRequestItem, "autocomplete").pipe(map(x => x.data));
} }
filterOrganisations(value: string) { filterOrganisations(value: string) {
@ -227,7 +226,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
const dataTableRequest: DataTableRequest<OrganisationCriteria> = new DataTableRequest(0, null, { fields: fields }); const dataTableRequest: DataTableRequest<OrganisationCriteria> = new DataTableRequest(0, null, { fields: fields });
dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria = new OrganisationCriteria();
dataTableRequest.criteria.labelLike = value; dataTableRequest.criteria.labelLike = value;
return this.organisationService.searchInternalOrganisations(dataTableRequest).map(x => x.data); return this.organisationService.searchInternalOrganisations(dataTableRequest).pipe(map(x => x.data));
} }
filterCollaborators(query: string) { filterCollaborators(query: string) {
@ -236,7 +235,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
const collaboratorsRequestItem: DataTableRequest<UserCriteria> = new DataTableRequest(0, null, { fields: fields }); const collaboratorsRequestItem: DataTableRequest<UserCriteria> = new DataTableRequest(0, null, { fields: fields });
collaboratorsRequestItem.criteria = new UserCriteria(); collaboratorsRequestItem.criteria = new UserCriteria();
collaboratorsRequestItem.criteria.collaboratorLike = query; collaboratorsRequestItem.criteria.collaboratorLike = query;
return this.userService.getCollaboratorsPaged(collaboratorsRequestItem).map(x => x.data); return this.userService.getCollaboratorsPaged(collaboratorsRequestItem).pipe(map(x => x.data));
} }
fileImport(event) { fileImport(event) {
@ -256,8 +255,8 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
this.datasetWizardService.uploadXml(result.fileList, result.datasetTitle, result.dmpId, result.datasetProfileId) this.datasetWizardService.uploadXml(result.fileList, result.datasetTitle, result.dmpId, result.datasetProfileId)
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe( .subscribe(
complete => this.onCallbackSuccess(), complete => this.onCallbackSuccess(),
error => this.onCallbackError(error) error => this.onCallbackError(error)
); );
} }
}) })

@ -1,5 +1,7 @@
import {map, takeUntil } from 'rxjs/operators';
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { DataTableData } from '../../../../../core/model/data-table/data-table-data'; import { DataTableData } from '../../../../../core/model/data-table/data-table-data';
import { DmpListingModel } from '../../../../../core/model/dmp/dmp-listing'; import { DmpListingModel } from '../../../../../core/model/dmp/dmp-listing';
@ -10,7 +12,6 @@ import { ValidationErrorModel } from '../../../../../common/forms/validation/err
import { BaseCriteriaComponent } from '../../../../misc/criteria/base-criteria.component'; import { BaseCriteriaComponent } from '../../../../misc/criteria/base-criteria.component';
import { DmpModel } from '../../../../../core/model/dmp/dmp'; import { DmpModel } from '../../../../../core/model/dmp/dmp';
import { DatasetProfileModel } from '../../../../../core/model/dataset/dataset-profile'; import { DatasetProfileModel } from '../../../../../core/model/dataset/dataset-profile';
import { takeUntil } from 'rxjs/operators';
import { DatasetWizardService } from '../../../../../core/services/dataset-wizard/dataset-wizard.service'; import { DatasetWizardService } from '../../../../../core/services/dataset-wizard/dataset-wizard.service';
import { RequestItem } from '../../../../../core/query/request-item'; import { RequestItem } from '../../../../../core/query/request-item';
import { DatasetProfileCriteria } from '../../../../../core/query/dataset-profile/dataset-profile-criteria'; import { DatasetProfileCriteria } from '../../../../../core/query/dataset-profile/dataset-profile-criteria';
@ -31,8 +32,8 @@ export class DatasetUploadDialogue extends BaseCriteriaComponent implements OnIn
availableProfiles: DatasetProfileModel[] = []; availableProfiles: DatasetProfileModel[] = [];
dmpAutoCompleteConfiguration = { dmpAutoCompleteConfiguration = {
filterFn: (x, excluded) => this.filterDmps(x).map(x => x.data), filterFn: (x, excluded) => this.filterDmps(x).pipe(map(x => x.data)),
initialItems: (extraData) => this.filterDmps('').map(x => x.data), initialItems: (extraData) => this.filterDmps('').pipe(map(x => x.data)),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };

@ -1,7 +1,9 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator, MatSort, PageEvent } from '@angular/material'; import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; import { DataTableRequest } from '../../../core/model/data-table/data-table-request';
@ -22,9 +24,9 @@ import { DatasetStatus } from '../../../core/common/enum/dataset-status';
}) })
export class DatasetListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class DatasetListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: false }) sort: MatSort;
@ViewChild(DatasetCriteriaComponent) criteria: DatasetCriteriaComponent; @ViewChild(DatasetCriteriaComponent, { static: true }) criteria: DatasetCriteriaComponent;
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
@ -60,7 +62,7 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
this.criteria.setCriteria(this.getDefaultCriteria(dmp)); this.criteria.setCriteria(this.getDefaultCriteria(dmp));
this.refresh(); this.refresh();
this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages));
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: 'DmpEditorComponent', parentComponentName: 'DmpEditorComponent',
label: dmp.label, label: dmp.label,
url: '/plans/edit/' + this.dmpId url: '/plans/edit/' + this.dmpId
@ -72,7 +74,7 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
this.criteria.setCriteria(this.getDefaultCriteria()); this.criteria.setCriteria(this.getDefaultCriteria());
this.refresh(); this.refresh();
this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages));
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: null, parentComponentName: null,
label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'), label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'),
url: "/datasets" url: "/datasets"

@ -1,13 +1,15 @@
import {of as observableOf, Observable } from 'rxjs';
import {map, takeUntil } from 'rxjs/operators';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { DmpWizardEditorModel } from '../wizard/dmp-wizard-editor.model'; import { DmpWizardEditorModel } from '../wizard/dmp-wizard-editor.model';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { DmpModel } from '../../../core/model/dmp/dmp'; import { DmpModel } from '../../../core/model/dmp/dmp';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { DmpService } from '../../../core/services/dmp/dmp.service'; import { DmpService } from '../../../core/services/dmp/dmp.service';
import { Observable } from 'rxjs';
import { BreadcrumbItem } from '../../misc/breadcrumb/definition/breadcrumb-item'; import { BreadcrumbItem } from '../../misc/breadcrumb/definition/breadcrumb-item';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { UiNotificationService, SnackBarNotificationLevel } from '../../../core/services/notification/ui-notification-service'; import { UiNotificationService, SnackBarNotificationLevel } from '../../../core/services/notification/ui-notification-service';
@ -48,7 +50,7 @@ export class DmpCloneComponent extends BaseComponent implements OnInit {
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe((params: Params) => { .subscribe((params: Params) => {
this.itemId = params['id']; this.itemId = params['id'];
this.dmpService.getSingle(this.itemId).map(data => data as DmpModel) this.dmpService.getSingle(this.itemId).pipe(map(data => data as DmpModel))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(data => { .subscribe(data => {
this.dmp = new DmpWizardEditorModel(); this.dmp = new DmpWizardEditorModel();
@ -72,7 +74,7 @@ export class DmpCloneComponent extends BaseComponent implements OnInit {
const breadCrumbs = []; const breadCrumbs = [];
breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" }); breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" });
breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/clone/' + this.dmp.id }); breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/clone/' + this.dmp.id });
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
}); });
}); });
} }

@ -1,6 +1,6 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
import { ExternalResearcherService } from '../../../../core/services/external-sources/researcher/external-researcher.service'; import { ExternalResearcherService } from '../../../../core/services/external-sources/researcher/external-researcher.service';

@ -1,6 +1,6 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile'; import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile';

@ -1,11 +1,14 @@
import {of as observableOf, Observable } from 'rxjs';
import {map, takeUntil } from 'rxjs/operators';
import { Component, OnInit, ViewContainerRef } from '@angular/core'; import { Component, OnInit, ViewContainerRef } from '@angular/core';
import { FormGroup, FormControl, FormArray, AbstractControl } from '@angular/forms'; import { FormGroup, FormControl, FormArray, AbstractControl } from '@angular/forms';
import { MatDialog, MatSnackBar } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import * as FileSaver from 'file-saver'; import * as FileSaver from 'file-saver';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { DmpStatus } from '../../../core/common/enum/dmp-status'; import { DmpStatus } from '../../../core/common/enum/dmp-status';
@ -102,7 +105,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
if (itemId != null) { if (itemId != null) {
this.isNew = false; this.isNew = false;
if (tabToNav == "datasetDescriptions") this.selectedTab = 2 if (tabToNav == "datasetDescriptions") this.selectedTab = 2
this.dmpService.getSingle(itemId).map(data => data as DmpModel) this.dmpService.getSingle(itemId).pipe(map(data => data as DmpModel))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(async data => { .subscribe(async data => {
this.dmp = new DmpEditorModel(); this.dmp = new DmpEditorModel();
@ -131,7 +134,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
// notFoundResolver: [await this.grantService.getSingle(this.dmp.grant.id).map(x => ({ label: x.label, url: '/grants/edit/' + x.id }) as BreadcrumbItem).toPromise()] // notFoundResolver: [await this.grantService.getSingle(this.dmp.grant.id).map(x => ({ label: x.label, url: '/grants/edit/' + x.id }) as BreadcrumbItem).toPromise()]
} }
); );
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
} }
this.associatedUsers = data.associatedUsers; this.associatedUsers = data.associatedUsers;
this.people = data.users; this.people = data.users;
@ -139,7 +142,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
} else if (publicId != null) { } else if (publicId != null) {
this.isNew = false; this.isNew = false;
this.isPublic = true; this.isPublic = true;
this.dmpService.getSinglePublic(publicId).map(data => data as DmpModel) this.dmpService.getSinglePublic(publicId).pipe(map(data => data as DmpModel))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(async data => { .subscribe(async data => {
this.dmp = new DmpEditorModel(); this.dmp = new DmpEditorModel();
@ -154,7 +157,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
const breadcrumbs = []; const breadcrumbs = [];
breadcrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC-DMPS').toUpperCase(), url: '/plans' }); breadcrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC-DMPS').toUpperCase(), url: '/plans' });
breadcrumbs.push({ parentComponentName: null, label: this.dmp.label, url: '/plans/publicEdit/' + this.dmp.id }); breadcrumbs.push({ parentComponentName: null, label: this.dmp.label, url: '/plans/publicEdit/' + this.dmp.id });
this.breadCrumbs = Observable.of(breadcrumbs); this.breadCrumbs = observableOf(breadcrumbs);
// this.breadCrumbs = Observable.of([ // this.breadCrumbs = Observable.of([
// { // {
// parentComponentName: 'DmpListingComponent', // parentComponentName: 'DmpListingComponent',
@ -175,7 +178,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
this.registerFormEventsForNewItem(); this.registerFormEventsForNewItem();
if (this.isAuthenticated) { if (this.isAuthenticated) {
this.language.get('NAV-BAR.MY-DMPS').pipe(takeUntil(this._destroyed)).subscribe(x => { this.language.get('NAV-BAR.MY-DMPS').pipe(takeUntil(this._destroyed)).subscribe(x => {
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: null, parentComponentName: null,
label: x, label: x,
@ -205,7 +208,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
} }
registerFormEventsForNewItem() { registerFormEventsForNewItem() {
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: 'DmpListingComponent', parentComponentName: 'DmpListingComponent',
label: this.language.instant('NAV-BAR.MY-DMPS'), label: this.language.instant('NAV-BAR.MY-DMPS'),
@ -218,7 +221,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
let fields: Array<string> = new Array(); let fields: Array<string> = new Array();
var request = new DataTableRequest<DmpProfileCriteria>(0, 10, { fields: fields }); var request = new DataTableRequest<DmpProfileCriteria>(0, 10, { fields: fields });
request.criteria = new DmpProfileCriteria(); request.criteria = new DmpProfileCriteria();
return this.dmpProfileService.getPaged(request).map(x => x.data); return this.dmpProfileService.getPaged(request).pipe(map(x => x.data));
} }
// searchGrant(query: string) { // searchGrant(query: string) {

@ -1,5 +1,5 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
import { DatasetStatus } from '../../../../core/common/enum/dataset-status'; import { DatasetStatus } from '../../../../core/common/enum/dataset-status';

@ -1,8 +1,9 @@
import {map, takeUntil } from 'rxjs/operators';
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; import { DataTableRequest } from '../../../../core/model/data-table/data-table-request';
import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile'; import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile';
@ -72,7 +73,7 @@ export class GeneralTabComponent extends BaseComponent implements OnInit {
this.profilesAutoCompleteConfiguration = { this.profilesAutoCompleteConfiguration = {
filterFn: this.filterProfiles.bind(this), filterFn: this.filterProfiles.bind(this),
initialItems: (excludedItems: any[]) => this.filterProfiles('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterProfiles('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'], titleFn: (item) => item['label'],
subtitleFn: (item) => item['description'] subtitleFn: (item) => item['description']
@ -80,7 +81,7 @@ export class GeneralTabComponent extends BaseComponent implements OnInit {
this.organisationsAutoCompleteConfiguration = { this.organisationsAutoCompleteConfiguration = {
filterFn: this.filterOrganisations.bind(this), filterFn: this.filterOrganisations.bind(this),
initialItems: (excludedItems: any[]) => this.filterOrganisations('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'], titleFn: (item) => item['name'],
subtitleFn: (item) => item ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') subtitleFn: (item) => item ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')
@ -88,7 +89,7 @@ export class GeneralTabComponent extends BaseComponent implements OnInit {
this.researchersAutoCompleteConfiguration = { this.researchersAutoCompleteConfiguration = {
filterFn: this.filterResearchers.bind(this), filterFn: this.filterResearchers.bind(this),
initialItems: (excludedItems: any[]) => this.filterResearchers('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterResearchers('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'], titleFn: (item) => item['name'],
subtitleFn: (item) => item ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') subtitleFn: (item) => item ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')
@ -118,7 +119,7 @@ export class GeneralTabComponent extends BaseComponent implements OnInit {
let fields: Array<string> = new Array(); let fields: Array<string> = new Array();
var request = new DataTableRequest<DmpProfileCriteria>(0, 10, { fields: fields }); var request = new DataTableRequest<DmpProfileCriteria>(0, 10, { fields: fields });
request.criteria = new DmpProfileCriteria(); request.criteria = new DmpProfileCriteria();
return this.dmpProfileService.getPaged(request).map(x => x.data); return this.dmpProfileService.getPaged(request).pipe(map(x => x.data));
} }
// onCallbackSuccess(): void { // onCallbackSuccess(): void {

@ -1,6 +1,6 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Principal } from '../../../../core/model/auth/Principal'; import { Principal } from '../../../../core/model/auth/Principal';
import { UserInfoListingModel } from '../../../../core/model/user/user-info-listing'; import { UserInfoListingModel } from '../../../../core/model/user/user-info-listing';

@ -1,10 +1,12 @@
import {map, takeUntil } from 'rxjs/operators';
import { COMMA, ENTER } from '@angular/cdk/keycodes'; import { COMMA, ENTER } from '@angular/cdk/keycodes';
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatChipInputEvent, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatChipInputEvent } from '@angular/material/chips';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { DmpInvitation } from '../../../core/model/dmp/invitation/dmp-invitation'; import { DmpInvitation } from '../../../core/model/dmp/invitation/dmp-invitation';
import { DmpInvitationUser } from '../../../core/model/dmp/invitation/dmp-invitation-user'; import { DmpInvitationUser } from '../../../core/model/dmp/invitation/dmp-invitation-user';
@ -36,7 +38,7 @@ export class DmpInvitationDialogComponent extends BaseComponent implements OnIni
usersAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { usersAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterUsers.bind(this), filterFn: this.filterUsers.bind(this),
initialItems: (excludedItems: any[]) => this.filterUsers('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterUsers('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item.name, displayFn: (item) => item.name,
titleFn: (item) => item.name titleFn: (item) => item.name
}; };

@ -1,8 +1,9 @@
import {map, takeUntil } from 'rxjs/operators';
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { FormBuilder, FormControl } from '@angular/forms'; import { FormBuilder, FormControl } from '@angular/forms';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { takeUntil } from 'rxjs/operators';
import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model';
import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; import { DataTableRequest } from '../../../../core/model/data-table/data-table-request';
import { GrantListingModel } from '../../../../core/model/grant/grant-listing'; import { GrantListingModel } from '../../../../core/model/grant/grant-listing';
@ -46,14 +47,14 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni
collaboratorsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { collaboratorsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterCollaborators.bind(this), filterFn: this.filterCollaborators.bind(this),
initialItems: (excludedItems: any[]) => this.filterCollaborators('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterCollaborators('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
}; };
datasetTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { datasetTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterDatasetTemplate.bind(this), filterFn: this.filterDatasetTemplate.bind(this),
initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'], titleFn: (item) => item['label'],
subtitleFn: (item) => item['description'] subtitleFn: (item) => item['description']
@ -61,14 +62,14 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni
grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterGrant.bind(this), filterFn: this.filterGrant.bind(this),
initialItems: (excludedItems: any[]) => this.filterGrant('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterGrant('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };
organisationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { organisationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterOrganisations.bind(this), filterFn: this.filterOrganisations.bind(this),
initialItems: (excludedItems: any[]) => this.filterOrganisations('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
} }
@ -140,7 +141,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni
const grantRequestItem: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields }); const grantRequestItem: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields });
grantRequestItem.criteria = new GrantCriteria(); grantRequestItem.criteria = new GrantCriteria();
grantRequestItem.criteria.like = query; grantRequestItem.criteria.like = query;
return this.grantService.getPaged(grantRequestItem, "autocomplete").map(x => x.data); return this.grantService.getPaged(grantRequestItem, "autocomplete").pipe(map(x => x.data));
} }
filterOrganisations(value: string) { filterOrganisations(value: string) {
@ -151,7 +152,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni
dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria = new OrganisationCriteria();
dataTableRequest.criteria.labelLike = value; dataTableRequest.criteria.labelLike = value;
return this.organisationService.searchInternalOrganisations(dataTableRequest).map(x => x.data); return this.organisationService.searchInternalOrganisations(dataTableRequest).pipe(map(x => x.data));
} }
filterCollaborators(query: string) { filterCollaborators(query: string) {
@ -160,7 +161,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni
const collaboratorsRequestItem: DataTableRequest<UserCriteria> = new DataTableRequest(0, null, { fields: fields }); const collaboratorsRequestItem: DataTableRequest<UserCriteria> = new DataTableRequest(0, null, { fields: fields });
collaboratorsRequestItem.criteria = new UserCriteria(); collaboratorsRequestItem.criteria = new UserCriteria();
collaboratorsRequestItem.criteria.collaboratorLike = query; collaboratorsRequestItem.criteria.collaboratorLike = query;
return this.userService.getCollaboratorsPaged(collaboratorsRequestItem).map(x => x.data); return this.userService.getCollaboratorsPaged(collaboratorsRequestItem).pipe(map(x => x.data));
} }
filterDatasetTemplate(query: string) { filterDatasetTemplate(query: string) {
@ -169,7 +170,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni
const datasetTemplateRequestItem: DataTableRequest<DatasetProfileCriteria> = new DataTableRequest(0, null, { fields: fields }); const datasetTemplateRequestItem: DataTableRequest<DatasetProfileCriteria> = new DataTableRequest(0, null, { fields: fields });
datasetTemplateRequestItem.criteria = new DatasetProfileCriteria(); datasetTemplateRequestItem.criteria = new DatasetProfileCriteria();
datasetTemplateRequestItem.criteria.like = query; datasetTemplateRequestItem.criteria.like = query;
return this.dmpService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).map(x => x.data); return this.dmpService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).pipe(map(x => x.data));
} }
fileSave(event) { fileSave(event) {

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { DmpService } from '../../../../../core/services/dmp/dmp.service'; import { DmpService } from '../../../../../core/services/dmp/dmp.service';
@Component({ @Component({

@ -1,7 +1,10 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatDialog, MatPaginator, MatSort } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; import { DataTableRequest } from '../../../core/model/data-table/data-table-request';
@ -23,11 +26,11 @@ import { TranslateService } from '@ngx-translate/core';
}) })
export class DmpListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class DmpListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: false }) sort: MatSort;
@ViewChild(DmpCriteriaComponent) criteria: DmpCriteriaComponent; @ViewChild(DmpCriteriaComponent, { static: true }) criteria: DmpCriteriaComponent;
breadCrumbs: Observable<BreadcrumbItem[]> = Observable.of([{ parentComponentName: null, label: 'DMPs', url: "/plans" }]); breadCrumbs: Observable<BreadcrumbItem[]> = observableOf([{ parentComponentName: null, label: 'DMPs', url: "/plans" }]);
itemId: string; itemId: string;
grantId: string; grantId: string;
showGrant: boolean; showGrant: boolean;
@ -78,7 +81,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread
// else // else
this.language.get('NAV-BAR.MY-DMPS').pipe(takeUntil(this._destroyed)).subscribe(x => { this.language.get('NAV-BAR.MY-DMPS').pipe(takeUntil(this._destroyed)).subscribe(x => {
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: null, parentComponentName: null,
label: x, label: x,

@ -1,6 +1,6 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { DmpListingModel } from '../../../../core/model/dmp/dmp-listing'; import { DmpListingModel } from '../../../../core/model/dmp/dmp-listing';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { DmpInvitationDialogComponent } from '../../invitation/dmp-invitation.component'; import { DmpInvitationDialogComponent } from '../../invitation/dmp-invitation.component';
import { Router, ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from '@angular/router';
import { GrantListingModel } from '../../../../core/model/grant/grant-listing'; import { GrantListingModel } from '../../../../core/model/grant/grant-listing';

@ -1,9 +1,10 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import * as FileSaver from 'file-saver'; import * as FileSaver from 'file-saver';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { DatasetStatus } from '../../../core/common/enum/dataset-status'; import { DatasetStatus } from '../../../core/common/enum/dataset-status';
@ -33,7 +34,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit {
isFinalized = false; isFinalized = false;
isPublicView = true; isPublicView = true;
hasPublishButton: boolean = true; hasPublishButton: boolean = true;
breadCrumbs: Observable<BreadcrumbItem[]> = Observable.of(); breadCrumbs: Observable<BreadcrumbItem[]> = observableOf();
constructor( constructor(
private route: ActivatedRoute, private route: ActivatedRoute,
@ -65,7 +66,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit {
const breadCrumbs = []; const breadCrumbs = [];
breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" }); breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" });
breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/overview/' + this.dmp.id }); breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/overview/' + this.dmp.id });
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
}) })
} }
else if (publicId != null) { else if (publicId != null) {
@ -79,7 +80,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit {
const breadCrumbs = []; const breadCrumbs = [];
breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC-DMPS'), url: "/explore-plans" }); breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC-DMPS'), url: "/explore-plans" });
breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/publicOverview/' + this.dmp.id }); breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/publicOverview/' + this.dmp.id });
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
}); });
} }
}); });

@ -1,10 +1,12 @@
import {of as observableOf, Observable } from 'rxjs';
import {map, takeUntil } from 'rxjs/operators';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatSnackBar } from '@angular/material'; import { MatSnackBar } from '@angular/material/snack-bar';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { DmpModel } from '../../../core/model/dmp/dmp'; import { DmpModel } from '../../../core/model/dmp/dmp';
@ -46,7 +48,7 @@ export class DmpWizardComponent extends BaseComponent implements OnInit, IBreadC
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe((params: Params) => { .subscribe((params: Params) => {
this.itemId = params['id']; this.itemId = params['id'];
this.dmpService.getSingle(this.itemId).map(data => data as DmpModel) this.dmpService.getSingle(this.itemId).pipe(map(data => data as DmpModel))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(data => { .subscribe(data => {
this.dmp = new DmpWizardEditorModel(); this.dmp = new DmpWizardEditorModel();
@ -68,7 +70,7 @@ export class DmpWizardComponent extends BaseComponent implements OnInit, IBreadC
const breadCrumbs = []; const breadCrumbs = [];
breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" }); breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" });
breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/clone/' + this.dmp.id }); breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/clone/' + this.dmp.id });
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
}); });
}); });
} }

@ -1,10 +1,11 @@
import {map, takeUntil } from 'rxjs/operators';
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatSnackBar } from '@angular/material'; import { MatSnackBar } from '@angular/material/snack-bar';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile'; import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile';
import { ExternalSourceItemModel } from '../../../../core/model/external-sources/external-source-item'; import { ExternalSourceItemModel } from '../../../../core/model/external-sources/external-source-item';
@ -72,21 +73,21 @@ export class DmpWizardEditorComponent extends BaseComponent implements OnInit {
this.profilesAutoCompleteConfiguration = { this.profilesAutoCompleteConfiguration = {
filterFn: this.filterProfiles.bind(this), filterFn: this.filterProfiles.bind(this),
initialItems: (excludedItems: any[]) => this.filterProfiles('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterProfiles('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };
this.organisationsAutoCompleteConfiguration = { this.organisationsAutoCompleteConfiguration = {
filterFn: this.filterOrganisations.bind(this), filterFn: this.filterOrganisations.bind(this),
initialItems: (excludedItems: any[]) => this.filterOrganisations('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
}; };
this.researchersAutoCompleteConfiguration = { this.researchersAutoCompleteConfiguration = {
filterFn: this.filterResearchers.bind(this), filterFn: this.filterResearchers.bind(this),
initialItems: (excludedItems: any[]) => this.filterResearchers('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterResearchers('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
}; };

@ -1,7 +1,9 @@
import { SelectionModel } from '@angular/cdk/collections'; import { SelectionModel } from '@angular/cdk/collections';
import { Component, Input, OnInit, ViewChild } from '@angular/core'; import { Component, Input, OnInit, ViewChild } from '@angular/core';
import { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { MatPaginator, MatSnackBar, MatSort } from '@angular/material'; import { MatPaginator } from '@angular/material/paginator';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatSort } from '@angular/material/sort';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
@ -20,9 +22,9 @@ import { DatasetCriteriaComponent } from '../../../dataset/listing/criteria/data
}) })
export class DmpWizardDatasetListingComponent extends BaseComponent implements OnInit { export class DmpWizardDatasetListingComponent extends BaseComponent implements OnInit {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: false }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: false }) sort: MatSort;
@ViewChild(DatasetCriteriaComponent) criteria: DatasetCriteriaComponent; @ViewChild(DatasetCriteriaComponent, { static: false }) criteria: DatasetCriteriaComponent;
titlePrefix: String; titlePrefix: String;

@ -1,5 +1,8 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, OnInit, ViewChild, ɵConsole } from '@angular/core'; import { Component, OnInit, ViewChild, ɵConsole } from '@angular/core';
import { MatPaginator, MatSort } from '@angular/material'; import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { Router, ActivatedRoute, Params } from '@angular/router'; import { Router, ActivatedRoute, Params } from '@angular/router';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../core/common/base/base.component'; import { BaseComponent } from '../../core/common/base/base.component';
@ -9,7 +12,6 @@ import { ExploreDatasetCriteriaModel } from '../../core/query/explore-dataset/ex
import { DatasetService } from '../../core/services/dataset/dataset.service'; import { DatasetService } from '../../core/services/dataset/dataset.service';
import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent'; import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent';
import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item'; import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item';
import { Observable } from 'rxjs';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { DmpService } from '../../core/services/dmp/dmp.service'; import { DmpService } from '../../core/services/dmp/dmp.service';
import { DatasetCriteriaComponent } from '../dataset/listing/criteria/dataset-criteria.component'; import { DatasetCriteriaComponent } from '../dataset/listing/criteria/dataset-criteria.component';
@ -24,8 +26,8 @@ import { DatasetCriteria } from '../../core/query/dataset/dataset-criteria';
}) })
export class ExploreDatasetListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class ExploreDatasetListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: false }) sort: MatSort;
totalCount: number; totalCount: number;
listingItems: DatasetListingModel[] = []; listingItems: DatasetListingModel[] = [];
@ -78,7 +80,7 @@ export class ExploreDatasetListingComponent extends BaseComponent implements OnI
label: this.language.instant('NAV-BAR.PUBLIC DATASETS'), label: this.language.instant('NAV-BAR.PUBLIC DATASETS'),
url: "/explore" url: "/explore"
}) })
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
} }
refresh(resetPages = false) { refresh(resetPages = false) {

@ -1,9 +1,11 @@
import {of as observableOf, Observable } from 'rxjs';
import {distinctUntilChanged, debounceTime, takeUntil } from 'rxjs/operators';
import { SelectionModel } from '@angular/cdk/collections'; import { SelectionModel } from '@angular/cdk/collections';
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms'; import { FormControl } from '@angular/forms';
import { MatListOption, MatSelectionList } from '@angular/material'; import { MatListOption, MatSelectionList } from '@angular/material/list';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
@Component({ @Component({
@ -26,7 +28,7 @@ export class ExploreDatasetFilterItemComponent extends BaseComponent implements
filterOptions: (value) => Observable<any[]>; filterOptions: (value) => Observable<any[]>;
@Input() @Input()
options: Observable<any[]> = Observable.of([]); options: Observable<any[]> = observableOf([]);
@Input() @Input()
displayTitleFunc: (value) => string; displayTitleFunc: (value) => string;
@ -44,14 +46,14 @@ export class ExploreDatasetFilterItemComponent extends BaseComponent implements
private selectedOptions: any[] = []; private selectedOptions: any[] = [];
@ViewChild('optionsList') selectionList: MatSelectionList; @ViewChild('optionsList', { static: true }) selectionList: MatSelectionList;
constructor() { super(); } constructor() { super(); }
ngOnInit(): void { ngOnInit(): void {
if (!this.multipleSelect) { this.selectionList.selectedOptions = new SelectionModel<MatListOption>(this.multipleSelect); } if (!this.multipleSelect) { this.selectionList.selectedOptions = new SelectionModel<MatListOption>(this.multipleSelect); }
this.optionSearchControl.valueChanges.debounceTime(this.requestDelay) this.optionSearchControl.valueChanges.pipe(debounceTime(this.requestDelay),
.distinctUntilChanged() distinctUntilChanged(),)
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(x => { if (this.filterOptions) { this.options = this.filterOptions(x); } }); .subscribe(x => { if (this.filterOptions) { this.options = this.filterOptions(x); } });
} }

@ -1,8 +1,11 @@
import {of as observableOf, Observable } from 'rxjs';
import {map, takeUntil } from 'rxjs/operators';
import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { MatAccordion } from '@angular/material'; import { MatAccordion } from '@angular/material/expansion';
import { ActivatedRoute, Params } from '@angular/router'; import { ActivatedRoute, Params } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { GrantStateType } from '../../../core/common/enum/grant-state-type'; import { GrantStateType } from '../../../core/common/enum/grant-state-type';
import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile'; import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile';
@ -28,7 +31,6 @@ import { ExploreDmpCriteriaModel } from '../../../core/query/explore-dmp/explore
import { DmpModel } from '../../../core/model/dmp/dmp'; import { DmpModel } from '../../../core/model/dmp/dmp';
import { BaseCriteriaComponent } from '../../misc/criteria/base-criteria.component'; import { BaseCriteriaComponent } from '../../misc/criteria/base-criteria.component';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { takeUntil } from 'rxjs/operators';
@Component({ @Component({
selector: 'app-explore-dataset-filters-component', selector: 'app-explore-dataset-filters-component',
@ -49,7 +51,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
grantOptions: Observable<GrantListingModel[]>; grantOptions: Observable<GrantListingModel[]>;
grantStateOptions: Observable<any[]>; grantStateOptions: Observable<any[]>;
filteringOrganisationsAsync = false; filteringOrganisationsAsync = false;
@ViewChild('facetAccordion') accordion: MatAccordion; @ViewChild('facetAccordion', { static: false }) accordion: MatAccordion;
displayGrantStateValue = (option) => option['value']; displayGrantStateValue = (option) => option['value'];
displayGrantStateLabel = (option) => option['label']; displayGrantStateLabel = (option) => option['label'];
@ -65,14 +67,14 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
tagsAutoCompleteConfiguration = { tagsAutoCompleteConfiguration = {
filterFn: this.filterTags.bind(this), filterFn: this.filterTags.bind(this),
initialItems: (excludedItems: any[]) => this.filterTags('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), initialItems: (excludedItems: any[]) => this.filterTags('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
}; };
dmpAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { dmpAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: (x, excluded) => this.filterDmps(x).map(x => x.data), filterFn: (x, excluded) => this.filterDmps(x).pipe(map(x => x.data)),
initialItems: (extraData) => this.filterDmps('').map(x => x.data), initialItems: (extraData) => this.filterDmps('').pipe(map(x => x.data)),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };
@ -80,8 +82,8 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterGrant.bind(this), filterFn: this.filterGrant.bind(this),
initialItems: (excludedItems: any[]) => initialItems: (excludedItems: any[]) =>
this.filterGrant('') this.filterGrant('').pipe(
.map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
} }
@ -89,8 +91,8 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterProfile.bind(this), filterFn: this.filterProfile.bind(this),
initialItems: (excludedItems: any[]) => initialItems: (excludedItems: any[]) =>
this.getProfiles() this.getProfiles().pipe(
.map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };
@ -98,8 +100,8 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
organizationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { organizationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterOrganisation.bind(this), filterFn: this.filterOrganisation.bind(this),
initialItems: (excludedItems: any[]) => initialItems: (excludedItems: any[]) =>
this.getOrganisations() this.getOrganisations().pipe(
.map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
} }
@ -117,7 +119,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
ngOnInit() { ngOnInit() {
setTimeout(x => { setTimeout(x => {
this.grantStateOptions = Observable.of( this.grantStateOptions = observableOf(
[ [
{ label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE'), value: GrantStateType.Finished }, { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE'), value: GrantStateType.Finished },
{ label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE'), value: GrantStateType.OnGoing }, { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE'), value: GrantStateType.OnGoing },
@ -135,7 +137,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
this.facetCriteria.grantStatus = event.value; this.facetCriteria.grantStatus = event.value;
if (event.value === 'null') { if (event.value === 'null') {
this.facetCriteria.grantStatus = null; this.facetCriteria.grantStatus = null;
this.grants = Observable.of([]); this.grants = observableOf([]);
this.facetCriteria.grants = []; this.facetCriteria.grants = [];
} }
// if (event.option.selected) { // if (event.option.selected) {
@ -151,7 +153,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
dataTableRequest.criteria.grantStateType = this.facetCriteria.grantStatus; dataTableRequest.criteria.grantStateType = this.facetCriteria.grantStatus;
dataTableRequest.criteria['length'] = 10; dataTableRequest.criteria['length'] = 10;
this.grants = this.grantService.getPublicPaged(dataTableRequest).map(x => x.data); this.grants = this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data));
this.facetCriteria.grants = []; this.facetCriteria.grants = [];
} }
this.facetCriteriaChange.emit(this.facetCriteria); this.facetCriteriaChange.emit(this.facetCriteria);
@ -199,7 +201,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
const dataTableRequest: DataTableRequest<OrganisationCriteria> = new DataTableRequest(0, null, { fields: fields }); const dataTableRequest: DataTableRequest<OrganisationCriteria> = new DataTableRequest(0, null, { fields: fields });
dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria = new OrganisationCriteria();
dataTableRequest.criteria.labelLike = ''; dataTableRequest.criteria.labelLike = '';
return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data));
} }
public dmpOrganisationChanged(event: any) { public dmpOrganisationChanged(event: any) {
@ -226,7 +228,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
dataTableRequest.criteria = grantCriteria; dataTableRequest.criteria = grantCriteria;
//const dataTableRequest: RequestItem<GrantCriteria> = { criteria: grantCriteria }; //const dataTableRequest: RequestItem<GrantCriteria> = { criteria: grantCriteria };
//return this.grantService.getPaged(dataTableRequest, "autocomplete").map(x => x.data); //return this.grantService.getPaged(dataTableRequest, "autocomplete").map(x => x.data);
return this.grantService.getPublicPaged(dataTableRequest).map(x => x.data); return this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data));
} }
public dmpOrganisationSearch(value: string): Observable<ExternalSourceItemModel[]> { public dmpOrganisationSearch(value: string): Observable<ExternalSourceItemModel[]> {
@ -331,7 +333,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
const grantRequestItem: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields }); const grantRequestItem: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields });
grantRequestItem.criteria = new GrantCriteria(); grantRequestItem.criteria = new GrantCriteria();
grantRequestItem.criteria.like = query; grantRequestItem.criteria.like = query;
return this.grantService.getPublicPaged(grantRequestItem).map(x => x.data); return this.grantService.getPublicPaged(grantRequestItem).pipe(map(x => x.data));
} }
filterProfile(query: string) { filterProfile(query: string) {
@ -341,7 +343,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
profileRequestItem.criteria = new ExploreDatasetCriteriaModel(); profileRequestItem.criteria = new ExploreDatasetCriteriaModel();
profileRequestItem.criteria.like = query; profileRequestItem.criteria.like = query;
return this.dmpService.getPublicPaged(profileRequestItem, "listing").map(x => x.data); return this.dmpService.getPublicPaged(profileRequestItem, "listing").pipe(map(x => x.data));
} }
filterOrganisation(value: string) { filterOrganisation(value: string) {
@ -352,6 +354,6 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI
dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria = new OrganisationCriteria();
dataTableRequest.criteria.labelLike = value; dataTableRequest.criteria.labelLike = value;
return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data));
} }
} }

@ -1,9 +1,11 @@
import {of as observableOf, Observable } from 'rxjs';
import {distinctUntilChanged, debounceTime, takeUntil } from 'rxjs/operators';
import { SelectionModel } from '@angular/cdk/collections'; import { SelectionModel } from '@angular/cdk/collections';
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms'; import { FormControl } from '@angular/forms';
import { MatListOption, MatSelectionList } from '@angular/material'; import { MatListOption, MatSelectionList } from '@angular/material/list';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../core/common/base/base.component';
@Component({ @Component({
@ -21,7 +23,7 @@ export class ExploreDmpFilterItemComponent extends BaseComponent implements OnIn
@Input() @Input()
filterOptions: (value) => Observable<any[]>; filterOptions: (value) => Observable<any[]>;
@Input() @Input()
options: Observable<any[]> = Observable.of([]); options: Observable<any[]> = observableOf([]);
@Input() @Input()
displayTitleFunc: (value) => string; displayTitleFunc: (value) => string;
@Input() @Input()
@ -35,14 +37,14 @@ export class ExploreDmpFilterItemComponent extends BaseComponent implements OnIn
optionSearchControl = new FormControl(''); optionSearchControl = new FormControl('');
private selectedOptions: any[] = []; private selectedOptions: any[] = [];
@ViewChild('optionsList') selectionList: MatSelectionList; @ViewChild('optionsList', { static: true }) selectionList: MatSelectionList;
constructor() { super(); } constructor() { super(); }
ngOnInit(): void { ngOnInit(): void {
if (!this.multipleSelect) { this.selectionList.selectedOptions = new SelectionModel<MatListOption>(this.multipleSelect); } if (!this.multipleSelect) { this.selectionList.selectedOptions = new SelectionModel<MatListOption>(this.multipleSelect); }
this.optionSearchControl.valueChanges.debounceTime(this.requestDelay) this.optionSearchControl.valueChanges.pipe(debounceTime(this.requestDelay),
.distinctUntilChanged() distinctUntilChanged(),)
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(x => { if (this.filterOptions) { this.options = this.filterOptions(x); } }); .subscribe(x => { if (this.filterOptions) { this.options = this.filterOptions(x); } });
} }

@ -1,10 +1,14 @@
import {of as observableOf, Observable } from 'rxjs';
import {map, takeUntil } from 'rxjs/operators';
import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core"; import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core";
import { FormBuilder, FormControl, FormGroup } from "@angular/forms"; import { FormBuilder, FormControl, FormGroup } from "@angular/forms";
import { MatAccordion, fadeInItems, MatGridTileHeaderCssMatStyler } from "@angular/material"; import { MatAccordion } from "@angular/material/expansion";
import { MatGridTileHeaderCssMatStyler } from "@angular/material/grid-list";
import { fadeInItems } from "@angular/material/menu";
import { ActivatedRoute } from "@angular/router"; import { ActivatedRoute } from "@angular/router";
import { TranslateService } from "@ngx-translate/core"; import { TranslateService } from "@ngx-translate/core";
import { Observable } from "rxjs";
import { takeUntil } from "rxjs/operators";
import { ValidationErrorModel } from "../../../common/forms/validation/error-model/validation-error-model"; import { ValidationErrorModel } from "../../../common/forms/validation/error-model/validation-error-model";
import { GrantStateType } from '../../../core/common/enum/grant-state-type'; import { GrantStateType } from '../../../core/common/enum/grant-state-type';
import { DataTableRequest } from "../../../core/model/data-table/data-table-request"; import { DataTableRequest } from "../../../core/model/data-table/data-table-request";
@ -50,7 +54,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
Active: string; Active: string;
Inactive: string; Inactive: string;
@ViewChild('facetAccordion') accordion: MatAccordion; @ViewChild('facetAccordion', { static: false }) accordion: MatAccordion;
displayGrantStateValue = (option) => option['value']; displayGrantStateValue = (option) => option['value'];
displayGrantStateLabel = (option) => option['label']; displayGrantStateLabel = (option) => option['label'];
@ -67,8 +71,8 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterProfile.bind(this), filterFn: this.filterProfile.bind(this),
initialItems: (excludedItems: any[]) => initialItems: (excludedItems: any[]) =>
this.getProfiles() this.getProfiles().pipe(
.map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };
@ -76,8 +80,8 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
organizationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { organizationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterOrganisation.bind(this), filterFn: this.filterOrganisation.bind(this),
initialItems: (excludedItems: any[]) => initialItems: (excludedItems: any[]) =>
this.getOrganisations() this.getOrganisations().pipe(
.map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['name'], displayFn: (item) => item['name'],
titleFn: (item) => item['name'] titleFn: (item) => item['name']
} }
@ -85,8 +89,8 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
filterFn: this.filterGrant.bind(this), filterFn: this.filterGrant.bind(this),
initialItems: (excludedItems: any[]) => initialItems: (excludedItems: any[]) =>
this.filterGrant('') this.filterGrant('').pipe(
.map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))),
displayFn: (item) => item['label'], displayFn: (item) => item['label'],
titleFn: (item) => item['label'] titleFn: (item) => item['label']
} }
@ -111,7 +115,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
ngOnInit() { ngOnInit() {
setTimeout(x => { setTimeout(x => {
this.grantStateOptions = Observable.of( this.grantStateOptions = observableOf(
[ [
{ label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE'), value: GrantStateType.Finished }, { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE'), value: GrantStateType.Finished },
{ label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE'), value: GrantStateType.OnGoing }, { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE'), value: GrantStateType.OnGoing },
@ -120,7 +124,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
this.profiles = this.datasetProfileService.getDatasetProfiles(); this.profiles = this.datasetProfileService.getDatasetProfiles();
const fields: Array<string> = new Array<string>(); const fields: Array<string> = new Array<string>();
fields.push('asc'); fields.push('asc');
this.dmpOrganisations = this.organisationService.searchPublicOrganisations(new DataTableRequest<OrganisationCriteria>(0, null, { fields: fields })).map(x => x.data); this.dmpOrganisations = this.organisationService.searchPublicOrganisations(new DataTableRequest<OrganisationCriteria>(0, null, { fields: fields })).pipe(map(x => x.data));
} }
ngAfterViewInit(): void { ngAfterViewInit(): void {
@ -150,7 +154,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
const dataTableRequest: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields }); const dataTableRequest: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields });
dataTableRequest.criteria = grantCriteria; dataTableRequest.criteria = grantCriteria;
return this.grantService.getPublicPaged(dataTableRequest).map(x => x.data); return this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data));
} }
grantStatusChanged(event) { grantStatusChanged(event) {
@ -160,7 +164,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
// if (!event.source.checked) { // if (!event.source.checked) {
if (event.value === 'null') { if (event.value === 'null') {
this.facetCriteria.grantStatus = null; this.facetCriteria.grantStatus = null;
this.grants = Observable.of([]); this.grants = observableOf([]);
this.facetCriteria.grants = []; this.facetCriteria.grants = [];
} }
// if (event.checked) { // if (event.checked) {
@ -174,7 +178,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
dataTableRequest.criteria.grantStateType = this.facetCriteria.grantStatus; dataTableRequest.criteria.grantStateType = this.facetCriteria.grantStatus;
dataTableRequest.criteria['length'] = 10; dataTableRequest.criteria['length'] = 10;
this.grants = this.grantService.getPublicPaged(dataTableRequest).map(x => x.data); this.grants = this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data));
this.facetCriteria.grants = []; this.facetCriteria.grants = [];
} }
this.facetCriteriaChange.emit(this.facetCriteria); this.facetCriteriaChange.emit(this.facetCriteria);
@ -274,7 +278,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
const dataTableRequest: DataTableRequest<OrganisationCriteria> = new DataTableRequest(0, null, { fields: fields }); const dataTableRequest: DataTableRequest<OrganisationCriteria> = new DataTableRequest(0, null, { fields: fields });
dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria = new OrganisationCriteria();
dataTableRequest.criteria.labelLike = value; dataTableRequest.criteria.labelLike = value;
return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data));
} }
removeOrganisation(organisation) { removeOrganisation(organisation) {
@ -292,7 +296,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
const dataTableRequest: DataTableRequest<OrganisationCriteria> = new DataTableRequest(0, null, { fields: fields }); const dataTableRequest: DataTableRequest<OrganisationCriteria> = new DataTableRequest(0, null, { fields: fields });
dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria = new OrganisationCriteria();
dataTableRequest.criteria.labelLike = ''; dataTableRequest.criteria.labelLike = '';
return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data));
} }
filterGrant(query: string) { filterGrant(query: string) {
@ -301,7 +305,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
const grantRequestItem: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields }); const grantRequestItem: DataTableRequest<GrantCriteria> = new DataTableRequest(0, null, { fields: fields });
grantRequestItem.criteria = new GrantCriteria(); grantRequestItem.criteria = new GrantCriteria();
grantRequestItem.criteria.like = query; grantRequestItem.criteria.like = query;
return this.grantService.getPublicPaged(grantRequestItem).map(x => x.data); return this.grantService.getPublicPaged(grantRequestItem).pipe(map(x => x.data));
} }
filterProfile(query: string) { filterProfile(query: string) {
@ -311,7 +315,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
profileRequestItem.criteria = new ExploreDatasetCriteriaModel(); profileRequestItem.criteria = new ExploreDatasetCriteriaModel();
profileRequestItem.criteria.like = query; profileRequestItem.criteria.like = query;
return this.dmpService.getPublicPaged(profileRequestItem, "listing").map(x => x.data); return this.dmpService.getPublicPaged(profileRequestItem, "listing").pipe(map(x => x.data));
} }
filterOrganisation(value: string) { filterOrganisation(value: string) {
@ -322,7 +326,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements
dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria = new OrganisationCriteria();
dataTableRequest.criteria.labelLike = value; dataTableRequest.criteria.labelLike = value;
return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data));
} }
displayLabel(value) { displayLabel(value) {

@ -1,5 +1,8 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, OnInit, ViewChild } from "@angular/core"; import { Component, OnInit, ViewChild } from "@angular/core";
import { MatPaginator, MatSort } from "@angular/material"; import { MatPaginator } from "@angular/material/paginator";
import { MatSort } from "@angular/material/sort";
import { Router, ActivatedRoute } from "@angular/router"; import { Router, ActivatedRoute } from "@angular/router";
import { takeUntil } from "rxjs/operators"; import { takeUntil } from "rxjs/operators";
import { BaseComponent } from "../../core/common/base/base.component"; import { BaseComponent } from "../../core/common/base/base.component";
@ -7,7 +10,6 @@ import { DataTableRequest } from "../../core/model/data-table/data-table-request
import { DmpListingModel } from "../../core/model/dmp/dmp-listing"; import { DmpListingModel } from "../../core/model/dmp/dmp-listing";
import { ExploreDmpCriteriaModel } from "../../core/query/explore-dmp/explore-dmp-criteria"; import { ExploreDmpCriteriaModel } from "../../core/query/explore-dmp/explore-dmp-criteria";
import { DmpService } from "../../core/services/dmp/dmp.service"; import { DmpService } from "../../core/services/dmp/dmp.service";
import { Observable } from "rxjs";
import { IBreadCrumbComponent } from "../misc/breadcrumb/definition/IBreadCrumbComponent"; import { IBreadCrumbComponent } from "../misc/breadcrumb/definition/IBreadCrumbComponent";
import { BreadcrumbItem } from "../misc/breadcrumb/definition/breadcrumb-item"; import { BreadcrumbItem } from "../misc/breadcrumb/definition/breadcrumb-item";
import { TranslateService } from "@ngx-translate/core"; import { TranslateService } from "@ngx-translate/core";
@ -19,8 +21,8 @@ import { TranslateService } from "@ngx-translate/core";
}) })
export class ExploreDmpListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class ExploreDmpListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: false }) sort: MatSort;
exploreDmpCriteriaModel: ExploreDmpCriteriaModel; exploreDmpCriteriaModel: ExploreDmpCriteriaModel;
titlePrefix: string; titlePrefix: string;
@ -46,7 +48,7 @@ export class ExploreDmpListingComponent extends BaseComponent implements OnInit,
label: this.language.instant('NAV-BAR.PUBLIC-DMPS'), label: this.language.instant('NAV-BAR.PUBLIC-DMPS'),
url: "/explore-plans" url: "/explore-plans"
}) })
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
} }
refresh() { refresh() {

@ -1,10 +1,13 @@
import {of as observableOf, Observable } from 'rxjs';
import {map, takeUntil } from 'rxjs/operators';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { MatDialog, MatSnackBar } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { environment } from '../../../../environments/environment'; import { environment } from '../../../../environments/environment';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
@ -26,7 +29,7 @@ import { SnackBarNotificationLevel, UiNotificationService } from '../../../core/
}) })
export class GrantEditorComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class GrantEditorComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
breadCrumbs: Observable<BreadcrumbItem[]> = Observable.of([]); breadCrumbs: Observable<BreadcrumbItem[]> = observableOf([]);
isNew = true; isNew = true;
grant: GrantEditorModel; grant: GrantEditorModel;
formGroup: FormGroup = null; formGroup: FormGroup = null;
@ -55,7 +58,7 @@ export class GrantEditorComponent extends BaseComponent implements OnInit, IBrea
if (itemId != null) { if (itemId != null) {
this.isNew = false; this.isNew = false;
this.grantService.getSingle(itemId).map(data => data as GrantListingModel) this.grantService.getSingle(itemId).pipe(map(data => data as GrantListingModel))
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(data => { .subscribe(data => {
this.grant = new GrantEditorModel().fromModel(data); this.grant = new GrantEditorModel().fromModel(data);
@ -71,11 +74,11 @@ export class GrantEditorComponent extends BaseComponent implements OnInit, IBrea
label: this.grant.label, label: this.grant.label,
url: '/grants/edit/' + this.grant.id url: '/grants/edit/' + this.grant.id
}); });
this.breadCrumbs = Observable.of(breadCrumbs); this.breadCrumbs = observableOf(breadCrumbs);
}); });
} else { } else {
this.language.get('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.CREATE-NEW-GRANT').pipe(takeUntil(this._destroyed)).subscribe(x => { this.language.get('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.CREATE-NEW-GRANT').pipe(takeUntil(this._destroyed)).subscribe(x => {
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: null, parentComponentName: null,
label: this.language.instant('NAV-BAR.GRANTS').toUpperCase(), label: this.language.instant('NAV-BAR.GRANTS').toUpperCase(),

@ -5,7 +5,7 @@ import { ValidationErrorModel } from '../../../../common/forms/validation/error-
import { GrantStateType } from '../../../../core/common/enum/grant-state-type'; import { GrantStateType } from '../../../../core/common/enum/grant-state-type';
import { GrantCriteria } from '../../../../core/query/grant/grant-criteria'; import { GrantCriteria } from '../../../../core/query/grant/grant-criteria';
import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.component'; import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.component';
import { ErrorStateMatcher } from '@angular/material'; import { ErrorStateMatcher } from '@angular/material/core';
@Component({ @Component({
selector: 'app-grant-criteria-component', selector: 'app-grant-criteria-component',

@ -1,7 +1,9 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator, MatSort } from '@angular/material'; import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { Router, ActivatedRoute, Params } from '@angular/router'; import { Router, ActivatedRoute, Params } from '@angular/router';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; import { DataTableRequest } from '../../../core/model/data-table/data-table-request';
@ -20,9 +22,9 @@ import { TranslateService } from '@ngx-translate/core';
}) })
export class GrantListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class GrantListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
@ViewChild(MatPaginator) _paginator: MatPaginator; @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort, { static: false }) sort: MatSort;
@ViewChild(GrantCriteriaComponent) criteria: GrantCriteriaComponent; @ViewChild(GrantCriteriaComponent, { static: true }) criteria: GrantCriteriaComponent;
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
totalCount: number; totalCount: number;
@ -43,7 +45,7 @@ export class GrantListingComponent extends BaseComponent implements OnInit, IBre
this.refresh(); this.refresh();
this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages));
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: null, parentComponentName: null,
label: this.language.instant('NAV-BAR.GRANTS').toUpperCase(), label: this.language.instant('NAV-BAR.GRANTS').toUpperCase(),
url: '/grants' url: '/grants'

@ -1,6 +1,9 @@
import {of as observableOf, Observable } from 'rxjs';
import {filter, mergeMap, distinctUntilChanged, map} from 'rxjs/operators';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { BreadcrumbItem } from './definition/breadcrumb-item'; import { BreadcrumbItem } from './definition/breadcrumb-item';
import { BreadCrumbResolverService } from './service/breadcrumb.service'; import { BreadCrumbResolverService } from './service/breadcrumb.service';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
@ -11,10 +14,10 @@ import { TranslateService } from '@ngx-translate/core';
styleUrls: ['./breadcrumb.component.scss'] styleUrls: ['./breadcrumb.component.scss']
}) })
export class BreadcrumbComponent implements OnInit { export class BreadcrumbComponent implements OnInit {
breadcrumbs$ = this.router.events breadcrumbs$ = this.router.events.pipe(
.filter(event => event instanceof NavigationEnd) filter(event => event instanceof NavigationEnd),
.distinctUntilChanged() distinctUntilChanged(),
.flatMap(event => this.buildBreadCrumb(this.activatedRoute.root)); mergeMap(event => this.buildBreadCrumb(this.activatedRoute.root)),);
constructor( constructor(
@ -30,15 +33,15 @@ export class BreadcrumbComponent implements OnInit {
buildBreadCrumb(route: ActivatedRoute): Observable<BreadcrumbItem[]> { buildBreadCrumb(route: ActivatedRoute): Observable<BreadcrumbItem[]> {
if (this.breadCrumbService.resolve(route)) { if (this.breadCrumbService.resolve(route)) {
return this.breadCrumbService.resolve(route).map(x => { return this.breadCrumbService.resolve(route).pipe(map(x => {
x.unshift({ x.unshift({
label: this.language.instant('NAV-BAR.HOME'), label: this.language.instant('NAV-BAR.HOME'),
url: '/home', url: '/home',
icon: 'dashboard' icon: 'dashboard'
}); return x; }); return x;
}); }));
} }
return Observable.of([]); return observableOf([]);
} }
navigate(url, params) { navigate(url, params) {

@ -1,6 +1,7 @@
import {of as observableOf, Observable } from 'rxjs';
import { Injectable, NgZone } from '@angular/core'; import { Injectable, NgZone } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { BaseService } from '../../../../core/common/base/base.service'; import { BaseService } from '../../../../core/common/base/base.service';
import { BreadcrumbItem } from '../definition/breadcrumb-item'; import { BreadcrumbItem } from '../definition/breadcrumb-item';
@ -11,7 +12,7 @@ export class BreadCrumbResolverService extends BaseService {
private activeComponents = []; private activeComponents = [];
private parentComponents = []; private parentComponents = [];
private breadCrumbs: Observable<BreadcrumbItem[]> = Observable.of([]); private breadCrumbs: Observable<BreadcrumbItem[]> = observableOf([]);
constructor( constructor(
private router: Router, private router: Router,
private zone: NgZone private zone: NgZone
@ -25,7 +26,7 @@ export class BreadCrumbResolverService extends BaseService {
public clear() { public clear() {
this.activeComponents.length = 0; this.activeComponents.length = 0;
this.breadCrumbs = Observable.of([]); this.breadCrumbs = observableOf([]);
} }
public resolve(activatedRoute: ActivatedRoute): Observable<BreadcrumbItem[]> { public resolve(activatedRoute: ActivatedRoute): Observable<BreadcrumbItem[]> {
@ -34,7 +35,7 @@ export class BreadCrumbResolverService extends BaseService {
this.activeComponents.filter(x => routeComponents.indexOf(x.constructor.name) !== -1).forEach(x => { this.activeComponents.filter(x => routeComponents.indexOf(x.constructor.name) !== -1).forEach(x => {
if (x.hasOwnProperty('breadCrumbs')) { if (x.hasOwnProperty('breadCrumbs')) {
const componentItems = this.resolveDependentComponents((<IBreadCrumbComponent>x).breadCrumbs, []); const componentItems = this.resolveDependentComponents((<IBreadCrumbComponent>x).breadCrumbs, []);
this.breadCrumbs = Observable.of(componentItems); this.breadCrumbs = observableOf(componentItems);
} }
}); });
return this.breadCrumbs; return this.breadCrumbs;

@ -1,6 +1,7 @@
import {map, takeUntil } from 'rxjs/operators';
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../../core/common/base/base.component'; import { BaseComponent } from '../../../../../core/common/base/base.component';
import { DatasetProfileComboBoxType } from '../../../../../core/common/enum/dataset-profile-combo-box-type'; import { DatasetProfileComboBoxType } from '../../../../../core/common/enum/dataset-profile-combo-box-type';
import { DatasetProfileFieldViewStyle } from '../../../../../core/common/enum/dataset-profile-field-view-style'; import { DatasetProfileFieldViewStyle } from '../../../../../core/common/enum/dataset-profile-field-view-style';
@ -137,7 +138,7 @@ export class FormFieldComponent extends BaseComponent implements OnInit {
const datasetsAutocompleteRequestItem: DataTableRequest<DatasetCriteria> = new DataTableRequest(0, 25, { fields: fields }); const datasetsAutocompleteRequestItem: DataTableRequest<DatasetCriteria> = new DataTableRequest(0, 25, { fields: fields });
datasetsAutocompleteRequestItem.criteria = new DatasetCriteria(); datasetsAutocompleteRequestItem.criteria = new DatasetCriteria();
datasetsAutocompleteRequestItem.criteria.like = query; datasetsAutocompleteRequestItem.criteria.like = query;
return this.datasetService.getPaged(datasetsAutocompleteRequestItem).map(item => item.data); return this.datasetService.getPaged(datasetsAutocompleteRequestItem).pipe(map(item => item.data));
} }
searchDmps(query: string) { searchDmps(query: string) {
@ -145,7 +146,7 @@ export class FormFieldComponent extends BaseComponent implements OnInit {
const dmpsAutocompleteRequestItem: DataTableRequest<DmpCriteria> = new DataTableRequest(0, 25, { fields: fields }); const dmpsAutocompleteRequestItem: DataTableRequest<DmpCriteria> = new DataTableRequest(0, 25, { fields: fields });
dmpsAutocompleteRequestItem.criteria = new DmpCriteria(); dmpsAutocompleteRequestItem.criteria = new DmpCriteria();
dmpsAutocompleteRequestItem.criteria.like = query; dmpsAutocompleteRequestItem.criteria.like = query;
return this.dmpService.getPaged(dmpsAutocompleteRequestItem).map(item => item.data); return this.dmpService.getPaged(dmpsAutocompleteRequestItem).pipe(map(item => item.data));
} }
makeAutocompleteConfiguration(myfunc: Function, title: string, subtitle?: string): void { makeAutocompleteConfiguration(myfunc: Function, title: string, subtitle?: string): void {

@ -1,8 +1,8 @@
import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core'; import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatStepper } from '@angular/material'; import { MatStepper } from '@angular/material/stepper';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import 'rxjs/add/operator/switchMap';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { Pair } from '../../../common/types/pair'; import { Pair } from '../../../common/types/pair';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';

@ -32,11 +32,11 @@ export class HelpContentComponent extends BaseComponent implements OnInit {
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(event => { .subscribe(event => {
if (event instanceof NavigationStart) { if (event instanceof NavigationStart) {
this._helpContentService.getActivePageContent(event['url']) // this._helpContentService.getActivePageContent(event['url'])
.pipe(takeUntil(this._destroyed)) // .pipe(takeUntil(this._destroyed))
.subscribe( // .subscribe(
pageContent => this.shiftThroughContent(pageContent), // pageContent => this.shiftThroughContent(pageContent),
error => this.handleError(<any>error)); // error => this.handleError(<any>error));
} }
}); });
} }

@ -1,9 +1,10 @@
import {mergeMap, distinctUntilChanged, debounceTime, takeUntil } from 'rxjs/operators';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms'; import { FormControl } from '@angular/forms';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../core/common/base/base.component'; import { BaseComponent } from '../../../core/common/base/base.component';
import { AppRole } from '../../../core/common/enum/app-role'; import { AppRole } from '../../../core/common/enum/app-role';
import { SearchBarItem } from '../../../core/model/dashboard/search-bar-item'; import { SearchBarItem } from '../../../core/model/dashboard/search-bar-item';
@ -59,9 +60,9 @@ export class NavigationComponent extends BaseComponent implements OnInit {
titleFn: (item) => item['label'] titleFn: (item) => item['label']
}; };
this.filteredOptions = this.searchControl.valueChanges.debounceTime(500).distinctUntilChanged().flatMap(x => { this.filteredOptions = this.searchControl.valueChanges.pipe(debounceTime(500),distinctUntilChanged(),mergeMap(x => {
return this.searchBarService.search(x); return this.searchBarService.search(x);
}); }),);
} }
searchGrant(query: string) { searchGrant(query: string) {

@ -1,6 +1,6 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { Principal } from '../../../../core/model/auth/Principal'; import { Principal } from '../../../../core/model/auth/Principal';
import { AuthService } from '../../../../core/services/auth/auth.service'; import { AuthService } from '../../../../core/services/auth/auth.service';

@ -1,3 +1,5 @@
import {mergeMap, distinctUntilChanged, debounceTime} from 'rxjs/operators';
import { Component, OnInit } from "@angular/core"; import { Component, OnInit } from "@angular/core";
import { AuthService } from '../../../core/services/auth/auth.service'; import { AuthService } from '../../../core/services/auth/auth.service';
import { FormControl } from "@angular/forms"; import { FormControl } from "@angular/forms";
@ -25,9 +27,9 @@ export class SearchComponent implements OnInit {
constructor(private authentication: AuthService, private router: Router, private searchBarService: SearchBarService) {} constructor(private authentication: AuthService, private router: Router, private searchBarService: SearchBarService) {}
ngOnInit() { ngOnInit() {
this.filteredOptions = this.searchControl.valueChanges.debounceTime(500).distinctUntilChanged().flatMap(x => { this.filteredOptions = this.searchControl.valueChanges.pipe(debounceTime(500),distinctUntilChanged(),mergeMap(x => {
return this.searchBarService.search(x); return this.searchBarService.search(x);
}); }),);
} }
public isAuthenticated(): boolean { public isAuthenticated(): boolean {

@ -4,7 +4,7 @@ import { GENERAL_ROUTES, DMP_ROUTES, DATASETS_ROUTES } from '../sidebar/sidebar.
import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common'; import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { AuthService } from '../../core/services/auth/auth.service'; import { AuthService } from '../../core/services/auth/auth.service';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.component'; import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.component';
import { AppRole } from '../../core/common/enum/app-role'; import { AppRole } from '../../core/common/enum/app-role';
import { ProgressIndicationService } from '../../core/services/progress-indication/progress-indication-service'; import { ProgressIndicationService } from '../../core/services/progress-indication/progress-indication-service';

@ -1,9 +1,10 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { MatSnackBar } from '@angular/material'; import { MatSnackBar } from '@angular/material/snack-bar';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { BaseComponent } from "../../../core/common/base/base.component"; import { BaseComponent } from "../../../core/common/base/base.component";
import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile'; import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile';
@ -24,7 +25,7 @@ import { DmpEditorWizardModel } from './dmp-editor-wizard-model';
}) })
export class DmpEditorWizardComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class DmpEditorWizardComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
breadCrumbs: Observable<BreadcrumbItem[]> = Observable.of([]); breadCrumbs: Observable<BreadcrumbItem[]> = observableOf([]);
isNew = true; isNew = true;
dmp: DmpEditorWizardModel; dmp: DmpEditorWizardModel;
@ -65,7 +66,7 @@ export class DmpEditorWizardComponent extends BaseComponent implements OnInit, I
this.formGroup.get('label').setValue(this.language.instant('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.SECOND-STEP.DMP-NAME') + this.dmpLabel); this.formGroup.get('label').setValue(this.language.instant('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.SECOND-STEP.DMP-NAME') + this.dmpLabel);
this.formGroup.get('label').setValue(this.language.instant('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.SECOND-STEP.DMP-NAME') + this.dmpLabel); this.formGroup.get('label').setValue(this.language.instant('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.SECOND-STEP.DMP-NAME') + this.dmpLabel);
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: 'grant', parentComponentName: 'grant',
label: this.language.instant('NAV-BAR.DMP'), label: this.language.instant('NAV-BAR.DMP'),
url: '/quick-wizard/dmp' url: '/quick-wizard/dmp'

@ -1,9 +1,10 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { MatSnackBar } from '@angular/material'; import { MatSnackBar } from '@angular/material/snack-bar';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { BaseComponent } from "../../../core/common/base/base.component"; import { BaseComponent } from "../../../core/common/base/base.component";
import { GrantCriteria } from '../../../core/query/grant/grant-criteria'; import { GrantCriteria } from '../../../core/query/grant/grant-criteria';
@ -21,7 +22,7 @@ import { GrantEditorWizardModel } from './grant-editor-wizard-model';
styleUrls: ['./grant-editor-wizard.component.scss'] styleUrls: ['./grant-editor-wizard.component.scss']
}) })
export class GrantEditorWizardComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class GrantEditorWizardComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
breadCrumbs: Observable<BreadcrumbItem[]> = Observable.of([]); breadCrumbs: Observable<BreadcrumbItem[]> = observableOf([]);
isNew = false; isNew = false;
grant: GrantEditorWizardModel; grant: GrantEditorWizardModel;
@ -42,7 +43,7 @@ export class GrantEditorWizardComponent extends BaseComponent implements OnInit,
} }
ngOnInit() { ngOnInit() {
this.breadCrumbs = Observable.of([{ this.breadCrumbs = observableOf([{
parentComponentName: 'QuickCreate', parentComponentName: 'QuickCreate',
label: this.language.instant('NAV-BAR.GRANT'), label: this.language.instant('NAV-BAR.GRANT'),
url: '/quick-wizard/grant' url: '/quick-wizard/grant'

@ -1,9 +1,12 @@
import {of as observableOf, Observable } from 'rxjs';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { MatDialog, MatSnackBar, MatStepper } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatStepper } from '@angular/material/stepper';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';
import { BaseComponent } from "../../../core/common/base/base.component"; import { BaseComponent } from "../../../core/common/base/base.component";
@ -29,9 +32,9 @@ import { ProjectFormModel } from '../../dmp/editor/grant-tab/project-form-model'
}) })
export class QuickWizardEditorComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class QuickWizardEditorComponent extends BaseComponent implements OnInit, IBreadCrumbComponent {
breadCrumbs: Observable<BreadcrumbItem[]> = Observable.of([]); breadCrumbs: Observable<BreadcrumbItem[]> = observableOf([]);
@ViewChild('stepper') stepper: MatStepper; @ViewChild('stepper', { static: true }) stepper: MatStepper;
@ViewChild(DatasetEditorWizardComponent) datasetEditorWizardComponent: DatasetEditorWizardComponent; @ViewChild(DatasetEditorWizardComponent, { static: false }) datasetEditorWizardComponent: DatasetEditorWizardComponent;
isNew = true; isNew = true;
quickWizard: QuickWizardEditorWizardModel; quickWizard: QuickWizardEditorWizardModel;
allDatasets: DmpFinalizeDialogDataset[] = []; allDatasets: DmpFinalizeDialogDataset[] = [];
@ -57,7 +60,7 @@ export class QuickWizardEditorComponent extends BaseComponent implements OnInit,
this.quickWizard.project = new ProjectFormModel(); this.quickWizard.project = new ProjectFormModel();
this.formGroup = this.quickWizard.buildForm(); this.formGroup = this.quickWizard.buildForm();
this.language.get('NAV-BAR.DMP-WIZARD').pipe(takeUntil(this._destroyed)).subscribe(x => { this.language.get('NAV-BAR.DMP-WIZARD').pipe(takeUntil(this._destroyed)).subscribe(x => {
this.breadCrumbs = Observable.of([ this.breadCrumbs = observableOf([
{ {
parentComponentName: 'Dashboard', parentComponentName: 'Dashboard',
label: x, label: x,

@ -1,6 +1,6 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
@Component({ @Component({
selector: 'app-faq-dialog', selector: 'app-faq-dialog',

@ -1,6 +1,6 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
@Component({ @Component({
selector: 'app-glossary-dialog', selector: 'app-glossary-dialog',

@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model';

@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { AuthService } from '../../core/services/auth/auth.service'; import { AuthService } from '../../core/services/auth/auth.service';
import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.component'; import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.component';

@ -3,15 +3,15 @@ import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms'
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import * as moment from 'moment-timezone'; import * as moment from 'moment-timezone';
import { takeUntil } from 'rxjs/operators'; import { Observable, of } from 'rxjs';
import { Observable } from 'rxjs/Rx'; import { map, takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../core/common/base/base.component'; import { BaseComponent } from '../../core/common/base/base.component';
import { CultureInfo } from '../../core/model/culture-info'; import { CultureInfo } from '../../core/model/culture-info';
import { DmpModel } from '../../core/model/dmp/dmp';
import { UserListingModel } from '../../core/model/user/user-listing'; import { UserListingModel } from '../../core/model/user/user-listing';
import { AuthService } from '../../core/services/auth/auth.service'; import { AuthService } from '../../core/services/auth/auth.service';
import { CultureService } from '../../core/services/culture/culture-service'; import { CultureService } from '../../core/services/culture/culture-service';
import { UserService } from '../../core/services/user/user.service'; import { UserService } from '../../core/services/user/user.service';
import { DmpModel } from '../../core/model/dmp/dmp';
const availableLanguages: any[] = require('../../../assets/resources/language.json'); const availableLanguages: any[] = require('../../../assets/resources/language.json');
@ -47,7 +47,7 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes
.subscribe((params: Params) => { .subscribe((params: Params) => {
this.currentUserId = this.authService.current().id; this.currentUserId = this.authService.current().id;
const userId = !params['id'] ? 'me' : params['id']; const userId = !params['id'] ? 'me' : params['id'];
this.user = this.userService.getUser(userId).map(result => { this.user = this.userService.getUser(userId).pipe(map(result => {
result['additionalinfo'] = JSON.parse(result['additionalinfo']); result['additionalinfo'] = JSON.parse(result['additionalinfo']);
this.formGroup = new FormBuilder().group({ this.formGroup = new FormBuilder().group({
language: new FormControl(result['additionalinfo']['language'] ? availableLanguages.filter(x => x.value === result['additionalinfo']['language']['value']).pop() : '', [Validators.required]), language: new FormControl(result['additionalinfo']['language'] ? availableLanguages.filter(x => x.value === result['additionalinfo']['language']['value']).pop() : '', [Validators.required]),
@ -63,7 +63,7 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes
.subscribe(x => { if (x) { this.cultures = this._filterCulture(x); } }); .subscribe(x => { if (x) { this.cultures = this._filterCulture(x); } });
this.formGroup.disable(); this.formGroup.disable();
return result; return result;
}); }));
}); });
} }
@ -91,18 +91,18 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes
private _filterTimezone(value: string): Observable<any[]> { private _filterTimezone(value: string): Observable<any[]> {
if (value && typeof value === 'string') { if (value && typeof value === 'string') {
const filterValue = value.toLowerCase(); const filterValue = value.toLowerCase();
return Observable.of(moment.tz.names().filter(option => option.toLowerCase().includes(filterValue))); return of(moment.tz.names().filter(option => option.toLowerCase().includes(filterValue)));
} else { } else {
return Observable.of(moment.tz.names()); return of(moment.tz.names());
} }
} }
private _filterCulture(value: string): Observable<any[]> { private _filterCulture(value: string): Observable<any[]> {
if (value && typeof value === 'string') { if (value && typeof value === 'string') {
const filterValue = value.toLowerCase(); const filterValue = value.toLowerCase();
return Observable.of(this.cultureService.getCultureValues().filter(option => option.displayName.toLowerCase().includes(filterValue))); return of(this.cultureService.getCultureValues().filter(option => option.displayName.toLowerCase().includes(filterValue)));
} else { } else {
return Observable.of(this.cultureService.getCultureValues()); return of(this.cultureService.getCultureValues());
} }
} }
@ -132,7 +132,7 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes
this.authService.me() this.authService.me()
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe(result => this.router.navigate(['/profile'])); .subscribe(result => this.router.navigate(['/profile']));
// .subscribe(result => window.location.reload()); // .subscribe(result => window.location.reload());
}, },
error => { error => {
console.log(error); console.log(error);

@ -11,36 +11,20 @@
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
* *
* Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html * Learn more in https://angular.io/guide/browser-support
*/ */
/*************************************************************************************************** /***************************************************************************************************
* BROWSER POLYFILLS * BROWSER POLYFILLS
*/ */
/** IE9, IE10 and IE11 requires all of the following polyfills. **/ import 'core-js/es7/array';
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es7/array'; //for array.includes
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
/** IE10 and IE11 requires the following for NgClass support on SVG elements */ /** IE10 and IE11 requires the following for NgClass support on SVG elements */
//import 'classlist.js'; // Run `npm install --save classlist.js`. //import 'classlist.js'; // Run `npm install --save classlist.js`.
/** Evergreen browsers require these. **/ /** Evergreen browsers require these. **/
import 'core-js/es6/reflect'; import 'core-js/es6/reflect';
import 'core-js/es7/reflect';
/** /**

@ -3,8 +3,6 @@
"compilerOptions": { "compilerOptions": {
"outDir": "../out-tsc/spec", "outDir": "../out-tsc/spec",
"baseUrl": "./", "baseUrl": "./",
"module": "commonjs",
"target": "es5",
"types": [ "types": [
"jasmine", "jasmine",
"node" "node"

@ -1,7 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "es5", "downlevelIteration": true,
"module": "commonjs", "importHelpers": true,
"target": "es2015",
"module": "esnext",
"moduleResolution": "node", "moduleResolution": "node",
"sourceMap": true, "sourceMap": true,
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,

@ -136,12 +136,12 @@
"app", "app",
"kebab-case" "kebab-case"
], ],
"use-input-property-decorator": true, "no-inputs-metadata-property": true,
"use-output-property-decorator": true, "no-outputs-metadata-property": true,
"use-host-property-decorator": true, "no-host-metadata-property": true,
"no-input-rename": true, "no-input-rename": true,
"no-output-rename": true, "no-output-rename": true,
"use-life-cycle-interface": true, "use-lifecycle-interface": true,
"use-pipe-transform-interface": true, "use-pipe-transform-interface": true,
"component-class-suffix": true, "component-class-suffix": true,
"directive-class-suffix": true "directive-class-suffix": true

Loading…
Cancel
Save