ItEr23S10CUAsignacionGrupoRecursosAPlanificacionItEr22S10: Filling table with fake data.

This commit is contained in:
Óscar González Fernández 2009-08-29 23:36:14 +02:00
parent 336ec127d4
commit 75dafc025f
4 changed files with 130 additions and 11 deletions

View file

@ -1,21 +1,25 @@
package org.zkoss.ganttz.timetracker;
import java.util.List;
import java.util.concurrent.Callable;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.RowRenderer;
public class TimeTrackedTable extends TimeTrackerComponent {
public class TimeTrackedTable<T> extends TimeTrackerComponent {
private final ListModel listModel;
private final Callable<List<T>> data;
private final ICellForDetailItemRenderer<T> cellRenderer;
private final RowRenderer rowRenderer;
public TimeTrackedTable(ListModel listModel, RowRenderer rowRenderer,
public TimeTrackedTable(Callable<List<T>> dataSource,
ICellForDetailItemRenderer<T> cellRenderer,
TimeTracker timeTracker,
String idTimeTrackerElement) {
super(timeTracker, "~./ganttz/zul/timetracker/secondlevelgrid.zul",
idTimeTrackerElement);
this.listModel = listModel;
this.rowRenderer = rowRenderer;
this.data = dataSource;
this.cellRenderer = cellRenderer;
}
@Override
@ -23,11 +27,20 @@ public class TimeTrackedTable extends TimeTrackerComponent {
}
public ListModel getTableModel() {
return listModel;
return new ListModelList(getData());
}
public RowRenderer getGridRenderer() {
return rowRenderer;
private List<T> getData() {
try {
return data.call();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public RowRenderer getRowRenderer() {
return OnDetailItemsRowRenderer.create(cellRenderer,
getDetailsSecondLevel());
}
}

View file

@ -1,5 +1,6 @@
<zk>
<grid width="${top.horizontalSize+2}" model="${top.tableModel}">
<grid width="${top.horizontalSize+2}" model="${top.tableModel}"
rowRenderer="${top.rowRenderer}">
<columns>
<column label="${each.name}" width="${each.size}"
forEach="${top.detailsSecondLevel}"></column>

View file

@ -0,0 +1,86 @@
package org.navalplanner.web;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.Callable;
import org.joda.time.Days;
import org.joda.time.LocalDate;
import org.zkoss.ganttz.timetracker.ICellForDetailItemRenderer;
import org.zkoss.ganttz.timetracker.TimeTrackedTable;
import org.zkoss.ganttz.timetracker.TimeTracker;
import org.zkoss.ganttz.timetracker.zoom.DetailItem;
import org.zkoss.ganttz.util.Interval;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Div;
import org.zkoss.zul.Label;
public class FakeTimeTrackableTableController extends GenericForwardComposer {
private Div insertionPoint;
private TimeTrackedTable<FakeData> timeTrackedTable;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
timeTrackedTable = new TimeTrackedTable<FakeData>(getDataSource(),
getRenderer(), new TimeTracker(createExampleInterval()),
"timetrackedtable");
insertionPoint.appendChild(timeTrackedTable);
timeTrackedTable.afterCompose();
}
private Callable<List<FakeData>> getDataSource() {
return new Callable<List<FakeData>>() {
@Override
public List<FakeData> call() throws Exception {
List<FakeData> result = new ArrayList<FakeData>();
for (int i = 0; i < 10; i++) {
result.add(new FakeData(6));
}
return result;
}
};
}
private ICellForDetailItemRenderer<FakeData> getRenderer() {
return new ICellForDetailItemRenderer<FakeData>() {
@Override
public Component cellFor(DetailItem item, FakeData data) {
Label label = new Label();
label.setValue(data.getHoursForDetailItem(item) + "h");
return label;
}
};
}
private Interval createExampleInterval() {
LocalDate start = new LocalDate(2008, 1, 1);
LocalDate end = new LocalDate(2009, 1, 1);
return new Interval(asDate(start), asDate(end));
}
private Date asDate(LocalDate start) {
return start.toDateMidnight().toDate();
}
}
class FakeData {
private final int hoursPerDay;
FakeData(int hoursPerDay) {
this.hoursPerDay = hoursPerDay;
}
public int getHoursForDetailItem(DetailItem detail) {
Days daysBetween = Days.daysBetween(detail.getStartDate(),
detail.getEndDate());
return daysBetween.getDays() * hoursPerDay;
}
}

View file

@ -0,0 +1,19 @@
<?page title="${i18n:_('Navalpro: Scheduling')}"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
<?init class="org.zkoss.zk.ui.util.Composition" arg0="/common/layout/template.zul"?>
<?taglib uri="/WEB-INF/tld/i18n.tld" prefix="i18n"?>
<?link rel="stylesheet" type="text/css" href="/planner/css/ganttzk.css"?>
<?link rel="stylesheet" type="text/css" href="/common/css/navalpro_v01.css"?>
<?link rel="stylesheet" type="text/css" href="/common/css/navalpro_zk.css"?>
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<zk>
<zscript><![CDATA[
fakeController = new org.navalplanner.web.FakeTimeTrackableTableController();
]]>
</zscript>
<div id="insertionPoint" apply="${fakeController}">
</div>
</zk>