@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.setDataType("json");
attributes.setWicketAjaxResponse(false);
attributes.getAjaxCallListeners().add(new AjaxCallListener().onSuccess("callback(data);"));
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(JavaScriptHeaderItem.forScript(
"var fetchEventsFunc = "
+ this.getCallbackFunction(
context("start")
, context("end")
, context("callback")
, resolved("_start", "start.getTime()")
, resolved("_end", "end.getTime()")) + ";"
, "fetchEventsFunc"));
}
@Override
protected void respond(AjaxRequestTarget target) {
Calendar start = WebSession.getCalendar();
start.setTimeInMillis(getRequestCycle().getRequest().getRequestParameters().getParameterValue("_start").toLong());
Calendar end = WebSession.getCalendar();
end.setTimeInMillis(getRequestCycle().getRequest().getRequestParameters().getParameterValue("_end").toLong());
JSONArray events = new JSONArray();
for (Appointment a : Application.getBean(AppointmentDao.class).getAppointmentsByRange(WebSession.getUserId(),
start.getTime(), end.getTime())) {
try {
events.put(new JSONObject()
.put("id", a.getAppointmentId())
.put("title", a.getAppointmentName())
.put("description", a.getAppointmentDescription())
.put("start", WebSession.getDateFormat().format(a.getAppointmentStarttime()))
.put("end", WebSession.getDateFormat().format(a.getAppointmentEndtime()))
.put("allDay", false));
} catch (JSONException e) {
e.printStackTrace();
}
}
getRequestCycle().scheduleRequestHandlerAfterCurrent(
new TextRequestHandler("application/json", "UTF-8", events.toString()));
}
});
//dropEvent
add(new DropResizeBehavior(true, "dropEventFunc"));
//resizeEvent
add(new DropResizeBehavior(false, "resizeEventFunc"));
//create on click-and-drag
add(new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 6880514947331946407L;
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.getAjaxCallListeners().add(new AjaxCallListener().onSuccess("$('#appointment').dialog('open');"));
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(JavaScriptHeaderItem.forScript(
"var selectFunc = "
+ this.getCallbackFunction(
context("start")
, context("end")
, context("allDay")
, context("jsEvent")
, context("view")
, resolved("_start", "start.getTime()")
, resolved("_end", "end.getTime()")) + ";"
, "selectFunc"));
}
@Override
protected void respond(AjaxRequestTarget target) {
Calendar start = WebSession.getCalendar();
start.setTimeInMillis(getRequestCycle().getRequest().getRequestParameters().getParameterValue("_start").toLong());
Calendar end = WebSession.getCalendar();
end.setTimeInMillis(getRequestCycle().getRequest().getRequestParameters().getParameterValue("_end").toLong());
if (start.equals(end)) {
end.add(Calendar.HOUR_OF_DAY, 1);
}
Appointment a = new Appointment();
a.setAppointmentStarttime(start.getTime());
a.setAppointmentEndtime(end.getTime());
form.setModelObject(a);
target.add(form);
}
});
//eventClick
add(new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 6880514947331946407L;
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.getAjaxCallListeners().add(new AjaxCallListener().onSuccess("$('#appointment').dialog('open');"));
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);