FullCalendar - отображение различной информации

Вопрос в том:

как отобразить (что изменить внутри кода) для отображения различной информации в представлении недели и в представлении дня f.ex.:

просмотр недели - время, заголовок

день просмотра - время, название, описание и т. д.

и проформа: просмотр месяца - время, название

3 ответа

Решение

В глобальном JS заявляют,

var currentView;

В конструкторе fullCalendar есть триггер viewDisplay, используйте этот код.

          viewDisplay: function(view) {
                                //This is very ugly way to change events on switch... but it works!
                                //Every time you you use 'gotoDate' this will trigger, also pressing next, previous

                                if (view.name != currentView) {
                                    if ( view.name == 'basicWeek' )   
                                      { 
                                          $('#myDateSelector').hide();
                                          $('#calendar').fullCalendar( 'removeEventSource', 'json_day.php' ); 
                                          $('#calendar').fullCalendar( 'addEventSource', 'json_week.php' );  
                                          console.log("week");
                                      }
                                     if (view.name == 'basicDay' ) 
                                      { 
                                          $('#myDateSelector').show();
                                          $('#calendar').fullCalendar( 'removeEventSource', 'json_week.php' );
                                          $('#calendar').fullCalendar( 'addEventSource', 'json_day.php' );   
                                          console.log("day");
                                      }
                                      //You can use it some where else to know what view is active quickly
                                      currentView = view.name;
                                  }
                    },

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

Решение ppumkin может работать, но оно очень хакерское, поэтому я подумал, что выложу лучший вариант:

$("#calendar").fullCalendar({
    events: [
      {
        start: "2010-01-05",
        end: "2010-01-07",
        title: "event info",
        advancedTitle: "advanced event info"
      }
    ],
    eventRender: function(event, element, view){
      if(view.name == "agendaDay")
      {
        event.title = event.advancedTitle;
      }
    }
});

В объектах событий вы можете указать нестандартное поле, например "advancedTitle", которое содержит расширенную информацию о событии. Затем в функции обратного вызова eventRender вы можете легко переключить заголовок на "advancedTitle" для желаемого представления.

Надеюсь, это поможет кому-то:)

Я отправил это на другой вопрос ранее

Проверьте эту ссылку

http://arshaw.com/fullcalendar/docs/text/titleFormat/

Вы можете указать, какой вид вы хотите редактировать через это

http://arshaw.com/fullcalendar/docs/views/View_Option_Hash/

Таким образом, вы, вероятно, имели бы что-то вроде

titleFormat: {

day: 'dddd, d MMM, yyyy'   //whatever date format you want here
month: 'MMMM yyyy',                            
week: "MMM d[ yyyy]{ '—'[ MMM] d yyyy}"
} 
Другие вопросы по тегам