From 651c877315b0669eeb4a3a8447691ae65accf20b Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Wed, 4 Dec 2019 21:49:49 -0500 Subject: Add base for add-recipe component Just changes done by `ng g component add-recipe` --- recipeBuddy/src/app/add-recipe/add-recipe.component.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 recipeBuddy/src/app/add-recipe/add-recipe.component.ts (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts new file mode 100644 index 0000000..a7be0e0 --- /dev/null +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-add-recipe', + templateUrl: './add-recipe.component.html', + styleUrls: ['./add-recipe.component.css'] +}) +export class AddRecipeComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} -- cgit v1.1 From 443ded565b1482eaf17176967372f3986497f1b8 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Wed, 4 Dec 2019 23:00:02 -0500 Subject: Add basic form for adding a recipe --- .../src/app/add-recipe/add-recipe.component.ts | 57 +++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts index a7be0e0..b0e5ce5 100644 --- a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -1,15 +1,68 @@ import { Component, OnInit } from '@angular/core'; +import { FormControl } from '@angular/forms'; + +import { FormBuilder } from '@angular/forms'; +import { FormArray } from '@angular/forms'; + @Component({ selector: 'app-add-recipe', templateUrl: './add-recipe.component.html', styleUrls: ['./add-recipe.component.css'] }) -export class AddRecipeComponent implements OnInit { - constructor() { } +export class AddRecipeComponent { + + recipeForm = this.fb.group({ + recipeName: [''], + desc: [''], + ingredients: this.fb.array([ + this.fb.group({ + ingrName: [''], + amount: [''], + units: [''] + }) + ]), + steps: this.fb.array([ + this.fb.group({ + instruct: [''], + timer: [''] + }) + ]), + servingSize: [''], + cookTime: [''], + tags: [''], + photos: [''] + }); + constructor(private fb: FormBuilder) { } ngOnInit() { } + get ingredients() { + return this.recipeForm.get('ingredients') as FormArray; + } + + addIngredient() { + this.ingredients.push( + this.fb.group({ + ingrName: [''], + amount: [''], + units: [''] + }) + ); + } + + get steps() { + return this.recipeForm.get('steps') as FormArray; + } + + addStep() { + this.steps.push( + this.fb.group({ + instruct: [''], + timer: [''] + }) + ); + } } -- cgit v1.1 From 994f8ee685d9db04d575ceabee869b9e948684c2 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Fri, 6 Dec 2019 15:17:32 -0500 Subject: Add convert form data to Recipe Object --- .../src/app/add-recipe/add-recipe.component.ts | 46 +++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts index b0e5ce5..eaa45d2 100644 --- a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -5,6 +5,12 @@ import { FormControl } from '@angular/forms'; import { FormBuilder } from '@angular/forms'; import { FormArray } from '@angular/forms'; +import { Recipe } from '../DataModels/recipe'; +import { Ingredient } from '../DataModels/ingredient' +import { Step } from '../DataModels/step'; +import { BackendService } from '../REST_service/backend.service'; + + @Component({ selector: 'app-add-recipe', templateUrl: './add-recipe.component.html', @@ -34,7 +40,9 @@ export class AddRecipeComponent { tags: [''], photos: [''] }); - constructor(private fb: FormBuilder) { } + constructor(private fb: FormBuilder, + private restService: BackendService + ) { } ngOnInit() { } @@ -65,4 +73,40 @@ export class AddRecipeComponent { }) ); } + + onSubmit() { + console.log('In Submit') + var formData = this.recipeForm.value; + + var ingredients = [] + var i; + for (i = 0; i < formData.ingredients.length; i++) { + ingredients.push(new Ingredient(formData.ingredients[0].ingrName, + formData.ingredients[0].amount, + formData.ingredients[0].unit, + "" + )); + } + + var steps = [] + for (i = 0; i < formData.ingredients.length; i++) { + steps.push(new Step(formData.steps[0].instruct, + formData.steps[0].timer + )); + } + + var recipe = new Recipe (0, //id + formData.recipeName, //name + formData.desc, //description + ingredients, //ingredients + steps, //steps + formData.servingSize, //servingSize + formData.cookTime, //cookTime + 0, //timesCooked + 0, //rating + formData.tags, //tags + formData.photos //photos + ); + console.log(JSON.stringify(recipe)) + } } -- cgit v1.1 From 3b43f292a605717d08d3623e09bf35a4e0301414 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Sat, 7 Dec 2019 10:54:24 -0500 Subject: Fix set non-submit buttons type to "button" This stops these buttons from triggering the submit action. --- recipeBuddy/src/app/add-recipe/add-recipe.component.ts | 1 - 1 file changed, 1 deletion(-) (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts index eaa45d2..469871b 100644 --- a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -75,7 +75,6 @@ export class AddRecipeComponent { } onSubmit() { - console.log('In Submit') var formData = this.recipeForm.value; var ingredients = [] -- cgit v1.1 From 2a89221eee68bc26ea3e90c380ce983f5a0985f0 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Sat, 7 Dec 2019 11:51:22 -0500 Subject: Add removing Ingredients/Steps from add form --- recipeBuddy/src/app/add-recipe/add-recipe.component.ts | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts index 469871b..cdd63c8 100644 --- a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -61,6 +61,10 @@ export class AddRecipeComponent { ); } + rmIngredient(i) { + this.ingredients.removeAt(i); + } + get steps() { return this.recipeForm.get('steps') as FormArray; } @@ -74,6 +78,10 @@ export class AddRecipeComponent { ); } + rmStep(i) { + this.steps.removeAt(i); + } + onSubmit() { var formData = this.recipeForm.value; -- cgit v1.1 From 4efaeb517b94690483a14f25a224de73c0f1b055 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Sat, 7 Dec 2019 13:32:21 -0500 Subject: Add add recipe form requires a recipe name before submitting --- recipeBuddy/src/app/add-recipe/add-recipe.component.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts index cdd63c8..b4f4d1e 100644 --- a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -5,12 +5,13 @@ import { FormControl } from '@angular/forms'; import { FormBuilder } from '@angular/forms'; import { FormArray } from '@angular/forms'; +import { Validators } from '@angular/forms'; + import { Recipe } from '../DataModels/recipe'; import { Ingredient } from '../DataModels/ingredient' import { Step } from '../DataModels/step'; import { BackendService } from '../REST_service/backend.service'; - @Component({ selector: 'app-add-recipe', templateUrl: './add-recipe.component.html', @@ -20,7 +21,7 @@ import { BackendService } from '../REST_service/backend.service'; export class AddRecipeComponent { recipeForm = this.fb.group({ - recipeName: [''], + recipeName: ['', Validators.required], desc: [''], ingredients: this.fb.array([ this.fb.group({ @@ -40,6 +41,7 @@ export class AddRecipeComponent { tags: [''], photos: [''] }); + constructor(private fb: FormBuilder, private restService: BackendService ) { } -- cgit v1.1 From 99287dff749f7c6fa050b597115270496738d77c Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Sun, 8 Dec 2019 15:38:08 -0500 Subject: Add basic input validation to add recipe form Validates: Name is required, Timer/Cook Time are digits, Amount/Servings are numbers (digits with optional decimal point). --- recipeBuddy/src/app/add-recipe/add-recipe.component.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts index b4f4d1e..50ea1cd 100644 --- a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -26,7 +26,7 @@ export class AddRecipeComponent { ingredients: this.fb.array([ this.fb.group({ ingrName: [''], - amount: [''], + amount: ['', Validators.pattern('^[0-9]*(\.[0-9]*)?$')], units: [''] }) ]), @@ -36,8 +36,8 @@ export class AddRecipeComponent { timer: [''] }) ]), - servingSize: [''], - cookTime: [''], + servingSize: ['', Validators.pattern('^[0-9]*(\.[0-9]*)?$')], + cookTime: ['', Validators.pattern('^[0-9]*$')], tags: [''], photos: [''] }); @@ -57,7 +57,7 @@ export class AddRecipeComponent { this.ingredients.push( this.fb.group({ ingrName: [''], - amount: [''], + amount: ['', Validators.pattern('^[0-9]*(\.[0-9]*)?$')], units: [''] }) ); @@ -75,7 +75,7 @@ export class AddRecipeComponent { this.steps.push( this.fb.group({ instruct: [''], - timer: [''] + timer: ['', Validators.pattern('^[0-9]*$')] }) ); } -- cgit v1.1 From bb1ecccbf324c59097a828a862a10201f76d02a9 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Sun, 8 Dec 2019 16:41:39 -0500 Subject: Add recipe is now sent to backend from add form --- .../src/app/add-recipe/add-recipe.component.ts | 27 ++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts index 50ea1cd..bc88eb7 100644 --- a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -91,17 +91,23 @@ export class AddRecipeComponent { var i; for (i = 0; i < formData.ingredients.length; i++) { ingredients.push(new Ingredient(formData.ingredients[0].ingrName, - formData.ingredients[0].amount, + parseFloat(formData.ingredients[0].amount), formData.ingredients[0].unit, "" )); + if (isNaN(ingredients[ingredients.length - 1].amount)) { + ingredients[ingredients.length - 1].amount = 0; + } } var steps = [] for (i = 0; i < formData.ingredients.length; i++) { steps.push(new Step(formData.steps[0].instruct, - formData.steps[0].timer + parseInt(formData.steps[0].timer) )); + if (isNaN(steps[steps.length - 1].timer)) { + steps[steps.length - 1].timer = 0; + } } var recipe = new Recipe (0, //id @@ -109,13 +115,20 @@ export class AddRecipeComponent { formData.desc, //description ingredients, //ingredients steps, //steps - formData.servingSize, //servingSize - formData.cookTime, //cookTime + parseFloat(formData.servingSize), //servingSize + parseInt(formData.cookTime), //cookTime 0, //timesCooked 0, //rating - formData.tags, //tags - formData.photos //photos + formData.tags.split(','), //tags + formData.photos.split(',') //photos ); - console.log(JSON.stringify(recipe)) + if (isNaN(recipe.servingSize)) { + recipe.servingSize = 0; + } + + if (isNaN(recipe.cookTime)) { + recipe.cookTime = 0; + } + this.restService.createRecipe(recipe).subscribe() } } -- cgit v1.1 From 2a46419961ab4db50146434945a57859893f8d54 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Sun, 8 Dec 2019 17:26:32 -0500 Subject: Fix remove accessing private values of Recipe/Ingredient/Step --- .../src/app/add-recipe/add-recipe.component.ts | 26 ++++++++-------------- 1 file changed, 9 insertions(+), 17 deletions(-) (limited to 'recipeBuddy/src/app/add-recipe/add-recipe.component.ts') diff --git a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts index bc88eb7..407997c 100644 --- a/recipeBuddy/src/app/add-recipe/add-recipe.component.ts +++ b/recipeBuddy/src/app/add-recipe/add-recipe.component.ts @@ -90,45 +90,37 @@ export class AddRecipeComponent { var ingredients = [] var i; for (i = 0; i < formData.ingredients.length; i++) { + var tmp_amount = parseFloat(formData.ingredients[0].amount) ingredients.push(new Ingredient(formData.ingredients[0].ingrName, - parseFloat(formData.ingredients[0].amount), + (isNaN(tmp_amount) ? 0 : tmp_amount), formData.ingredients[0].unit, "" )); - if (isNaN(ingredients[ingredients.length - 1].amount)) { - ingredients[ingredients.length - 1].amount = 0; - } } var steps = [] for (i = 0; i < formData.ingredients.length; i++) { + var tmp_timer = parseInt(formData.steps[0].timer) steps.push(new Step(formData.steps[0].instruct, - parseInt(formData.steps[0].timer) + (isNaN(tmp_timer) ? 0 : tmp_timer) )); - if (isNaN(steps[steps.length - 1].timer)) { - steps[steps.length - 1].timer = 0; - } } + var servingsTmp = parseFloat(formData.servingSize) + var cookTimeTmp = parseInt(formData.cookTime) + var recipe = new Recipe (0, //id formData.recipeName, //name formData.desc, //description ingredients, //ingredients steps, //steps - parseFloat(formData.servingSize), //servingSize - parseInt(formData.cookTime), //cookTime + (isNaN(servingsTmp) ? 0 :servingsTmp), //servingSize + (isNaN(cookTimeTmp) ? 0 :cookTimeTmp), //cookTime 0, //timesCooked 0, //rating formData.tags.split(','), //tags formData.photos.split(',') //photos ); - if (isNaN(recipe.servingSize)) { - recipe.servingSize = 0; - } - - if (isNaN(recipe.cookTime)) { - recipe.cookTime = 0; - } this.restService.createRecipe(recipe).subscribe() } } -- cgit v1.1