ItEr37S17CUCalculoValorGanadoItEr36S19: Adding indicators tab with information about earned value chart.

This commit is contained in:
Manuel Rego Casasnovas 2009-12-04 14:33:44 +01:00 committed by Javier Moran Rua
parent b425b6b652
commit 5380920d87
2 changed files with 125 additions and 9 deletions

View file

@ -99,7 +99,7 @@ public abstract class EarnedValueChartFiller extends ChartFiller {
return plotInfo;
}
protected void calculateValues(Interval interval) {
public void calculateValues(Interval interval) {
// BCWS
calculateBudgetedCostWorkScheduled(interval);
// ACWP
@ -125,6 +125,10 @@ public abstract class EarnedValueChartFiller extends ChartFiller {
calculateSchedulePerformanceIndex();
}
public BigDecimal getIndicator(EarnedValueType indicator, LocalDate date) {
return indicators.get(indicator).get(date);
}
private void calculateCostVariance() {
// CV = BCWP - ACWP
SortedMap<LocalDate, BigDecimal> cv = new TreeMap<LocalDate, BigDecimal>();

View file

@ -85,8 +85,10 @@ import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Div;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Tabbox;
import org.zkoss.zul.Tabpanel;
@ -160,21 +162,23 @@ public abstract class CompanyPlanningModel implements ICompanyPlanningModel {
chartComponent.setOrient("vertical");
appendTabs(chartComponent);
Timeplot chartLoadTimeplot = new Timeplot();
Timeplot chartEarnedValueTimeplot = new Timeplot();
appendTabpanels(chartComponent, chartLoadTimeplot,
chartEarnedValueTimeplot);
configuration.setChartComponent(chartComponent);
addAdditionalCommands(additional, configuration);
disableSomeFeatures(configuration);
planner.setConfiguration(configuration);
Timeplot chartLoadTimeplot = new Timeplot();
Timeplot chartEarnedValueTimeplot = new Timeplot();
CompanyEarnedValueChartFiller earnedValueChartFiller = new CompanyEarnedValueChartFiller();
earnedValueChartFiller.calculateValues(planner.getTimeTracker()
.getRealInterval());
appendTabpanels(chartComponent, chartLoadTimeplot,
chartEarnedValueTimeplot, earnedValueChartFiller);
setupChart(chartLoadTimeplot, new CompanyLoadChartFiller(), planner
.getTimeTracker());
Chart earnedValueChart = setupChart(chartEarnedValueTimeplot,
new CompanyEarnedValueChartFiller(), planner.getTimeTracker());
earnedValueChartFiller, planner.getTimeTracker());
setEventListenerConfigurationCheckboxes(earnedValueChart);
}
@ -182,13 +186,15 @@ public abstract class CompanyPlanningModel implements ICompanyPlanningModel {
Tabs chartTabs = new Tabs();
chartTabs.appendChild(new Tab(_("Load")));
chartTabs.appendChild(new Tab(_("Earned value")));
chartTabs.appendChild(new Tab(_("Indicators")));
chartComponent.appendChild(chartTabs);
chartTabs.setWidth("100px");
}
private void appendTabpanels(Tabbox chartComponent, Timeplot loadChart,
Timeplot chartEarnedValueTimeplot) {
Timeplot chartEarnedValueTimeplot,
CompanyEarnedValueChartFiller earnedValueChartFiller) {
Tabpanels chartTabpanels = new Tabpanels();
Tabpanel loadChartPannel = new Tabpanel();
@ -200,9 +206,115 @@ public abstract class CompanyPlanningModel implements ICompanyPlanningModel {
chartEarnedValueTimeplot);
chartTabpanels.appendChild(earnedValueChartPannel);
Tabpanel indicatorsChartPannel = new Tabpanel();
appendIndicators(indicatorsChartPannel, earnedValueChartFiller);
chartTabpanels.appendChild(indicatorsChartPannel);
chartComponent.appendChild(chartTabpanels);
}
private void appendIndicators(Tabpanel indicatorsChartPannel,
CompanyEarnedValueChartFiller earnedValueChartFiller) {
Vbox vbox = new Vbox();
Hbox dateHbox = new Hbox();
dateHbox.appendChild(new Label(_("Select date:")));
LocalDate date = new LocalDate();
Datebox datebox = new Datebox(date.toDateTimeAtStartOfDay().toDate());
dateHbox.appendChild(datebox);
appendEventListenerToDateboxIndicators(earnedValueChartFiller, vbox,
datebox);
vbox.appendChild(dateHbox);
vbox.appendChild(getIndicatorsTable(earnedValueChartFiller, date));
indicatorsChartPannel.appendChild(vbox);
}
private void appendEventListenerToDateboxIndicators(
final CompanyEarnedValueChartFiller earnedValueChartFiller,
final Vbox vbox, final Datebox datebox) {
datebox.addEventListener(Events.ON_CHANGE, new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
LocalDate date = new LocalDate(datebox.getValue());
org.zkoss.zk.ui.Component child = vbox
.getFellow("indicatorsTable");
vbox.removeChild(child);
vbox.appendChild(getIndicatorsTable(earnedValueChartFiller,
date));
}
});
}
private org.zkoss.zk.ui.Component getIndicatorsTable(
CompanyEarnedValueChartFiller earnedValueChartFiller, LocalDate date) {
Hbox mainhbox = new Hbox();
mainhbox.setId("indicatorsTable");
mainhbox.setAlign("center");
mainhbox.setPack("center");
Vbox vbox = new Vbox();
vbox.setClass("legend");
Vbox column1 = new Vbox();
Vbox column2 = new Vbox();
Vbox column3 = new Vbox();
column1.setSclass("earned-indicator-column");
column2.setSclass("earned-indicator-column");
column3.setSclass("earned-indicator-column");
int columnNumber = 0;
for (EarnedValueType indicator : EarnedValueType.values()) {
Label indicatorLabel = new Label(indicator.getAcronym());
indicatorLabel.setTooltiptext(indicator.getName());
indicatorLabel.setStyle("color: " + indicator.getColor());
BigDecimal value = earnedValueChartFiller.getIndicator(indicator,
date);
String units = _("h");
if (indicator.equals(EarnedValueType.CPI)
|| indicator.equals(EarnedValueType.SPI)) {
value = value.multiply(new BigDecimal(100));
units = "%";
}
Label valueLabel = new Label(value.intValue() + " " + units);
valueLabel.setStyle("color: " + indicator.getColor());
Hbox hbox = new Hbox();
hbox.appendChild(indicatorLabel);
hbox.appendChild(valueLabel);
columnNumber = columnNumber + 1;
switch (columnNumber) {
case 1:
column1.appendChild(hbox);
break;
case 2:
column2.appendChild(hbox);
break;
case 3:
column3.appendChild(hbox);
columnNumber = 0;
}
}
Hbox hbox = new Hbox();
hbox.appendChild(column1);
hbox.appendChild(column2);
hbox.appendChild(column3);
vbox.appendChild(hbox);
mainhbox.appendChild(vbox);
return mainhbox;
}
private void appendLoadChartAndLegend(Tabpanel loadChartPannel,
Timeplot loadChart) {
Hbox hbox = new Hbox();