From a03322b52d3fe6fd8da45fd9d53084934c2662ed Mon Sep 17 00:00:00 2001 From: Sylvain Monmignon Date: Tue, 22 Sep 2026 20:32:14 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Ajout=20d'une=20t=C3=A2che?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/model/Task.ts | 2 +- src/services/base.service.ts | 10 ++++++-- src/services/group.service.ts | 6 ++--- src/services/project.service.ts | 2 +- src/services/task.service.ts | 15 +++++++++-- src/view/pages/home/home.component.html | 22 +++++++++++++++++ src/view/pages/home/home.component.ts | 33 ++++++++++++++++++++++++- 7 files changed, 80 insertions(+), 10 deletions(-) diff --git a/src/model/Task.ts b/src/model/Task.ts index bd1f82f..e919881 100644 --- a/src/model/Task.ts +++ b/src/model/Task.ts @@ -1,6 +1,6 @@ export interface Task { date_task: Date; - id_group: number; + id_group?: number; id_task: number; name_task: string; priority_task: number; diff --git a/src/services/base.service.ts b/src/services/base.service.ts index 6e0e336..1060264 100644 --- a/src/services/base.service.ts +++ b/src/services/base.service.ts @@ -5,7 +5,13 @@ import { Observable } from 'rxjs'; @Service() export class BaseService { private readonly http: HttpClient = inject(HttpClient); - protected get(url: string):Observable { - return this.http.get(url); + private readonly baseAddress: string = "http://127.0.0.1:8080/"; + + protected get(url: string): Observable { + return this.http.get(this.baseAddress + url); + } + + protected post(url: string, body: T): Observable { + return this.http.post(this.baseAddress + url, body); } } diff --git a/src/services/group.service.ts b/src/services/group.service.ts index df125cc..82afbcb 100644 --- a/src/services/group.service.ts +++ b/src/services/group.service.ts @@ -3,8 +3,8 @@ import { BaseService } from './base.service'; import { Observable } from 'rxjs'; import { Group } from '../model/Group'; @Service() -export class GroupService extends BaseService{ - public getGroups():Observable{ - return this.get("http://127.0.0.1:8080/group"); +export class GroupService extends BaseService { + public getGroups(): Observable { + return this.get("group"); } } diff --git a/src/services/project.service.ts b/src/services/project.service.ts index f481c96..aba1862 100644 --- a/src/services/project.service.ts +++ b/src/services/project.service.ts @@ -6,6 +6,6 @@ import { Project } from '../model/Project'; @Service() export class ProjectService extends BaseService { public getProjects(): Observable { - return this.get("http://127.0.0.1:8080/project"); + return this.get("project"); } } diff --git a/src/services/task.service.ts b/src/services/task.service.ts index 2aaad94..c7a5597 100644 --- a/src/services/task.service.ts +++ b/src/services/task.service.ts @@ -4,8 +4,19 @@ import { Task } from '../model/Task'; import { BaseService } from './base.service'; @Service() -export class TaskService extends BaseService{ +export class TaskService extends BaseService { public getTasks(): Observable { - return this.get("http://127.0.0.1:8080/task"); + return this.get("task"); + } + + public addTask(name: string, dueDate: string | null, priority: string | null, status: string | null): Observable { + let body: Task = { + name_task: name, + date_task: new Date(dueDate!), + priority_task: parseInt(priority!), + status_task: status!, + id_task: 0 + } + return this.post("task/add", body); } } diff --git a/src/view/pages/home/home.component.html b/src/view/pages/home/home.component.html index c433b69..4ca957d 100644 --- a/src/view/pages/home/home.component.html +++ b/src/view/pages/home/home.component.html @@ -11,6 +11,28 @@ {{ task.name_task }}

} + + + + @if (showTaskForm){ +
+ + + + + + + + + + + + + +
+ }

diff --git a/src/view/pages/home/home.component.ts b/src/view/pages/home/home.component.ts index 9b90134..97992fc 100644 --- a/src/view/pages/home/home.component.ts +++ b/src/view/pages/home/home.component.ts @@ -6,9 +6,11 @@ import { GroupService } from '../../../services/group.service'; import { Group } from '../../../model/Group'; import { ProjectService } from '../../../services/project.service'; import { Project } from '../../../model/Project'; +import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; +import { Observable } from 'rxjs'; @Component({ - imports: [RouterOutlet], + imports: [RouterOutlet, ReactiveFormsModule], selector: 'app-root', styleUrl: './home.component.css', templateUrl: './home.component.html', @@ -22,6 +24,15 @@ export class Home { groups: WritableSignal = signal([]); projects: WritableSignal = signal([]); + newTaskForm = new FormGroup({ + name: new FormControl('', Validators.required), + dueDate: new FormControl(''), + priority: new FormControl(''), + status: new FormControl(''), + }); + + showTaskForm: boolean = false; + public ngOnInit(): void { this.taskService.getTasks().subscribe((response: Task[]): void => { this.tasks.set(response); @@ -35,4 +46,24 @@ export class Home { this.projects.set(response); }) } + + public toggleForm(): void { + this.showTaskForm = !this.showTaskForm; + } + + /** + * submitTask + */ + public submitTask(): void { + let response: Observable = this.taskService.addTask(this.newTaskForm.controls.name.value!, + this.newTaskForm.controls.dueDate.value, + this.newTaskForm.controls.priority.value, + this.newTaskForm.controls.status.value); + + response.subscribe(response => { + this.tasks.update(values => { + return [...values, response]; + }); + }); + } }