diff --git a/src/app/recipe-add/recipe-add.component.html b/src/app/recipe-add/recipe-add.component.html index 1509a3f..549e3dd 100644 --- a/src/app/recipe-add/recipe-add.component.html +++ b/src/app/recipe-add/recipe-add.component.html @@ -1,21 +1,26 @@
- - - - @if (createForm.controls.name.errors?.['minlength']) { - Le nom doit contenir au moins {{ createForm.controls.name.errors!['minlength'].requiredLength }} caractères. - } - @if (createForm.controls.name.errors?.['maxlength']) { - Le nom ne peut dépasser {{ createForm.controls.name.errors!['maxlength'].requiredLength }} caractères. - } - - - - - @if (createForm.controls.description.errors?.['maxlength']) { - La description ne peut dépasser {{ createForm.controls.description.errors!['maxlength'].requiredLength }} caractères. - } - +
+ + + + @if (createForm.controls.name.errors?.['minlength']) { + Le nom doit contenir au moins {{ createForm.controls.name.errors!['minlength'].requiredLength }} caractères. + } + @if (createForm.controls.name.errors?.['maxlength']) { + Le nom ne peut dépasser {{ createForm.controls.name.errors!['maxlength'].requiredLength }} caractères. + } + +
+
+ + + + @if (createForm.controls.description.errors?.['maxlength']) { + La description ne peut dépasser {{ createForm.controls.description.errors!['maxlength'].requiredLength }} caractères. + } + +
+
@@ -26,14 +31,21 @@ - + + + @for (ingredient of ingredients; track ingredient.id) { + {{ ingredient.name }} + } + +
diff --git a/src/app/recipe-add/recipe-add.component.ts b/src/app/recipe-add/recipe-add.component.ts index 75949af..1e0e2d7 100644 --- a/src/app/recipe-add/recipe-add.component.ts +++ b/src/app/recipe-add/recipe-add.component.ts @@ -6,11 +6,13 @@ import { RecipeService } from '../recipe.service'; import { MatInputModule } from '@angular/material/input'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatButton } from '@angular/material/button'; +import { MatOption } from '@angular/material/core'; +import { MatSelect } from '@angular/material/select'; @Component({ selector: 'app-recipe-add', standalone: true, - imports: [ReactiveFormsModule, FormsModule, MatFormFieldModule, MatInputModule, MatButton, MatFormFieldModule], + imports: [ReactiveFormsModule, FormsModule, MatFormFieldModule, MatOption, MatSelect, MatInputModule, MatButton, MatFormFieldModule], templateUrl: './recipe-add.component.html', }) export class RecipeAddComponent { @@ -22,12 +24,12 @@ export class RecipeAddComponent { }); ingredientEntries: IngredientEntry[] = []; - ingredients: Ingredient[] = [{ - id: 1, - name: 'Paprika', - }]; + ingredients: Ingredient[] = []; selectedFilename: string = ''; + getIngredient(n: number): Ingredient { + return this.ingredients.find(v => v.id === n)! + } #recipeId: number = -1; @Input() @@ -48,7 +50,9 @@ export class RecipeAddComponent { return this.#recipeId; } - constructor(private formBuilder: FormBuilder, private recipes: RecipeService, private router: Router) {} + constructor(private formBuilder: FormBuilder, private recipes: RecipeService, private router: Router) { + this.ingredients = this.recipes.getAllIngredients(); + } onSubmit(): void { if (this.createForm.invalid) { @@ -71,6 +75,8 @@ export class RecipeAddComponent { onAddIngredient(): void { const value = this.createForm.value; + console.log(value); + if (!value.selectedIngredient) { return; } diff --git a/src/app/recipe.service.ts b/src/app/recipe.service.ts index 3a0bdd9..4b40f6a 100644 --- a/src/app/recipe.service.ts +++ b/src/app/recipe.service.ts @@ -1,12 +1,15 @@ import { Injectable } from '@angular/core'; -import { Recipe } from '../cookbook/type'; +import { Ingredient, Recipe } from '../cookbook/type'; @Injectable({ providedIn: 'root', }) export class RecipeService { #recipes: Recipe[] = [ - { id: 0, name: 'crepe1', description: 'La meilleure recette de pâte à crêpes', image: '', ingredients: [] }, + { id: 0, name: 'crepe1', description: 'La meilleure recette de pâte à crêpes', image: '', ingredients: [ + {idIngredient:1,idRecipe:0,quantity:10}, + {idIngredient:2,idRecipe:0,quantity:15} + ] }, { id: 1, name: 'crepe2', description: 'La meilleure recette de pâte à crêpes', image: '', ingredients: [] }, { id: 2, name: 'crepe3', description: 'La meilleure recette de pâte à crêpes', image: '', ingredients: [] }, { id: 3, name: 'crepe4', description: 'La meilleure recette de pâte à crêpes', image: '', ingredients: [] }, @@ -22,14 +25,27 @@ export class RecipeService { { id: 13, name: 'crepe14', description: 'La meilleure recette de pâte à crêpes', image: '', ingredients: [] }, ]; + #ingredients: Ingredient[] = [ + { id:1, name:'Sucre'}, + { id:2, name:'Farine'} + ] + getAll(): Recipe[] { return this.#recipes; } + getAllIngredients(): Ingredient[] { + return this.#ingredients; + } + get(id: number): Recipe | null { return this.#recipes.find((recipe) => recipe.id === id) || null; } + getIngredientById(id: number): Ingredient | null { + return this.#ingredients.find((ingredient) => ingredient.id === id) || null; + } + add(recipe: Omit): void { const id = this.#recipes.length ? Math.max(...this.#recipes.map((recipe) => recipe.id)) + 1 : 1; this.#recipes.push({ diff --git a/src/app/recipe/recipe.component.html b/src/app/recipe/recipe.component.html index 73c1a8d..45bad88 100644 --- a/src/app/recipe/recipe.component.html +++ b/src/app/recipe/recipe.component.html @@ -1,4 +1,39 @@ -

{{recipe.id}}

-

{{recipe.name}}

-

{{recipe.description}}

+ + +
+ {{recipe.name}}/ + +
+ +

{{recipe.name}}

+

+ {{recipe.description}} +

+ +

Ingredients

+

+

  • + {{ this.recipes.getIngredientById(ingredient.idIngredient)?.name }}: {{ ingredient.quantity }}g +
  • +

    + +
    +
    + + diff --git a/src/app/recipe/recipe.component.ts b/src/app/recipe/recipe.component.ts index 51c8101..d93933c 100644 --- a/src/app/recipe/recipe.component.ts +++ b/src/app/recipe/recipe.component.ts @@ -1,11 +1,12 @@ import { Component, Input } from '@angular/core'; +import { CommonModule } from '@angular/common'; import { Recipe } from '../../cookbook/type'; import { RecipeService } from '../recipe.service'; @Component({ selector: 'app-recipe', standalone: true, - imports: [], + imports: [CommonModule], templateUrl: './recipe.component.html', }) export class RecipeComponent {