diff --git a/src/app/app.component.html b/src/app/app.component.html
index f3b4310..a28e484 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -4,6 +4,8 @@
Vous êtes connecté depuis {{ secondes }} secondes !
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 5d529b9..33542c4 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -2,7 +2,7 @@ import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { AppareilComponent } from './appareil/appareil.component';
-import { FormsModule } from '@angular/forms';
+import { FormsModule, ReactiveFormsModule} from '@angular/forms';
import { AppareilService } from './services/appareil.service';
import { AuthComponent } from './auth/auth.component';
import { AppareilViewComponent } from './appareil-view/appareil-view.component';
@@ -11,10 +11,17 @@ import { AuthService } from './services/auth.service';
import { SingleAppareilComponent } from './single-appareil/single-appareil.component';
import { FourOhFourComponent } from './four-oh-four/four-oh-four.component';
import { AuthGuard } from './services/auth-guard.service';
+import { EditAppareilComponent } from './edit-appareil/edit-appareil.component';
+import { UserService } from './services/user.service';
+import { UserListComponent } from './user-list/user-list.component';
+import { NewUserComponent } from './new-user/new-user.component';
const appRoutes: Routes = [
{ path: 'appareils', canActivate: [AuthGuard], component: AppareilViewComponent },
{ path: 'appareils/:id', canActivate: [AuthGuard], component: SingleAppareilComponent },
+ { path: 'edit', canActivate: [AuthGuard], component: EditAppareilComponent },
+ { path: 'users', /*canActivate: [AuthGuard],*/ component: UserListComponent },
+ { path: 'new-user', /*canActivate: [AuthGuard],*/ component: NewUserComponent },
{ path: 'auth', component: AuthComponent },
{ path: '', component: AuthComponent },
{ path: 'not-found', component: FourOhFourComponent },
@@ -28,17 +35,22 @@ const appRoutes: Routes = [
AuthComponent,
AppareilViewComponent,
SingleAppareilComponent,
- FourOhFourComponent
+ FourOhFourComponent,
+ EditAppareilComponent,
+ UserListComponent,
+ NewUserComponent
],
imports: [
BrowserModule,
FormsModule,
+ ReactiveFormsModule,
RouterModule.forRoot(appRoutes)
],
providers: [
AppareilService,
AuthService,
- AuthGuard
+ AuthGuard,
+ UserService
],
bootstrap: [AppComponent]
})
diff --git a/src/app/edit-appareil/edit-appareil.component.html b/src/app/edit-appareil/edit-appareil.component.html
new file mode 100644
index 0000000..1d93e49
--- /dev/null
+++ b/src/app/edit-appareil/edit-appareil.component.html
@@ -0,0 +1,23 @@
+
+
diff --git a/src/app/edit-appareil/edit-appareil.component.scss b/src/app/edit-appareil/edit-appareil.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/edit-appareil/edit-appareil.component.ts b/src/app/edit-appareil/edit-appareil.component.ts
new file mode 100644
index 0000000..7cda8bd
--- /dev/null
+++ b/src/app/edit-appareil/edit-appareil.component.ts
@@ -0,0 +1,27 @@
+import { Component, OnInit } from '@angular/core';
+import { NgForm } from '@angular/forms';
+import { AppareilService } from '../services/appareil.service';
+import { Router } from '@angular/router';
+
+@Component({
+ selector: 'app-edit-appareil',
+ templateUrl: './edit-appareil.component.html',
+ styleUrls: ['./edit-appareil.component.scss']
+})
+export class EditAppareilComponent implements OnInit {
+
+ defaultOnOff = 'éteint';
+
+ constructor(private appareilService: AppareilService,
+ private router: Router) { }
+
+ ngOnInit(): void {
+ }
+
+ onSubmit(form: NgForm) {
+ const name = form.value['name'];
+ const status = form.value['status'];
+ this.appareilService.addAppareil(name, status);
+ this.router.navigate(['/appareils']);
+ }
+}
diff --git a/src/app/models/User.model.ts b/src/app/models/User.model.ts
new file mode 100644
index 0000000..1bc99a0
--- /dev/null
+++ b/src/app/models/User.model.ts
@@ -0,0 +1,9 @@
+export class User {
+ constructor(
+ public firstName: string,
+ public lastName: string,
+ public email: string,
+ public drinkPreference: string,
+ public hobbies?: string[]
+ ) {}
+}
diff --git a/src/app/new-user/new-user.component.html b/src/app/new-user/new-user.component.html
new file mode 100644
index 0000000..d51ddad
--- /dev/null
+++ b/src/app/new-user/new-user.component.html
@@ -0,0 +1,33 @@
+
+
diff --git a/src/app/new-user/new-user.component.scss b/src/app/new-user/new-user.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/new-user/new-user.component.ts b/src/app/new-user/new-user.component.ts
new file mode 100644
index 0000000..7aeb3a2
--- /dev/null
+++ b/src/app/new-user/new-user.component.ts
@@ -0,0 +1,60 @@
+import { Component, OnInit } from '@angular/core';
+import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {UserService} from '../services/user.service';
+import {Router} from '@angular/router';
+import {User} from '../models/User.model';
+
+@Component({
+ selector: 'app-new-user',
+ templateUrl: './new-user.component.html',
+ styleUrls: ['./new-user.component.scss']
+})
+export class NewUserComponent implements OnInit {
+
+ userForm: FormGroup;
+
+ constructor(private formBuilder: FormBuilder,
+ private userService: UserService,
+ private router: Router
+ ) { }
+
+ ngOnInit(): void {
+ this.initForm();
+ }
+
+ initForm() {
+ this.userForm = this.formBuilder.group({
+ firstName: ['', Validators.required],
+ lastName: ['', Validators.required],
+ email: ['', [Validators.required, Validators.email]],
+ drinkPreference: ['', Validators.required],
+ hobbies: this.formBuilder.array([])
+ });
+ }
+
+ onSubmitForm() {
+ const formValue = this.userForm.value;
+ const newUser = new User(
+ formValue['firstName'],
+ formValue['lastName'],
+ formValue['email'],
+ formValue['drinkPreference'],
+ formValue['hobbies'] ? formValue['hobbies'] : []
+ );
+ this.userService.addUser(newUser);
+ this.router.navigate(['/users']);
+ }
+
+ getHobbies(): FormArray {
+ return this.userForm.get('hobbies') as FormArray;
+ }
+
+ onAddHobby() {
+ const newHobbyControl = this.formBuilder.control(null, Validators.required);
+ this.getHobbies().push(newHobbyControl);
+ }
+
+ onRemoveHobby() {
+ this.getHobbies().removeAt(-1);
+ }
+}
diff --git a/src/app/services/appareil.service.ts b/src/app/services/appareil.service.ts
index 6f0918c..381058b 100644
--- a/src/app/services/appareil.service.ts
+++ b/src/app/services/appareil.service.ts
@@ -53,4 +53,17 @@ export class AppareilService {
}
);
}
+
+ addAppareil(name: string, status: string) {
+ const appareilObject = {
+ id: 0,
+ name: '',
+ status: ''
+ };
+ appareilObject.name = name;
+ appareilObject.status = status;
+ appareilObject.id = this.appareils[(this.appareils.length - 1)].id + 1;
+ this.appareils.push(appareilObject);
+ this.emitAppareilSubject();
+ }
}
diff --git a/src/app/services/user.service.ts b/src/app/services/user.service.ts
new file mode 100644
index 0000000..338bea2
--- /dev/null
+++ b/src/app/services/user.service.ts
@@ -0,0 +1,20 @@
+import { User } from '../models/User.model';
+import { Subject } from 'rxjs/Subject';
+
+export class UserService {
+
+ private users = [
+ new User('Will', 'Alexander', 'will@will.com', 'jus d\'orange', ['coder', 'boire du café'])
+ ];
+
+ userSubject = new Subject
();
+
+ emitUsers() {
+ this.userSubject.next(this.users.slice());
+ }
+
+ addUser(user: User) {
+ this.users.push(user);
+ this.emitUsers();
+ }
+}
diff --git a/src/app/user-list/user-list.component.html b/src/app/user-list/user-list.component.html
new file mode 100644
index 0000000..e81d683
--- /dev/null
+++ b/src/app/user-list/user-list.component.html
@@ -0,0 +1,12 @@
+
diff --git a/src/app/user-list/user-list.component.scss b/src/app/user-list/user-list.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/user-list/user-list.component.ts b/src/app/user-list/user-list.component.ts
new file mode 100644
index 0000000..51e940f
--- /dev/null
+++ b/src/app/user-list/user-list.component.ts
@@ -0,0 +1,31 @@
+import { Component, OnDestroy, OnInit } from '@angular/core';
+import { Subscription } from 'rxjs/Subscription';
+import { User } from '../models/User.model';
+import { UserService } from '../services/user.service';
+
+@Component({
+ selector: 'app-user-list',
+ templateUrl: './user-list.component.html',
+ styleUrls: ['./user-list.component.scss']
+})
+export class UserListComponent implements OnInit, OnDestroy {
+
+ users: User[];
+
+ userSubscription: Subscription;
+
+ constructor(private userService: UserService) { }
+
+ ngOnInit() {
+ this.userSubscription = this.userService.userSubject.subscribe(
+ (users: User[]) => {
+ this.users = users;
+ }
+ );
+ this.userService.emitUsers();
+ }
+
+ ngOnDestroy() {
+ this.userSubscription.unsubscribe();
+ }
+}