From 38f11ed7cfbe541b38662752ffd1bc17d0c7c69f Mon Sep 17 00:00:00 2001
From: HSoreide <sofie.scisly@gmail.com>
Date: Thu, 20 Apr 2023 21:56:43 +0200
Subject: [PATCH 1/4] Make budgets load dynamically to overview

---
 .../demo/controller/BudgetBarController.java  |  34 +++++
 .../idatt1002/demo/controller/MainMenu.java   |  36 ++++-
 .../controller/SuggestRecipesController.java  |  34 ++---
 .../demo/data/Budget/GeneralBudget.java       |   2 +
 .../demo/data/Economics/ExpenseCategory.java  |   3 +
 src/main/resources/style.css                  |   9 ++
 src/main/resources/view/BudgetBar.fxml        |  34 +++++
 src/main/resources/view/MainMenuNew.fxml      | 142 +++---------------
 8 files changed, 148 insertions(+), 146 deletions(-)
 create mode 100644 src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
 create mode 100644 src/main/resources/view/BudgetBar.fxml

diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
new file mode 100644
index 00000000..54121c12
--- /dev/null
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
@@ -0,0 +1,34 @@
+package no.ntnu.idatt1002.demo.controller;
+
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Label;
+import javafx.scene.control.ProgressBar;
+import no.ntnu.idatt1002.demo.data.Budget.BudgetItem;
+import java.net.URL;
+import java.util.ResourceBundle;
+
+public class BudgetBarController implements Initializable {
+
+
+    @FXML
+    private Label nameTag;
+
+    @FXML
+    private Label leftoverTag;
+
+    @FXML
+    private ProgressBar miniBar;
+
+
+    public void setData(BudgetItem budgetItem, double leftovers) {
+        nameTag.setText(budgetItem.getBudgetCategory().label);
+        leftoverTag.setText(String.format("Left: %.0f", leftovers));
+        miniBar.setProgress(budgetItem.getBudgetAmount()-( leftovers/budgetItem.getBudgetAmount()));
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+    }
+
+}
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
index 2d62ad8b..d8cb19ec 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
@@ -2,8 +2,11 @@ package no.ntnu.idatt1002.demo.controller;
 
 import java.io.IOException;
 import java.time.LocalDate;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
+
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
 import javafx.event.ActionEvent;
@@ -20,9 +23,12 @@ import javafx.scene.control.DatePicker;
 import javafx.scene.control.Label;
 import javafx.scene.control.ProgressBar;
 import javafx.scene.layout.AnchorPane;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
 import javafx.scene.paint.Color;
 import javafx.stage.Screen;
 import javafx.stage.Stage;
+import no.ntnu.idatt1002.demo.data.Budget.BudgetItem;
 import no.ntnu.idatt1002.demo.data.Budget.FileHandlingBudget;
 import no.ntnu.idatt1002.demo.data.Budget.FileHandlingSelectedBudget;
 import no.ntnu.idatt1002.demo.data.Budget.GeneralBudget;
@@ -31,6 +37,7 @@ import no.ntnu.idatt1002.demo.data.Economics.ExpenseRegister;
 import no.ntnu.idatt1002.demo.data.Economics.FileHandling;
 import no.ntnu.idatt1002.demo.data.Economics.IncomeRegister;
 import no.ntnu.idatt1002.demo.data.Economics.Overview;
