From c1a335ef60e0744e145bb32c3a83c84267c69f94 Mon Sep 17 00:00:00 2001 From: Florian THIERRY Date: Thu, 21 Oct 2021 14:01:11 +0200 Subject: [PATCH] Fix tasks persistence and display. --- src/app/add-task/add-task.component.html | 7 ++++-- src/app/app.module.ts | 10 +++++--- src/app/core/service/task.service.ts | 10 ++++++-- .../display-task/display-task.component.html | 9 +++++++ .../display-task/display-task.component.scss | 11 ++++++++ .../display-task.component.spec.ts | 25 +++++++++++++++++++ .../display-task/display-task.component.ts | 15 +++++++++++ src/app/main-page/main-page.component.html | 10 +++----- src/app/main-page/main-page.component.ts | 16 +++++++++--- 9 files changed, 95 insertions(+), 18 deletions(-) create mode 100644 src/app/display-task/display-task.component.html create mode 100644 src/app/display-task/display-task.component.scss create mode 100644 src/app/display-task/display-task.component.spec.ts create mode 100644 src/app/display-task/display-task.component.ts diff --git a/src/app/add-task/add-task.component.html b/src/app/add-task/add-task.component.html index 7cdaad3..42963b2 100644 --- a/src/app/add-task/add-task.component.html +++ b/src/app/add-task/add-task.component.html @@ -1,3 +1,6 @@
- add -
\ No newline at end of file + + + diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 93d6c0b..52d96cd 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -7,19 +7,23 @@ import { AppComponent } from './app.component'; import { MainPageComponent } from './main-page/main-page.component'; import { AddTaskComponent } from './add-task/add-task.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import {MatIconModule} from '@angular/material/icon'; +import {MatIconModule} from '@angular/material/icon'; +import {MatInputModule} from '@angular/material/input'; +import { DisplayTaskComponent } from './display-task/display-task.component'; @NgModule({ declarations: [ AppComponent, MainPageComponent, - AddTaskComponent + AddTaskComponent, + DisplayTaskComponent ], imports: [ BrowserModule, AppRoutingModule, BrowserAnimationsModule, - MatIconModule + MatIconModule, + MatInputModule ], providers: [ CookieService, diff --git a/src/app/core/service/task.service.ts b/src/app/core/service/task.service.ts index bd8b24f..87c8046 100644 --- a/src/app/core/service/task.service.ts +++ b/src/app/core/service/task.service.ts @@ -7,7 +7,7 @@ import { TaskPersistenceService } from './task-persistence.service'; providedIn: 'root' }) export class TaskService { - _tasks: BehaviorSubject = new BehaviorSubject([]); + private _tasks: BehaviorSubject = new BehaviorSubject([]); constructor( private _taskPersistenceService: TaskPersistenceService @@ -24,9 +24,15 @@ export class TaskService { const tasks = this._tasks.value; tasks.push(task); this._tasks.next(tasks); + this._saveTasks(); } - _saveTasks(): void { + private _saveTasks(): void { this._taskPersistenceService.save(this._tasks.value); } + + refresh() { + const tasks = this._taskPersistenceService.getAll(); + this._tasks.next(tasks); + } } diff --git a/src/app/display-task/display-task.component.html b/src/app/display-task/display-task.component.html new file mode 100644 index 0000000..232a4e0 --- /dev/null +++ b/src/app/display-task/display-task.component.html @@ -0,0 +1,9 @@ +
+

{{ task.title }}

+ +
+ Saisissez le titre de la tâche. +
+
+

{{ task.description }}

+
diff --git a/src/app/display-task/display-task.component.scss b/src/app/display-task/display-task.component.scss new file mode 100644 index 0000000..056cfe9 --- /dev/null +++ b/src/app/display-task/display-task.component.scss @@ -0,0 +1,11 @@ +.component { + min-height: 50px; + width: 90%; + margin: auto; + +} + +.placeholder { + font-style: italic; + color: #AAAAAA; +} diff --git a/src/app/display-task/display-task.component.spec.ts b/src/app/display-task/display-task.component.spec.ts new file mode 100644 index 0000000..4f8e791 --- /dev/null +++ b/src/app/display-task/display-task.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DisplayTaskComponent } from './display-task.component'; + +describe('DisplayTaskComponent', () => { + let component: DisplayTaskComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DisplayTaskComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DisplayTaskComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/display-task/display-task.component.ts b/src/app/display-task/display-task.component.ts new file mode 100644 index 0000000..0d4befc --- /dev/null +++ b/src/app/display-task/display-task.component.ts @@ -0,0 +1,15 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { Task } from '../core/entity/task'; + +@Component({ + selector: 'app-display-task', + templateUrl: './display-task.component.html', + styleUrls: ['./display-task.component.scss'] +}) +export class DisplayTaskComponent { + @Input() task: Task = {} as Task; + + getTitle(): string { + return `Créé le ${this.task.creationDate?.toLocaleString()}`; + } +} diff --git a/src/app/main-page/main-page.component.html b/src/app/main-page/main-page.component.html index d7ce6fa..b2a0180 100644 --- a/src/app/main-page/main-page.component.html +++ b/src/app/main-page/main-page.component.html @@ -1,12 +1,8 @@

Todo List

-
-

{{ task.title }}

-

{{ task.description }}

-
-
+ +
add Ajouter une nouvelle tâche...
- -
\ No newline at end of file +
diff --git a/src/app/main-page/main-page.component.ts b/src/app/main-page/main-page.component.ts index d99bb79..b679361 100644 --- a/src/app/main-page/main-page.component.ts +++ b/src/app/main-page/main-page.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { AfterViewInit, Component, OnInit } from '@angular/core'; import { Task } from '../core/entity/task'; import { TaskService } from '../core/service/task.service'; @@ -7,7 +7,7 @@ import { TaskService } from '../core/service/task.service'; templateUrl: './main-page.component.html', styleUrls: ['./main-page.component.scss'] }) -export class MainPageComponent implements OnInit { +export class MainPageComponent implements OnInit, AfterViewInit { tasks: Task[] = []; isAddingATask = false; @@ -19,7 +19,15 @@ export class MainPageComponent implements OnInit { this._taskService.tasks.subscribe(tasks => this.tasks = tasks); } - startTaskAddition(): void { - this.isAddingATask = true; + ngAfterViewInit(): void { + this._taskService.refresh(); + } + + createTask(): void { + const newTask = { + creationDate: new Date() + } as Task; + + this._taskService.add(newTask); } }