Add complete task functionality (#71)

closes #61
closes #58

Reviewed-on: #71
This commit is contained in:
Huffle 2025-05-19 09:07:51 +02:00
parent f04529067a
commit 5bcbde46ea
4 changed files with 30 additions and 10 deletions

View File

@ -15,13 +15,15 @@
<mat-icon>filter_alt</mat-icon> <mat-icon>filter_alt</mat-icon>
</div> </div>
<div class="list"> <div class="list">
<div class="task" (click)="updateTask(task.id)" *ngFor="let task of tasks$ | async"> <div class="task" *ngFor="let task of tasks$ | async">
<button>Done</button> <button (click)="completeTask(task.id)">Done</button>
<div class="name">{{ task.name }}</div> <div (click)="updateTask(task.id)" class="item">
<div <div class="name">{{ task.name }}</div>
class="reward" <div
[ngClass]="{ 'negative': task.reward < 0 }" class="reward"
>{{ task.reward.toFixed(2) }} SP</div> [ngClass]="{ 'negative': task.reward < 0 }"
>{{ task.reward.toFixed(2) }} SP</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -33,6 +33,13 @@ mat-icon {
padding: 5px; padding: 5px;
} }
.item {
display: flex;
flex-direction: row;
align-items: center;
width: 100%;
}
.name { .name {
margin-left: 10px; margin-left: 10px;
color: var(--font-color); color: var(--font-color);

View File

@ -28,9 +28,11 @@ export class TasksPage implements ViewWillEnter {
} }
getTasks() { getTasks() {
this.taskService.getTaskList().subscribe(tasks => { setTimeout(() => {
this.tasks$.next(tasks); this.taskService.getTaskList().subscribe(tasks => {
}); this.tasks$.next(tasks);
});
}, 1)
} }
createTask() { createTask() {
@ -40,4 +42,9 @@ export class TasksPage implements ViewWillEnter {
updateTask(id: number) { updateTask(id: number) {
this.router.navigate(['edit', id], { relativeTo: this.route }); this.router.navigate(['edit', id], { relativeTo: this.route });
} }
completeTask(id: number) {
this.taskService.completeTask(id);
this.getTasks();
}
} }

View File

@ -26,4 +26,8 @@ export class TaskService {
updateTask(id: number, task: Partial<Task>) { updateTask(id: number, task: Partial<Task>) {
this.http.put(`${this.url}/task/${id}`, task).subscribe(); this.http.put(`${this.url}/task/${id}`, task).subscribe();
} }
completeTask(id: number) {
this.http.post(`${this.url}/task/${id}/complete`, {}).subscribe();
}
} }