使用fullcalendar自动滚动到timelineWeek视图中的当前日期

时间:2017-11-15 07:08:48

标签: jquery ruby-on-rails fullcalendar fullcalendar-scheduler

我正在使用Rails 4和fullCalendar,并希望实现以下功能:

使用timelineWeek视图自动将“now”指示器滚动到当前日期时间。我的所有资源都在我的Y轴上。我在使用timelineWeek视图实现此功能时遇到问题。有人可以帮忙吗?

我为它尝试了以下代码,但没有进展:

var firstHour = new Date().getUTCHours() - 5;
$('#calendar').fullCalendar({
  firstHour: firstHour;
});

并且还使用了这个:

setTimeout(function(){ // Timeout
    $(".fc-today").attr("id","scrollTo"); // Set an ID for the current day..
    $("html, body").animate({
        scrollTop: $("#scrollTo").offset().top // Scroll to this ID
    }, 2000);
}, 500);    

和此:

$('#calendar').fullCalendar('today');

以上代码适用于agendaWeek视图。唯一的问题是timelineWeek视图。

1 个答案:

答案 0 :(得分:0)

我已经找到了一种方法,也许可以采取其他方式。

我决定在viewRender函数中滚动,因为它在初始加载和更改日期都被调用。

现在我首先检查当前时间是否在我的视图中,并且我们设置了插槽宽度。 然后计算当前时隙之前有多少个时隙并计算左滚动。根据您的需要进行修改:例如我想让它在昨天最左边的载荷上显示出来。

if (moment().isBetween(view.start, view.end) && view.timeGrid.slotWidth !== undefined) {
    var scrollSlots = moment.duration(moment() - view.start) / moment.duration(view.viewSpec.overrides.slotDuration);
    var slotWidth = view.timeGrid.slotWidth;
    var scroll = {left: scrollSlots * slotWidth - $('.fc-time-area').width() / 4};
    view.addScroll(scroll);
}

最终结果:加载(裁剪资源)。这是200 slotWidth的月视图。 enter image description here