import { Component } from '@angular/core'; import { BackendService, ScrumTask, ScrumStatus, ScrumUser, ScrumCategory, } from '../../../services/backend.service'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { TaskFormComponent } from '../../task-form/task-form.component'; import { TableComponentBase } from '../table-component.base'; import { ActivatedRoute, ParamMap, Router } from '@angular/router'; import { getNumberForPriority } from '../../../services/sorting.service'; import { NONE_TYPE } from '@angular/compiler'; @Component({ selector: 'app-task-table', templateUrl: './task-table.component.html', styleUrls: ['./task-table.component.css'], }) export class TaskTableComponent extends TableComponentBase { public filterUserstoryId: number | null = null; public filterPriority: string | null = null; public status: ScrumStatus[] = []; public users: ScrumUser[] = []; public categories: ScrumCategory[] = []; constructor( private backendService: BackendService, private modalService: NgbModal, protected route: ActivatedRoute, private router: Router ) { super(route); backendService.getTasks().subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.items.push(...response.body); } }); backendService.getAllStatus().subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.status.push(...response.body); } }); backendService.getUsers().subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.users.push(...response.body); } }); backendService.getCategories().subscribe((response) => { if (response.status > 399) { alert('Fehler'); } else { this.categories.push(...response.body); } }); } //#region getters public get filteredItems() { return this.items.filter( (task) => (this.filterUserstoryId === null || task.userstoryid === this.filterUserstoryId) && (this.filterPriority === null || task.priority === this.filterPriority) ); } getStatusTitleById(id) { var status = this.status.find((x) => x.id === id); if (!status) { return 'N/A'; } return status.title; } getUserNameById(id) { var user = this.users.find((x) => x.id === id); if (!user) { return 'N/A'; } return user.name; } getCategoryTitleById(id) { var category = this.categories.find((x) => x.id === id); if (!category) { return 'N/A'; } return category.title; } //#endregion getters //#region taskTableFunctions public deleteTask(task: ScrumTask) { this.backendService.deleteTask(task).subscribe((response) => { if (response.status > 399) { alert('Fehler'); } }); const index = this.items.indexOf(task); if (index !== -1) { this.items.splice(index, 1); } } //#endregion taskTableFunctions //#region sorters sortByPrio() { this.doNumericSort('priority', (task) => getNumberForPriority(task.priority) ); } sortByTasks() { this.doNumericSort('userstory', (task) => task.userstoryid); } sortByStatus() { this.doNumericSort('statusid', (task) => task.statusid); } sortByAssigned() { this.doNumericSort('assignedtoid', (task) => task.assignedtoid); } sortByCategory() { this.doNumericSort('categoryid', (task) => task.categoryid); } //#endregion sorters //#region modals public openTaskForm(editTask?: ScrumTask) { const modalRef = this.modalService.open(TaskFormComponent, { backdrop: 'static', keyboard: true, size: 'lg', }); if (editTask === null) { modalRef.result.then((result) => { this.items.push(result); }); } modalRef.componentInstance.task = editTask; } //#endregion modals }