Add operations column in my tasks area

This will link to the monthly timesheet of the task.

FEA: ItEr76S28UserDashboard
This commit is contained in:
Manuel Rego Casasnovas 2012-06-05 17:34:18 +02:00
parent ef19628690
commit e9df0524d7
2 changed files with 66 additions and 0 deletions

View file

@ -24,6 +24,9 @@ import static org.libreplan.web.I18nHelper._;
import java.text.MessageFormat;
import java.util.List;
import javax.annotation.Resource;
import org.joda.time.LocalDate;
import org.libreplan.business.advance.entities.AdvanceMeasurement;
import org.libreplan.business.advance.entities.DirectAdvanceAssignment;
import org.libreplan.business.orders.entities.OrderElement;
@ -32,7 +35,10 @@ import org.libreplan.business.planner.entities.Task;
import org.libreplan.business.workingday.EffortDuration;
import org.libreplan.web.common.Util;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button;
import org.zkoss.zul.Row;
import org.zkoss.zul.RowRenderer;
@ -46,6 +52,9 @@ public class MyTasksAreaController extends GenericForwardComposer {
private IMyTasksAreaModel myTasksAreaModel;
@Resource
private IMonthlyTimesheetController monthlyTimesheetController;
private RowRenderer tasksRenderer = new RowRenderer() {
@Override
@ -65,6 +74,8 @@ public class MyTasksAreaController extends GenericForwardComposer {
Util.appendLabel(row, getProgress(orderElement));
Util.appendLabel(row, getEffort(orderElement));
appendTimeTrackingButton(row, task);
}
private String getEffort(OrderElement orderElement) {
@ -96,6 +107,60 @@ public class MyTasksAreaController extends GenericForwardComposer {
.getLastAdvanceMeasurement();
}
private void appendTimeTrackingButton(Row row, final Task task) {
Button button = Util.createEditButton(new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
monthlyTimesheetController
.goToCreateOrEditForm(getMonthlyTimesheetDateForTask(task));
}
private LocalDate getMonthlyTimesheetDateForTask(Task task) {
LocalDate start = task.getStartAsLocalDate();
LocalDate end = task.getEndAsLocalDate();
LocalDate currentDate = new LocalDate();
LocalDate min = currentDate.dayOfMonth().withMinimumValue();
LocalDate max = currentDate.dayOfMonth().withMaximumValue();
if (dateBetween(start, min, max)) {
return start;
}
if (dateBetween(end, min, max)) {
return end;
}
if (dateBetween(currentDate, start, end)) {
return currentDate;
}
if (end.compareTo(min) < 0) {
return end;
}
if (start.compareTo(max) > 0) {
return start;
}
return currentDate;
}
private boolean dateBetween(LocalDate date, LocalDate start,
LocalDate end) {
if ((date.compareTo(start) >= 0)
&& (date.compareTo(end) <= 0)) {
return true;
}
return false;
}
});
button.setTooltiptext(_("Track time"));
row.appendChild(button);
}
};
@Override

View file

@ -38,6 +38,7 @@
sort="auto(orderElement.advancePercentage)" />
<column label="${i18n:_('Work done')}"
sort="auto(orderElement.sumChargedEffort.totalChargedEffort)" />
<column label="${i18n:_('Operations')}" />
</columns>
</grid>
</groupbox>