java - DHXScheduler Save/Get Custom Lightbox Fields -
i using dhxscheduler in jsp application exam timetabling. added custom lightbox own fields information exams.
this eventsmanager class saves, creates , gets events. extends class dhxeventsmanager.
public class eventsmanager extends dhxeventsmanager { public eventsmanager(httpservletrequest request) { super(request); } public iterable getevents() { connection conn = null; dhxeventsmanager.date_format = "yyyy-mm-dd hh:mm:ss"; list<event> events = new arraylist<event>(); try { conn = sqlhelper.getconnection(); statement statement = conn.createstatement(); stringbuffer query = new stringbuffer(); query.append("select * "); query.append(timetableevent.tbl_events); query.append(" e join "); query.append(studyunit.tbl_studyunits); query.append(" s on e."); query.append(timetableevent.fld_unitcode); query.append(" = s."); query.append(studyunit.fld_unitcode); resultset rs = statement.executequery(query.tostring()); while (rs.next()) { event e = new event(); // extends dhxevent , contains additional fields e.setid(integer.parseint(rs.getstring(timetableevent.fld_id))); e.settext(rs.getstring(timetableevent.fld_unitcode)); e.setstart_date(rs.getstring(timetableevent.fld_startdate)); e.setend_date(rs.getstring(timetableevent.fld_enddate)); e.setunitcode(rs.getstring(studyunit.fld_unitcode)); e.settitle(rs.getstring(studyunit.fld_title)); e.setyear(rs.getstring(studyunit.fld_year)); e.setsemester(rs.getshort(studyunit.fld_semester)); e.setexamlength(rs.getfloat(studyunit.fld_examlength)); e.setnoofstudents(rs.getshort(studyunit.fld_noofstudents)); e.setdepartment(rs.getstring(studyunit.fld_department)); e.setcredits(rs.getshort(studyunit.fld_credits)); e.setevening(rs.getboolean(studyunit.fld_evening)); events.add(e); } } catch (sqlexception e) { system.out.println("[eventsmanager.getevents()]: " + e.getmessage()); } { sqlhelper.closeconnection(conn); } dhxeventsmanager.date_format = "mm/dd/yyyy hh:mm"; return events; } @override public dhxstatus saveevent(dhxev event, dhxstatus status) { connection conn = sqlhelper.getconnection(); preparedstatement pstmt = null; resultset rs = null; event ev = (event) event; try { if (status == dhxstatus.update) { pstmt = timetableevent.updateevent(conn, ev); } else if (status == dhxstatus.insert) { system.out.println("save"); pstmt = timetableevent.insertevent(conn, ev); } else if (status == dhxstatus.delete) { pstmt = timetableevent.deleteevent(conn, event); } if (pstmt != null) { pstmt.executeupdate(); rs = pstmt.getgeneratedkeys(); if (rs.next()) { event.setid(rs.getint(1)); ev.setid(rs.getint(1)); } } } catch (sqlexception e) { system.out.println("[eventsmanager.saveevent() - " + status.name() + "]: " + e.getmessage()); e.printstacktrace(); } { if (rs != null) sqlhelper.closeresultset(rs); if (pstmt != null) sqlhelper.closepreparedstatement(pstmt); if (conn != null) sqlhelper.closeconnection(conn); } return status; } @override public dhxev createevent(string id, dhxstatus status) { return new event(); } }
the event
class extends dhxevent
, contains getters , setters additional fields. problem when casting dhxev
event
, losing additional fields null saveevent method accepts dhxev parameter.
this events.jsp
file getevents() method eventsmanager called json objects events.
<%@ page contenttype="application/json" import="com.dhtmlx.planner.*,servlets.*,events.eventsmanager" %> <%= getevents(request) %> <%! string getevents(httpservletrequest request) throws exception { eventsmanager evs = new eventsmanager(request); return evs.run(); } %>
this sample of returning. can see returns fields dhxev
object i.e. id, start_date, end_date , text
.
{id:7, text:cis3087, end_date:03/27/2014 13:00, start_date:03/27/2014 10:00}
how can add additional fields json object i.e. have object studyunit title, department, etc?
this relevant client-side code scheduler.. configuration , save_form() , show_lightbox methods:
scheduler.config.api_date = "%y-%m-%d %h:%i"; scheduler.config.details_on_dblclick = true; scheduler.config.details_on_create = true; scheduler.config.first_hour = "8"; scheduler.config.last_hour = "22"; scheduler.config.drag_lightbox = true; scheduler.config.show_loading = true; scheduler.config.mark_now = true; scheduler.init('scheduler_here', new date(), "week"); scheduler.load("events.jsp", "json"); var dp = new dataprocessor("events.jsp"); dp.init(scheduler); function save_form() { var ev = scheduler.getevent(scheduler.getstate().lightbox_id); ev.text = html("studyunit_code").value; ev.start_date = setdate("start_date", "starttime"); ev.end_date = setdate("start_date", "endtime"); scheduler.endlightbox(true, html("custom_form")); $("#form1").submit(); // submits other fields , saves them db table } scheduler.showlightbox = function(id) { var ev = scheduler.getevent(id); scheduler.startlightbox(id, html("custom_form")); html("studyunit_code").value = ev.text; html("studyunit_code").focus(); html("studyunit_title").value = ev.studyunit_title; var startdate = ev.start_date; getdate(startdate, "start_date", "starttime"); var enddate = ev.end_date; getdate(enddate, "start_date", "endtime"); };
i'm guessing small modification have make fields in json object , show them in lightbox.
do have idea of how can solve this? thanks!
please, make sure additional fields in event class public. dhxeventsmanager uses class.getfields() event properties. if property private it's not available in generated json.
Comments
Post a Comment