2020-09-18 13:14:48 +02:00
|
|
|
import { Component, Inject } from '@angular/core';
|
2023-12-28 16:18:49 +01:00
|
|
|
import { UntypedFormGroup } from '@angular/forms';
|
|
|
|
import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
|
|
import { DmpStatus } from '@app/core/common/enum/dmp-status';
|
|
|
|
import { DataTableRequest } from '@app/core/model/data-table/data-table-request';
|
|
|
|
import { DmpListingModel } from '@app/core/model/dmp/dmp-listing';
|
|
|
|
import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria';
|
|
|
|
import { DmpService } from '@app/core/services/dmp/dmp.service';
|
2020-09-18 13:14:48 +02:00
|
|
|
import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration';
|
2023-12-28 16:18:49 +01:00
|
|
|
import { BaseComponent } from '@common/base/base.component';
|
2020-09-18 13:14:48 +02:00
|
|
|
import { TranslateService } from '@ngx-translate/core';
|
|
|
|
import { Observable } from 'rxjs';
|
|
|
|
import { map } from 'rxjs/operators';
|
|
|
|
|
|
|
|
@Component({
|
2023-12-28 16:18:49 +01:00
|
|
|
selector: 'app-start-new-description-dialog',
|
|
|
|
templateUrl: './start-new-description-dialog.component.html',
|
|
|
|
styleUrls: ['./start-new-description-dialog.component.scss']
|
2020-09-18 13:14:48 +02:00
|
|
|
})
|
2023-12-28 16:18:49 +01:00
|
|
|
export class StartNewDescriptionDialogComponent extends BaseComponent {
|
2020-09-18 13:14:48 +02:00
|
|
|
|
|
|
|
public isDialog: boolean = false;
|
2023-10-05 15:39:17 +02:00
|
|
|
public formGroup: UntypedFormGroup;
|
2020-09-18 13:14:48 +02:00
|
|
|
|
|
|
|
dmpAutoCompleteConfiguration: SingleAutoCompleteConfiguration = {
|
|
|
|
filterFn: this.searchDmp.bind(this),
|
|
|
|
initialItems: (extraData) => this.searchDmp(''),
|
|
|
|
displayFn: (item) => this.getDatasetDisplay(item),
|
|
|
|
titleFn: (item) => item['label'],
|
2023-12-28 16:18:49 +01:00
|
|
|
subtitleFn: (item) => { try { return this.language.instant('DATASET-WIZARD.FIRST-STEP.SUB-TITLE') + new Date(item['creationTime']).toISOString(); } catch { return '-'; } }
|
2020-09-18 13:14:48 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
constructor(
|
2023-12-28 16:18:49 +01:00
|
|
|
public dialogRef: MatDialogRef<StartNewDescriptionDialogComponent>,
|
2020-09-18 13:14:48 +02:00
|
|
|
@Inject(MAT_DIALOG_DATA) public data: any,
|
|
|
|
public dialog: MatDialog,
|
|
|
|
private language: TranslateService,
|
|
|
|
private dmpService: DmpService
|
|
|
|
) {
|
|
|
|
super();
|
|
|
|
this.formGroup = data.formGroup;
|
|
|
|
}
|
|
|
|
|
|
|
|
cancel() {
|
|
|
|
this.dialogRef.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
send() {
|
|
|
|
this.dialogRef.close(this.data);
|
|
|
|
}
|
|
|
|
|
|
|
|
close() {
|
|
|
|
this.dialogRef.close(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
next() {
|
|
|
|
this.dialogRef.close(this.data);
|
|
|
|
}
|
|
|
|
|
|
|
|
startNewDmp() {
|
|
|
|
this.data.startNewDmp = true;
|
|
|
|
this.dialogRef.close(this.data);
|
|
|
|
}
|
|
|
|
|
|
|
|
searchDmp(query: string): Observable<DmpListingModel[]> {
|
|
|
|
const fields: Array<string> = new Array<string>();
|
|
|
|
fields.push('-created');
|
|
|
|
const dmpDataTableRequest: DataTableRequest<DmpCriteria> = new DataTableRequest(0, null, { fields: fields });
|
|
|
|
dmpDataTableRequest.criteria = new DmpCriteria();
|
|
|
|
dmpDataTableRequest.criteria.like = query;
|
|
|
|
dmpDataTableRequest.criteria.status = DmpStatus.Draft;
|
|
|
|
return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data));
|
|
|
|
}
|
|
|
|
|
|
|
|
getDatasetDisplay(item: any): string {
|
|
|
|
// if (!this.isPublic) {
|
|
|
|
// return (item['status'] ? this.language.instant('TYPES.DATASET-STATUS.FINALISED').toUpperCase() : this.language.instant('TYPES.DATASET-STATUS.DRAFT').toUpperCase()) + ': ' + item['label'];
|
|
|
|
// }
|
|
|
|
// else { return item['label']; }
|
|
|
|
return item['label'] ? item['label'] : null;
|
|
|
|
}
|
|
|
|
}
|