1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
import { Component, OnInit } from '@angular/core';
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',
styleUrls: ['./add-recipe.component.css']
})
export class AddRecipeComponent {
recipeForm = this.fb.group({
recipeName: ['', Validators.required],
desc: [''],
ingredients: this.fb.array([
this.fb.group({
ingrName: [''],
amount: ['', Validators.pattern('^[0-9]*(\.[0-9]*)?$')],
units: ['']
})
]),
steps: this.fb.array([
this.fb.group({
instruct: [''],
timer: ['']
})
]),
servingSize: ['', Validators.pattern('^[0-9]*(\.[0-9]*)?$')],
cookTime: ['', Validators.pattern('^[0-9]*$')],
tags: [''],
photos: ['']
});
constructor(private fb: FormBuilder,
private restService: BackendService
) { }
ngOnInit() {
}
get ingredients() {
return this.recipeForm.get('ingredients') as FormArray;
}
addIngredient() {
this.ingredients.push(
this.fb.group({
ingrName: [''],
amount: ['', Validators.pattern('^[0-9]*(\.[0-9]*)?$')],
units: ['']
})
);
}
rmIngredient(i) {
this.ingredients.removeAt(i);
}
get steps() {
return this.recipeForm.get('steps') as FormArray;
}
addStep() {
this.steps.push(
this.fb.group({
instruct: [''],
timer: ['', Validators.pattern('^[0-9]*$')]
})
);
}
rmStep(i) {
this.steps.removeAt(i);
}
onSubmit() {
var formData = this.recipeForm.value;
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,
(isNaN(tmp_amount) ? 0 : tmp_amount),
formData.ingredients[0].unit,
""
));
}
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,
(isNaN(tmp_timer) ? 0 : tmp_timer)
));
}
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
(isNaN(servingsTmp) ? 0 :servingsTmp), //servingSize
(isNaN(cookTimeTmp) ? 0 :cookTimeTmp), //cookTime
0, //timesCooked
0, //rating
formData.tags.split(','), //tags
formData.photos.split(',') //photos
);
this.restService.createRecipe(recipe).subscribe()
}
}
|