2019-09-23 10:17:03 +02:00
|
|
|
|
2019-12-11 15:51:03 +01:00
|
|
|
import { map, filter } from 'rxjs/operators';
|
2019-03-28 15:53:17 +01:00
|
|
|
import { Component } from "@angular/core";
|
2019-09-23 10:17:03 +02:00
|
|
|
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
|
2019-03-28 15:53:17 +01:00
|
|
|
import { SingleAutoCompleteConfiguration } from "../../../../library/auto-complete/single/single-auto-complete-configuration";
|
|
|
|
import { Observable } from "rxjs";
|
|
|
|
import { DataTableRequest } from "../../../../core/model/data-table/data-table-request";
|
|
|
|
import { DmpCriteria } from "../../../../core/query/dmp/dmp-criteria";
|
|
|
|
import { DmpListingModel } from "../../../../core/model/dmp/dmp-listing";
|
|
|
|
import { DmpService } from "../../../../core/services/dmp/dmp.service";
|
|
|
|
import { Inject } from "@angular/core";
|
|
|
|
import { DmpModel } from "../../../../core/model/dmp/dmp";
|
|
|
|
import { TranslateService } from "@ngx-translate/core";
|
2019-11-07 15:37:07 +01:00
|
|
|
import { DmpAssociatedProfileModel } from '../../../../core/model/dmp-profile/dmp-associated-profile';
|
2019-03-28 15:53:17 +01:00
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'dataset-copy-dialogue-component',
|
|
|
|
templateUrl: 'dataset-copy-dialogue.component.html',
|
|
|
|
styleUrls: ['./dataset-copy-dialogue.component.scss'],
|
|
|
|
})
|
|
|
|
export class DatasetCopyDialogueComponent {
|
|
|
|
|
|
|
|
dmpAutoCompleteConfiguration: SingleAutoCompleteConfiguration;
|
|
|
|
dmpModel: DmpModel;
|
2019-11-07 15:37:07 +01:00
|
|
|
datasetDescriptionTemplateLabel: String;
|
2019-03-28 15:53:17 +01:00
|
|
|
|
|
|
|
constructor(
|
|
|
|
public dialogRef: MatDialogRef<DatasetCopyDialogueComponent>,
|
|
|
|
public dmpService: DmpService,
|
|
|
|
public language: TranslateService,
|
|
|
|
@Inject(MAT_DIALOG_DATA) public data: any
|
|
|
|
) { }
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
this.dmpAutoCompleteConfiguration = {
|
|
|
|
filterFn: this.searchDmp.bind(this),
|
|
|
|
initialItems: (extraData) => this.searchDmp(''),
|
|
|
|
displayFn: (item) => item['label'],
|
2019-11-07 15:37:07 +01:00
|
|
|
titleFn: (item) => item['label'],
|
2019-03-28 15:53:17 +01:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
cancel() {
|
|
|
|
this.dialogRef.close(this.data);
|
|
|
|
}
|
|
|
|
|
|
|
|
confirm() {
|
|
|
|
this.datasetProfileValidate().subscribe(x => {
|
|
|
|
if (this.data.datasetProfileExist) {
|
|
|
|
this.dialogRef.close(this.data);
|
|
|
|
}
|
|
|
|
else if (!this.data.datasetProfileExist) {
|
2019-12-11 15:51:03 +01:00
|
|
|
this.data.formControl.setErrors({ 'incorrect': true });
|
2019-03-28 15:53:17 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
searchDmp(query: string): Observable<DmpListingModel[]> {
|
|
|
|
const fields: Array<string> = new Array<string>();
|
|
|
|
fields.push('asc');
|
|
|
|
const dmpDataTableRequest: DataTableRequest<DmpCriteria> = new DataTableRequest(0, null, { fields: fields });
|
|
|
|
dmpDataTableRequest.criteria = new DmpCriteria();
|
|
|
|
dmpDataTableRequest.criteria.like = query;
|
2020-06-29 15:48:15 +02:00
|
|
|
return this.dmpService.getPaged(dmpDataTableRequest, "profiles").pipe(map(x => x.data), map(x => x.filter(y => this.existsDatasetDescriptionTemplate(y.associatedProfiles))));
|
2019-03-28 15:53:17 +01:00
|
|
|
}
|
|
|
|
|
2019-11-07 15:37:07 +01:00
|
|
|
existsDatasetDescriptionTemplate(associatedProfiles: DmpAssociatedProfileModel[]): boolean {
|
|
|
|
return associatedProfiles.some((profile) => profile.id === this.data.datasetProfileId);
|
|
|
|
}
|
|
|
|
|
2019-03-28 15:53:17 +01:00
|
|
|
datasetProfileValidate() {
|
2019-09-23 10:17:03 +02:00
|
|
|
return this.dmpService.getSingle(this.data.formControl.value.id).pipe(map(result => result as DmpModel),
|
|
|
|
map(result => {
|
2019-03-28 15:53:17 +01:00
|
|
|
this.dmpModel = result
|
|
|
|
this.dmpModel.profiles.forEach((element) => {
|
|
|
|
if (element.id == this.data.datasetProfileId) {
|
|
|
|
this.data.datasetProfileExist = true;
|
|
|
|
}
|
|
|
|
})
|
2019-12-11 15:51:03 +01:00
|
|
|
}));
|
2019-03-28 15:53:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
getErrorMessage() {
|
|
|
|
return this.language.instant('DATASET-WIZARD.DIALOGUE.ERROR-MESSAGE');
|
|
|
|
}
|
|
|
|
|
|
|
|
hasValidDatasetProfile() {
|
|
|
|
if (this.data.datasetProfileExist) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
2019-11-07 15:37:07 +01:00
|
|
|
|
|
|
|
close() {
|
|
|
|
this.dialogRef.close(false);
|
|
|
|
}
|
2019-03-28 15:53:17 +01:00
|
|
|
}
|