+import no.ntnu.idatt1002.demo.data.recipes.Recipe;
 
 public class MainMenu {
 
@@ -93,6 +100,9 @@ public class MainMenu {
   @FXML
   private Label daysLeftLbl;
 
+  @FXML
+  private VBox miniBarScroll;
+
   GeneralBudget generalBudget;
 
   ExpenseRegister expenseRegister;
@@ -121,7 +131,7 @@ public class MainMenu {
     }
     overview = new Overview(incomeRegister, expenseRegister, generalBudget);
 
-    mainBar.setStyle("-fx-accent: green;");
+    mainBar.setStyle("-fx-accent: #338333;");
 
     refreshProgressBars();
     refreshLabels();
@@ -160,10 +170,26 @@ public class MainMenu {
       mainBar.setStyle("-fx-accent: #fa5959;");
     }
 
-    foodBar.setProgress((generalBudget.getBudgetItem(ExpenseCategory.FOOD).getBudgetAmount() - overview.getBudgetItemMinusExpense(ExpenseCategory.FOOD))/generalBudget.getBudgetItem(ExpenseCategory.FOOD).getBudgetAmount());
-    clothesBar.setProgress((generalBudget.getBudgetItem(ExpenseCategory.CLOTHES).getBudgetAmount() - overview.getBudgetItemMinusExpense(ExpenseCategory.CLOTHES))/generalBudget.getBudgetItem(ExpenseCategory.CLOTHES).getBudgetAmount());
-    bookBar.setProgress((generalBudget.getBudgetItem(ExpenseCategory.BOOKS).getBudgetAmount() - overview.getBudgetItemMinusExpense(ExpenseCategory.BOOKS))/generalBudget.getBudgetItem(ExpenseCategory.BOOKS).getBudgetAmount());
-    otherBar.setProgress((generalBudget.getBudgetItem(ExpenseCategory.OTHER).getBudgetAmount() - overview.getBudgetItemMinusExpense(ExpenseCategory.OTHER))/generalBudget.getBudgetItem(ExpenseCategory.OTHER).getBudgetAmount());
+    ArrayList<BudgetItem> budgets = generalBudget.getBudgetItems().stream()
+            .filter(budget -> budget.getBudgetAmount() > 0)
+            .collect(Collectors.toCollection(ArrayList::new));
+
+    for(BudgetItem bi : budgets) {
+      FXMLLoader loader = new FXMLLoader();
+      loader.setLocation(getClass().getResource("/view/BudgetBar.fxml"));
+
+      try {
+        HBox hBox = loader.load();
+
+        BudgetBarController budgetBarController = loader.getController();
+        double leftovers = overview.getBudgetItemMinusExpense(bi.getBudgetCategory());
+        budgetBarController.setData(bi, leftovers);
+        miniBarScroll.getChildren().add(hBox);
+
+      }catch (IOException e) {
+        throw new RuntimeException(e);
+      }
+    }
   }
 
   /**
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/SuggestRecipesController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/SuggestRecipesController.java
index 49ef7c7f..cc60eafa 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/SuggestRecipesController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/SuggestRecipesController.java
@@ -27,12 +27,6 @@ public class SuggestRecipesController implements Initializable {
     RecipeRegister recipeRegister;
 
 
-    @FXML
-    private Button addToFridgeBtn;
-
-    @FXML
-    private Button removeBtn;
-
     @FXML
     private Button showAllBtn;
 
@@ -48,21 +42,14 @@ public class SuggestRecipesController implements Initializable {
     @FXML
     private Label missingList;
 
-    @FXML
-    private VBox recipeTile;
-
     private ObservableList<String> fridge;
 
-    private ObservableList<Recipe> recipes;
-
-    private final int NUMBER_OF_TILES = 4;
-
     private final ArrayList<VBox> currentRecipeTiles = new ArrayList<>(4);
 
 
 
     @FXML
-    private void addIngredient(ActionEvent event) throws IOException {
+    private void addIngredient() throws IOException {
         FXMLLoader loader = new FXMLLoader();
         loader.setLocation(getClass().getResource("/view/AddIngredient.fxml"));
         DialogPane addIngredientPane = loader.load();
@@ -74,28 +61,25 @@ public class SuggestRecipesController implements Initializable {
         Optional<ButtonType> clickedButton = dialog.showAndWait();
 
         if (clickedButton.isPresent() && clickedButton.get() == ButtonType.CLOSE) {
-        // Refresh ingredientsAtHand.
            readIngredientsAtHand();
             setRecipeTiles();
         }
     }
 
     @FXML
-    private void removeFromFridge(ActionEvent event) throws IOException {
+    private void removeFromFridge() throws IOException {
         String toRemove = fridgeList.getSelectionModel().getSelectedItem();
-        //TODO: If anything selected!
         if(toRemove != null) {
             ingredientsAtHand.removeIngredient(FoodItem.valueOf(toRemove.replace(" ", "_").toUpperCase()));
             storeIngredientsAtHand();
             setRecipeTiles();
         }
-
     }
 
 
 
     private void setRecipeTiles() {
-        // Ingredeints at hand and recipesRegister
+        int NUMBER_OF_TILES = 4;
         ArrayList<Recipe> recipes = recipeRegister.pickBestFits(NUMBER_OF_TILES, ingredientsAtHand);
 
         int i = 0;
@@ -173,10 +157,11 @@ public class SuggestRecipesController implements Initializable {
     }
 
     public void readIngredientsAtHand() {
-        // If no ingredients at hand file exsists, add one and let it be empty. //TODO
         ingredientsAtHand = FileHandler.readIngredientsAtHand("Fridge");
+        if (ingredientsAtHand == null) {
+            ingredientsAtHand = new IngredientsAtHand();
+        }
         fridge = FXCollections.observableArrayList(ingredientsAtHand.getIngredientsAtHand().stream().map(foodItem -> foodItem.label).toList());
-        //List<String> fridgeLabels = fridge;
         fridgeList.setItems(fridge.sorted());
     }
 
@@ -187,16 +172,17 @@ public class SuggestRecipesController implements Initializable {
     }
 
 
-
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
 
         readIngredientsAtHand();
          recipeRegister = FileHandler.readRecipeRegister("Recipes");
-         recipes = FXCollections.observableArrayList(recipeRegister.getRecipes());
+         if(recipeRegister == null) {
+             recipeRegister = new RecipeRegister();
+         }
+        //ObservableList<Recipe> recipes = FXCollections.observableArrayList(recipeRegister.getRecipes());
          missingList.setVisible(false);
 
-         // Get the number from FX-grid available?
          setRecipeTiles();
     }
 }
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
index c93ec12c..4ceaf8f6 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
@@ -177,8 +177,10 @@ public class GeneralBudget {
             throw new IllegalArgumentException("Amount to be added goes over the max value of the budget");
         }
         if (!hasBudgetCategory(category)) {
+            System.out.println(category.label);
             budgetItems.add(new BudgetItem(budgetAmount, description, category));
         } else {
+            System.out.println("Failing: " + category.label);  //TODO: When adding budgets, this fails at 'other' even if an 'other' budget was not set.
             throw new IllegalArgumentException("There is already a budget with this category");
         }
     }
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java
index f5af9a40..4a94a256 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java
@@ -3,8 +3,11 @@ package no.ntnu.idatt1002.demo.data.Economics;
 public enum ExpenseCategory {
 
     FOOD("food"),
+    RENT("rent"),
     CLOTHES("clothes"),
     BOOKS("books"),
+    HEALTH("health"),
+    ACTIVITIES("activities"),
     OTHER("other");
 
 
diff --git a/src/main/resources/style.css b/src/main/resources/style.css
index 87a78c9e..d976d2a7 100644
--- a/src/main/resources/style.css
+++ b/src/main/resources/style.css
@@ -78,4 +78,13 @@
     -fx-background-color: rgba(255, 255, 255, 0.65);
     -fx-text-fill: black;
     -fx-border-radius: 20;
+}
+
+/*.main-bar {
+    -fx-accent: green;
+}*/
+
+.mini-bars {
+    -fx-accent: #1e5b5b;
+
 }
\ No newline at end of file
diff --git a/src/main/resources/view/BudgetBar.fxml b/src/main/resources/view/BudgetBar.fxml
new file mode 100644
index 00000000..a54e9c26
--- /dev/null
+++ b/src/main/resources/view/BudgetBar.fxml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.*?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.layout.*?>
+<?import javafx.scene.text.*?>
+
+<HBox fx:id="miniBudget" prefHeight="87.0" prefWidth="740.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.BudgetBarController">
+   <children>
+      <Pane prefHeight="87.0" prefWidth="167.0">
+         <children>
+            <Label fx:id="nameTag" alignment="CENTER" contentDisplay="CENTER" prefHeight="87.0" prefWidth="167.0" text="BudgetName" textAlignment="CENTER" wrapText="true">
+               <font>
+                  <Font size="20.0" />
+               </font>
+            </Label>
+         </children></Pane>
+      <Pane prefHeight="87.0" prefWidth="373.0">
+         <children>
+            <ProgressBar fx:id="miniBar" layoutY="25.0" prefHeight="38.0" prefWidth="373.0" progress="0.0" />
+         </children></Pane>
+      <Pane prefHeight="200.0" prefWidth="200.0">
+         <children>
+            <Label fx:id="leftoverTag" layoutY="-1.0" prefHeight="87.0" prefWidth="200.0" text="LeftOver" textAlignment="CENTER" wrapText="true">
+               <font>
+                  <Font size="24.0" />
+               </font>
+               <padding>
+                  <Insets left="15.0" />
+               </padding>
+            </Label>
+         </children></Pane>
+   </children>
+</HBox>
diff --git a/src/main/resources/view/MainMenuNew.fxml b/src/main/resources/view/MainMenuNew.fxml
index 4acfebd9..37b61b86 100644
--- a/src/main/resources/view/MainMenuNew.fxml
+++ b/src/main/resources/view/MainMenuNew.fxml
@@ -1,24 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<?import javafx.geometry.Insets?>
-<?import javafx.scene.control.Button?>
-<?import javafx.scene.control.DatePicker?>
-<?import javafx.scene.control.Label?>
-<?import javafx.scene.control.ProgressBar?>
-<?import javafx.scene.image.Image?>
-<?import javafx.scene.image.ImageView?>
-<?import javafx.scene.layout.AnchorPane?>
-<?import javafx.scene.layout.BorderPane?>
-<?import javafx.scene.layout.ColumnConstraints?>
-<?import javafx.scene.layout.GridPane?>
-<?import javafx.scene.layout.Pane?>
-<?import javafx.scene.layout.RowConstraints?>
-<?import javafx.scene.layout.StackPane?>
-<?import javafx.scene.layout.TilePane?>
-<?import javafx.scene.layout.VBox?>
-<?import javafx.scene.text.Font?>
+<?import javafx.geometry.*?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.image.*?>
+<?import javafx.scene.layout.*?>
+<?import javafx.scene.text.*?>
 
-<AnchorPane fx:id="root" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.MainMenu">
+<AnchorPane fx:id="root" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.MainMenu">
    <children>
       <ImageView fitHeight="719.0" fitWidth="1130.0" layoutY="-3.0" pickOnBounds="true" preserveRatio="true">
          <image>
@@ -27,7 +15,7 @@
       </ImageView>
       <VBox alignment="TOP_CENTER" prefHeight="695.0" prefWidth="1100.0">
          <children>
-            <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="164.0" prefWidth="1100.0">
+            <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="144.0" prefWidth="1100.0">
                <left>
                   <Pane prefWidth="175.0" BorderPane.alignment="CENTER">
                      <children>
@@ -69,16 +57,16 @@
                   </Label>
                </bottom>
             </BorderPane>
-            <BorderPane prefHeight="403.0" prefWidth="1131.0">
+            <BorderPane prefHeight="424.0" prefWidth="1130.0">
                <top>
-                  <StackPane BorderPane.alignment="CENTER">
+                  <StackPane prefHeight="90.0" prefWidth="1130.0" BorderPane.alignment="CENTER">
                      <children>
-                        <ProgressBar fx:id="mainBar" prefHeight="35.0" prefWidth="750.0" progress="0.54">
+                        <ProgressBar fx:id="mainBar" prefHeight="51.0" prefWidth="750.0" progress="0.54">
                            <StackPane.margin>
                               <Insets top="5.0" />
                            </StackPane.margin>
                         </ProgressBar>
-                        <Label fx:id="usageLbl" text="You have used xxx out of xxx this month">
+                        <Label fx:id="usageLbl" prefHeight="49.0" prefWidth="287.0" text="You have used xxx out of xxx this month">
                            <font>
                               <Font name="Lucida Console" size="14.0" />
                            </font>
@@ -90,103 +78,23 @@
                   </StackPane>
                </top>
                <center>
-                  <GridPane maxWidth="750.0" minHeight="250.0" minWidth="750.0" prefHeight="300.0" prefWidth="750.0" BorderPane.alignment="CENTER">
-                    <columnConstraints>
-                      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="25.0" prefWidth="100.0" />
-                      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0" prefWidth="100.0" />
-                        <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="25.0" prefWidth="100.0" />
-                    </columnConstraints>
-                    <rowConstraints>
-                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-                        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-                    </rowConstraints>
-                     <children>
-                        <ProgressBar fx:id="foodBar" prefHeight="25.0" prefWidth="375.0" progress="0.37" GridPane.columnIndex="1" />
-                        <ProgressBar fx:id="otherBar" prefHeight="25.0" prefWidth="375.0" progress="0.46" GridPane.columnIndex="1" GridPane.rowIndex="3" />
-                        <ProgressBar fx:id="bookBar" prefHeight="25.0" prefWidth="375.0" progress="0.19" GridPane.columnIndex="1" GridPane.rowIndex="2" />
-                        <ProgressBar fx:id="clothesBar" prefHeight="25.0" prefWidth="375.0" progress="0.76" GridPane.columnIndex="1" GridPane.rowIndex="1" />
-                        <Pane>
-                           <children>
-                              <Label fx:id="foodLbl" alignment="CENTER_RIGHT" layoutX="78.0" layoutY="38.0" text="Food">
-                                 <font>
-                                    <Font name="Lucida Console" size="14.0" />
-                                 </font>
-                              </Label>
-                           </children>
-                        </Pane>
-                        <Pane GridPane.rowIndex="3">
-                           <children>
-                              <Label fx:id="otherLbl" alignment="CENTER_RIGHT" layoutX="68.0" layoutY="39.0" text="Other ">
-                                 <font>
-                                    <Font name="Lucida Console" size="14.0" />
-                                 </font>
-                              </Label>
-                           </children>
-                        </Pane>
-                        <Pane GridPane.rowIndex="2">
-                           <children>
-                              <Label fx:id="bookLbl" alignment="CENTER_RIGHT" layoutX="68.0" layoutY="36.0" text="Books ">
-                                 <font>
-                                    <Font name="Lucida Console" size="14.0" />
-                                 </font>
-                              </Label>
-                           </children>
-                        </Pane>
-                        <Pane GridPane.rowIndex="1">
-                           <children>
-                              <Label fx:id="clothesLbl" alignment="CENTER_RIGHT" layoutX="65.0" layoutY="38.0" text="Clothes">
-                                 <font>
-                                    <Font name="Lucida Console" size="14.0" />
-                                 </font>
-                              </Label>
-                           </children>
-                        </Pane>
-                        <Pane GridPane.columnIndex="2">
-                           <children>
-                              <Label alignment="CENTER_RIGHT" layoutX="58.0" layoutY="37.0" text="Left: 50">
-                                 <font>
-                                    <Font name="Lucida Console" size="14.0" />
-                                 </font>
-                              </Label>
-                           </children>
-                        </Pane>
-                        <Pane GridPane.columnIndex="2" GridPane.rowIndex="3">
-                           <children>
-                              <Label alignment="CENTER_RIGHT" layoutX="60.0" layoutY="36.0" text="Left: 200">
-                                 <font>
-                                    <Font name="Lucida Console" size="14.0" />
-                                 </font>
-                              </Label>
-                           </children>
-                        </Pane>
-                        <Pane GridPane.columnIndex="2" GridPane.rowIndex="2">
+                  <ScrollPane prefHeight="317.0" prefWidth="750.0" BorderPane.alignment="CENTER">
+                    <content>
+                      <AnchorPane prefHeight="331.0" prefWidth="744.0">
                            <children>
-                              <Label alignment="CENTER_RIGHT" layoutX="59.0" layoutY="38.0" text="Left: 150">
-                                 <font>
-                                    <Font name="Lucida Console" size="14.0" />
-                                 </font>
-                              </Label>
-                           </children>
-                        </Pane>
-                        <Pane GridPane.columnIndex="2" GridPane.rowIndex="1">
-                           <children>
-                              <Label alignment="CENTER_RIGHT" layoutX="53.0" layoutY="38.0" text="Left: 60 ">
-                                 <font>
-                                    <Font name="Lucida Console" size="14.0" />
-                                 </font>
-                              </Label>
-                           </children>
-                        </Pane>
-                     </children>
-                     <BorderPane.margin>
-                        <Insets top="30.0" />
-                     </BorderPane.margin>
-                  </GridPane>
+                              <VBox fx:id="miniBarScroll" layoutY="1.0" />
+                           </children></AnchorPane>
+                    </content>
+                  </ScrollPane>
                </center>
+               <right>
+                  <Pane prefHeight="351.0" prefWidth="190.0" BorderPane.alignment="CENTER" />
+               </right>
+               <left>
+                  <Pane prefHeight="320.0" prefWidth="190.0" BorderPane.alignment="CENTER" />
+               </left>
             </BorderPane>
-            <TilePane alignment="CENTER" hgap="50.0" prefHeight="215.0" prefWidth="1131.0">
+            <TilePane alignment="CENTER" hgap="50.0" prefHeight="127.0" prefWidth="1130.0">
                <children>
                   <Button fx:id="foodBtn" alignment="TOP_CENTER" contentDisplay="TOP" mnemonicParsing="false" onAction="#switchScene" prefHeight="100.0" prefWidth="150.0" text="Food">
                      <graphic>
-- 
GitLab


From 35655a91d13d23f95408abb3fddc0137886df7e6 Mon Sep 17 00:00:00 2001
From: HSoreide <sofie.scisly@gmail.com>
Date: Thu, 20 Apr 2023 22:14:46 +0200
Subject: [PATCH 2/4] Remove added expense categories that caused failure

---
 .../no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java
index 4a94a256..f5af9a40 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseCategory.java
@@ -3,11 +3,8 @@ package no.ntnu.idatt1002.demo.data.Economics;
 public enum ExpenseCategory {
 
     FOOD("food"),
-    RENT("rent"),
     CLOTHES("clothes"),
     BOOKS("books"),
-    HEALTH("health"),
-    ACTIVITIES("activities"),
     OTHER("other");
 
 
-- 
GitLab


From 000be7b009e1211ab413b821fcdd76dec0ef0f0b Mon Sep 17 00:00:00 2001
From: HSoreide <sofie.scisly@gmail.com>
Date: Thu, 20 Apr 2023 22:39:49 +0200
Subject: [PATCH 3/4] Make progress bars of budgets color-coded
 green-yellow-red

---
 .../demo/controller/BudgetBarController.java   | 18 +++++++++++++++++-
 .../idatt1002/demo/controller/MainMenu.java    |  2 +-
 src/main/resources/budgets/Archive.archive     |  4 +++-
 .../resources/budgets/SelectedBudget.current   |  2 +-
 src/main/resources/recipes/Fridge.register     |  4 ++--
 src/main/resources/style.css                   | 12 +++++++++++-
 src/main/resources/view/BudgetBar.fxml         |  2 +-
 src/main/resources/view/MainMenuNew.fxml       |  2 +-
 8 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
index 54121c12..f019119d 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
@@ -24,7 +24,23 @@ public class BudgetBarController implements Initializable {
     public void setData(BudgetItem budgetItem, double leftovers) {
         nameTag.setText(budgetItem.getBudgetCategory().label);
         leftoverTag.setText(String.format("Left: %.0f", leftovers));
-        miniBar.setProgress(budgetItem.getBudgetAmount()-( leftovers/budgetItem.getBudgetAmount()));
+
+        double progress = 1+(leftovers-budgetItem.getBudgetAmount())/ budgetItem.getBudgetAmount();
+
+        if(progress < 0.25) {
+            miniBar.setStyle("-fx-accent: #ffb000;");
+            if(progress < -0.00) {
+                miniBar.setProgress(1.0);
+                miniBar.setStyle("-fx-accent: #fa5959;");
+            } else {
+                miniBar.setProgress(progress);
+            }
+        } else {
+            miniBar.setStyle("-fx-accent: rgba(48,222,109,0.8);");
+            miniBar.setProgress(progress);
+        }
+
+
     }
 
     @Override
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
index d8cb19ec..d6a2ef26 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
@@ -131,7 +131,7 @@ public class MainMenu {
     }
     overview = new Overview(incomeRegister, expenseRegister, generalBudget);
 
-    mainBar.setStyle("-fx-accent: #338333;");
+    mainBar.setStyle("-fx-accent:  rgb(48,215,106);");
 
     refreshProgressBars();
     refreshLabels();
diff --git a/src/main/resources/budgets/Archive.archive b/src/main/resources/budgets/Archive.archive
index 6153ed3d..0ff85e98 100644
--- a/src/main/resources/budgets/Archive.archive
+++ b/src/main/resources/budgets/Archive.archive
@@ -1 +1,3 @@
-APRIL10
+APRILnew
+APRILsecond
+APRILreasonable
diff --git a/src/main/resources/budgets/SelectedBudget.current b/src/main/resources/budgets/SelectedBudget.current
index 89aaa4c3..06b27909 100644
--- a/src/main/resources/budgets/SelectedBudget.current
+++ b/src/main/resources/budgets/SelectedBudget.current
@@ -1 +1 @@
-APRIL10
\ No newline at end of file
+APRILreasonable
\ No newline at end of file
diff --git a/src/main/resources/recipes/Fridge.register b/src/main/resources/recipes/Fridge.register
index a8ed5c28..c39c5a87 100644
--- a/src/main/resources/recipes/Fridge.register
+++ b/src/main/resources/recipes/Fridge.register
@@ -1,9 +1,9 @@
-MILK
 YELLOW_CHEESE
 MINCED_MEAT
 ONION
 HAM
-TOMATO
 WHEAT_FLOUR
 ORANGE
 OIL
+POTATO
+OLIVE_OIL
diff --git a/src/main/resources/style.css b/src/main/resources/style.css
index d976d2a7..4b1575f2 100644
--- a/src/main/resources/style.css
+++ b/src/main/resources/style.css
@@ -83,8 +83,18 @@
 /*.main-bar {
     -fx-accent: green;
 }*/
+/*
 
 .mini-bars {
     -fx-accent: #1e5b5b;
+}*/
 
-}
\ No newline at end of file
+.scroll-pane > .viewport {
+    -fx-background-color: transparent;
+}
+.scroll-pane {
+    -fx-background-color: rgba(255, 255, 255, 0.25);
+    -fx-border-width: 5;
+    -fx-border-radius: 5;
+    -fx-border-color: rgba(255, 255, 255, 0.75);
+}
diff --git a/src/main/resources/view/BudgetBar.fxml b/src/main/resources/view/BudgetBar.fxml
index a54e9c26..5f7c1eb7 100644
--- a/src/main/resources/view/BudgetBar.fxml
+++ b/src/main/resources/view/BudgetBar.fxml
@@ -23,7 +23,7 @@
          <children>
             <Label fx:id="leftoverTag" layoutY="-1.0" prefHeight="87.0" prefWidth="200.0" text="LeftOver" textAlignment="CENTER" wrapText="true">
                <font>
-                  <Font size="24.0" />
+                  <Font size="20.0" />
                </font>
                <padding>
                   <Insets left="15.0" />
diff --git a/src/main/resources/view/MainMenuNew.fxml b/src/main/resources/view/MainMenuNew.fxml
index 37b61b86..0eb5ac06 100644
--- a/src/main/resources/view/MainMenuNew.fxml
+++ b/src/main/resources/view/MainMenuNew.fxml
@@ -78,7 +78,7 @@
                   </StackPane>
                </top>
                <center>
-                  <ScrollPane prefHeight="317.0" prefWidth="750.0" BorderPane.alignment="CENTER">
+                  <ScrollPane prefHeight="317.0" prefWidth="750.0" stylesheets="@../style.css" BorderPane.alignment="CENTER">
                     <content>
                       <AnchorPane prefHeight="331.0" prefWidth="744.0">
                            <children>
-- 
GitLab


From 31ed61380a74cf5e72b578c94bf6ab453873b42e Mon Sep 17 00:00:00 2001
From: HSoreide <sofie.scisly@gmail.com>
Date: Thu, 20 Apr 2023 22:53:15 +0200
Subject: [PATCH 4/4] Make main progress bar follow same color coding

---
 .../demo/controller/BudgetBarController.java         |  3 ++-
 .../no/ntnu/idatt1002/demo/controller/MainMenu.java  | 12 ++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
index f019119d..1444edbc 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetBarController.java
@@ -22,7 +22,8 @@ public class BudgetBarController implements Initializable {
 
 
     public void setData(BudgetItem budgetItem, double leftovers) {
-        nameTag.setText(budgetItem.getBudgetCategory().label);
+        nameTag.setText(budgetItem.getBudgetCategory().label.substring(0,1).toUpperCase()
+                + budgetItem.getBudgetCategory().label.substring(1));
         leftoverTag.setText(String.format("Left: %.0f", leftovers));
 
         double progress = 1+(leftovers-budgetItem.getBudgetAmount())/ budgetItem.getBudgetAmount();
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
index d6a2ef26..eb114829 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
@@ -165,9 +165,17 @@ public class MainMenu {
    * Sets the progress of the progress bars to their most updated data.
    */
   private void refreshProgressBars() {
-    mainBar.setProgress(expenseRegister.getTotalSum()/generalBudget.getMaxAmount());
-    if (mainBar.getProgress() >= 1) {
+    //mainBar.setProgress(expenseRegister.getTotalSum()/generalBudget.getMaxAmount());
+    mainBar.setProgress(1-expenseRegister.getTotalSum()/generalBudget.getMaxAmount());
+
+
+    //double progress = 1+(leftovers-budgetItem.getBudgetAmount())/ budgetItem.getBudgetAmount();
+
+    if (mainBar.getProgress() <= 0.0f) {
       mainBar.setStyle("-fx-accent: #fa5959;");
+      mainBar.setProgress(1);
+    } else if(mainBar.getProgress() <= 0.25f) {
+      mainBar.setStyle("-fx-accent: #ffb000;");
     }
 
     ArrayList<BudgetItem> budgets = generalBudget.getBudgetItems().stream()
-- 
GitLab