fix: pie chart refreshing improperly

This commit is contained in:
Natalia Cholewa 2026-01-23 21:17:31 +01:00
commit bc852ce3d6

View file

@ -175,7 +175,15 @@ public class NutritionPieChartCtrl implements LocaleAware {
@Override
public void updateText() {
this.refresh();
List<PieChart.Data> 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);
if (this.pieChart.getData().isEmpty()) {
this.pieChart.getData().setAll(
this.getPieChartData()
);
} else {
List<PieChart.Data> fresh = this.getPieChartData();
List<PieChart.Data> 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() {