From 39e32d291769e5155c5ad8b3d0423fb9cbe92587 Mon Sep 17 00:00:00 2001
From: Harry Linrui XU <xulr0820@hotmail.com>
Date: Mon, 10 Apr 2023 14:50:44 +0200
Subject: [PATCH] Cancelling add will not refresh pie chart

---
 .../demo/controller/BudgetController.java     | 20 ++++++++++++-------
 .../controller/IncomeExpenseController.java   |  7 ++++---
 src/main/resources/Economics/Income.register  |  8 ++++----
 3 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java
index ee55a6f0..1325d296 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java
@@ -82,6 +82,7 @@ public class BudgetController implements FinanceController {
         //TODO disable return to main menu when creating budget because this is the same view as when you create budeget
         //TODO make budget item throw exception with negative amount
         //TODO specify error messgage for when amount is exceeded / duplicate exists
+        //todo properly close screen so things are saved
         //Initialize table columns
         categoryCol.setCellValueFactory(new PropertyValueFactory<BudgetItem, ExpenseCategory>("budgetCategory"));
         amountCol.setCellValueFactory(new PropertyValueFactory<BudgetItem, Double>("budgetAmount"));
@@ -98,13 +99,18 @@ public class BudgetController implements FinanceController {
         //sum.setText(String.valueOf(general.totalSum()));
     }
 
-    private ObservableList<PieChart.Data> createBudgetPieChart() { //TODO DOESNT WORK IF BUDGETITEM HAS NO BUDGET
-        return FXCollections.observableArrayList(
-            new Data("Food", general.getBudgetItem(ExpenseCategory.FOOD).getBudgetAmount()),
-            new Data("Books", general.getBudgetItem(ExpenseCategory.BOOKS).getBudgetAmount()),
-            new Data("Clothes", general.getBudgetItem(ExpenseCategory.CLOTHES).getBudgetAmount()),
-            new Data("Other", general.getBudgetItem(ExpenseCategory.OTHER).getBudgetAmount())
-        );
+    private ObservableList<PieChart.Data> createBudgetPieChart() throws IllegalArgumentException { //TODO DOESNT WORK IF BUDGETITEM HAS NO BUDGET
+        try {
+            return FXCollections.observableArrayList(
+                new Data("Food", general.getBudgetItem(ExpenseCategory.FOOD).getBudgetAmount()),
+                new Data("Books", general.getBudgetItem(ExpenseCategory.BOOKS).getBudgetAmount()),
+                new Data("Clothes",
+                    general.getBudgetItem(ExpenseCategory.CLOTHES).getBudgetAmount()),
+                new Data("Other", general.getBudgetItem(ExpenseCategory.OTHER).getBudgetAmount())
+            );
+        } catch(IllegalArgumentException iae) {
+            return FXCollections.observableArrayList();
+        }
     }
 
     /**
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
index 8c4ba019..d82af87d 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
@@ -227,7 +227,6 @@ public class IncomeExpenseController implements FinanceController {
 
     if (sizeAf != sizeBf) {
       refreshTableView();
-      refreshPieCharts();
       refreshProgress();
     }
   }
@@ -334,6 +333,7 @@ public class IncomeExpenseController implements FinanceController {
     //Adds the new item to the register
     if (newIncome != null) {
       incomeRegister.addItem(newIncome);
+      incomePieChart.setData(createIncomePieChart());
     }
   }
 
@@ -369,11 +369,14 @@ public class IncomeExpenseController implements FinanceController {
     //Adds the new item to the register
     if (newExpense != null) {
       expenseRegister.addItem(newExpense);
+      expensePieChart.setData(createExpensePieChart());
     }
   }
 
   @FXML
   private void handleEditIncome(Income chosenIncome) {
+    //Create copy of chosenIncome before changes
+
     //Instantiate FXML loader and loads the popup for adding income
     FXMLLoader loader = new FXMLLoader();
     loader.setLocation(getClass().getResource("/view/AddIncome.fxml"));
@@ -398,8 +401,6 @@ public class IncomeExpenseController implements FinanceController {
     dialog.setTitle(dialogTitle);
     // Show the Dialog and wait for the user to close it
     dialog.showAndWait();
-
-    this.incomePieChart.setData(createIncomePieChart());
   }
 
   @FXML
diff --git a/src/main/resources/Economics/Income.register b/src/main/resources/Economics/Income.register
index 7f32fd99..24087f73 100644
--- a/src/main/resources/Economics/Income.register
+++ b/src/main/resources/Economics/Income.register
@@ -1,10 +1,10 @@
-date=2023-03-31
+date=2023-04-10
 amount=499.0
 isRecurring=Not recurring
-category=SALARY
+category=GIFT
 
 date=2023-04-10
-amount=100.0
+amount=200.0
 isRecurring=Not recurring
-category=GIFT
+category=SALARY
 
-- 
GitLab