Author: solomax
Date: Thu Sep 20 16:02:17 2012
New Revision: 1388089
URL: http://svn.apache.org/viewvc?rev=1388089&view=rev
Log:
Wicket:
calendar ability to drag/resize of the events is added (window resize
works weird);
autorefresh calendar every 10 seconds added
code cleanup;
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html?rev=1388089&r1=1388088&r2=1388089&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html
Thu Sep 20 16:02:17 2012
@@ -39,17 +39,35 @@
center: 'title',
right:
'month,agendaWeek,agendaDay'
}
- //, editable: true
+ , editable: true
+ , allDaySlot: false
+ , axisFormat: 'HH(:mm)'
+ , defaultEventMinutes: 60
, timeFormat: {
- agenda: 'H:mm{ - H:mm}'
- , '': 'H(:mm)'
+ agenda: 'HH:mm{ - HH:mm}'
+ , '': 'HH(:mm)'
}
, height: getCalendarHeight()
+ , windowResize: function() {
+
//$('#calendar').data().fullCalendar.option('height', getCalendarHeight());
+ this.option('height',
getCalendarHeight());
+ }
+ , eventDrop: dropEventFunc //TODO
confirm ??
+ , eventResize: resizeEventFunc //TODO
confirm ??
+ , eventSources: [
+ {
+ events: fetchEventsFunc
+ //, color: '#4793E6'
+ //, textColor: 'black'
+ }
+ ]
});
+ /*
$(window).resize(function() {
$('#calendar').data().fullCalendar.option('height', getCalendarHeight());
});
- setEventSource();
+ */
+
window.setInterval(function(){$('#calendar').fullCalendar('refetchEvents');},
10 * 1000); //FIXME refresh calendar every XX seconds
});
</script>
</wicket:panel>
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java?rev=1388089&r1=1388088&r2=1388089&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
Thu Sep 20 16:02:17 2012
@@ -19,6 +19,7 @@
package org.apache.openmeetings.web.components.user.calendar;
import static org.apache.wicket.ajax.attributes.CallbackParameter.context;
+import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
import static org.apache.wicket.ajax.attributes.CallbackParameter.resolved;
import java.util.Calendar;
@@ -51,6 +52,7 @@ public class CalendarPanel extends UserP
calendar.setOutputMarkupId(true);
calendar.setMarkupId("calendar");
add(calendar);
+ //fetchEvents
add(new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID =
6880514947331946407L;
@@ -66,15 +68,14 @@ public class CalendarPanel extends UserP
public void renderHead(Component component,
IHeaderResponse response) {
super.renderHead(component, response);
response.render(JavaScriptHeaderItem.forScript(
- "function setEventSource(){\n"
- + "
$('#calendar').fullCalendar('addEventSource', \n"
- + " {\n"
- + " events: " +
this.getCallbackFunction(context("start"), context("end"), context("callback"),
resolved("_start", "start.getTime()"), resolved("_end", "end.getTime()")) + "\n"
- //+ " , color:
'#4793E6'\n"
- //+ " , textColor:
'black'\n"
- + "});\n"
- + "}", "setEvtSource"));
-
+ "var fetchEventsFunc = "
+ + this.getCallbackFunction(
+ context("start")
+ , context("end")
+ , context("callback")
+ , resolved("_start",
"start.getTime()")
+ , resolved("_end",
"end.getTime()")) + ";"
+ , "fetchEventsFunc"));
}
@Override
@@ -101,5 +102,78 @@ public class CalendarPanel extends UserP
new TextRequestHandler("application/json", "UTF-8",
events.toString()));
}
});
+ //dropEvent
+ add(new DropResizeBehavior(true, "dropEventFunc"));
+ //resizeEvent
+ add(new DropResizeBehavior(false, "resizeEventFunc"));
+ }
+
+ private class DropResizeBehavior extends AbstractDefaultAjaxBehavior {
+ private static final long serialVersionUID =
-3060872155563135236L;
+ private boolean drop = false;
+ private String funcName;
+
+ DropResizeBehavior(boolean drop, String funcName) {
+ this.drop = drop;
+ this.funcName = funcName;
+ }
+
+ @Override
+ protected void updateAjaxAttributes(AjaxRequestAttributes
attributes) {
+ super.updateAjaxAttributes(attributes);
+ attributes.getAjaxCallListeners().add(new
AjaxCallListener().onFailure("revertFunc();"));
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse
response) {
+ super.renderHead(component, response);
+ response.render(JavaScriptHeaderItem.forScript(
+ "var " + funcName + " = "
+ + (drop
+ ? this.getCallbackFunction(
+ context("event")
+ , explicit("dayDelta")
+ ,
explicit("minuteDelta")
+ , context("allDay")
+ , context("revertFunc")
+ , context("jsEvent")
+ , context("ui")
+ , context("view")
+ , resolved("_id",
"event.id"))
+ : this.getCallbackFunction(
+ context("event")
+ , explicit("dayDelta")
+ ,
explicit("minuteDelta")
+ , context("revertFunc")
+ , context("jsEvent")
+ , context("ui")
+ , context("view")
+ , resolved("_id",
"event.id"))) + ";"
+ , funcName));
+ }
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ AppointmentDaoImpl dao =
Application.getBean(AppointmentDaoImpl.class);
+ Appointment a = dao.getAppointmentById(
+
getRequestCycle().getRequest().getRequestParameters().getParameterValue("_id").toLong());
+
+ int dayDelta =
getRequestCycle().getRequest().getRequestParameters().getParameterValue("dayDelta").toInt();
+ int minuteDelta =
getRequestCycle().getRequest().getRequestParameters().getParameterValue("minuteDelta").toInt();
+
+ Calendar cal = WebSession.getCalendar();
+ if (drop) {
+ cal.setTime(a.getAppointmentStarttime());
+ cal.add(Calendar.DATE, dayDelta);
+ cal.add(Calendar.MINUTE, minuteDelta);
+ a.setAppointmentStarttime(cal.getTime());
+ }
+ cal.setTime(a.getAppointmentEndtime());
+ cal.add(Calendar.DATE, dayDelta);
+ cal.add(Calendar.MINUTE, minuteDelta);
+ a.setAppointmentEndtime(cal.getTime());
+
+ dao.updateAppointment(a);
+ }
}
}