diff --git a/README.md b/README.md
index 4638ab0..9760ed8 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,15 @@
An improved Allowance Planner app.
## Running backend
-In order to run the backend, go to the `backend directory and run:
+In order to run the backend, go to the `backend` directory and run:
```bash
$ go run .
```
+
+## Running frontend
+In order to run the frontend, go to the `allowance-planner-v2` directory in the `frontend` directory and run:
+
+```bash
+$ ionic serve
+```
diff --git a/frontend/allowance-planner-v2/src/app/app-routing.module.ts b/frontend/allowance-planner-v2/src/app/app-routing.module.ts
index ffe16e8..2750f02 100644
--- a/frontend/allowance-planner-v2/src/app/app-routing.module.ts
+++ b/frontend/allowance-planner-v2/src/app/app-routing.module.ts
@@ -11,6 +11,7 @@ const routes: Routes = [
path: '',
loadChildren: () => import('./pages/tabs/tabs.module').then(m => m.TabsPageModule)
},
+
];
@NgModule({
imports: [
diff --git a/frontend/allowance-planner-v2/src/app/app.module.ts b/frontend/allowance-planner-v2/src/app/app.module.ts
index a6c06b7..64e58db 100644
--- a/frontend/allowance-planner-v2/src/app/app.module.ts
+++ b/frontend/allowance-planner-v2/src/app/app.module.ts
@@ -3,11 +3,12 @@ import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
-import { Drivers, Storage } from '@ionic/storage';
+import { Drivers } from '@ionic/storage';
import { IonicStorageModule } from '@ionic/storage-angular';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
+import { ReactiveFormsModule } from '@angular/forms';
@NgModule({
declarations: [AppComponent],
@@ -15,6 +16,7 @@ import { AppComponent } from './app.component';
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
+ ReactiveFormsModule,
IonicStorageModule.forRoot({
name: '__mydb',
driverOrder: [Drivers.IndexedDB, Drivers.LocalStorage]
diff --git a/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task-routing.module.ts b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task-routing.module.ts
new file mode 100644
index 0000000..cd1cb56
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task-routing.module.ts
@@ -0,0 +1,17 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+
+import { EditTaskPage } from './edit-task.page';
+
+const routes: Routes = [
+ {
+ path: '',
+ component: EditTaskPage,
+ }
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class EditTaskPageRoutingModule {}
diff --git a/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.module.ts b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.module.ts
new file mode 100644
index 0000000..6e427b8
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.module.ts
@@ -0,0 +1,21 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+
+import { IonicModule } from '@ionic/angular';
+
+import { EditTaskPageRoutingModule } from './edit-task-routing.module';
+
+import { EditTaskPage } from './edit-task.page';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ IonicModule,
+ EditTaskPageRoutingModule,
+ ReactiveFormsModule
+ ],
+ declarations: [EditTaskPage]
+})
+export class EditTaskPageModule {}
diff --git a/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.html b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.html
new file mode 100644
index 0000000..012da72
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.html
@@ -0,0 +1,21 @@
+
+
+ Create Task
+ Edit Task
+
+
+
+
+
+
diff --git a/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.scss b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.scss
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.spec.ts b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.spec.ts
new file mode 100644
index 0000000..5887782
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.spec.ts
@@ -0,0 +1,17 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { EditTaskPage } from './edit-task.page';
+
+describe('EditTaskPage', () => {
+ let component: EditTaskPage;
+ let fixture: ComponentFixture;
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(EditTaskPage);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.ts b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.ts
new file mode 100644
index 0000000..3f464a6
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/edit-task/edit-task.page.ts
@@ -0,0 +1,46 @@
+import { Component, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { ActivatedRoute } from '@angular/router';
+import { TaskService } from 'src/app/services/task.service';
+
+@Component({
+ selector: 'app-edit-task',
+ templateUrl: './edit-task.page.html',
+ styleUrls: ['./edit-task.page.scss'],
+ standalone: false,
+})
+export class EditTaskPage implements OnInit {
+ form: FormGroup;
+ id: number;
+ isAddMode: boolean;
+
+ constructor(
+ private route: ActivatedRoute,
+ private formBuilder: FormBuilder,
+ private taskService: TaskService,
+ ) {
+ console.log('Test?')
+ this.id = this.route.snapshot.params['id'];
+ this.isAddMode = !this.id;
+
+ this.form = this.formBuilder.group({
+ name: ['', Validators.required],
+ reward: ['', Validators.required],
+ assigned: ['', Validators.required]
+ });
+ }
+
+ ngOnInit() {
+ console.log('Test?')
+ if (!this.isAddMode) {
+ this.taskService.getTaskById(this.id).subscribe(task => {
+ this.form.setValue({
+ name: task.name,
+ reward: task.reward,
+ assigned: task.assigned
+ })
+ });
+ }
+ }
+
+}
diff --git a/frontend/allowance-planner-v2/src/app/pages/tabs/tabs-routing.module.ts b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs-routing.module.ts
index 52d6683..60ba0ae 100644
--- a/frontend/allowance-planner-v2/src/app/pages/tabs/tabs-routing.module.ts
+++ b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs-routing.module.ts
@@ -17,7 +17,7 @@ const routes: Routes = [
},
{
path: 'tasks',
- loadChildren: () => import('../tasks/tasks.module').then(m => m.TasksPageModule)
+ loadChildren: () => import('../tasks/tasks.module').then(m => m.TasksPageModule),
},
{
path: '',
diff --git a/frontend/allowance-planner-v2/src/app/pages/tasks/tasks-routing.module.ts b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks-routing.module.ts
index a3945ac..df12f3a 100644
--- a/frontend/allowance-planner-v2/src/app/pages/tasks/tasks-routing.module.ts
+++ b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks-routing.module.ts
@@ -6,6 +6,10 @@ const routes: Routes = [
{
path: '',
component: TasksPage,
+ children: [
+ { path: 'add', loadChildren: () => import('../edit-task/edit-task.module').then(m => m.EditTaskPageModule) },
+ { path: 'edit/:id', loadChildren: () => import('../edit-task/edit-task.module').then(m => m.EditTaskPageModule) }
+ ]
}
];
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 37ed163..488e280 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,6 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { TaskService } from 'src/app/services/task.service';
import { Task } from 'src/app/models/task';
+import { ActivatedRoute, Router } from '@angular/router';
@Component({
selector: 'app-tasks',
@@ -12,16 +13,22 @@ export class TasksPage implements OnInit {
public tasks: Array = [];
constructor(
- private taskService: TaskService
+ private taskService: TaskService,
+ private router: Router,
+ private route: ActivatedRoute
) {}
ngOnInit(): void {
+ this.getTasks();
+ }
+
+ getTasks() {
this.taskService.getTaskList().subscribe(tasks => {
this.tasks = tasks;
});
}
createTask() {
- this.taskService.createTask({ name: 'Created task', reward: 10, assigned: 1 });
+ this.router.navigate(['edit', 1], { 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 959d0b5..ed1179b 100644
--- a/frontend/allowance-planner-v2/src/app/services/task.service.ts
+++ b/frontend/allowance-planner-v2/src/app/services/task.service.ts
@@ -8,11 +8,6 @@ import { Task } from '../models/task';
})
export class TaskService {
private url = 'http://localhost:8080/api';
- private headers = {
- "access-control-allow-origin": "*",
- 'Access-Control-Allow-Headers': 'Content-Type, Authorization',
- 'Access-Control-Allow-Methods': '*',
- };
constructor(private http: HttpClient) {}
@@ -20,7 +15,11 @@ export class TaskService {
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, { headers: this.headers }).subscribe(t => console.log('TEST: ', t));
+ this.http.post(`${this.url}/tasks`, task).subscribe();
}
}
\ No newline at end of file