diff --git a/src/app/pages/oaipmh-validator/validation-analysis/oaipmh-analysis.component.ts b/src/app/pages/oaipmh-validator/validation-analysis/oaipmh-analysis.component.ts
index bc79ab8..97b2360 100644
--- a/src/app/pages/oaipmh-validator/validation-analysis/oaipmh-analysis.component.ts
+++ b/src/app/pages/oaipmh-validator/validation-analysis/oaipmh-analysis.component.ts
@@ -93,7 +93,7 @@ export class OaipmhAnalysisComponent implements OnInit {
public getAnalysis() {
- this.validator.getAnalysis(this.jobId).subscribe(
+ this.subscriptions.push(this.validator.getAnalysis(this.jobId).subscribe(
(result: RulePerJob[]) => {
console.log(result);
// this.analysisResult = result;
@@ -115,7 +115,7 @@ export class OaipmhAnalysisComponent implements OnInit {
}
}
}
- );
+ ));
}
public openWarningsModal(rule: RulePerJob) {
@@ -138,13 +138,13 @@ export class OaipmhAnalysisComponent implements OnInit {
this.warnings = [];
this.openWarningsModal(rule);
this.warningsModalOpen = true;
- this.validator.getWarnings(this.jobId, rule.rule_name).subscribe(
+ this.subscriptions.push(this.validator.getWarnings(this.jobId, rule.rule_name).subscribe(
result => {
this.warnings = result;
console.log(result);
// this.result = result;
}
- );
+ ));
}
getErrors(rule: RulePerJob) {
@@ -154,17 +154,17 @@ export class OaipmhAnalysisComponent implements OnInit {
this.errorsModalOpen = true;
if(rule.has_errors) {
- this.validator.getErrors(this.jobId, rule.rule_name).subscribe(
+ this.subscriptions.push(this.validator.getErrors(this.jobId, rule.rule_name).subscribe(
result => {
this.errors = result;
console.log(result);
}
- );
+ ));
}
}
public getJobResult() {
- this.validator.getJobResult(this.jobId).subscribe(
+ this.subscriptions.push(this.validator.getJobResult(this.jobId).subscribe(
(result: JobResult) => {
this.jobResult = result;
let startDate = new Date(this.jobResult.startDate);
@@ -179,7 +179,7 @@ export class OaipmhAnalysisComponent implements OnInit {
this.jobDuration.months = Math.floor(this.jobDuration.days / 31);
this.jobDuration.years = Math.floor(this.jobDuration.months / 12);
}
- );
+ ));
}
protected readonly Status = Status;
diff --git a/src/app/pages/oaipmh-validator/validation-history/oaipmh-history.component.ts b/src/app/pages/oaipmh-validator/validation-history/oaipmh-history.component.ts
index 896d231..d6eb61b 100644
--- a/src/app/pages/oaipmh-validator/validation-history/oaipmh-history.component.ts
+++ b/src/app/pages/oaipmh-validator/validation-history/oaipmh-history.component.ts
@@ -42,11 +42,11 @@ export class OaipmhHistoryComponent implements OnInit {
}
public getJobResult() {
- this.validator.getJobResult(this.jobId).subscribe(
+ this.subscriptions.push(this.validator.getJobResult(this.jobId).subscribe(
(result: JobResult) => {
this.result = result;
}
- );
+ ));
}
protected readonly Status = Status;
diff --git a/src/app/pages/oaipmh-validator/validation-settings/oaipmh-validator.component.html b/src/app/pages/oaipmh-validator/validation-settings/oaipmh-validator.component.html
index 9d47132..62a1b5b 100644
--- a/src/app/pages/oaipmh-validator/validation-settings/oaipmh-validator.component.html
+++ b/src/app/pages/oaipmh-validator/validation-settings/oaipmh-validator.component.html
@@ -21,7 +21,7 @@
diff --git a/src/app/pages/oaipmh-validator/validation-settings/oaipmh-validator.component.ts b/src/app/pages/oaipmh-validator/validation-settings/oaipmh-validator.component.ts
index 2bf15f2..e63724b 100644
--- a/src/app/pages/oaipmh-validator/validation-settings/oaipmh-validator.component.ts
+++ b/src/app/pages/oaipmh-validator/validation-settings/oaipmh-validator.component.ts
@@ -3,6 +3,9 @@ import {OaipmhValidatorService} from "../../../services/oaipmh-validator.service
import {UntypedFormBuilder, UntypedFormGroup, Validators} from "@angular/forms";
import {Option} from "../../../openaire-library/sharedComponents/input/input.component";
import {StringUtils} from "../../../openaire-library/utils/string-utils.class";
+import {JobResult} from "../../entities/JobResult";
+import {Router} from "@angular/router";
+import {Subscriber} from "rxjs";
@Component({
selector: 'app-oaipmh-validator',
@@ -19,37 +22,64 @@ export class OaipmhValidatorComponent implements OnInit {
public form: UntypedFormGroup;
public sets: Option[] = [{label: 'All sets', value: 'all'}];
public recordsNum: number = 10;
+ public loadingSets: boolean = false;
- constructor(private fb: UntypedFormBuilder, private validator: OaipmhValidatorService) {
+ subscriptions = [];
+
+ constructor(private fb: UntypedFormBuilder, private router: Router, private validator: OaipmhValidatorService) {
this.form = this.fb.group({
url: this.fb.control("", StringUtils.urlValidator()),//[Validators.required/*, Validators.email*/]),
guidelines: this.fb.control("", Validators.required),
recordsNum: this.fb.control(null, Validators.required),
- set: this.fb.control('', Validators.required)
+ set: this.fb.control('all', Validators.required)
});
}
ngOnInit() {}
+ ngOnDestroy() {
+ this.subscriptions.forEach(subscription => {
+ if (subscription instanceof Subscriber) {
+ subscription.unsubscribe();
+ }
+ });
+ }
+
updateRecordsNum(increase: boolean = true) {
this.recordsNum = this.recordsNum + (increase ? 10 : -10);
this.form.get('recordsNum').setValue(this.recordsNum);
}
getSets() {
+ this.loadingSets = true;
let options: Option[] = [{label: 'All sets', value: 'all'}];
+ if(this.form.get('setName')) {
+ this.form.get('setName').setValue('all');
+ }
if(this.form.get('url') && this.form.get('url').value && StringUtils.isValidUrl(this.form.get('url').value)) {
- this.validator.getSets(this.form.get('url').value).subscribe(sets => {
+ this.subscriptions.push(this.validator.getSets(this.form.get('url').value).subscribe(sets => {
for(let set of sets) {
options.push({label: set['setName'], value: set['setSpec']});
}
this.sets = options;
- });
+ this.loadingSets = false;
+ }, error => {
+ this.sets = options;
+ this.loadingSets = false;
+ }));
+ } else {
+ this.sets = options;
+ this.loadingSets = false;
}
}
validate() {
- console.log(this.form.value);
- this.validator.validate(this.form.get('guidelines').value, this.form.get('url').value, this.form.get('recordsNum').value, this.form.get('set').value);
+ this.subscriptions.push(this.validator.validate(this.form.get('guidelines').value, this.form.get('url').value, this.form.get('recordsNum').value, this.form.get('set').value).subscribe(
+ (result: JobResult) => {
+ this.router.navigate(['/oaipmh-history'], {
+ queryParams: { 'jobId': result.id }
+ });
+ }
+ ));
}
}
diff --git a/src/app/pages/single-record-validator/single-record-validator.component.ts b/src/app/pages/single-record-validator/single-record-validator.component.ts
index 8343aca..afbffab 100644
--- a/src/app/pages/single-record-validator/single-record-validator.component.ts
+++ b/src/app/pages/single-record-validator/single-record-validator.component.ts
@@ -4,6 +4,7 @@ import {SingleRecordValidatorService} from "../../services/single-record-validat
import {RuleInfo} from "../entities/RuleInfo";
import {XmlValidationResponse} from "../entities/XmlValidationResponse";
import {Option} from "../../openaire-library/sharedComponents/input/input.component";
+import {Subscriber} from "rxjs";
@Component({
selector: 'app-single-record-validator',
@@ -26,6 +27,8 @@ export class SingleRecordValidatorComponent implements OnInit {
public viewResults: boolean = false;
public validationAnalysis: boolean = true;
+ subscriptions = [];
+
constructor(private fb: UntypedFormBuilder, private validator: SingleRecordValidatorService) {
this.form = this.fb.group({
guidelines: this.fb.control("", Validators.required),
@@ -35,12 +38,20 @@ export class SingleRecordValidatorComponent implements OnInit {
ngOnInit(): void {}
+ ngOnDestroy() {
+ this.subscriptions.forEach(subscription => {
+ if (subscription instanceof Subscriber) {
+ subscription.unsubscribe();
+ }
+ });
+ }
+
public validate() {
- this.validator.validateRecord(this.form.get('xml')?.getRawValue(), this.form.get('guidelines')?.getRawValue()).subscribe(
+ this.subscriptions.push(this.validator.validateRecord(this.form.get('xml')?.getRawValue(), this.form.get('guidelines')?.getRawValue()).subscribe(
result => {
this.result = result;
}
- )
+ ));
}
public openMessagesModal(rule: RuleInfo) {
diff --git a/src/app/services/oaipmh-validator.service.ts b/src/app/services/oaipmh-validator.service.ts
index 32c883f..55cd26c 100644
--- a/src/app/services/oaipmh-validator.service.ts
+++ b/src/app/services/oaipmh-validator.service.ts
@@ -37,7 +37,8 @@ export class OaipmhValidatorService {
validate(guidelines: string, baseUrl: string, numberOfRecords: string, set: string) {
let url: string = environment.validatorAPI + "realValidator?guidelines="+guidelines+"&baseUrl="+baseUrl
- +(numberOfRecords ? ("&numberOfRecords="+numberOfRecords) : "") + (set ? ("&set="+set) : "");
+ +(numberOfRecords ? ("&numberOfRecords="+numberOfRecords) : "") + (set && set != 'all' ? ("&set="+set) : "");
console.log(url);
+ return this.http.get(url);
}
}
diff --git a/src/app/shared/topmenu/topmenu.component.html b/src/app/shared/topmenu/topmenu.component.html
index eba980f..92fa25d 100644
--- a/src/app/shared/topmenu/topmenu.component.html
+++ b/src/app/shared/topmenu/topmenu.component.html
@@ -102,6 +102,9 @@
Singe Record
+
+ Validate [demo]
+
History [demo]