From 4cc12a3dbfa00d8adda0d05282d9fb32658cf3c2 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Fri, 23 Nov 2012 10:06:51 +0100 Subject: [PATCH] Bug #1570: Fix issue updating the EV chart legend instead of creating it from scratch When the date in the legend was modified, all the checkboxes were removed and created from scratch. Now it is set an id for the labels associated to each textbox and its value is updated accordingly when changing the date instead of create them again. FEA: ItEr77S04BugFixing --- .../planner/company/CompanyPlanningModel.java | 39 ++++++++++++------- .../web/planner/order/OrderPlanningModel.java | 38 ++++++++++++------ 2 files changed, 52 insertions(+), 25 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java index 6df941e66..3d1be78d4 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java @@ -345,15 +345,21 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { LocalDate date = new LocalDate(datebox.getValue()); org.zkoss.zk.ui.Component child = vbox .getFellow("indicatorsTable"); - vbox.removeChild(child); - vbox.appendChild(getEarnedValueChartConfigurableLegend( - earnedValueChartFiller, date)); + updateEarnedValueChartLegend(vbox, earnedValueChartFiller, date); dateInfutureMessage(datebox); } }); } + private void updateEarnedValueChartLegend(Vbox vbox, + CompanyEarnedValueChartFiller earnedValueChartFiller, LocalDate date) { + for (EarnedValueType type : EarnedValueType.values()) { + Label valueLabel = (Label) vbox.getFellow(type.toString()); + valueLabel.setValue(getLabelTextEarnedValueType(earnedValueChartFiller, type, date)); + } + } + private void dateInfutureMessage(Datebox datebox) { Date value = datebox.getValue(); Date today = LocalDate.fromDateFields(new Date()) @@ -466,16 +472,9 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { checkbox.setAttribute("indicator", type); checkbox.setStyle("color: " + type.getColor()); - BigDecimal value = earnedValueChartFiller.getIndicator(type, date) != null ? earnedValueChartFiller - .getIndicator(type, date) - : BigDecimal.ZERO; - String units = _("h"); - if (type.equals(EarnedValueType.CPI) - || type.equals(EarnedValueType.SPI)) { - value = value.multiply(new BigDecimal(100)); - units = "%"; - } - Label valueLabel = new Label(value.intValue() + " " + units); + Label valueLabel = new Label(getLabelTextEarnedValueType( + earnedValueChartFiller, type, date)); + valueLabel.setId(type.toString()); Hbox hbox = new Hbox(); hbox.appendChild(checkbox); @@ -506,6 +505,20 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { return mainhbox; } + private String getLabelTextEarnedValueType( + CompanyEarnedValueChartFiller earnedValueChartFiller, + EarnedValueType type, LocalDate date) { + BigDecimal value = earnedValueChartFiller.getIndicator(type, date) != null ? earnedValueChartFiller + .getIndicator(type, date) : BigDecimal.ZERO; + String units = _("h"); + if (type.equals(EarnedValueType.CPI) + || type.equals(EarnedValueType.SPI)) { + value = value.multiply(new BigDecimal(100)); + units = "%"; + } + return value.intValue() + " " + units; + } + private void markAsSelectedDefaultIndicators() { for (Checkbox checkbox : earnedValueChartConfigurationCheckboxes) { EarnedValueType type = (EarnedValueType) checkbox diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java index 8f76bce12..4bfa9aef7 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java @@ -805,9 +805,16 @@ public class OrderPlanningModel implements IOrderPlanningModel { LocalDate date = new LocalDate(earnedValueChartLegendDatebox.getRawValue()); org.zkoss.zk.ui.Component child = earnedValueChartLegendContainer .getFellow("indicatorsTable"); - earnedValueChartLegendContainer.removeChild(child); - earnedValueChartLegendContainer.appendChild(getEarnedValueChartConfigurableLegend( - earnedValueChartFiller, date)); + updateEarnedValueChartLegend(date); + } + + private void updateEarnedValueChartLegend(LocalDate date) { + for (EarnedValueType type : EarnedValueType.values()) { + Label valueLabel = (Label) earnedValueChartLegendContainer + .getFellow(type.toString()); + valueLabel.setValue(getLabelTextEarnedValueType( + earnedValueChartFiller, type, date)); + } } private org.zkoss.zk.ui.Component getEarnedValueChartConfigurableLegend( @@ -832,15 +839,9 @@ public class OrderPlanningModel implements IOrderPlanningModel { checkbox.setAttribute("indicator", type); checkbox.setStyle("color: " + type.getColor()); - BigDecimal value = earnedValueChartFiller.getIndicator(type, date); - String units = _("h"); - if (type.equals(EarnedValueType.CPI) - || type.equals(EarnedValueType.SPI)) { - value = value.multiply(new BigDecimal(100)); - units = "%"; - } - Label valueLabel = new Label( - value.setScale(0, RoundingMode.HALF_UP) + " " + units); + Label valueLabel = new Label(getLabelTextEarnedValueType( + earnedValueChartFiller, type, date)); + valueLabel.setId(type.toString()); Hbox hbox = new Hbox(); hbox.appendChild(checkbox); @@ -871,6 +872,19 @@ public class OrderPlanningModel implements IOrderPlanningModel { return mainhbox; } + private String getLabelTextEarnedValueType( + OrderEarnedValueChartFiller earnedValueChartFiller, + EarnedValueType type, LocalDate date) { + BigDecimal value = earnedValueChartFiller.getIndicator(type, date); + String units = _("h"); + if (type.equals(EarnedValueType.CPI) + || type.equals(EarnedValueType.SPI)) { + value = value.multiply(new BigDecimal(100)); + units = "%"; + } + return value.setScale(0, RoundingMode.HALF_UP) + " " + units; + } + private void markAsSelectedDefaultIndicators() { for (Checkbox checkbox : earnedValueChartConfigurationCheckboxes) { EarnedValueType type = (EarnedValueType) checkbox