diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 06c7342..7e0c37c 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,8 +1,15 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; +import { TaskListComponent } from './task-list/task-list.component'; +import { UserstoryListComponent } from './userstory-list/userstory-list.component'; -const routes: Routes = []; + +const routes: Routes = [ + { path: 'tasks', component: TaskListComponent }, + { path: 'userstories', component: UserstoryListComponent }, + { path: '', redirectTo: '/tasks', pathMatch: 'full' }, +]; @NgModule({ imports: [RouterModule.forRoot(routes)], diff --git a/src/app/app.component.html b/src/app/app.component.html index 45f80e5..90c6b64 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 362e532..e6c683f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,32 +1,36 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { HttpClientModule } from '@angular/common/http'; - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; - -import { TaskListComponent } from './task-list/task-list.component'; -import { BackendService } from './services/backend.service'; -import { TaskFormComponent } from './task-form/task-form.component'; -import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; - -@NgModule({ - declarations: [ - AppComponent, - TaskListComponent, - TaskFormComponent - ], - imports: [ - BrowserModule, - AppRoutingModule, - HttpClientModule, - FormsModule, - NgbModule - ], - providers: [ - BackendService, - ], - bootstrap: [AppComponent] -}) -export class AppModule { } +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; + +import { BackendService } from './services/backend.service'; +import { TaskListComponent } from './task-list/task-list.component'; +import { TaskFormComponent } from './task-form/task-form.component'; +import { UserstoryListComponent } from './userstory-list/userstory-list.component'; +import { UserstoryFormComponent } from './userstory-form/userstory-form.component'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; + +@NgModule({ + declarations: [ + AppComponent, + TaskListComponent, + TaskFormComponent, + UserstoryListComponent, + UserstoryFormComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + HttpClientModule, + FormsModule, + NgbModule + ], + providers: [ + BackendService, + ], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/src/app/services/backend.service.ts b/src/app/services/backend.service.ts index f594207..9881f47 100644 --- a/src/app/services/backend.service.ts +++ b/src/app/services/backend.service.ts @@ -37,28 +37,28 @@ export class BackendService { - public getTasks(): Observable> { - const url = `${environment.apiUrl}/tasks`; - return this.httpClient.get(url, { observe: 'response' }); + public getUserstories(): Observable> { + const url = `${environment.apiUrl}/userstories`; + 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 getUserstory(id: number): Observable> { + const url = `${environment.apiUrl}/userstories/${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 postUserstory(userstory: ScrumUserstory): Observable> { + const url = `${environment.apiUrl}/userstories`; + return this.httpClient.post(url, userstory, { observe: 'response' }); } - public putTask(task: ScrumTask): Observable> { - const url = `${environment.apiUrl}/tasks/${task.id}`; - return this.httpClient.put(url, task, { observe: 'response' }); + public putUserstory(userstory: ScrumUserstory): Observable> { + const url = `${environment.apiUrl}/userstories/${userstory.id}`; + return this.httpClient.put(url, userstory, { observe: 'response' }); } - public deleteTask(task: ScrumTask): Observable> { - const url = `${environment.apiUrl}/tasks/${task.id}`; + public deleteUserstory(userstory: ScrumUserstory): Observable> { + const url = `${environment.apiUrl}/userstories/${userstory.id}`; return this.httpClient.delete(url, {observe: 'response'}); } diff --git a/src/app/task-form/task-form.component.ts b/src/app/task-form/task-form.component.ts index 379b991..832c55a 100644 --- a/src/app/task-form/task-form.component.ts +++ b/src/app/task-form/task-form.component.ts @@ -47,6 +47,6 @@ export class TaskFormComponent implements OnInit { }); } this.submitted = true; - this.activeModalService.close(); + this.activeModalService.close(this.task); } } diff --git a/src/app/task-list/task-list.component.ts b/src/app/task-list/task-list.component.ts index b9549d9..b8daf28 100644 --- a/src/app/task-list/task-list.component.ts +++ b/src/app/task-list/task-list.component.ts @@ -1,49 +1,54 @@ -import { Component, OnInit } from '@angular/core'; -import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import { BackendService, ScrumTask } from '../services/backend.service'; -import { TaskFormComponent } from '../task-form/task-form.component'; - -@Component({ - selector: 'app-task-list', - templateUrl: './task-list.component.html', - styleUrls: ['./task-list.component.css'] -}) -export class TaskListComponent implements OnInit { - - public tasks: ScrumTask[] = []; - - constructor(private backendService: BackendService, private modalService: NgbModal) { - backendService.getTasks().subscribe(response => { - if (response.status > 399) { - alert('Fehler'); - } - else { - this.tasks.push(...response.body); - } - }); - } - - ngOnInit(): void { - } - - public deleteTask(task: ScrumTask) { - this.backendService.deleteTask(task).subscribe(response => { - if (response.status > 399) { - alert('Fehler'); - } - }); - const index = this.tasks.indexOf(task); - if (index !== -1) { - this.tasks.splice(index, 1); - } - } - - public openTaskForm(editTask: ScrumTask) { - const modalRef = this.modalService.open(TaskFormComponent, { - backdrop: 'static', - keyboard: true, - }); - modalRef.componentInstance.task = editTask; - } - -} +import { Component, OnInit } from '@angular/core'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { BackendService, ScrumTask } from '../services/backend.service'; +import { TaskFormComponent } from '../task-form/task-form.component'; + +@Component({ + selector: 'app-task-list', + templateUrl: './task-list.component.html', + styleUrls: ['./task-list.component.css'] +}) +export class TaskListComponent implements OnInit { + + public tasks: ScrumTask[] = []; + + constructor(private backendService: BackendService, private modalService: NgbModal) { + backendService.getTasks().subscribe(response => { + if (response.status > 399) { + alert('Fehler'); + } + else { + this.tasks.push(...response.body); + } + }); + } + + ngOnInit(): void { + } + + public deleteTask(task: ScrumTask) { + this.backendService.deleteTask(task).subscribe(response => { + if (response.status > 399) { + alert('Fehler'); + } + }); + const index = this.tasks.indexOf(task); + if (index !== -1) { + this.tasks.splice(index, 1); + } + } + + public openTaskForm(editTask: ScrumTask) { + const modalRef = this.modalService.open(TaskFormComponent, { + backdrop: 'static', + keyboard: true, + }); + if (editTask === null) { + modalRef.result.then(result => { + this.tasks.push(result); + }); + } + modalRef.componentInstance.task = editTask; + } + +} diff --git a/src/app/userstory-form/userstory-form.component.css b/src/app/userstory-form/userstory-form.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/userstory-form/userstory-form.component.html b/src/app/userstory-form/userstory-form.component.html new file mode 100644 index 0000000..edb588c --- /dev/null +++ b/src/app/userstory-form/userstory-form.component.html @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/src/app/userstory-form/userstory-form.component.ts b/src/app/userstory-form/userstory-form.component.ts new file mode 100644 index 0000000..4fe28be --- /dev/null +++ b/src/app/userstory-form/userstory-form.component.ts @@ -0,0 +1,52 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; +import { BackendService, ScrumUserstory, Priority } from '../services/backend.service'; + +@Component({ + selector: 'app-userstory-form', + templateUrl: './userstory-form.component.html', + styleUrls: ['./userstory-form.component.css'] +}) +export class UserstoryFormComponent implements OnInit { + + public title: string; + public content: string; + public prio: Priority; + + @Input() + public userstory: ScrumUserstory; + private submitted: boolean; + + constructor(private backendService: BackendService, private activeModalService: NgbActiveModal) { } + + ngOnInit(): void { + if (this.userstory !== null && this.userstory !== undefined) { + this.title = this.userstory.title; + this.content = this.userstory.content; + this.prio = this.userstory.priority; + } + } + + onSubmit() { + if (this.userstory !== null && this.userstory !== undefined) { + this.userstory.title = this.title; + this.userstory.content = this.content; + this.userstory.priority = this.prio; + this.backendService.putUserstory(this.userstory).subscribe(response => { + if (response.status > 399) { + alert('Fehler'); + } + }); + } + else { + this.userstory = { title: this.title, content: this.content, priority: this.prio }; + this.backendService.postUserstory(this.userstory).subscribe(response => { + if (response.status > 399) { + alert('Fehler'); + } + }); + } + this.submitted = true; + this.activeModalService.close(this.userstory); + } +} diff --git a/src/app/userstory-list/userstory-list.component.html b/src/app/userstory-list/userstory-list.component.html index e69de29..fbee073 100644 --- a/src/app/userstory-list/userstory-list.component.html +++ b/src/app/userstory-list/userstory-list.component.html @@ -0,0 +1,14 @@ + + +
    +
  • + Titel: {{userstory.title}} +
    + Inhalt: {{userstory.content}} +
    + Priotität: {{userstory.priority}} +
    + + +
  • +
diff --git a/src/app/userstory-list/userstory-list.component.ts b/src/app/userstory-list/userstory-list.component.ts index 0942175..526f825 100644 --- a/src/app/userstory-list/userstory-list.component.ts +++ b/src/app/userstory-list/userstory-list.component.ts @@ -1,6 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { BackendService, ScrumUserstory } from '../services/backend.service'; +import { UserstoryFormComponent } from '../userstory-form/userstory-form.component'; @Component({ selector: 'app-userstory-list', @@ -42,6 +43,11 @@ export class UserstoryListComponent implements OnInit { backdrop: 'static', keyboard: true, }); + if (editUserstory === null) { + modalRef.result.then(result => { + this.userstories.push(result); + }); + } modalRef.componentInstance.userstory = editUserstory; }