From 0bfff2719e14a62c56633160c545cee3c6eb4b47 Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Thu, 4 Dec 2025 22:37:45 +0100 Subject: [PATCH 01/16] fundamental print logic implemented --- client/src/main/java/client/utils/PrintExportService.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 client/src/main/java/client/utils/PrintExportService.java diff --git a/client/src/main/java/client/utils/PrintExportService.java b/client/src/main/java/client/utils/PrintExportService.java new file mode 100644 index 0000000..cd226fe --- /dev/null +++ b/client/src/main/java/client/utils/PrintExportService.java @@ -0,0 +1,4 @@ +package client.utils; + +public class PrintExportService { +} From 91fbefb3923d88503ce8e92927809b858c9b9623 Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Fri, 5 Dec 2025 13:54:56 +0100 Subject: [PATCH 02/16] Basic print functionality done with comments --- .../java/client/utils/PrintExportService.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/client/src/main/java/client/utils/PrintExportService.java b/client/src/main/java/client/utils/PrintExportService.java index cd226fe..5198c41 100644 --- a/client/src/main/java/client/utils/PrintExportService.java +++ b/client/src/main/java/client/utils/PrintExportService.java @@ -1,4 +1,67 @@ package client.utils; +import commons.Recipe; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + public class PrintExportService { + + /** + * Builds the String with all the recipe data in a human-readable format and returns said string + * @param recipe - Recipe Object that needs to be converted + * @return - String Result that is the converted recipe object + */ + public static String buildRecipeText(Recipe recipe){ + String result = "Title: " + recipe.getName() + "\nRecipe ID: " + recipe.getId() + "\n" + + "Ingredients: "; //Starts the string with name and recipe ID + for(int i =0; i Date: Fri, 5 Dec 2025 15:21:19 +0100 Subject: [PATCH 03/16] Print export Unit tests are written --- .../java/client/utils/PrintExportService.java | 2 +- .../java/client/scenes/PrintExportTest.java | 69 +++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 client/src/test/java/client/scenes/PrintExportTest.java diff --git a/client/src/main/java/client/utils/PrintExportService.java b/client/src/main/java/client/utils/PrintExportService.java index 5198c41..17c947c 100644 --- a/client/src/main/java/client/utils/PrintExportService.java +++ b/client/src/main/java/client/utils/PrintExportService.java @@ -19,7 +19,7 @@ public class PrintExportService { for(int i =0; i ingredients = new ArrayList<>(); + ingredients.add("Banana"); + ingredients.add("Bread"); + List preparationSteps = new ArrayList<>(); + preparationSteps.add("Mix Ingredients"); + preparationSteps.add("Heat in Oven"); + Recipe recipe1 = new Recipe(1234L, "Banana Bread", ingredients, preparationSteps); + + assertEquals(""" + Title: Banana Bread + Recipe ID: 1234 + Ingredients: Banana, Bread,\s + Steps: + 1: Mix Ingredients + 2: Heat in Oven + """, PrintExportService.buildRecipeText(recipe1)); + + } + + @TempDir + Path tempDir; + @Test + public void validateFolderWithValidFolderTest(){ + assertDoesNotThrow(() -> PrintExportService.validateFolder(tempDir)); + } + + @Test + public void validateFolderWithNullPathTest(){ + IllegalArgumentException i = assertThrows(IllegalArgumentException.class, + ()->PrintExportService.validateFolder(null)); + assertEquals("Path is empty", i.getMessage()); + } + + @Test + public void validateFolderWithFilePathTest() throws IOException { + Path filePath = Files.createFile(tempDir.resolve("TestFile")); + IllegalArgumentException i = assertThrows(IllegalArgumentException.class, + ()->PrintExportService.validateFolder(filePath)); + assertEquals("Given path is not a folder", i.getMessage()); + } + +} From b38e0e7482d94db613bbcc1b70bad882e8881767 Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Fri, 5 Dec 2025 15:27:53 +0100 Subject: [PATCH 04/16] fixed all pipeline errors --- client/src/test/java/client/scenes/PrintExportTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/test/java/client/scenes/PrintExportTest.java b/client/src/test/java/client/scenes/PrintExportTest.java index a46be2b..897c88d 100644 --- a/client/src/test/java/client/scenes/PrintExportTest.java +++ b/client/src/test/java/client/scenes/PrintExportTest.java @@ -28,10 +28,11 @@ public class PrintExportTest { List ingredients = new ArrayList<>(); ingredients.add("Banana"); ingredients.add("Bread"); + final long testRecipeId = 1234L; List preparationSteps = new ArrayList<>(); preparationSteps.add("Mix Ingredients"); preparationSteps.add("Heat in Oven"); - Recipe recipe1 = new Recipe(1234L, "Banana Bread", ingredients, preparationSteps); + Recipe recipe1 = new Recipe(testRecipeId, "Banana Bread", ingredients, preparationSteps); assertEquals(""" Title: Banana Bread From 87f8a883d5197086b0681935a87805103c9dd93c Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Wed, 17 Dec 2025 14:52:40 +0100 Subject: [PATCH 05/16] getUnit() tests --- .../java/commons/RecipeIngredientTest.java | 62 ++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/commons/src/test/java/commons/RecipeIngredientTest.java b/commons/src/test/java/commons/RecipeIngredientTest.java index b2d989a..3e516e1 100644 --- a/commons/src/test/java/commons/RecipeIngredientTest.java +++ b/commons/src/test/java/commons/RecipeIngredientTest.java @@ -1,4 +1,64 @@ package commons; -//should i do it or wait for lines for next week + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + public class RecipeIngredientTest { + + private Recipe recipe; + private Ingredient ingredient; + private RecipeIngredient recipeIngredient; + private RecipeIngredient testIngredient; + + @BeforeEach + void setup(){ + recipe = new Recipe(); + ingredient = new Ingredient(); + testIngredient = new RecipeIngredient(recipe,ingredient,1,"KILOGRAM"); + } + + + @Test + void getFormalUnitTest(){ + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"GRAM"); + assertEquals(Unit.GRAM, recipeIngredient.getUnit()); + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"KILOGRAM"); + assertEquals(Unit.KILOGRAM, recipeIngredient.getUnit()); + + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"MILLILITER"); + assertEquals(Unit.MILLILITER, recipeIngredient.getUnit()); + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"LITER"); + assertEquals(Unit.LITER, recipeIngredient.getUnit()); + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"TEASPOON"); + assertEquals(Unit.TEASPOON, recipeIngredient.getUnit()); + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"TABLESPOON"); + assertEquals(Unit.TABLESPOON, recipeIngredient.getUnit()); + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"CUP"); + assertEquals(Unit.CUP, recipeIngredient.getUnit()); + + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"PIECE"); + assertEquals(Unit.PIECE, recipeIngredient.getUnit()); + } + + @Test + void getInformalUnitTest(){ + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"PINCH"); + assertEquals(Unit.PINCH, recipeIngredient.getUnit()); + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"HANDFUL"); + assertEquals(Unit.HANDFUL, recipeIngredient.getUnit()); + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"TO_TASTE"); + assertEquals(Unit.TO_TASTE, recipeIngredient.getUnit()); + } + + @Test + void getUnknownUnitTest(){ + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"RANDOM"); + assertNull(recipeIngredient.getUnit()); + } + + + } From 4a902ead20cf6cd357c76caa24c421bb62e57d8c Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Thu, 18 Dec 2025 00:54:44 +0100 Subject: [PATCH 06/16] ConvertToBaseUnit test + code fix --- commons/src/main/java/commons/RecipeIngredient.java | 2 +- .../src/test/java/commons/RecipeIngredientTest.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/commons/src/main/java/commons/RecipeIngredient.java b/commons/src/main/java/commons/RecipeIngredient.java index 36488d9..8b18d41 100644 --- a/commons/src/main/java/commons/RecipeIngredient.java +++ b/commons/src/main/java/commons/RecipeIngredient.java @@ -69,7 +69,7 @@ public class RecipeIngredient { public double amountInBaseUnit() { Unit unit = getUnit(); - if (unit == null || unit.isFormal() || unit.conversionFactor <= 0) { + if (unit == null || !unit.isFormal() || unit.conversionFactor <= 0) { return 0.0; } return amount * unit.conversionFactor; diff --git a/commons/src/test/java/commons/RecipeIngredientTest.java b/commons/src/test/java/commons/RecipeIngredientTest.java index 3e516e1..bdb4c08 100644 --- a/commons/src/test/java/commons/RecipeIngredientTest.java +++ b/commons/src/test/java/commons/RecipeIngredientTest.java @@ -11,13 +11,11 @@ public class RecipeIngredientTest { private Recipe recipe; private Ingredient ingredient; private RecipeIngredient recipeIngredient; - private RecipeIngredient testIngredient; @BeforeEach void setup(){ recipe = new Recipe(); ingredient = new Ingredient(); - testIngredient = new RecipeIngredient(recipe,ingredient,1,"KILOGRAM"); } @@ -59,6 +57,16 @@ public class RecipeIngredientTest { assertNull(recipeIngredient.getUnit()); } + @Test + void convertToBaseUnit(){ + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"KILOGRAM"); + assertEquals(1000, recipeIngredient.amountInBaseUnit()); + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"PINCH"); + assertEquals(0,recipeIngredient.amountInBaseUnit()); + + recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"RANDOM"); + assertEquals(0,recipeIngredient.amountInBaseUnit()); + } } From fef20ec8760c5ab70334866621c6ff6bb0e6820b Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Thu, 18 Dec 2025 03:35:47 +0100 Subject: [PATCH 07/16] refactor to setters TODO, ingredientController --- commons/src/main/java/commons/Ingredient.java | 4 ++++ server/src/main/java/server/api/IngredientController.java | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/commons/src/main/java/commons/Ingredient.java b/commons/src/main/java/commons/Ingredient.java index 23b2223..2ecc532 100644 --- a/commons/src/main/java/commons/Ingredient.java +++ b/commons/src/main/java/commons/Ingredient.java @@ -50,6 +50,10 @@ public class Ingredient { + carbsPer100g * KCAL_PER_GRAM_CARBS + fatPer100g * KCAL_PER_GRAM_FAT; } + + public void setId(long id) { + this.id = id; + } } diff --git a/server/src/main/java/server/api/IngredientController.java b/server/src/main/java/server/api/IngredientController.java index 7015aca..531b8f3 100644 --- a/server/src/main/java/server/api/IngredientController.java +++ b/server/src/main/java/server/api/IngredientController.java @@ -134,8 +134,7 @@ public class IngredientController { return ResponseEntity.notFound().build(); } - // TODO: Refactor to use setters - updated.id = id; + updated.setId(id); Ingredient savedIngredient = ingredientRepository.save(updated); messagingTemplate.convertAndSend(Topics.INGREDIENTS, new CreateIngredientMessage(savedIngredient)); From 6794efa3a6e7fe3f213b641ef8d4f2ddb975216a Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Thu, 18 Dec 2025 04:25:42 +0100 Subject: [PATCH 08/16] tested all units conversion and made every unit type a field --- .../java/commons/RecipeIngredientTest.java | 97 ++++++++++++------- 1 file changed, 60 insertions(+), 37 deletions(-) diff --git a/commons/src/test/java/commons/RecipeIngredientTest.java b/commons/src/test/java/commons/RecipeIngredientTest.java index bdb4c08..6a08b23 100644 --- a/commons/src/test/java/commons/RecipeIngredientTest.java +++ b/commons/src/test/java/commons/RecipeIngredientTest.java @@ -8,65 +8,88 @@ import static org.junit.jupiter.api.Assertions.assertNull; public class RecipeIngredientTest { - private Recipe recipe; - private Ingredient ingredient; - private RecipeIngredient recipeIngredient; + private RecipeIngredient gram; + private RecipeIngredient kilogram; + private RecipeIngredient milliliter; + private RecipeIngredient liter; + private RecipeIngredient teaspoon; + private RecipeIngredient tablespoon; + private RecipeIngredient cup; + private RecipeIngredient piece; + private RecipeIngredient pinch; + private RecipeIngredient handful; + private RecipeIngredient to_taste; + private RecipeIngredient invalid; @BeforeEach void setup(){ - recipe = new Recipe(); - ingredient = new Ingredient(); + Recipe recipe = new Recipe(); + Ingredient ingredient = new Ingredient(); + gram = new RecipeIngredient(recipe,ingredient,1,"GRAM"); + kilogram = new RecipeIngredient(recipe,ingredient,1,"KILOGRAM"); + + milliliter = new RecipeIngredient(recipe,ingredient,1,"MILLILITER"); + liter = new RecipeIngredient(recipe,ingredient,1,"LITER"); + teaspoon = new RecipeIngredient(recipe,ingredient,1,"TEASPOON"); + tablespoon = new RecipeIngredient(recipe,ingredient,1,"TABLESPOON"); + cup = new RecipeIngredient(recipe,ingredient,1,"CUP"); + piece = new RecipeIngredient(recipe,ingredient,1,"PIECE"); + pinch = new RecipeIngredient(recipe,ingredient,1,"PINCH"); + handful = new RecipeIngredient(recipe,ingredient,1,"HANDFUL"); + to_taste = new RecipeIngredient(recipe,ingredient,1,"TO_TASTE"); + + invalid = new RecipeIngredient(recipe,ingredient,1,"INVALID"); } @Test void getFormalUnitTest(){ - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"GRAM"); - assertEquals(Unit.GRAM, recipeIngredient.getUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"KILOGRAM"); - assertEquals(Unit.KILOGRAM, recipeIngredient.getUnit()); + assertEquals(Unit.GRAM, gram.getUnit()); + assertEquals(Unit.KILOGRAM, kilogram.getUnit()); + assertEquals(Unit.MILLILITER, milliliter.getUnit()); + assertEquals(Unit.LITER, liter.getUnit()); + assertEquals(Unit.TEASPOON, teaspoon.getUnit()); + assertEquals(Unit.TABLESPOON, tablespoon.getUnit()); + assertEquals(Unit.CUP, cup.getUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"MILLILITER"); - assertEquals(Unit.MILLILITER, recipeIngredient.getUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"LITER"); - assertEquals(Unit.LITER, recipeIngredient.getUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"TEASPOON"); - assertEquals(Unit.TEASPOON, recipeIngredient.getUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"TABLESPOON"); - assertEquals(Unit.TABLESPOON, recipeIngredient.getUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"CUP"); - assertEquals(Unit.CUP, recipeIngredient.getUnit()); - - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"PIECE"); - assertEquals(Unit.PIECE, recipeIngredient.getUnit()); + assertEquals(Unit.PIECE, piece.getUnit()); } @Test void getInformalUnitTest(){ - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"PINCH"); - assertEquals(Unit.PINCH, recipeIngredient.getUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"HANDFUL"); - assertEquals(Unit.HANDFUL, recipeIngredient.getUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"TO_TASTE"); - assertEquals(Unit.TO_TASTE, recipeIngredient.getUnit()); + assertEquals(Unit.PINCH, pinch.getUnit()); + assertEquals(Unit.HANDFUL, handful.getUnit()); + assertEquals(Unit.TO_TASTE, to_taste.getUnit()); } @Test void getUnknownUnitTest(){ - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"RANDOM"); - assertNull(recipeIngredient.getUnit()); + assertNull(invalid.getUnit()); } @Test - void convertToBaseUnit(){ - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"KILOGRAM"); - assertEquals(1000, recipeIngredient.amountInBaseUnit()); + void convertFormalToBaseUnit(){ + assertEquals(1000, kilogram.amountInBaseUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"PINCH"); - assertEquals(0,recipeIngredient.amountInBaseUnit()); + assertEquals(1,milliliter.amountInBaseUnit()); + assertEquals(1000.0,liter.amountInBaseUnit()); + assertEquals(15.0,tablespoon.amountInBaseUnit()); + assertEquals(5,teaspoon.amountInBaseUnit()); + assertEquals(240.0,cup.amountInBaseUnit()); - recipeIngredient = new RecipeIngredient(recipe,ingredient,1,"RANDOM"); - assertEquals(0,recipeIngredient.amountInBaseUnit()); + assertEquals(1.0,piece.amountInBaseUnit()); + } + + @Test + void convertInformalToBaseUnit(){ + assertEquals(0,pinch.amountInBaseUnit()); + assertEquals(0,handful.amountInBaseUnit()); + assertEquals(0,to_taste.amountInBaseUnit()); + } + + @Test + void convertUnknownToBaseUnit(){ + assertEquals(0,invalid.amountInBaseUnit()); } } From b553cee6fdb324ba3ee88e714b334656441291e4 Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Thu, 18 Dec 2025 04:27:04 +0100 Subject: [PATCH 09/16] fix checkstyle error --- commons/src/test/java/commons/RecipeIngredientTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/commons/src/test/java/commons/RecipeIngredientTest.java b/commons/src/test/java/commons/RecipeIngredientTest.java index 6a08b23..30eb676 100644 --- a/commons/src/test/java/commons/RecipeIngredientTest.java +++ b/commons/src/test/java/commons/RecipeIngredientTest.java @@ -18,7 +18,7 @@ public class RecipeIngredientTest { private RecipeIngredient piece; private RecipeIngredient pinch; private RecipeIngredient handful; - private RecipeIngredient to_taste; + private RecipeIngredient toTaste; private RecipeIngredient invalid; @BeforeEach @@ -36,7 +36,7 @@ public class RecipeIngredientTest { piece = new RecipeIngredient(recipe,ingredient,1,"PIECE"); pinch = new RecipeIngredient(recipe,ingredient,1,"PINCH"); handful = new RecipeIngredient(recipe,ingredient,1,"HANDFUL"); - to_taste = new RecipeIngredient(recipe,ingredient,1,"TO_TASTE"); + toTaste = new RecipeIngredient(recipe,ingredient,1,"TO_TASTE"); invalid = new RecipeIngredient(recipe,ingredient,1,"INVALID"); } @@ -59,7 +59,7 @@ public class RecipeIngredientTest { void getInformalUnitTest(){ assertEquals(Unit.PINCH, pinch.getUnit()); assertEquals(Unit.HANDFUL, handful.getUnit()); - assertEquals(Unit.TO_TASTE, to_taste.getUnit()); + assertEquals(Unit.TO_TASTE, toTaste.getUnit()); } @Test @@ -84,7 +84,7 @@ public class RecipeIngredientTest { void convertInformalToBaseUnit(){ assertEquals(0,pinch.amountInBaseUnit()); assertEquals(0,handful.amountInBaseUnit()); - assertEquals(0,to_taste.amountInBaseUnit()); + assertEquals(0, toTaste.amountInBaseUnit()); } @Test From bb5e4a85a48ac8462b0f0d0422bcafcc842844fb Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Fri, 19 Dec 2025 21:37:15 +0100 Subject: [PATCH 10/16] minutes for meeting week 6 --- docs/agenda/agenda-05.md | 155 ++++++++++++++++++++++++++++++++------- 1 file changed, 128 insertions(+), 27 deletions(-) diff --git a/docs/agenda/agenda-05.md b/docs/agenda/agenda-05.md index 195b56c..1ddc728 100644 --- a/docs/agenda/agenda-05.md +++ b/docs/agenda/agenda-05.md @@ -1,33 +1,134 @@ # Week 6 meeting agenda -| Key | Value | -| ------------ |-----------------------------------------------------------------------------------------| -| Date | Dec 18th | -| Time | 14:45 | -| Location | Hall D | -| Chair | Rithvik Sriram | -| Minute Taker | Mei Chang van der Werff | -| Attendees | Mei Chang van der Werff, Natalia Cholewa, Rithvik Sriram, Aysegul Aydinlik, Steven Liu | +| Key | Value | +| ------------ |--------------------------------------------------------------------------------------------------| +| Date | Dec 18th | +| Time | 14:45 | +| Location | Hall D | +| Chair | Rithvik Sriram | +| Minute Taker | Mei Chang van der Werff | +| Attendees | Mei Chang van der Werff, Natalia Cholewa, Rithvik Sriram, Aysegul Aydinlik, Steven Liu (online) | ## Table of contents -1. (1 min) Introduction by chair -2. (1 min) Any additions to the agenda? -3. (1-2 min) TA announcements? -4. (1 min) Go over TA feedback given -5. (33 min) **Meeting content** - 1. (5 min) Week 6 progress in terms of completion - - How far are we in terms of completion? - 2. (5 min) Progress check in terms of feature/issue completion - - What have we completed/going to complete this week? - 3. (3 min) Small Showcase of the product +* (Steven joins the meeting online) - 4. (20 min) **Sprint planning week 7-8** - - What needs to be done? - - Handle Backend-Server code delegation - - How do we do it? - - Who does it? - 5. (2 min) Designate teams. - 6. (1 min) Who is the next chair and minute taker? +1. (1 min) Introduction by chair +> Meeting starts at **14:46** + --- + +2. (1 min) Any additions to the agenda? +> Tomorrow is the deadline for technology, it's best to go over the requirements real quick. \ +> To prevent failing this assignment like the previous 2 +--- +3. (1-2 min) TA announcements? +> If there are any questions about my feedback ask them now +4. (1 min) Go over TA feedback given +>*We've made a little summary of our feedback, and had a few questions* +> ### _Time Tracking_: +>- **What exactly is expected from us for the time tracking?** \ + >We need to do an estimate of how long a task/issue might take. And after implementing it, you have to upload the actual taken time +>- **Are the Mr and issues time tracking connected?** \ + >Yes, but not 100% sure. It's better to double-check it yourself +> +>### _Milestones_: +>- **What was the exact issue, they are too big?** \ + >Our understanding of milestones is wrong, the milestones should be kinda our weekly tasks deadline. \ + >And when we don't finish a task it should be moved to the next milestone, of the next week. +> +> ### _UserStory (backlog)_: +>- **How should we do this?** \ + > You can just put it in the issue description.Don't make it your mr title! \ + >A different groups makes the user story a parent issue and make children issues with the actual code, but we can choose what we want +>>For now, we will just put the user Story in the issue description, we will discuss it later if we want to change the method or not +> +> +>### _Commit and MR issues_: +>- Not all commits are related to the Mr +>- Our commits are too big, editing ±20 files are way too many. Try too keep it to 3-5 files max. +>- Also do only client or only server in a commit, don't combine them. +> - `mvn clean verify` before pushing to check whether the pipeline fails or not + +--- +5. (33 min) Meeting content +* (5 min) Week 6 progress in terms of completion + - How far are we in terms of completion? +>* 4.1 We still need to merge to connection of the print function, the Mr needed some changes but we can do that later. But do Rebase the MR as the branch is behind with A LOT of commits +>* 4.2 We've done the websockets, we only need to merge it +>* 4.3 We've done some backend parts but they are not yet connected to the client side +>* 4.4 The favourite button and message were made this week +>* 4.4 The search bar is currently in prgress on both the client and server side +>* 4.5 We keep this for week 8 or next week if there are not enough tasks +> >Let's focus on just connecting everything next week and after that we can start implementing 4.5 + +* (5 min) Progress check in terms of feature/issue completion + - What have we completed/going to complete this week? +> **Rithvik**: the backend of the searchbar and favourites is in progress. \ +> **Aysegul**: Made the favourite button and some UI elements, sadly enough no penguin icon yet :< \ +> **Oskar**: Finished the websocket implementation, however there is a small TODO left. Steven is going to do that. Also connected the config \ +> **Mei Chang**: Deleted all the left over example code, made the favourite recipe message(backend), created a test class, made unit use enums and did a small TODO about setters.\ +> **Natalia**: Almost finished the search bar (frontend) and improved testing on the client side. Will do some refactoring tomorrow. \ +> **Steven**: Forgot to ask. But did make the language buttons a dropdown box, and did some other things +* (3 min) Small Showcase of the product +>We didn't have a lot of time to review and merge our code, so there is not big difference compared to last week. \ +> We've shown the language dropdown box +* (20 min) Sprint planning week 7-8 + - What needs to be done? + - Handle Backend-Server code delegation + - How do we do it? + - Who does it? +>We didn't really divide the tasks, just the roles. We will distribute tasks on the monday meeting. \ +> We did discuss some things general tasks that need to be done +> +> ### Server +> - Testing +> - Refactoring (Oskar) +> - Some backend websocket things +> - Add more endpoints +> +> ### Client +> - Connecting everything to the UI +> - Some frontend websocket things + + +* (2 min) Designate teams. +>There is not a lot of server code that needs to be done so we're keeping the 2/4 server/client distribution this week.\ +> Since there are still 3 people who need their LOC in server they have prioriy +> - Ayse and Oskar will do Server +> - The others will do Client + +* (1 min) Who is the next chair and minute taker? +> Mei Chang will be the Chair \ +> Aysegul will be the minute taker +--- +>### Some Questions +> **What's the criteria of production code in server?**\ +> Answer: recommendation to do 50/50 or 60/40 production/test code. +> +> **Can we copy code from the internet?**\ +> Answer: Yes, but do put the link of where you got the code from in comments +> +> **For a test I want to change the gitlab UI, is that allowed?** +> **And I need to write a docx file for this, is the team fine with that?**\ +> Answer TA: Yes, but make sure it doesn't affect the other teammates \ +> Team: Yeah we're fine with that + +--- 6. (2 min) Questions +> #### We haven't yet talked about the technology requirements. +> We might didn't split the ui correctly, there is too much logic in it.\ +> Server utils isn't server decorated +> +> **What is business logic?** \ +> Something about the fact that not everything should be in the same file, but split across files +--- 7. (1 min) Summarize everything -8. (1 min) TA remarks -**Max time:** ~40 minutes +>- 3 people still need to do server LOC; Aysegul, Oskar, Mei Chang. +>- Next week our priority is connecting everything +>- We need to improve our code contribution and planning based on the feedback +--- +8. (1 min) TA remarks \ + Max time: ~40 minutes + +> Ta will look at technology on Tuesday +> +>Meeting ends: **15:18**\ +>Actual meeting time: 32 minutes From 6c7a9434ca50e9e9904affa85140e88617aa410f Mon Sep 17 00:00:00 2001 From: Steven Liu Date: Tue, 16 Dec 2025 13:06:45 +0100 Subject: [PATCH 11/16] chore: create display texts for langs --- client/src/main/resources/locale/lang.properties | 4 ++++ client/src/main/resources/locale/lang_en.properties | 4 ++++ client/src/main/resources/locale/lang_nl.properties | 4 ++++ client/src/main/resources/locale/lang_pl.properties | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/client/src/main/resources/locale/lang.properties b/client/src/main/resources/locale/lang.properties index d4f71f4..dc22e10 100644 --- a/client/src/main/resources/locale/lang.properties +++ b/client/src/main/resources/locale/lang.properties @@ -24,3 +24,7 @@ menu.button.remove.step=Remove Step menu.button.edit=Edit menu.button.clone=Clone menu.button.print=Print recipe + +lang.en.display=English +lang.nl.display=Dutch +lang.pl.display=Polish \ No newline at end of file diff --git a/client/src/main/resources/locale/lang_en.properties b/client/src/main/resources/locale/lang_en.properties index d4f71f4..874d231 100644 --- a/client/src/main/resources/locale/lang_en.properties +++ b/client/src/main/resources/locale/lang_en.properties @@ -24,3 +24,7 @@ menu.button.remove.step=Remove Step menu.button.edit=Edit menu.button.clone=Clone menu.button.print=Print recipe + +lang.en.display=English +lang.nl.display=Nederlands +lang.pl.display=Polski \ No newline at end of file diff --git a/client/src/main/resources/locale/lang_nl.properties b/client/src/main/resources/locale/lang_nl.properties index 9ab41ae..7067697 100644 --- a/client/src/main/resources/locale/lang_nl.properties +++ b/client/src/main/resources/locale/lang_nl.properties @@ -24,3 +24,7 @@ menu.button.remove.step=Stap verwijderen menu.button.edit=Bewerken menu.button.clone=Dupliceren menu.button.print=Recept afdrukken + +lang.en.display=English +lang.nl.display=Nederlands +lang.pl.display=Polski diff --git a/client/src/main/resources/locale/lang_pl.properties b/client/src/main/resources/locale/lang_pl.properties index 10076de..28b1079 100644 --- a/client/src/main/resources/locale/lang_pl.properties +++ b/client/src/main/resources/locale/lang_pl.properties @@ -24,3 +24,7 @@ menu.button.remove.step=Usuń instrukcję menu.button.edit=Edytuj menu.button.clone=Duplikuj menu.button.print=Drukuj przepis + +lang.en.display=English +lang.nl.display=Nederlands +lang.pl.display=Polski \ No newline at end of file From f7ff7497a28da5b868a22cca7449bf2028c8be7e Mon Sep 17 00:00:00 2001 From: Steven Liu Date: Tue, 16 Dec 2025 13:07:15 +0100 Subject: [PATCH 12/16] feat: lang button into combo box --- .../client/scenes/FoodpalApplication.fxml | 63 +++---------------- 1 file changed, 10 insertions(+), 53 deletions(-) diff --git a/client/src/main/resources/client/scenes/FoodpalApplication.fxml b/client/src/main/resources/client/scenes/FoodpalApplication.fxml index 27b5bc2..a621046 100644 --- a/client/src/main/resources/client/scenes/FoodpalApplication.fxml +++ b/client/src/main/resources/client/scenes/FoodpalApplication.fxml @@ -15,6 +15,7 @@ + @@ -23,58 +24,12 @@ - - - - - - - - - - - - - - - - - -