From 405d788a0da2392112f0030bfbb13af68b151633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Mon, 16 Jan 2012 13:11:50 +0100 Subject: [PATCH] Bug #1335: Update the earned value chart legend every time the chart is reloaded. To be able to do it, some local variables were moved to a wider scope (private class-level attributes). FEA: ItEr76S04BugFixing --- .../web/planner/order/OrderPlanningModel.java | 49 ++++++++++++++----- 1 file changed, 37 insertions(+), 12 deletions(-) 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 233fee598..88e10741a 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 @@ -383,7 +383,7 @@ public class OrderPlanningModel implements IOrderPlanningModel { // Create 'Earned value' tab Timeplot chartEarnedValueTimeplot = createEmptyTimeplot(); - OrderEarnedValueChartFiller earnedValueChartFiller = createOrderEarnedValueChartFiller(planner.getTimeTracker()); + this.earnedValueChartFiller = createOrderEarnedValueChartFiller(planner.getTimeTracker()); chartTabpanels.appendChild(createEarnedValueTab(chartEarnedValueTimeplot, earnedValueChartFiller)); // Create 'Overall progress' tab @@ -413,6 +413,8 @@ public class OrderPlanningModel implements IOrderPlanningModel { + (System.currentTimeMillis() - overalProgressContentTime)); } + private OrderEarnedValueChartFiller earnedValueChartFiller; + private void setupAdvanceAssignmentPlanningController(final Planner planner, AdvanceAssignmentPlanningController advanceAssignmentPlanningController) { @@ -447,7 +449,11 @@ public class OrderPlanningModel implements IOrderPlanningModel { return null; } if (planner.isVisibleChart()) { - earnedValueChart.fillChart(); //update earned value chart + //update earned value chart + earnedValueChart.fillChart(); + //update earned value legend + updateEarnedValueChartLegend(new LocalDate( + earnedValueChartLegendDatebox.getValue())); } return null; } @@ -508,10 +514,14 @@ public class OrderPlanningModel implements IOrderPlanningModel { return result; } + private Vbox earnedValueChartLegendContainer; + private Datebox earnedValueChartLegendDatebox; + private void appendEarnedValueChartAndLegend( Tabpanel earnedValueChartPannel, Timeplot chartEarnedValueTimeplot, final OrderEarnedValueChartFiller earnedValueChartFiller) { Vbox vbox = new Vbox(); + this.earnedValueChartLegendContainer = vbox; vbox.setClass("legend-container"); vbox.setAlign("center"); vbox.setPack("center"); @@ -522,6 +532,7 @@ public class OrderPlanningModel implements IOrderPlanningModel { LocalDate initialDateForIndicatorValues = earnedValueChartFiller.initialDateForIndicatorValues(); Datebox datebox = new Datebox(initialDateForIndicatorValues .toDateTimeAtStartOfDay().toDate()); + this.earnedValueChartLegendDatebox = datebox; datebox.setConstraint(dateMustBeInsideVisualizationArea(earnedValueChartFiller)); dateHbox.appendChild(datebox); @@ -551,7 +562,7 @@ public class OrderPlanningModel implements IOrderPlanningModel { Chart loadChart = setupChart(planningState.getOrder(), new OrderLoadChartFiller(planningState.getOrder()), chartLoadTimeplot, planner); - refillLoadChartWhenNeeded(changeHooker, planner, loadChart); + refillLoadChartWhenNeeded(changeHooker, planner, loadChart, false); } private Chart earnedValueChart; @@ -561,7 +572,7 @@ public class OrderPlanningModel implements IOrderPlanningModel { Planner planner, ChangeHooker changeHooker) { earnedValueChart = setupChart(planningState.getOrder(), earnedValueChartFiller, chartEarnedValueTimeplot, planner); - refillLoadChartWhenNeeded(changeHooker, planner, earnedValueChart); + refillLoadChartWhenNeeded(changeHooker, planner, earnedValueChart, true); setEventListenerConfigurationCheckboxes(earnedValueChart); } @@ -799,17 +810,21 @@ public class OrderPlanningModel implements IOrderPlanningModel { @Override public void onEvent(Event event) { LocalDate date = new LocalDate(datebox.getValue()); - org.zkoss.zk.ui.Component child = vbox - .getFellow("indicatorsTable"); - vbox.removeChild(child); - vbox.appendChild(getEarnedValueChartConfigurableLegend( - earnedValueChartFiller, date)); + updateEarnedValueChartLegend(date); dateInfutureMessage(datebox); } }); } + private void updateEarnedValueChartLegend(LocalDate date) { + org.zkoss.zk.ui.Component child = earnedValueChartLegendContainer + .getFellow("indicatorsTable"); + earnedValueChartLegendContainer.removeChild(child); + earnedValueChartLegendContainer.appendChild(getEarnedValueChartConfigurableLegend( + earnedValueChartFiller, date)); + } + private org.zkoss.zk.ui.Component getEarnedValueChartConfigurableLegend( OrderEarnedValueChartFiller earnedValueChartFiller, LocalDate date) { Hbox mainhbox = new Hbox(); @@ -912,6 +927,7 @@ public class OrderPlanningModel implements IOrderPlanningModel { @Override public Void execute() { earnedValueChart.fillChart(); + //not necessary to update legend here return null; } }); @@ -922,9 +938,10 @@ public class OrderPlanningModel implements IOrderPlanningModel { } private void refillLoadChartWhenNeeded(ChangeHooker changeHooker, - final Planner planner, final Chart loadChart) { + final Planner planner, final Chart loadChart, + final boolean updateEarnedValueChartLegend) { planner.getTimeTracker().addZoomListener( - fillOnZoomChange(loadChart, planner)); + fillOnZoomChange(loadChart, planner, updateEarnedValueChartLegend)); planner .addChartVisibilityListener(fillOnChartVisibilityChange(loadChart)); @@ -938,6 +955,10 @@ public class OrderPlanningModel implements IOrderPlanningModel { } if (planner.isVisibleChart()) { loadChart.fillChart(); + if(updateEarnedValueChartLegend) { + updateEarnedValueChartLegend(new LocalDate( + earnedValueChartLegendDatebox.getValue())); + } } } }); @@ -1127,7 +1148,7 @@ public class OrderPlanningModel implements IOrderPlanningModel { } private IZoomLevelChangedListener fillOnZoomChange(final Chart loadChart, - final Planner planner) { + final Planner planner, final boolean updateEarnedValueChartLegend) { IZoomLevelChangedListener zoomListener = new IZoomLevelChangedListener() { @Override @@ -1140,6 +1161,10 @@ public class OrderPlanningModel implements IOrderPlanningModel { public Void execute() { if (planner.isVisibleChart()) { loadChart.fillChart(); + if (updateEarnedValueChartLegend) { + updateEarnedValueChartLegend(new LocalDate( + earnedValueChartLegendDatebox.getValue())); + } } return null; }