diff --git a/src/app/modules/admin/admin-routing.module.ts b/src/app/modules/admin/admin-routing.module.ts
index e7225ab..ac27963 100644
--- a/src/app/modules/admin/admin-routing.module.ts
+++ b/src/app/modules/admin/admin-routing.module.ts
@@ -6,7 +6,7 @@ import { PageTableauComponent } from './pages/page-tableau/page-tableau.componen
const routes: Routes = [
{ path: '', redirectTo: 'tableau', pathMatch: 'full'},
- { path: 'modifier', component: PageModifierComponent },
+ { path: 'modifier/:id', component: PageModifierComponent },
{ path: 'ajouter', component: PageAjouterComponent },
{ path: 'tableau', component: PageTableauComponent },
];
diff --git a/src/app/modules/admin/components/formulaire/formulaire.component.html b/src/app/modules/admin/components/formulaire/formulaire.component.html
index 0b8b45e..45bc618 100644
--- a/src/app/modules/admin/components/formulaire/formulaire.component.html
+++ b/src/app/modules/admin/components/formulaire/formulaire.component.html
@@ -1,126 +1,108 @@
-
+
diff --git a/src/app/modules/admin/components/formulaire/formulaire.component.scss b/src/app/modules/admin/components/formulaire/formulaire.component.scss
index e69de29..1b527e6 100644
--- a/src/app/modules/admin/components/formulaire/formulaire.component.scss
+++ b/src/app/modules/admin/components/formulaire/formulaire.component.scss
@@ -0,0 +1,75 @@
+.login-form {
+ height: 100vh;
+ padding-top: 40px;
+ background-color: #f5f5f5;
+}
+
+.form-plant {
+ width: 100%;
+ max-width: 330px;
+ padding: 15px;
+ margin-top: 50px;
+ margin-left: auto;
+ margin-right: auto;
+ border: solid 1px;
+ border-radius: 10px;
+ background-color: #64c982;
+ border-color: #64c982;
+}
+
+.form-plant .checkbox {
+ font-weight: 400;
+}
+
+.form-plant .form-floating:focus-within {
+ z-index: 2;
+}
+
+.form-plant input[type="email"] {
+ margin-bottom: 10px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.form-plant input[type="color"] {
+ border: none;
+ margin-bottom: 10px;
+ margin-top: -70px;
+ margin-left: 100px;
+ border-radius: 50%;
+ width: 100px;
+ height: 100px;
+}
+
+.form-plant input[type="color"]::-webkit-color-swatch {
+ border: none;
+ margin-top: -15px;
+ border-radius: 80%;
+ width: 80px;
+ height: 80px;
+}
+
+.form-plant input[type="text"] {
+ margin-bottom: 10px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.form-plant input[type="date"] {
+ margin-bottom: 10px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.form-plant input[type="password"] {
+ margin-bottom: 10px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.btn-outline-success {
+ margin-top: 10px;
+ background-color: #ffff;
+ color: #64c982 !important;
+ border-color: #64c982 !important;
+}
diff --git a/src/app/modules/admin/components/formulaire/formulaire.component.ts b/src/app/modules/admin/components/formulaire/formulaire.component.ts
index d3730f6..5457afe 100644
--- a/src/app/modules/admin/components/formulaire/formulaire.component.ts
+++ b/src/app/modules/admin/components/formulaire/formulaire.component.ts
@@ -1,5 +1,7 @@
-import { Component, OnInit } from '@angular/core';
-import { FormGroup } from '@angular/forms';
+import { Component, Input, OnInit } from '@angular/core';
+import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
+import { Plant } from '../../models/plant';
+import { AdminService } from '../../services/admin.service';
@Component({
selector: 'app-formulaire',
@@ -8,10 +10,26 @@ import { FormGroup } from '@angular/forms';
})
export class FormulaireComponent implements OnInit {
plantForm!: FormGroup;
- constructor() {}
+ @Input() buttonLabel!: string;
+ @Input() plantInfos: any;
+ @Input() isAdd : boolean = true;
- ngOnInit(): void {}
+ constructor(private formBuilder: FormBuilder) {}
- onSubmit(){}
+ ngOnInit(): void {
+ this.plantForm = this.formBuilder.group(
+ {
+ nameFc: new FormControl(this.plantInfos.product_name, [Validators.required]),
+ priceFc: new FormControl(this.plantInfos.product_price, [Validators.required]),
+ quantityFc: new FormControl(this.plantInfos.product_quantity, [Validators.required]),
+ inStockFc: new FormControl(this.plantInfos.product_instock, [Validators.required]),
+ categoryFc: new FormControl(this.plantInfos.product_breadcrumb_label, [Validators.required]),
+ ratingFc: new FormControl(this.plantInfos.product_rating, [Validators.required]),
+ });
+ }
+
+ addPlant(){}
+
+ updatePlant(){}
}
diff --git a/src/app/modules/admin/models/plant.ts b/src/app/modules/admin/models/plant.ts
index e334571..ba4acd6 100644
--- a/src/app/modules/admin/models/plant.ts
+++ b/src/app/modules/admin/models/plant.ts
@@ -5,7 +5,7 @@ export class Plant {
public name: string='',
public price: number =1,
public quantity: number= 0,
- public instock: boolean= true,
+ public inStock: string[]=['disponible', 'patriellement disponible', 'non disponible'],
public category:Category,
public urlPicture: string = "https//picsum.photos/id/18/200/300",
public rating: number = 0,
diff --git a/src/app/modules/admin/pages/page-modifier/page-modifier.component.html b/src/app/modules/admin/pages/page-modifier/page-modifier.component.html
index 1c0ec6f..de5769d 100644
--- a/src/app/modules/admin/pages/page-modifier/page-modifier.component.html
+++ b/src/app/modules/admin/pages/page-modifier/page-modifier.component.html
@@ -1 +1,2 @@
-page-modifier works!
+Modifier la plante
+
diff --git a/src/app/modules/admin/pages/page-modifier/page-modifier.component.scss b/src/app/modules/admin/pages/page-modifier/page-modifier.component.scss
index e69de29..8a0fa8b 100644
--- a/src/app/modules/admin/pages/page-modifier/page-modifier.component.scss
+++ b/src/app/modules/admin/pages/page-modifier/page-modifier.component.scss
@@ -0,0 +1,5 @@
+h1{
+ color: rgba(0, 0, 0, 0.658);
+ font-size: 28px;
+ margin-top: 20px;
+}
diff --git a/src/app/modules/admin/pages/page-modifier/page-modifier.component.ts b/src/app/modules/admin/pages/page-modifier/page-modifier.component.ts
index 70691bc..0f439fb 100644
--- a/src/app/modules/admin/pages/page-modifier/page-modifier.component.ts
+++ b/src/app/modules/admin/pages/page-modifier/page-modifier.component.ts
@@ -1,4 +1,8 @@
import { Component, OnInit } from '@angular/core';
+import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
+import { ActivatedRoute, Router } from '@angular/router';
+import { Plant } from '../../models/plant';
+import { AdminService } from '../../services/admin.service';
@Component({
selector: 'app-page-modifier',
@@ -6,10 +10,72 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./page-modifier.component.scss']
})
export class PageModifierComponent implements OnInit {
+ plantForm: FormGroup;
+ updatePlantForm: FormGroup;
+ plantInfos: any;
+ plantId: any;
- constructor() { }
+
+
+ constructor(private adminService: AdminService,
+ private router: Router,
+ private fb: FormBuilder,
+ private route: ActivatedRoute) {
+ this.updatePlantForm = new FormGroup({});
+ this.plantForm = this.initForm();
+ }
ngOnInit(): void {
+ /** Pour récuperer l'id de la plante à modifier **/
+ this.plantId = this.route.snapshot.paramMap.get('id');
+
+ /** Appel Api **/
+ this.adminService
+ .getPlantById(this.plantId)
+ .subscribe((plantInfos: any) => {
+ this.plantInfos = plantInfos;
+ console.log(this.plantInfos);
+ console.log(this.plantInfos.product_name);
+ });
+ }
+
+ /** Méthode qui initialise les champs du formulaire avec les infos du db Json **/
+ private initForm(plant?: Plant): FormGroup {
+
+ return this.fb.group({
+ nom:[plant ? plant.name : ''],
+ price: [plant ? plant.price : ''],
+ quantity: [plant ? plant.quantity : ''],
+ category: [plant ? plant.category : ''],
+ rating: [plant ? plant.rating : ''],
+ inStock: [plant ? plant.inStock : ['']],
+ });
+ }
+
+
+ /** Méthode qui envoie les champs modifiés pour mise à jour **/
+ public onSubmit(): void {
+ const nameValue = this.updatePlantForm.value['nameFc'];
+ const priceValue = this.updatePlantForm.value['priceFc'];
+ const ratingValue = this.updatePlantForm.value['ratingFc'];
+ const quantityValue = this.updatePlantForm.value['quantityFc'];
+ const categoryValue = this.updatePlantForm.value['categoryFc'];
+ const inStockValue = this.updatePlantForm.value['inStockFc'];
+ const urlPicture = "https//picsum.photos/id/18/200/300";
+
+ const plant: Plant = {
+ id: this.plantId,
+ name: nameValue,
+ price: priceValue,
+ quantity: quantityValue,
+ rating: ratingValue,
+ category: categoryValue,
+ inStock: [inStockValue],
+ urlPicture
+ };
+ this.adminService.updatePlant(plant)?.subscribe((resp) => {
+ this.router.navigate(['admin']);
+ });
}
}
diff --git a/src/app/modules/admin/pages/page-tableau/page-tableau.component.html b/src/app/modules/admin/pages/page-tableau/page-tableau.component.html
index 1799f8b..3509686 100644
--- a/src/app/modules/admin/pages/page-tableau/page-tableau.component.html
+++ b/src/app/modules/admin/pages/page-tableau/page-tableau.component.html
@@ -19,10 +19,10 @@
{{products.name}} |
{{products.price}} |
{{products.quantity}} |
- {{products.instock}} |
-
+ {{products.inStock}} |
+ {{products.category}} |
{{products.rating}} |
- |
+ |
|
diff --git a/src/app/modules/admin/services/admin.service.ts b/src/app/modules/admin/services/admin.service.ts
index c4d1aa5..5e70439 100644
--- a/src/app/modules/admin/services/admin.service.ts
+++ b/src/app/modules/admin/services/admin.service.ts
@@ -45,4 +45,13 @@ export class AdminService {
// getData(): Observable {
// return this.httpClient.get(`${this.apiUrl}/list_products`);
// }
+
+ /** Récupérer une plante par son Id **/
+ getPlantById(id: any): Observable {
+ return this.httpClient.get(`${this.apiUrl}/list_products/${id}`);
+ }
+ /** Modifier Plante **/
+ updatePlant(plant: Plant): Observable {
+ return this.httpClient.put(`${this.apiUrl}/list_products/${plant.id}`, plant);
+ }
}