import { Component, Input, OnInit } from '@angular/core'; import { ValidationErrorModel } from '../../../../../common/forms/validation/error-model/validation-error-model'; import { GrantListingModel } from '../../../../../core/model/grant/grant-listing'; import { DmpCriteria } from '../../../../../core/query/dmp/dmp-criteria'; import { DmpProfileCriteria } from '../../../../../core/query/dmp/dmp-profile-criteria'; import { BaseCriteriaComponent } from '../../../../misc/criteria/base-criteria.component'; import { DialodConfirmationUploadDmpProfiles } from './dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component'; import { MatDialog } from '@angular/material/dialog'; import { TranslateService } from '@ngx-translate/core'; import { takeUntil } from 'rxjs/operators'; import { DmpProfileService } from '../../../../../core/services/dmp/dmp-profile.service'; @Component({ selector: 'app-dmp-profile-criteria-component', templateUrl: './dmp-profile-criteria.component.html', styleUrls: ['./dmp-profile-criteria.component.scss'], }) export class DmpProfileCriteriaComponent extends BaseCriteriaComponent implements OnInit { @Input() showGrant: boolean; public criteria: DmpProfileCriteria = new DmpProfileCriteria(); filteringGrantsAsync = false; filteredGrants: GrantListingModel[]; constructor( private dmpProfileService: DmpProfileService, private dialog: MatDialog, private language: TranslateService ) { super(new ValidationErrorModel()); } ngOnInit() { super.ngOnInit(); if (this.criteria == null) { this.criteria = new DmpCriteria(); } } setCriteria(criteria: DmpProfileCriteria): void { this.criteria = criteria; } onCallbackError(error: any) { this.setErrorModel(error.error); } controlModified(): void { this.clearErrorModel(); if (this.refreshCallback != null && (this.criteria.like == null || this.criteria.like.length === 0 || this.criteria.like.length > 2) ) { this.refreshCallback(); } } openDialog(): void { const dialogRef = this.dialog.open(DialodConfirmationUploadDmpProfiles, { data: { message: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-TITLE'), confirmButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML'), cancelButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-CANCEL'), name: '', file: FileList, sucsess: false } }); dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => { if (data && data.sucsess && data.name != null && data.file != null) { this.dmpProfileService.uploadFile(data.file, data.name) .pipe(takeUntil(this._destroyed)) .subscribe(); } }); } }