Add popup to fill personal timesheets in each day
The popup is opened with double-click or ENTER and you can close it with the button or clicking outside of it. FEA: ItEr77S12AdaptPlanningAccordingTimesheets
This commit is contained in:
parent
6e24103b73
commit
3838baf24c
2 changed files with 93 additions and 0 deletions
|
|
@ -52,6 +52,10 @@ import org.zkoss.util.Locales;
|
|||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zk.ui.event.InputEvent;
|
||||
import org.zkoss.zk.ui.util.Clients;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Button;
|
||||
|
|
@ -64,7 +68,9 @@ import org.zkoss.zul.Label;
|
|||
import org.zkoss.zul.Row;
|
||||
import org.zkoss.zul.RowRenderer;
|
||||
import org.zkoss.zul.Textbox;
|
||||
import org.zkoss.zul.api.Div;
|
||||
import org.zkoss.zul.api.Grid;
|
||||
import org.zkoss.zul.api.Popup;
|
||||
|
||||
/**
|
||||
* Controller for creation/edition of a personal timesheet
|
||||
|
|
@ -110,6 +116,14 @@ public class PersonalTimesheetController extends GenericForwardComposer
|
|||
|
||||
private Label summaryTotalExtra;
|
||||
|
||||
private Popup personalTimesheetPopup;
|
||||
|
||||
private Label personalTimesheetPopupTask;
|
||||
|
||||
private Label personalTimesheetPopupDate;
|
||||
|
||||
private Div personalTimesheetPopupEffort;
|
||||
|
||||
@Resource
|
||||
private IPersonalTimesheetController personalTimesheetController;
|
||||
|
||||
|
|
@ -212,6 +226,19 @@ public class PersonalTimesheetController extends GenericForwardComposer
|
|||
|
||||
});
|
||||
|
||||
EventListener openPersonalTimesheetPopup = new EventListener() {
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
openPersonalTimesheetPopup(textbox,
|
||||
orderElement, textboxDate);
|
||||
}
|
||||
|
||||
};
|
||||
textbox.addEventListener(Events.ON_DOUBLE_CLICK,
|
||||
openPersonalTimesheetPopup);
|
||||
textbox.addEventListener(Events.ON_OK,
|
||||
openPersonalTimesheetPopup);
|
||||
|
||||
if (personalTimesheetModel
|
||||
.wasModified(orderElement, textboxDate)) {
|
||||
markAsModified(textbox);
|
||||
|
|
@ -226,6 +253,45 @@ public class PersonalTimesheetController extends GenericForwardComposer
|
|||
|
||||
}
|
||||
|
||||
private void openPersonalTimesheetPopup(Textbox textbox,
|
||||
OrderElement orderElement, LocalDate textboxDate) {
|
||||
Textbox toFocus = setupPersonalTimesheetPopup(textbox,
|
||||
orderElement, textboxDate);
|
||||
personalTimesheetPopup.open(textbox, "after_start");
|
||||
toFocus.setFocus(true);
|
||||
}
|
||||
|
||||
private Textbox setupPersonalTimesheetPopup(final Textbox textbox,
|
||||
final OrderElement orderElement, final LocalDate textboxDate) {
|
||||
personalTimesheetPopupTask.setValue(orderElement.getName());
|
||||
personalTimesheetPopupDate.setValue(textboxDate.toString());
|
||||
|
||||
personalTimesheetPopupEffort.getChildren().clear();
|
||||
Textbox effortTextbox = Util.bind(new Textbox(),
|
||||
new Util.Getter<String>() {
|
||||
@Override
|
||||
public String get() {
|
||||
EffortDuration effortDuration = personalTimesheetModel
|
||||
.getEffortDuration(orderElement, textboxDate);
|
||||
return effortDurationToString(effortDuration);
|
||||
}
|
||||
}, new Util.Setter<String>() {
|
||||
@Override
|
||||
public void set(String value) {
|
||||
EffortDuration effortDuration = effortDurationFromString(value);
|
||||
if (effortDuration == null) {
|
||||
throw new WrongValueException(
|
||||
personalTimesheetPopupEffort,
|
||||
_("Invalid Effort Duration"));
|
||||
}
|
||||
Events.sendEvent(new InputEvent(Events.ON_CHANGE, textbox,
|
||||
value));
|
||||
}
|
||||
});
|
||||
personalTimesheetPopupEffort.appendChild(effortTextbox);
|
||||
return effortTextbox;
|
||||
}
|
||||
|
||||
private void markAsModified(final Textbox textbox) {
|
||||
textbox.setStyle("font-weight: bold");
|
||||
}
|
||||
|
|
@ -816,6 +882,9 @@ public class PersonalTimesheetController extends GenericForwardComposer
|
|||
return personalTimesheetModel.hasOtherReports();
|
||||
}
|
||||
|
||||
public void closePersonalTimesheetPopup() {
|
||||
personalTimesheetPopup.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -139,6 +139,30 @@
|
|||
label="${i18n:_('Cancel')}"
|
||||
sclass="cancel-button global-action" />
|
||||
|
||||
<popup id="personalTimesheetPopup" width="300px">
|
||||
<grid>
|
||||
<columns>
|
||||
<column width="50px"/>
|
||||
<column />
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<label value="${i18n:_('Task')}" />
|
||||
<label id="personalTimesheetPopupTask" />
|
||||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('Date')}" />
|
||||
<label id="personalTimesheetPopupDate" />
|
||||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('Effort')}" />
|
||||
<div id="personalTimesheetPopupEffort" />
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<button onClick="controller.closePersonalTimesheetPopup();"
|
||||
label="${i18n:_('Ok')}" />
|
||||
</popup>
|
||||
|
||||
</window>
|
||||
</zk>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue