67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
|
import { Component, OnInit, Input } from '@angular/core';
|
||
|
import { SingleAutoCompleteConfiguration } from '../../../library/auto-complete/single/single-auto-complete-configuration';
|
||
|
import { FormGroup } from '@angular/forms';
|
||
|
import { ProjectService } from '../../../core/services/project/project.service';
|
||
|
import { RequestItem } from '../../../core/query/request-item';
|
||
|
import { ProjectCriteria } from '../../../core/query/project/project-criteria';
|
||
|
import { ProjectFormModel } from '../../dmp/editor/grant-tab/project-form-model';
|
||
|
|
||
|
@Component({
|
||
|
selector: 'app-quick-wizard-project-editor-component',
|
||
|
templateUrl: './project-editor-wizard.component.html',
|
||
|
styleUrls: ['./project-editor-wizard.component.scss']
|
||
|
})
|
||
|
export class ProjectEditorWizardComponent implements OnInit {
|
||
|
|
||
|
isNew = false;
|
||
|
project: ProjectFormModel;
|
||
|
@Input() formGroup: FormGroup;
|
||
|
projectAutoCompleteConfiguration: SingleAutoCompleteConfiguration;
|
||
|
|
||
|
constructor(
|
||
|
private projectService: ProjectService
|
||
|
) { }
|
||
|
|
||
|
ngOnInit() {
|
||
|
this.projectAutoCompleteConfiguration = {
|
||
|
filterFn: this.searchProject.bind(this),
|
||
|
initialItems: (extraData) => this.searchProject(''),
|
||
|
displayFn: (item) => item['label'],
|
||
|
titleFn: (item) => item['label']
|
||
|
};
|
||
|
|
||
|
if (!this.formGroup) {
|
||
|
this.project = new ProjectFormModel();
|
||
|
this.formGroup = this.project.buildForm();
|
||
|
}
|
||
|
|
||
|
this.formGroup.get('existProject').enable();
|
||
|
this.formGroup.get('label').disable();
|
||
|
this.formGroup.get('description').disable();
|
||
|
}
|
||
|
|
||
|
searchProject(query: string) {
|
||
|
const projectRequestItem: RequestItem<ProjectCriteria> = new RequestItem();
|
||
|
projectRequestItem.criteria = new ProjectCriteria();
|
||
|
projectRequestItem.criteria.like = query;
|
||
|
return this.projectService.getWithExternal(projectRequestItem);
|
||
|
}
|
||
|
|
||
|
create() {
|
||
|
this.isNew = !this.isNew;
|
||
|
if (this.isNew) {
|
||
|
this.formGroup.get('existProject').disable();
|
||
|
this.formGroup.get('existProject').reset();
|
||
|
this.formGroup.get('label').enable();
|
||
|
this.formGroup.get('description').enable();
|
||
|
} else {
|
||
|
this.formGroup.get('existProject').enable();
|
||
|
this.formGroup.get('label').disable();
|
||
|
this.formGroup.get('label').reset();
|
||
|
this.formGroup.get('description').disable();
|
||
|
this.formGroup.get('description').reset();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|