From bc852ce3d6683c2eaf3fc4c9a38c0d04326cbc61 Mon Sep 17 00:00:00 2001 From: Natalia Cholewa Date: Fri, 23 Jan 2026 21:17:31 +0100 Subject: [PATCH] fix: pie chart refreshing improperly --- .../nutrition/NutritionPieChartCtrl.java | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/client/src/main/java/client/scenes/nutrition/NutritionPieChartCtrl.java b/client/src/main/java/client/scenes/nutrition/NutritionPieChartCtrl.java index c3aa0a4..a90a677 100644 --- a/client/src/main/java/client/scenes/nutrition/NutritionPieChartCtrl.java +++ b/client/src/main/java/client/scenes/nutrition/NutritionPieChartCtrl.java @@ -175,7 +175,15 @@ public class NutritionPieChartCtrl implements LocaleAware { @Override public void updateText() { - this.refresh(); + List data = this.pieChart.getData(); + if (data.isEmpty()) return; + final int EXPECTED_DATA_SIZE = 3; + if (data.size() != EXPECTED_DATA_SIZE) return; + + data.get(0).setName(this.getLocaleString("menu.nutrition.protein")); + data.get(1).setName(this.getLocaleString("menu.nutrition.fat")); + final int TWO = 2; + data.get(TWO).setName(this.getLocaleString("menu.nutrition.carbs")); } @Override @@ -186,7 +194,8 @@ public class NutritionPieChartCtrl implements LocaleAware { /** * Refresh the data in this pie chart. */ - private void refresh() { + @SuppressWarnings("checkstyle:MagicNumber") + public void refresh() { if (this.recipe == null) { this.pieChart.setVisible(false); logger.info("Refreshing pie chart with no recipe"); @@ -195,9 +204,24 @@ public class NutritionPieChartCtrl implements LocaleAware { logger.info("Refreshing pie chart with recipe"); this.pieChart.setVisible(true); - this.pieChart.getData().setAll( - this.getPieChartData() - ); + if (this.pieChart.getData().isEmpty()) { + this.pieChart.getData().setAll( + this.getPieChartData() + ); + } else { + List fresh = this.getPieChartData(); + List data = this.pieChart.getData(); + + if (fresh.isEmpty()) { + data.clear(); + return; + } + + data.get(0).setPieValue(fresh.get(0).getPieValue()); + data.get(1).setPieValue(fresh.get(1).getPieValue()); + final int TWO = 2; + data.get(TWO).setPieValue(fresh.get(TWO).getPieValue()); + } } public void initializeComponents() {