argos/dmp-frontend/src/app/ui/dmp/editor/project-tab/project-tab.component.ts

72 lines
2.4 KiB
TypeScript

import { Component, OnInit, Input } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { SingleAutoCompleteConfiguration } from '../../../../library/auto-complete/single/single-auto-complete-configuration';
import { RequestItem } from '../../../../core/query/request-item';
import { ProjectCriteria } from '../../../../core/query/project/project-criteria';
import { ProjectService } from '../../../../core/services/project/project.service';
import { LanguageResolverService } from '../../../../services/language-resolver/language-resolver.service';
import { ProjectTabModel } from './project-tab-model';
@Component({
selector: 'app-project-tab',
templateUrl: './project-tab.component.html',
styleUrls: ['./project-tab.component.scss']
})
export class ProjectTabComponent implements OnInit {
@Input() formGroup: FormGroup;
@Input() isNew: boolean;
@Input() isFinalized: boolean;
isCreateNew = false;
project: ProjectTabModel;
projectAutoCompleteConfiguration: SingleAutoCompleteConfiguration;
constructor(
private projectService: ProjectService,
public languageResolverService: LanguageResolverService
) { }
ngOnInit() {
const projectRequestItem: RequestItem<ProjectCriteria> = new RequestItem();
projectRequestItem.criteria = new ProjectCriteria();
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 ProjectTabModel();
this.formGroup = this.project.buildForm();
}
}
searchProject(query: string) {
const projectRequestItem: RequestItem<ProjectCriteria> = new RequestItem();
projectRequestItem.criteria = new ProjectCriteria();
projectRequestItem.criteria.like = query;
return this.projectService.getWithExternal(projectRequestItem);
}
create() {
this.isCreateNew = !this.isCreateNew;
if (this.isCreateNew) {
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();
}
}
}