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