เพิ่มเหตุการณ์ลงในแหล่งที่มาของเหตุการณ์แบบไดนามิก

ขอบคุณสำหรับโครงการ! ดีจริงๆ !

ขณะนี้ฉันกำลังพยายามอัปเกรดปฏิทินแบบเต็มจาก v1 เป็น v2 ฉันแก้ไขปัญหาหลักทั้งหมดแล้วด้วยเอกสารประกอบการอัปเกรดเป็นหน้า v2

ตอนนี้ฉันติดอยู่กับปัญหาเชิงแนวคิด ...

ปฏิทินของฉันแสดงกิจกรรมตามผู้ใช้ ผู้ใช้แต่ละคนจะถูกแสดงโดยแหล่งที่มาของเหตุการณ์ แหล่งที่มาของเหตุการณ์โดยพื้นฐานแล้วคืออาร์เรย์ของเหตุการณ์ เมื่อฉันเพิ่มเหตุการณ์ให้กับผู้ใช้ ฉันต้องการให้เพิ่มเหตุการณ์นั้นลงในแหล่งที่มาของเหตุการณ์ของผู้ใช้ในลักษณะไดนามิก ด้วยวิธีนี้ ฉันจึงมีการจับคู่ที่สมบูรณ์ระหว่างแหล่งที่มาและกิจกรรมที่แสดงในปฏิทิน

ฉันประสบความสำเร็จในการใช้กรณีการใช้งานนี้ใน v1 ดังนี้:

private void addEventToSource(Event event) {
  // get user 
  String userId = event.getUserId();
  // get source for user (sources is a map user -> JsonObject)
  JSONObject source = sources.get(userId);
  // get the list of events
  JSONArray array = (JSONArray)source.get("events");
  // add event at the end of the list
  array.set(array.size(), createJsonEvent(event));
  // refetch events from all sources
  refetchEvents();

}

รหัสนี้ทำงานได้ดีเนื่องจากก่อนหน้านี้รู้จักแหล่งที่มาของผู้ใช้โดย full-calendar js :

private static native void addSource(String calendarId, JavaScriptObject source) /*-{
  $wnd.jQuery("#"+calendarId).fullCalendar('addEventSource', source);

}-*/;

ภายใน การอัปเดตทั้งหมดของฉันเสร็จสิ้นบนออบเจ็กต์ต้นทางผ่านการปรับแต่ง JSON เมื่อฉันเรียกข้อมูลกิจกรรมใหม่ แหล่งที่มาของผู้ใช้ทั้งหมดของฉันจะเป็นข้อมูลล่าสุดและแสดงไว้อย่างดีบนปฏิทิน

อย่างไรก็ตาม รหัสนี้ใช้ไม่ได้กับเวอร์ชัน 2 ดูเหมือนว่าแหล่งที่มาที่ฉันส่งไปยังปฏิทินแบบเต็มจะแตกต่างจากแหล่งที่มาที่ใช้ภายในเพื่อแสดงกิจกรรม การอัปเดตแหล่งที่มาทั้งหมดของฉันไม่ได้นำไปใช้กับข้อมูลภายใน ดังนั้นจึงไม่สามารถมองเห็นได้ในปฏิทิน

มีวิธีรับแหล่งที่มาของเหตุการณ์ภายในหรือไม่? มีความคิดใดที่จะใช้กรณีการใช้งานดังกล่าวหรือไม่? บางทีฉันอาจจะพลาดอะไรบางอย่างไป... ขอบคุณล่วงหน้า !

จูเลียน


person Julien Orain    schedule 07.08.2014    source แหล่งที่มา


คำตอบ (1)


คุณสามารถดูบางสิ่งเช่น:

$('#calendar').fullCalendar('removeEventSource', source)
$('#calendar').fullCalendar('refetchEvents')
$('#calendar').fullCalendar('addEventSource', newSource)
$('#calendar').fullCalendar('refetchEvents');

คุณยังสามารถลบกิจกรรมทั้งหมดและเพิ่มกลับเข้าไปใหม่ได้ตามที่คุณต้องการ มันขึ้นอยู่กับสิ่งที่คุณกำลังทำ http://fullcalendar.io/docs/event_data/removeEvents/

BTW Julian - คุณน่าจะทำให้ผู้ตอบกลับกลัวโดยการโพสต์ Java - ไม่ใช่ Javascript โพสต์โค้ดจาวาสคริปต์เพิ่มเติมเพื่อให้ได้คำตอบที่แม่นยำยิ่งขึ้น

person Du3    schedule 09.03.2015