diff --git a/src/app/services/backend.service.ts b/src/app/services/backend.service.ts index 98433f0..16e165f 100644 --- a/src/app/services/backend.service.ts +++ b/src/app/services/backend.service.ts @@ -1,56 +1,107 @@ -import {Injectable} from '@angular/core'; -import {HttpClient, HttpResponse} from '@angular/common/http'; -import {Observable} from 'rxjs'; -import {environment} from '../../environments/environment'; - - -@Injectable() -export class BackendService { - - constructor(private httpClient: HttpClient) {} - - public getTasks(): Observable> { - const url = `${environment.apiUrl}/tasks`; - return this.httpClient.get(url, { observe: 'response' }); - } - - public getTask(id: number): Observable> { - const url = `${environment.apiUrl}/tasks/${id}`; - return this.httpClient.get(url, { observe: 'response' }); - } - - public postTask(task: Task): Observable> { - const url = `${environment.apiUrl}/tasks`; - return this.httpClient.post(url, task, { observe: 'response' }); - } - - public putTask(task: Task): Observable> { - const url = `${environment.apiUrl}/tasks/${task.id}`; - return this.httpClient.put(url, task, { observe: 'response' }); - } - - public deleteTask(task: Task): Observable> { - const url = `${environment.apiUrl}/tasks/${task.id}`; - return this.httpClient.delete(url, {observe: 'response'}); - } - -} - -export enum Priority { - High="high", - Medium="medium", - Low="low" -} - -export interface Task { - id?: number; - title: string; - content?: string; - status?: number; - category?: number; - assignedto?: number; - sprint?: number; - project?: number; - userstory?: number; - priority?: Priority; -} \ No newline at end of file +import {Injectable} from '@angular/core'; +import {HttpClient, HttpResponse} from '@angular/common/http'; +import {Observable} from 'rxjs'; +import {environment} from '../../environments/environment'; + + +@Injectable() +export class BackendService { + + constructor(private httpClient: HttpClient) {} + + public getTasks(): Observable> { + const url = `${environment.apiUrl}/tasks`; + return this.httpClient.get(url, { observe: 'response' }); + } + + public getTask(id: number): Observable> { + const url = `${environment.apiUrl}/tasks/${id}`; + return this.httpClient.get(url, { observe: 'response' }); + } + + public postTask(task: ScrumTask): Observable> { + const url = `${environment.apiUrl}/tasks`; + return this.httpClient.post(url, task, { observe: 'response' }); + } + + public putTask(task: ScrumTask): Observable> { + const url = `${environment.apiUrl}/tasks/${task.id}`; + return this.httpClient.put(url, task, { observe: 'response' }); + } + + public deleteTask(task: ScrumTask): Observable> { + const url = `${environment.apiUrl}/tasks/${task.id}`; + return this.httpClient.delete(url, {observe: 'response'}); + } + + + + +} + +export enum Priority { + High="high", + Medium="medium", + Low="low" +} + +export interface ScrumTask { + id?: number; + title: string; + content?: string; + status?: number; + category?: number; + assignedto?: number; + sprint?: number; + project?: number; + userstory?: number; + priority?: Priority; +} + +export interface ScrumUserstory { + id?: number; + title: string; + content?: string; + priority?: Priority; + status?: number; + category?: number; + createdby?: number; + project?: number; +} + +export interface ScrumSprint{ + id?: number; + title: string; + description: string; + startDate: Date; + endDate: Date; + project: number; +} + +export interface ScrumCategory { + id?: number; + title: string; + description?: string; + color?: string; + project: number; +} + +export interface ScrumStatus { + id? : number; + title: string; + description: string; +} + + +export interface ScrumUser { + id?: number; + name: string; +} + +export interface ScrumProject { + id?: number; + title: string; + isprivate: boolean; +} + + diff --git a/src/app/task-form/task-form.component.ts b/src/app/task-form/task-form.component.ts index 6f34dae..379b991 100644 --- a/src/app/task-form/task-form.component.ts +++ b/src/app/task-form/task-form.component.ts @@ -1,52 +1,52 @@ -import { Component, OnInit, Input } from '@angular/core'; -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; -import { BackendService, Task, Priority } from '../services/backend.service'; - -@Component({ - selector: 'app-task-form', - templateUrl: './task-form.component.html', - styleUrls: ['./task-form.component.css'] -}) -export class TaskFormComponent implements OnInit { - - public title: string; - public content: string; - public prio: Priority; - - @Input() - public task: Task; - private submitted: boolean; - - constructor(private backendService: BackendService, private activeModalService: NgbActiveModal) { } - - ngOnInit(): void { - if (this.task !== null && this.task !== undefined) { - this.title = this.task.title; - this.content = this.task.content; - this.prio = this.task.priority; - } - } - - onSubmit() { - if (this.task !== null && this.task !== undefined) { - this.task.title = this.title; - this.task.content = this.content; - this.task.priority = this.prio; - this.backendService.putTask(this.task).subscribe(response => { - if (response.status > 399) { - alert('Fehler'); - } - }); - } - else { - this.task = { title: this.title, content: this.content, priority: this.prio }; - this.backendService.postTask(this.task).subscribe(response => { - if (response.status > 399) { - alert('Fehler'); - } - }); - } - this.submitted = true; - this.activeModalService.close(); - } -} +import { Component, OnInit, Input } from '@angular/core'; +import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; +import { BackendService, ScrumTask, Priority } from '../services/backend.service'; + +@Component({ + selector: 'app-task-form', + templateUrl: './task-form.component.html', + styleUrls: ['./task-form.component.css'] +}) +export class TaskFormComponent implements OnInit { + + public title: string; + public content: string; + public prio: Priority; + + @Input() + public task: ScrumTask; + private submitted: boolean; + + constructor(private backendService: BackendService, private activeModalService: NgbActiveModal) { } + + ngOnInit(): void { + if (this.task !== null && this.task !== undefined) { + this.title = this.task.title; + this.content = this.task.content; + this.prio = this.task.priority; + } + } + + onSubmit() { + if (this.task !== null && this.task !== undefined) { + this.task.title = this.title; + this.task.content = this.content; + this.task.priority = this.prio; + this.backendService.putTask(this.task).subscribe(response => { + if (response.status > 399) { + alert('Fehler'); + } + }); + } + else { + this.task = { title: this.title, content: this.content, priority: this.prio }; + this.backendService.postTask(this.task).subscribe(response => { + if (response.status > 399) { + alert('Fehler'); + } + }); + } + this.submitted = true; + this.activeModalService.close(); + } +} diff --git a/src/app/task-list/task-list.component.ts b/src/app/task-list/task-list.component.ts index 452ca44..b9549d9 100644 --- a/src/app/task-list/task-list.component.ts +++ b/src/app/task-list/task-list.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import { BackendService, Task } from '../services/backend.service'; +import { BackendService, ScrumTask } from '../services/backend.service'; import { TaskFormComponent } from '../task-form/task-form.component'; @Component({ @@ -10,7 +10,7 @@ import { TaskFormComponent } from '../task-form/task-form.component'; }) export class TaskListComponent implements OnInit { - public tasks: Task[] = []; + public tasks: ScrumTask[] = []; constructor(private backendService: BackendService, private modalService: NgbModal) { backendService.getTasks().subscribe(response => { @@ -26,7 +26,7 @@ export class TaskListComponent implements OnInit { ngOnInit(): void { } - public deleteTask(task: Task) { + public deleteTask(task: ScrumTask) { this.backendService.deleteTask(task).subscribe(response => { if (response.status > 399) { alert('Fehler'); @@ -38,7 +38,7 @@ export class TaskListComponent implements OnInit { } } - public openTaskForm(editTask: Task) { + public openTaskForm(editTask: ScrumTask) { const modalRef = this.modalService.open(TaskFormComponent, { backdrop: 'static', keyboard: true, diff --git a/src/app/userstory-list/userstory-list.component.css b/src/app/userstory-list/userstory-list.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/userstory-list/userstory-list.component.html b/src/app/userstory-list/userstory-list.component.html new file mode 100644 index 0000000..e69de29 diff --git a/src/app/userstory-list/userstory-list.component.ts b/src/app/userstory-list/userstory-list.component.ts new file mode 100644 index 0000000..0942175 --- /dev/null +++ b/src/app/userstory-list/userstory-list.component.ts @@ -0,0 +1,48 @@ +import { Component, OnInit } from '@angular/core'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { BackendService, ScrumUserstory } from '../services/backend.service'; + +@Component({ + selector: 'app-userstory-list', + templateUrl: './userstory-list.component.html', + styleUrls: ['./userstory-list.component.css'] +}) +export class UserstoryListComponent implements OnInit { + + public userstories: ScrumUserstory[] = []; + + constructor(private backendService: BackendService, private modalService: NgbModal) { + backendService.getUserstories().subscribe(response => { + if (response.status > 399) { + alert('Fehler'); + } + else { + this.userstories.push(...response.body); + } + }); + } + + ngOnInit(): void { + } + + public deleteUserstory(userstory: ScrumUserstory) { + this.backendService.deleteUserstory(userstory).subscribe(response => { + if (response.status > 399) { + alert('Fehler'); + } + }); + const index = this.userstories.indexOf(userstory); + if (index !== -1) { + this.userstories.splice(index, 1); + } + } + + public openUserstoryForm(editUserstory: ScrumUserstory) { + const modalRef = this.modalService.open(UserstoryFormComponent, { + backdrop: 'static', + keyboard: true, + }); + modalRef.componentInstance.userstory = editUserstory; + } + +}