Добавляйте события в источник событий динамически

Спасибо за проект! Действительно мило !

В настоящее время я пытаюсь обновить полный календарь с версии 1 до версии 2. Я исправил все основные проблемы благодаря документации по странице Обновление до версии 2.

Я сейчас застрял на концептуальной проблеме...

В моем календаре отображаются события по пользователям. Каждый пользователь представлен источником событий. Источник событий - это в основном массив событий. Когда я добавляю событие для пользователя, я хочу, чтобы оно динамически добавлялось в источник событий пользователя. Таким образом, у меня всегда есть полное соответствие между источниками и отображаемыми событиями в календаре.

Мне удалось реализовать этот вариант использования в 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. Когда я обновляю события, все источники моих пользователей обновляются и хорошо отображаются в календаре.

Однако этот код не работает на v2. Кажется, что источник, который я отправляю в полный календарь, отличается от того, который используется для внутреннего отображения событий. Все мои обновления на исходнике не применяются к внутренним данным, а значит не видны в календаре.

Есть ли способ использовать внутренние источники событий? Любая идея реализовать такой вариант использования? Может я что-то пропустил... Заранее спасибо!

Жюльен


person Julien Orain    schedule 07.08.2014    source источник
comment
Привет еще раз ! Вот JSFiddle, чтобы указать на проблемы, с которыми я сталкиваюсь: jsfiddle.net/juorain/w4uky1z1/1 Сценарий: — нажмите «Добавить источник события»: добавит источник с одним событием в календарь — нажмите «Добавить событие в источник»: добавит одно событие в список — нажмите «Обновить»: ничего не сделает. Однако мы ждем, пока календарь распечатает второе событие — щелкните еще раз, чтобы добавить источник события: будут показаны 2 события, соответствующие первому, и еще одно — последнему, добавленному в источнике. Есть идеи ?   -  person Julien Orain    schedule 07.08.2014


Ответы (1)


Вы можете посмотреть что-то вроде:

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

Вы даже можете удалить все события и добавить их обратно по мере необходимости. Это зависит от того, что вы делаете. http://fullcalendar.io/docs/event_data/removeEvents/

Кстати, Джулиан - вы, скорее всего, отпугиваете респондентов, публикуя Java, а не Javascript. Опубликуйте больше кода javascript для более точного ответа.

person Du3    schedule 09.03.2015