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 76008f73a57141eeb7c49913607892e7a1b661fa..1325d2968e40ab23d687559dc589f1b6a60d8a79 100644 --- a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java +++ b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java @@ -1,9 +1,6 @@ package no.ntnu.idatt1002.demo.controller; import java.time.LocalDate; -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; @@ -23,7 +20,6 @@ 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.GeneralBudget; -import no.ntnu.idatt1002.demo.data.Economics.Expense; import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory; @@ -74,16 +70,14 @@ public class BudgetController implements FinanceController { @FXML private ObservableList<BudgetItem> budgetList; - @FXML - private PieChart budgetPieChart; - /** * Initializes the budget register, the observable budget list and the tableview, along with the values of the dropbox used for filtering the tableview. + * @throws IOException If there occurs any exception when loading the budget register from a file. */ @FXML - public void initialize() { + public void initialize() throws IOException { //TODO if budget is not empty (HAS VALUES) -> make uneditable -> EVENT FILTER TO CONTEXT MENU //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 @@ -94,42 +88,29 @@ public class BudgetController implements FinanceController { amountCol.setCellValueFactory(new PropertyValueFactory<BudgetItem, Double>("budgetAmount")); descriptionCol.setCellValueFactory(new PropertyValueFactory<BudgetItem, String>("budgetDescription")); - try { - general = loadBudgetDataFromFile("Budget"); - budgetList = FXCollections.observableArrayList(general.getBudgetItems()); - budgetTableView.setItems(budgetList); - - refreshPieChart(); - } catch(IOException ioe) { - sum.setText("Invalid budget file format"); - } catch(IllegalArgumentException iae) { - sum.setText("Cannot load pie charts"); - } //Initialize registers and tableview - + general = loadBudgetDataFromFile("Budget"); + budgetList = FXCollections.observableArrayList(general.getBudgetItems()); + budgetTableView.setItems(budgetList); formatDatePicker(); + //createBudgetPieChart(); //Initialize sum field under the tableview //sum.setText(String.valueOf(general.totalSum())); } - private List<ExpenseCategory> getChosenBudgetCategories() { //todo could be moved to generalbudget - return Arrays.stream(ExpenseCategory.values()).toList(). - stream().filter(expenseCategory -> general.hasBudgetCategory(expenseCategory)).toList(); - } - private ObservableList<PieChart.Data> createBudgetPieChart() throws IllegalArgumentException { // - ObservableList<PieChart.Data> budgetData = FXCollections.observableArrayList(); - List<ExpenseCategory> chosenCategories = getChosenBudgetCategories(); - for (ExpenseCategory category : chosenCategories) { - budgetData.add(new Data(category.toString().substring(0, 1).toUpperCase(). - concat(category.toString().substring(1)), - general.getBudgetItem(category).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(); } - return budgetData; - } - - private void refreshPieChart() { - this.budgetPieChart.setData(createBudgetPieChart()); } /** 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 6eb13ed98f871aef1fc677e4308e92ab589e9550..4e9f1bc77f02134b0d3e7da8602d6ffbc7737e9e 100644 --- a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java +++ b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java @@ -42,7 +42,6 @@ import no.ntnu.idatt1002.demo.data.Economics.IncomeRegister; public class IncomeExpenseController implements FinanceController { - private final static String sumText = "Sum: "; @FXML private TableColumn<Expense, Double> expAmountCol; @@ -80,10 +79,10 @@ public class IncomeExpenseController implements FinanceController { private TableView<Income> incomeTableView; @FXML - private Label inSum; + private Text inSum; @FXML - private Label expSum; + private Text expSum; @FXML private MenuItem addExpense; @@ -165,10 +164,9 @@ public class IncomeExpenseController implements FinanceController { refreshProgress(); formatDatePicker(); - //Initialize sum field under the tableview - inSum.setText(sumText + String.valueOf(incomeRegister.getTotalSum())); - expSum.setText(sumText + String.valueOf(expenseRegister.getTotalSum())); + // inSum.setText(String.valueOf(incomeRegister.getTotalSum())); + //expSum.setText(String.valueOf(expenseRegister.getTotalSum())); } private void setColumns() { @@ -289,10 +287,10 @@ public class IncomeExpenseController implements FinanceController { @Override public void refreshTableView() { this.income.setAll(incomeRegister.getItems()); - this.inSum.setText("Sum: " + String.valueOf(incomeRegister.getTotalSum())); + //this.sum.setText(String.valueOf(incomeRegister.getTotalSum())); this.expenses.setAll(expenseRegister.getItems()); - this.expSum.setText("Sum: " + String.valueOf(incomeRegister.getTotalSum())); + //this.sum.setText(String.valueOf(incomeRegister.getTotalSum())); } private void refreshPieCharts() { @@ -404,7 +402,8 @@ public class IncomeExpenseController implements FinanceController { // Show the Dialog and wait for the user to close it dialog.showAndWait(); - incomePieChart.setData(createIncomePieChart()); + this.incomePieChart.setData(createIncomePieChart()); + } @FXML