import { Component, OnInit, Input } from '@angular/core'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { BackendService, ScrumTask, Priority, ScrumStatus, ScrumCategory, ScrumUser, ScrumProject, ScrumUserstory } from '../services/backend.service'; import { Observable } from 'rxjs'; import { HttpResponse } from '@angular/common/http'; @Component({ selector: 'app-task-form', templateUrl: './task-form.component.html', styleUrls: [ './task-form.component.css' ] }) export class TaskFormComponent implements OnInit { @Input() public task: ScrumTask; public editing: boolean; public creating: boolean; public userstoryId: string; public userstories: any[] = []; public allStatus: any[] = []; public status: ScrumStatus = {title: "", description: ""}; public allUser: any[] = []; public user: ScrumUser = { name: "" }; constructor(private backendService: BackendService, private activeModalService: NgbActiveModal) { this.getUserStories(); this.getTaskStatus(); this.getAllUsers(); } ngOnInit(): void { if (this.task === null || this.task === undefined) { this.task = { title: '' }; this.editing = false; this.creating = false; } else if (this.task.userstoryid) { this.editing = true; } else { this.creating = true; } document.getElementById('titleField').focus(); this.getRelatedStory(); } onSubmit() { if (this.editing) { this.backendService.putTask(this.task).subscribe((response) => { if (response.status > 399) { alert('Fehler'); } }); } else { this.backendService.postTask(this.task).subscribe((response) => { if (response.status > 399) { alert('Fehler'); } }); } this.activeModalService.close(this.task); } onClose() { this.activeModalService.dismiss(this.task); } getRelatedStory() { if(!this.task.userstoryid) { return null; } this.backendService.getUserstory(this.task.userstoryid).subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.userstoryId = response.body.title; } }); } getUserStories() { this.backendService.getUserstories().subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.userstories.push(...response.body); } }); } getTaskStatus() { this.backendService.getAllStatus().subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.allStatus.push(...response.body); } }); } createTaskStatus(status:ScrumStatus) { this.backendService.postStatus(status).subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.allStatus.push(response.body); } }); } deleteStatus(id: number) { var status = this.allStatus.find((x) => x.id === id); this.backendService.deleteStatus(status).subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { const index = this.allStatus.indexOf(status); if (index !== -1) { this.allStatus.splice(index, 1); } } this.task.statusid=null; }); } getAllPriorities(): Priority[] { return Object.values(Priority); } getUserstoryTitleById(id: number): string{ if (!id) { return null; } var story = this.userstories.find((x) => x.id === id); if (!story) { return null; } return story.title; } getStatusTitleById(id: number) :string{ if (!id) { return null; } var status = this.allStatus.find((x) => x.id === id); if (!status) { return null; } return status.title; } // Methods for choosing creator of a userstory. getAllUsers() { this.backendService.getUsers().subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.allUser.push(...response.body); } }); } getAuthorById(id: number): string { if (!id) { return null; } var user = this.allUser.find((x) => x.id === id); if (!user) { return null; } return user.name; } }