Tambahkan acara ke sumber acara secara dinamis

Terima kasih untuk proyeknya! Benar-benar bagus !

Saat ini saya mencoba meningkatkan kalender penuh dari v1 ke v2. Saya memperbaiki semua masalah utama berkat dokumentasi halaman Peningkatan ke v2.

Saya sekarang terjebak pada masalah konseptual...

Kalender saya menampilkan acara berdasarkan pengguna. Setiap pengguna diwakili oleh sumber peristiwa. Sumber peristiwa pada dasarnya adalah serangkaian peristiwa. Saat saya menambahkan acara untuk pengguna, saya ingin acara tersebut ditambahkan ke sumber acara pengguna secara dinamis. Dengan cara ini saya selalu memiliki pencocokan lengkap antara sumber dan acara yang ditampilkan di kalender.

Saya berhasil mengimplementasikan use case ini di v1 sebagai berikut:

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();

}

Kode ini berfungsi dengan baik berkat fakta bahwa sumber pengguna sebelumnya diketahui oleh full-calendar js :

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

}-*/;

Secara internal, semua pembaruan saya dilakukan pada objek sumber melalui manipulasi JSON. Saat saya mengambil ulang acara, semua sumber pengguna saya sudah diperbarui dan ditampilkan dengan baik di kalender.

Namun, kode ini tidak berfungsi di v2. Tampaknya sumber yang saya kirim ke kalender lengkap berbeda dengan sumber yang digunakan secara internal untuk menampilkan acara. Semua pembaruan saya pada sumber tidak diterapkan pada data internal, sehingga tidak terlihat di kalender.

Apakah ada cara untuk menggunakan sumber peristiwa dalam? Adakah ide untuk mengimplementasikan kasus penggunaan seperti itu? Mungkin saya melewatkan sesuatu... Terima kasih sebelumnya!

Julien


person Julien Orain    schedule 07.08.2014    source sumber
comment
Halo lagi ! Berikut ini JSFiddle untuk menunjukkan masalah yang saya temui: jsfiddle.net/juorain/w4uky1z1/1 Skenario : - klik tambahkan sumber acara : akan menambahkan sumber dengan satu acara ke kalender - klik tambahkan acara ke sumber : akan menambahkan satu acara ke daftar - klik ambil ulang : tidak akan melakukan apa pun. Namun, kami menunggu kalender untuk mencetak acara kedua - klik sekali lagi untuk menambahkan sumber acara : akan menampilkan 2 acara terkait dengan acara pertama, dan satu lagi untuk acara terakhir yang ditambahkan pada sumber. Ada ide ?   -  person Julien Orain    schedule 07.08.2014


Jawaban (1)


Anda dapat melihat sesuatu seperti:

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

Anda bahkan dapat menghapus semua acara dan menambahkannya kembali sesuai kebutuhan. Itu tergantung pada apa yang Anda lakukan. http://fullcalendar.io/docs/event_data/removeEvents/

BTW Julian - kemungkinan besar Anda menakut-nakuti responden dengan memposting Java - dan bukan Javascript. Posting lebih banyak kode javascript untuk jawaban yang lebih tepat.

person Du3    schedule 09.03.2015