如何使用arshaw fullcalendar v2.3.0在agendaDay视图中灰显非工作日

时间:2015-05-27 06:57:16

标签: javascript jquery json fullcalendar

我正在使用最新版本的arshaw fullcalendar(版本2.3.0),并且日历需要显示活跃的工作日和小时。

我是这样做的:

 businessHours:
 {
    start: '08:00',
    end: '17:00',
    dow: [2,3,4,5,6,0] // Monday is not a working day
 },

在“议程周刊”视图中,它清楚地显示了非工作日的工作日“灰色”#。就我而言,周一

enter image description here

但是当我进入agendaDay视图时,星期一(未定义为工作日)显示没有灰色部分,整天都是白色,使其看起来像工作日。

enter image description here

如果没有指定日期是工作日,那么在agendaDay视图中的整天都不应该显示为灰色吗?

参考:http://fullcalendar.io/docs/display/businessHours/

1 个答案:

答案 0 :(得分:1)

我认为这是一个错误,但我创建了一个解决方法。当fullcalendar在agendaDay视图中且当前日期不在DateOfWeek数组中时,它会创建一个后台事件。

$('#calendar').fullCalendar({
    businessHours: {
        start: '08:00',
        end: '17:00',
        dow: [0, 2, 3, 4, 5, 6]
    },

    viewRender: function (view, e) {
        var bh = view.options.businessHours,
            startDate = view.start;

        if (view.type === "agendaDay" && bh.dow.indexOf(startDate.day()) === -1) {
            $('#calendar').fullCalendar('renderEvent', {
                start: moment(startDate),
                end: moment(view.end),
                rendering: 'background',
                className: 'fc-nonbusiness'
            }, false);

            $('#calendar').fullCalendar('renderEvent', {
                start: moment(startDate),
                allDay: true,
                rendering: 'background',
                className: 'fc-nonbusiness'
            }, false);
        }
    }
});

有一些事情可以改进:

  • 选择器$('#calendar')可以是通用的。
  • 当您多次访问该日期时,.fullCalendar('renderEvent',会附加多个背景事件。

jsfiddle