From 9f9e35b805bbd1811d864dd39f1967e59483ea4b Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Sun, 13 Oct 2019 20:09:41 +0000 Subject: [PATCH] [Admin]: Add save on datasource criteria git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-admin-portal/trunk@57355 d315682c-612b-4755-9ff5-7f18f6832af3 --- .../criteria/criteria.component.html | 14 +++--- .../criteria/criteria.component.ts | 47 +++++++++++++------ .../remove-content-providers.component.html | 8 +--- .../remove-content-providers.component.ts | 11 +++++ 4 files changed, 52 insertions(+), 28 deletions(-) diff --git a/src/app/pages/community/content-providers/criteria/criteria.component.html b/src/app/pages/community/content-providers/criteria/criteria.component.html index 10eb9db..9c5c126 100644 --- a/src/app/pages/community/content-providers/criteria/criteria.component.html +++ b/src/app/pages/community/content-providers/criteria/criteria.component.html @@ -33,11 +33,11 @@ No criteria are specified -
+
Criterion {{i + 1}}
-
+
@@ -49,13 +49,13 @@
-
+ [class.uk-form-danger]="sc.get('verb').status === 'INVALID'"> @@ -75,7 +75,7 @@
+ [class.uk-form-danger]="sc.get('value').status === 'INVALID'">
AND diff --git a/src/app/pages/community/content-providers/criteria/criteria.component.ts b/src/app/pages/community/content-providers/criteria/criteria.component.ts index 4160673..34ee758 100644 --- a/src/app/pages/community/content-providers/criteria/criteria.component.ts +++ b/src/app/pages/community/content-providers/criteria/criteria.component.ts @@ -3,7 +3,7 @@ import {ActivatedRoute, Router} from '@angular/router'; import {HelperFunctions} from '../../../../openaireLibrary/utils/HelperFunctions.class'; import {SearchCommunityDataprovidersService} from '../../../../openaireLibrary/connect/contentProviders/searchDataproviders.service'; import {EnvProperties} from '../../../../openaireLibrary/utils/properties/env-properties'; -import {ContentProvider} from '../../../../openaireLibrary/utils/entities/contentProvider'; +import {ContentProvider, SelectionCriteria} from '../../../../openaireLibrary/utils/entities/contentProvider'; import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms'; import {ManageCommunityContentProvidersService} from '../../../../services/manageContentProviders.service'; @@ -16,7 +16,7 @@ export class CriteriaComponent implements OnInit { public community: string = ''; public openaireId: string = ''; public dataProvider: ContentProvider = null; - public selcrit: FormGroup; + public selectioncriteria: FormGroup; private properties: EnvProperties; showLoading = true; public errorMessage: string; @@ -59,13 +59,14 @@ export class CriteriaComponent implements OnInit { } buildForm() { - this.selcrit = this.fb.group({ + this.selectioncriteria = this.fb.group({ criteria: this.fb.array([]) }); - if (this.dataProvider.selcrit) { - this.dataProvider.selcrit.criteria.forEach(criteria => { + let selectionCriteria = CriteriaComponent.CDataToJSON(this.dataProvider.selectioncriteria); + if (selectionCriteria) { + selectionCriteria.criteria.forEach(criterion => { let constraintArray: FormArray = this.fb.array([]); - criteria.constraint.forEach(constraint => { + criterion.sc.forEach(constraint => { constraintArray.push(this.fb.group({ field: this.fb.control(constraint.field, Validators.required), verb: this.fb.control(constraint.verb, Validators.required), @@ -73,18 +74,18 @@ export class CriteriaComponent implements OnInit { })); }); this.criteria.push(this.fb.group({ - constraint: constraintArray + sc: constraintArray })); }); } } public get criteria(): FormArray { - return this.selcrit.get('criteria') as FormArray; + return this.selectioncriteria.get('criteria') as FormArray; } public getConstraint(i: number): FormArray { - return this.criteria.at(i).get('constraint') as FormArray; + return this.criteria.at(i).get('sc') as FormArray; } public addCriteria() { @@ -96,12 +97,12 @@ export class CriteriaComponent implements OnInit { }) ]); this.criteria.push(this.fb.group({ - constraint: constraintArray + sc: constraintArray })); } public addConstraint(i: number) { - let constraintArray: FormArray = this.criteria.at(i).get('constraint') as FormArray; + let constraintArray: FormArray = this.criteria.at(i).get('sc') as FormArray; constraintArray.push(this.fb.group({ field: this.fb.control('', Validators.required), verb: this.fb.control('contains', Validators.required), @@ -110,18 +111,34 @@ export class CriteriaComponent implements OnInit { } public removeConstraint(i: number, j: number) { - let constraintArray: FormArray = this.criteria.at(i).get('constraint') as FormArray; + let constraintArray: FormArray = this.criteria.at(i).get('sc') as FormArray; constraintArray.removeAt(j); if (constraintArray.length === 0) { this.criteria.removeAt(i); } } + public static CDataToJSON(cdata: string): SelectionCriteria { + if(cdata && cdata.length > 0) { + return JSON.parse(cdata.replace('', '')); + } else { + return null; + } + } + + public static JSONToCData(selectioncriteria: SelectionCriteria): string { + if(selectioncriteria && selectioncriteria.criteria.length > 0) { + return ''; + } else { + return ''; + } + } + save() { this.errorMessage = null; - if (this.selcrit.status === 'VALID') { - this.dataProvider.selcrit = this.selcrit.value; - console.log(this.dataProvider); + if (this.selectioncriteria.status === 'VALID') { + this.dataProvider.selectioncriteria = CriteriaComponent.JSONToCData(this.selectioncriteria.value); this.manageCommunityContentProvidersService. saveContentProvider(this.properties, this.dataProvider).subscribe( () => { this._router.navigate(['manage-content-providers'], { diff --git a/src/app/pages/community/content-providers/remove-content-providers.component.html b/src/app/pages/community/content-providers/remove-content-providers.component.html index 7d2e9b5..7542334 100644 --- a/src/app/pages/community/content-providers/remove-content-providers.component.html +++ b/src/app/pages/community/content-providers/remove-content-providers.component.html @@ -68,12 +68,8 @@ - {{result.selcrit.criteria.length}} criteria - no criteria + {{getCriteriaLabel(result.selectioncriteria)}} diff --git a/src/app/pages/community/content-providers/remove-content-providers.component.ts b/src/app/pages/community/content-providers/remove-content-providers.component.ts index 957f670..6f1164f 100644 --- a/src/app/pages/community/content-providers/remove-content-providers.component.ts +++ b/src/app/pages/community/content-providers/remove-content-providers.component.ts @@ -13,6 +13,8 @@ import {DOI, StringUtils} from '../../../openaireLibrary/utils/string-utils.clas import {Session} from '../../../openaireLibrary/login/utils/helper.class'; import {LoginErrorCodes} from '../../../openaireLibrary/login/utils/guardHelper.class'; +import {SelectionCriteria} from '../../../openaireLibrary/utils/entities/contentProvider'; +import {CriteriaComponent} from './criteria/criteria.component'; @Component({ selector: 'remove-content-providers', @@ -131,6 +133,15 @@ export class RemoveContentProvidersComponent implements OnInit { //console.info("ngAfterViewInit"); } + public getCriteriaLabel(cdata: string): string { + let selectionCriteria: SelectionCriteria = CriteriaComponent.CDataToJSON(cdata); + if(selectionCriteria && selectionCriteria.criteria.length > 0) { + return (selectionCriteria.criteria.length === 1)?'1 criterion':(selectionCriteria.criteria.length + ' criteria') + } else { + return 'no criteria'; + } + } + filterData(row: any, query: string) { let returnValue: boolean = false;