I would like to display year view of events in fullcalendar v4. Year view has been added to full calendar until version 2.2.7. Later version does not have this. So, I decided to create year view using custom view . But I did not get where should I add the html part that display year view in the way we want. This is how I create a view. But listYear plugin able to display all events in the year in list form. I would like to display events in calendar display all month on one view. Is it possible to add our own html table to render in calendar?
views: { Year: { type : 'listYear', duration : { months: 12 }, start :year+'-01-01', end :(year+1)+'-01-01', buttonText:'year' } }
document.addEventListener('DOMContentLoaded', function() {
var year =<?php echo $year;?>;
var event ='<?php echo json_encode($events);?>';
event=JSON.parse(event);
//console.log(event);
//create event Array
events_array=[];
for(i=0;i<event.length;i++)
{
//parameter for event Array-https://fullcalendar.io/docs/event-object
start_array=event[i]['start'].split(" ");
end_array=event[i]['end'].split(" ");
if(start_array[1]==='00:00:00')
{
start =start_array[0];
}
else
{
start =event[i]['start'];
}
if(end_array[1]==='00:00:00')
{
end =end_array[0];
}
else
{
end =event[i]['end'];
}
object_data={
id :event[i]['id'],
title :event[i]['remark']+'-'+event[i]['title'],
start :start,
end :end,
color :event[i]['color'],
}
events_array.push(object_data);
}
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['dayGrid','list'],
header:
{
left : 'prev,next today',
center : 'title',
//version 2.2.7 able to show year view.Year view has been implemented until version 2.2.7.
//But , we are using 4 to use valid range (limiting the duration).Valid range available from 3.3.0
right : 'Year,dayGridMonth,dayGridWeek,dayGridDay,listMonth'
},
views: {
Year: {
/* type: 'timelineYear',*/
type: 'listYear',
duration: { months: 12
/*weeks:1*/ },
start:year+'-01-01',
end: (year+1)+'-01-01',
/*intervalStart: $.fullCalendar.moment(year+'-01-01'),
intervalEnd: $.fullCalendar.moment((year+1)+'-01-01'),*/
buttonText: 'year'
}
},
defaultDate: year+'-01-01',
//set the year range limit - fullcalendar.min.js v3.3.0 & above support this
validRange: {
start : year+'-01-01',
end : (year+1)+'-01-01'
},
defaultView : 'dayGridMonth',
editable : false,//disable drag
events : events_array,
//from [https://stackoverflow.com/questions/45698134/dayrender-not-properly-working-in-fullcalendar-on-given-dates]
dayRender: function (date, cell)
{
var disabledDates = ["2016-02-10", "2016-02-15"];
//$.inArray returns the index of the element in the array, not a boolean indicating if the item exists in the array. If the element was not found, -1 will be returned.
/*if ($.inArray(date.format("YYYY-MM-DD"), disabledDates) > -1)
{
cell.css("background-color", "green");
}
*/
}
});
calendar.render();
});
Thanks in advance