-
-
{{ task.name }}
-
{{ task.reward.toFixed(2) }} SP
+
+
+ filter_alt
+
+
+
+
+
{{ task.name }}
+
{{ task.reward.toFixed(2) }} SP
+
diff --git a/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.scss b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.scss
index aa15767..999a793 100644
--- a/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.scss
+++ b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.scss
@@ -1,3 +1,13 @@
+.toolbar {
+ display: flex;
+}
+
+.content {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
.icon {
padding: 5px;
display: flex;
@@ -44,4 +54,10 @@ button {
border-radius: 10px;
color: white;
background: var(--confirm-button-color);
+}
+
+.add-button {
+ background-color: var(--ion-color-primary);
+ margin-right: 15px;
+ width: 75px;
}
\ No newline at end of file
diff --git a/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.ts b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.ts
index acec48c..f5970db 100644
--- a/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.ts
+++ b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.ts
@@ -1,24 +1,39 @@
-import { Component, OnInit } from '@angular/core';
+import { ChangeDetectionStrategy, Component } from '@angular/core';
import { TaskService } from 'src/app/services/task.service';
import { Task } from 'src/app/models/task';
+import { ActivatedRoute, Router } from '@angular/router';
+import { BehaviorSubject } from 'rxjs';
+import { ViewWillEnter } from '@ionic/angular';
@Component({
selector: 'app-tasks',
templateUrl: 'tasks.page.html',
styleUrls: ['tasks.page.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false,
})
-export class TasksPage implements OnInit {
- public tasks: Array
= [];
+export class TasksPage implements ViewWillEnter {
+ public tasks$: BehaviorSubject> = new BehaviorSubject>([]);
constructor(
- private taskService: TaskService
- ) {}
+ private taskService: TaskService,
+ private router: Router,
+ private route: ActivatedRoute
+ ) {
+ this.getTasks();
+ }
- ngOnInit(): void {
+ ionViewWillEnter(): void {
+ this.getTasks();
+ }
+
+ getTasks() {
this.taskService.getTaskList().subscribe(tasks => {
- this.tasks = tasks;
+ this.tasks$.next(tasks);
});
}
+ createTask() {
+ this.router.navigate(['add'], { relativeTo: this.route });
+ }
}
diff --git a/frontend/allowance-planner-v2/src/app/services/task.service.ts b/frontend/allowance-planner-v2/src/app/services/task.service.ts
index 5d4890c..ed1179b 100644
--- a/frontend/allowance-planner-v2/src/app/services/task.service.ts
+++ b/frontend/allowance-planner-v2/src/app/services/task.service.ts
@@ -7,10 +7,19 @@ import { Task } from '../models/task';
providedIn: 'root'
})
export class TaskService {
- private url = 'http://localhost:8080/api'
+ private url = 'http://localhost:8080/api';
+
constructor(private http: HttpClient) {}
getTaskList(): Observable> {
return this.http.get(`${this.url}/tasks`);
}
+
+ getTaskById(taskId: number): Observable {
+ return this.http.get(`${this.url}/task/${taskId}`);
+ }
+
+ createTask(task: Partial) {
+ this.http.post(`${this.url}/tasks`, task).subscribe();
+ }
}
\ No newline at end of file