ItEr37S17CUCalculoValorGanadoItEr36S19: Adding indicators tab with information about earned value chart.
This commit is contained in:
parent
b425b6b652
commit
5380920d87
2 changed files with 125 additions and 9 deletions
|
|
@ -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>();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue