+ [class.uk-form-danger]="sc.get('value').status === 'INVALID'">
j + 1">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 @@
- 0"
- (click)="goToCriteria(result.openaireId)"
- class="clickable">{{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;
|