Add list of tasks
This commit is contained in:
parent
b48d082edd
commit
0007f10ae3
6
frontend/allowance-planner-v2/src/app/models/task.ts
Normal file
6
frontend/allowance-planner-v2/src/app/models/task.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export interface Task {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
reward: number;
|
||||||
|
assigned: number;
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
<ion-header [translucent]="true">
|
<ion-header [translucent]="true" class="ion-no-border">
|
||||||
<ion-toolbar>
|
<ion-toolbar>
|
||||||
<ion-title>
|
<ion-title>
|
||||||
Allowance
|
Allowance
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<ion-header [translucent]="true">
|
<ion-header [translucent]="true" class="ion-no-border">
|
||||||
<ion-toolbar>
|
<ion-toolbar>
|
||||||
<ion-title>
|
<ion-title>
|
||||||
History
|
History
|
||||||
|
@ -5,14 +5,22 @@ import { FormsModule } from '@angular/forms';
|
|||||||
import { TasksPage } from './tasks.page';
|
import { TasksPage } from './tasks.page';
|
||||||
|
|
||||||
import { TasksPageRoutingModule } from './tasks-routing.module';
|
import { TasksPageRoutingModule } from './tasks-routing.module';
|
||||||
|
import { provideHttpClient } from '@angular/common/http';
|
||||||
|
import { TaskService } from 'src/app/services/task.service';
|
||||||
|
import { MatIconModule } from '@angular/material/icon';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
IonicModule,
|
IonicModule,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
TasksPageRoutingModule
|
TasksPageRoutingModule,
|
||||||
|
MatIconModule,
|
||||||
],
|
],
|
||||||
declarations: [TasksPage]
|
declarations: [TasksPage],
|
||||||
|
providers: [
|
||||||
|
provideHttpClient(),
|
||||||
|
TaskService
|
||||||
|
]
|
||||||
})
|
})
|
||||||
export class TasksPageModule {}
|
export class TasksPageModule {}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<ion-header [translucent]="true">
|
<ion-header [translucent]="true" class="ion-no-border">
|
||||||
<ion-toolbar>
|
<ion-toolbar>
|
||||||
<ion-title>
|
<ion-title>
|
||||||
Tasks
|
Tasks
|
||||||
@ -7,4 +7,17 @@
|
|||||||
</ion-header>
|
</ion-header>
|
||||||
|
|
||||||
<ion-content>
|
<ion-content>
|
||||||
|
<div class="icon">
|
||||||
|
<mat-icon>filter_alt</mat-icon>
|
||||||
|
</div>
|
||||||
|
<div class="list">
|
||||||
|
<div class="task" *ngFor="let task of tasks">
|
||||||
|
<button>Done</button>
|
||||||
|
<div class="name">{{ task.name }}</div>
|
||||||
|
<div
|
||||||
|
class="reward"
|
||||||
|
[ngClass]="{ 'negative': task.reward < 0 }"
|
||||||
|
>{{ task.reward.toFixed(2) }} SP</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</ion-content>
|
</ion-content>
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
.icon {
|
||||||
|
padding: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
color: var(--ion-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
mat-icon {
|
||||||
|
font-size: 35px;
|
||||||
|
width: 35px;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
border-top: 1px solid var(--line-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.task {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
border-bottom: 1px solid var(--line-color);
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
margin-left: 10px;
|
||||||
|
color: var(--font-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.reward {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: 15px;
|
||||||
|
color: var(--positive-amount-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.negative {
|
||||||
|
color: var(--negative-amount-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
width: 57px;
|
||||||
|
height: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
color: white;
|
||||||
|
background: var(--confirm-button-color);
|
||||||
|
}
|
@ -1,4 +1,6 @@
|
|||||||
import { Component } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { TaskService } from 'src/app/services/task.service';
|
||||||
|
import { Task } from 'src/app/models/task';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-tasks',
|
selector: 'app-tasks',
|
||||||
@ -6,8 +8,17 @@ import { Component } from '@angular/core';
|
|||||||
styleUrls: ['tasks.page.scss'],
|
styleUrls: ['tasks.page.scss'],
|
||||||
standalone: false,
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class TasksPage {
|
export class TasksPage implements OnInit {
|
||||||
|
public tasks: Array<Task> = [];
|
||||||
|
|
||||||
constructor() {}
|
constructor(
|
||||||
|
private taskService: TaskService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.taskService.getTaskList().subscribe(tasks => {
|
||||||
|
this.tasks = tasks;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Observable } from 'rxjs';
|
||||||
|
import { Task } from '../models/task';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class TaskService {
|
||||||
|
private url = 'http://localhost:8080/api'
|
||||||
|
constructor(private http: HttpClient) {}
|
||||||
|
|
||||||
|
getTaskList(): Observable<Array<Task>> {
|
||||||
|
return this.http.get<Task[]>(`${this.url}/tasks`);
|
||||||
|
}
|
||||||
|
}
|
@ -35,3 +35,11 @@
|
|||||||
/* @import "@ionic/angular/css/palettes/dark.always.css"; */
|
/* @import "@ionic/angular/css/palettes/dark.always.css"; */
|
||||||
/* @import "@ionic/angular/css/palettes/dark.class.css"; */
|
/* @import "@ionic/angular/css/palettes/dark.class.css"; */
|
||||||
@import "@ionic/angular/css/palettes/dark.system.css";
|
@import "@ionic/angular/css/palettes/dark.system.css";
|
||||||
|
|
||||||
|
ion-title {
|
||||||
|
color: var(--ion-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-header {
|
||||||
|
border-bottom: 1px solid var(--line-color);
|
||||||
|
}
|
@ -4,6 +4,11 @@
|
|||||||
--ion-color-primary: #9C4BE4;
|
--ion-color-primary: #9C4BE4;
|
||||||
--ion-color-secondary: #F5E9FF;
|
--ion-color-secondary: #F5E9FF;
|
||||||
--ion-background-color: #F3F3F3;
|
--ion-background-color: #F3F3F3;
|
||||||
|
--font-color: #7B7B7B;
|
||||||
|
--confirm-button-color: #58A66F;
|
||||||
|
--positive-amount-color: #7DCB7D;
|
||||||
|
--negative-amount-color: #C55454;
|
||||||
|
--line-color: #CACACA;
|
||||||
|
|
||||||
--ion-font-family: 'Myfont';
|
--ion-font-family: 'Myfont';
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user