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}"
}