From 67a0bd61246f82b79494060248bde875c48b182a Mon Sep 17 00:00:00 2001
From: Harry Linrui XU <xulr0820@hotmail.com>
Date: Fri, 31 Mar 2023 13:09:41 +0200
Subject: [PATCH] "Fixed recursive function bug in refreshPieChart. Extracted
 refresh methods. Implemented delete in SceneBuilder"

---
 .../controller/IncomeExpenseController.java   | 31 +++++++------------
 .../resources/view/IncomeAndExpenses.fxml     |  2 +-
 2 files changed, 13 insertions(+), 20 deletions(-)

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 53d9223d..95b5fee2 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
@@ -183,9 +183,9 @@ public class IncomeExpenseController implements FinanceController {
 
   private ObservableList<PieChart.Data> createIncomePieChart() {
     return FXCollections.observableArrayList(
-        new Data("Loans", incomeRegister.getIncomeByCategory(IncomeCategory.GIFT).getTotalSum()),
+        new Data("Gift", incomeRegister.getIncomeByCategory(IncomeCategory.GIFT).getTotalSum()),
         new Data("Salary", incomeRegister.getIncomeByCategory(IncomeCategory.SALARY).getTotalSum()),
-        new Data("Salary", incomeRegister.getIncomeByCategory(IncomeCategory.STUDENT_LOAN).getTotalSum())
+        new Data("Loans", incomeRegister.getIncomeByCategory(IncomeCategory.STUDENT_LOAN).getTotalSum())
     );
   }
 
@@ -200,6 +200,8 @@ public class IncomeExpenseController implements FinanceController {
     } else if (event.getSource() == addExpense){
       handleAddExpense();
     }
+    refreshTableView();
+    refreshPieCharts();
   }
 
   /**
@@ -217,6 +219,9 @@ public class IncomeExpenseController implements FinanceController {
     } else if (chosenExpense != null) {
       handleEditExpense(chosenExpense);
     }
+    //Updates the tableview and pie chart using the register
+    refreshTableView();
+    refreshPieCharts();
   }
 
   /**
@@ -235,6 +240,9 @@ public class IncomeExpenseController implements FinanceController {
     } else if (chosenExpense != null) {
       handleDeleteExpense(chosenExpense);
     }
+    //Updates the tableview and pie chart using the register
+    refreshTableView();
+    refreshPieCharts();
   }
 
   /**
@@ -252,8 +260,8 @@ public class IncomeExpenseController implements FinanceController {
   }
   
   private void refreshPieCharts() {
-    this.refreshPieCharts();
-    this.refreshPieCharts();
+    this.incomePieChart.setData(createIncomePieChart());
+    this.expensePieChart.setData(createExpensePieChart());
   }
 
   @FXML
@@ -288,9 +296,6 @@ public class IncomeExpenseController implements FinanceController {
     if (newIncome != null) {
       incomeRegister.addItem(newIncome);
     }
-    //Updates the tableview using the register
-    refreshTableView();
-    refreshPieCharts();
   }
 
   @FXML
@@ -326,9 +331,6 @@ public class IncomeExpenseController implements FinanceController {
     if (newExpense != null) {
       expenseRegister.addItem(newExpense);
     }
-    //Updates the tableview using the register
-    refreshTableView();
-    refreshPieCharts();
   }
 
   @FXML
@@ -357,9 +359,6 @@ public class IncomeExpenseController implements FinanceController {
     dialog.setTitle(dialogTitle);
     // Show the Dialog and wait for the user to close it
     dialog.showAndWait();
-    //Updates the tableview using the register
-    refreshTableView();
-    refreshPieCharts();
   }
 
   @FXML
@@ -387,9 +386,6 @@ public class IncomeExpenseController implements FinanceController {
     dialog.setTitle(dialogTitle);
     // Show the Dialog and wait for the user to close it
     dialog.showAndWait();
-    //Updates the tableview using the register
-    refreshTableView();
-    refreshPieCharts();
   }
   
   @FXML
@@ -397,8 +393,6 @@ public class IncomeExpenseController implements FinanceController {
     Optional<ButtonType> isConfirmed = showConfirmationDialog();
     if (isConfirmed.isPresent() && isConfirmed.get() == ButtonType.OK) {
       incomeRegister.removeItem(chosenIncome);
-      refreshTableView();
-      
     }
   }
 
@@ -407,7 +401,6 @@ public class IncomeExpenseController implements FinanceController {
     Optional<ButtonType> isConfirmed = showConfirmationDialog();
     if (isConfirmed.isPresent() && isConfirmed.get() == ButtonType.OK) {
       expenseRegister.removeItem(chosenExpense);
-      refreshTableView();
     }
 
   }
diff --git a/src/main/resources/view/IncomeAndExpenses.fxml b/src/main/resources/view/IncomeAndExpenses.fxml
index 480b937c..e3a0deb7 100644
--- a/src/main/resources/view/IncomeAndExpenses.fxml
+++ b/src/main/resources/view/IncomeAndExpenses.fxml
@@ -102,7 +102,7 @@
                               </ImageView>
                            </graphic>
                         </Button>
-                        <Button fx:id="deleteBtn" mnemonicParsing="false" prefHeight="25.0" prefWidth="60.0">
+                        <Button fx:id="deleteBtn" mnemonicParsing="false" onAction="#handleDeleteBtn" prefHeight="25.0" prefWidth="60.0">
                            <font>
                               <Font name="Lucida Console" size="12.0" />
                            </font>
-- 
GitLab