diff --git a/backend/backendServer.js b/backend/backendServer.js index ec80b1e..55f0d1d 100644 --- a/backend/backendServer.js +++ b/backend/backendServer.js @@ -70,10 +70,10 @@ app.post("/add-recipe", async (req, res) => { const existingIngredient = existingIngredients.find(ing => ing.name === ingredient.name); if (!existingIngredient) { // create the ingredient if there is no entry - const [ingredientId] = await db('ingredients').insert({ + const [newIngredient] = await db('ingredients').insert({ name: ingredient.name }, ['id']); - ingredientData.push({ id: ingredientId, quantity: ingredient.quantity, unit: ingredient.unit }); + ingredientData.push({ id: newIngredient.id, quantity: ingredient.quantity, unit: ingredient.unit }); } else { // if the ingredient exists use existing entry ingredientData.push({ id: existingIngredient.id, quantity: ingredient.quantity, unit: ingredient.unit }); diff --git a/frontend/src/components/AddBulkIngredients.tsx b/frontend/src/components/AddBulkIngredients.tsx index 13c83f0..1447803 100644 --- a/frontend/src/components/AddBulkIngredients.tsx +++ b/frontend/src/components/AddBulkIngredients.tsx @@ -1,55 +1,49 @@ import React, { useState } from 'react'; -import { type Ingredient } from "../types/Recipe" +import { type Ingredient } from "../types/Recipe"; +interface AddBulkIngredientsProps { + onChange?: (ingredients: { quantity: number; unit: string; name: string }[]) => void; +} -const BulkIngredientsForm: React.FC = () => { - const [ingredients, setIngredients] = useState([]); +const AddBulkIngredients: React.FC = ({ onChange }) => { + const [ingredients, setIngredients] = useState<{ quantity: number; unit: string; name: string }[]>([]); const handleInputChange = (e: React.ChangeEvent) => { - // Split the input by newline to get individual ingredients const lines = e.target.value.split('\n').filter(line => line.trim() !== ''); const pattern = /^([0-9/.]+)?\s*(\S+)\s*((\w+\s*)*)$/; - const parsedIngredients: Ingredient[] = lines.map(line => { - const parts = line.match(pattern); // Updated regex pattern for fractions - let quantity; + const parsedIngredients = lines.map(line => { + const parts = line.match(pattern); + let quantity = 0; if (parts?.[1]) { - // Try to parse the quantity as a fraction first const [num, denom] = parts[1].split('/'); if (denom) { quantity = parseFloat(num) / parseFloat(denom); } else { quantity = parseFloat(parts[1]); } - } else { - quantity = 0; // Default to zero if no quantity is found } return { quantity: +quantity.toFixed(2), - name: parts?.[3]?.trim() || '', - unit: parts?.[2]?.trim() || '' + unit: parts?.[2]?.trim() || '', + name: parts?.[3]?.trim() || '' }; }); setIngredients(parsedIngredients); + if (onChange) onChange(parsedIngredients); // Notify parent of change }; return (

Please enter ingredients in the following order: Quantity, Unit, Name

{/* Prompt for correct input format */} -