From 152b5e497243bc18b9b2a2a468632f1bfd994db6 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 2 Oct 2017 21:12:34 +0200 Subject: [PATCH] Fixed #212 - month report kills performance (improved modal stage, server tag requests are causing delay) --- .../ui/controller/Controller.java | 13 ++++++-- .../ui/controller/ReportController.java | 33 ++++++++++++++----- .../budgetmaster/languages/_de.properties | 1 + .../budgetmaster/languages/_en.properties | 1 + .../budgetmaster/logic/utils/Strings.java | 1 + 5 files changed, 38 insertions(+), 11 deletions(-) diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java index a268d30c4..2dbef46aa 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java @@ -164,6 +164,12 @@ public class Controller extends BaseController reportController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml", tabReports); reportController.init(this); + tabReports.selectedProperty().addListener((a,b,c)->{ + if(c) + { + reportController.refresh(); + } + }); settingsController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml", tabSettings); settingsController.init(this); @@ -327,12 +333,15 @@ public class Controller extends BaseController { homeController.refresh(); paymentController.refresh(); - categoryController.refresh(); - reportController.refresh(); + categoryController.refresh(); if(tabCharts.isSelected()) { chartController.refresh(); } + if(tabReports.isSelected()) + { + reportController.refresh(); + } } public ArrayList<CategoryBudget> getCategoryBudgets() diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java index fd9cc1114..a99a28ee7 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java @@ -557,14 +557,16 @@ public class ReportController implements Refreshable, Styleable private void refreshTableView() { - tableView.getItems().clear(); + Platform.runLater(()->{tableView.getItems().clear();}); ArrayList<Payment> payments = controller.getPaymentHandler().getPayments(); if(payments != null) { ArrayList<ReportItem> reportItems = createReportItems(payments); - ObservableList<ReportItem> objectsForTable = FXCollections.observableArrayList(reportItems); - tableView.setItems(objectsForTable); + Platform.runLater(()->{; + ObservableList<ReportItem> objectsForTable = FXCollections.observableArrayList(reportItems); + tableView.setItems(objectsForTable); + }); } } @@ -761,6 +763,8 @@ public class ReportController implements Refreshable, Styleable @Override public void refresh() { + Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_REPORT_TAB), controller.getStage(), controller.getIcon()); + if(controller.getFilterSettings().equals(new FilterSettings())) { labelFilterActive.setVisible(false); @@ -770,17 +774,28 @@ public class ReportController implements Refreshable, Styleable labelFilterActive.setVisible(true); } - reportPreferences = getReportPreferences(); - saveReportPreferences(); - refreshTableView(); - applyReportPreferences(); - tableView.refresh(); - DateTime currentDate = controller.getCurrentDate(); String currentMonth = currentDate.toString("MM"); String currentYear = currentDate.toString("YYYY"); initialReportFileName = Localization.getString(Strings.REPORT_INITIAL_FILENAME, currentYear, currentMonth); + + reportPreferences = getReportPreferences(); + saveReportPreferences(); + + Worker.runLater(() -> { + refreshTableView(); + + Platform.runLater(() -> { + if(modalStage != null) + { + modalStage.close(); + } + + applyReportPreferences(); + tableView.refresh(); + }); + }); } @Override diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties index 13c3d86a0..cbf29d3b3 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties @@ -38,6 +38,7 @@ title.tags=Das Tag-Eingabefeld # LOAD load.charts=Lade Diagramme... load.data=Lade Daten... +load.report.tab=Lade Monatsbericht... load.report=Der Monatsbericht wird erstellt, bitte warten... load.database.export=Die Datenbank wird exportiert, bitte warten... load.database.import=Die Datenbank wird importiert, bitte warten... diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties index fee2f5fa3..1620c6e72 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties @@ -38,6 +38,7 @@ title.tags=The Tag-Inputfield # LOAD load.charts=Loading Charts... load.data=Loading Data... +load.report.tab=Loading Month Report... load.report=Please wait while the report is being generated... load.database.export=Please wait while the database is being exported... load.database.import=Please wait while the database is being imported... diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java index 8cbd6e313..9ab0bee58 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java @@ -40,6 +40,7 @@ public class Strings //LOAD public static final String LOAD_CHARTS = "load.charts"; public static final String LOAD_DATA = "load.data"; + public static final String LOAD_REPORT_TAB = "load.report.tab"; public static final String LOAD_REPORT = "load.report"; public static final String LOAD_DATABASE_EXPORT = "load.database.export"; public static final String LOAD_DATABASE_IMPORT = "load.database.import"; -- GitLab