argos/dmp-frontend/src/app/ui/description/start-new-description-dialog/start-new-description-dialo...

100 lines
3.9 KiB
TypeScript
Raw Normal View History

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';
2024-03-19 17:27:30 +01:00
import { IsActive } from '@app/core/common/enum/is-active.enum';
import { DescriptionTemplatesInSection, DmpBlueprint, DmpBlueprintDefinition, DmpBlueprintDefinitionSection } from '@app/core/model/dmp-blueprint/dmp-blueprint';
2023-12-29 16:04:16 +01:00
import { Dmp } from '@app/core/model/dmp/dmp';
2024-03-19 17:27:30 +01:00
import { DmpDescriptionTemplateLookup } from '@app/core/query/dmp-description-template.lookup';
import { DmpLookup } from '@app/core/query/dmp.lookup';
2023-12-28 16:18:49 +01:00
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';
2024-03-19 17:27:30 +01:00
import { FilterService } from '@common/modules/text-filter/filter-service';
import { Guid } from '@common/types/guid';
2020-09-18 13:14:48 +02:00
import { TranslateService } from '@ngx-translate/core';
import { map } from 'rxjs/operators';
2024-03-19 17:27:30 +01:00
import { nameof } from 'ts-simple-nameof';
2020-09-18 13:14:48 +02:00
@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;
2024-03-19 17:27:30 +01:00
public sections: DmpBlueprintDefinitionSection[] = [];
2020-09-18 13:14:48 +02:00
dmpAutoCompleteConfiguration: SingleAutoCompleteConfiguration = {
2024-03-19 17:27:30 +01:00
initialItems: (data?: any) => this.dmpService.query(this.buildAutocompleteLookup()).pipe(map(x => x.items)),
filterFn: (searchQuery: string, data?: any) => this.dmpService.query(this.buildAutocompleteLookup(searchQuery)).pipe(map(x => x.items)),
getSelectedItem: (selectedItem: any) => this.dmpService.query(this.buildAutocompleteLookup(null, null, [selectedItem])).pipe(map(x => x.items[0])),
displayFn: (item: Dmp) => item.label,
titleFn: (item: Dmp) => item.label,
valueAssign: (item: Dmp) => item.id,
2020-09-18 13:14:48 +02:00
};
2024-03-19 17:27:30 +01:00
private buildAutocompleteLookup(like?: string, excludedIds?: Guid[], ids?: Guid[], statuses?: DmpStatus[], dmpDescriptionTemplateSubQuery?: DmpDescriptionTemplateLookup): DmpLookup {
const lookup: DmpLookup = new DmpLookup();
lookup.page = { size: 100, offset: 0 };
if (excludedIds && excludedIds.length > 0) { lookup.excludedIds = excludedIds; }
if (ids && ids.length > 0) { lookup.ids = ids; }
lookup.isActive = [IsActive.Active];
lookup.statuses = [DmpStatus.Draft];
lookup.project = {
fields: [
nameof<Dmp>(x => x.id),
nameof<Dmp>(x => x.label),
nameof<Dmp>(x => x.createdAt),
]
};
if (dmpDescriptionTemplateSubQuery != null) lookup.dmpDescriptionTemplateSubQuery = dmpDescriptionTemplateSubQuery;
lookup.order = { items: [nameof<Dmp>(x => x.label)] };
if (like) { lookup.like = this.filterService.transformLike(like); }
return lookup;
}
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,
2024-03-19 17:27:30 +01:00
private dmpService: DmpService,
private filterService: FilterService,
2020-09-18 13:14:48 +02:00
) {
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);
}
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;
}
}