1

我尝试在 fullCalendar 中设置议程周视图的高度。最终目标是使日历适合用户的窗口,并让全日历使用最大可用位置而没有滚动条。

事实是文档显示了有关 height 或 contentHeight 选项,但这对议程周或议程日视图中的计算高度没有影响。

这是一个示例jsfiddle

var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();

$('#calendar').fullCalendar({
    defaultView: "agendaWeek",
    height: 2500,
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
    },
    editable: true,
    events: [
        {
            title: 'All Day Event',
            start: new Date(y, m, 1)
        },
        {
            title: 'Long Event',
            start: new Date(y, m, d-5),
            end: new Date(y, m, d-2)
        },
        {
            id: 999,
            title: 'Repeating Event',
            start: new Date(y, m, d-3, 16, 0),
            allDay: false
        },
        {
            id: 999,
            title: 'Repeating Event',
            start: new Date(y, m, d+4, 16, 0),
            allDay: false
        },
        {
            title: 'Meeting',
            start: new Date(y, m, d, 10, 30),
            allDay: false
        },
        {
            title: 'Lunch',
            start: new Date(y, m, d, 12, 0),
            end: new Date(y, m, d, 14, 0),
            allDay: false
        },
        {
            title: 'Birthday Party',
            start: new Date(y, m, d+1, 19, 0),
            end: new Date(y, m, d+1, 22, 30),
            allDay: false
        },
        {
            title: 'Click for Google',
            start: new Date(y, m, 28),
            end: new Date(y, m, 29),
            url: 'http://google.com/'
        }
    ]
});

我试图了解 jquery.fullcalendar 如何在这些模式下设置高度,但找不到解决方案。我还尝试通过动态调整的 CSS 强制高度,例如

var view = $("#calendar").fullCalendar("getView");
if(view.name == 'agendaWeek' || view.name == 'agendaDay')
    $("table.fc-agenda-slots td > div").height(Math.floor((toHeight-50)/24)-1);

但是在切换视图时会导致错误(某些开关上会出现滚动条)

你有想法吗 ?

4

1 回答 1

1

好的,由于报告的其他问题(例如此问题),我找到了一种解决方法

我默认在议程周视图中加载 fullCalendar,然后使用基本的 viewRender 选项调整宽度

$("#calendar").width(myWidth);

列宽错误,我需要执行一次

$("#calendar").fullCalendar("render");

然后我用“脏”调整高度

$("table.fc-agenda-slots td > div").height(Math.floor((toHeight-50)/24)-1);

其中 toHeight 是日历的可用高度,50 是日历标题的近似值,24 我在议程视图中显示的行数和 1 调整

此时,一个滚动条出现在议程视图中,所以我应用了 Sinetheta 的技巧(参见上面的链接),我选择这样应用它:

view.setHeight(9999);

该技巧导致月视图出现问题,因此整个技巧看起来像这样

var view = $("#calendar").fullCalendar("getView");
if(view.name == 'agendaWeek' || view.name == 'agendaDay')
{
    $("table.fc-agenda-slots td > div").height(Math.floor((toHeight-50)/24)-1); // 50: approx header height, 24: number of rows in agenda view (I only display from 7am to 19pm)
    view.setHeight(9999); // Get rid of scrollbar
}
if(view.name == 'month')
{
    $("tr.fc-week td > div").css("min-height", "");
    $("tr.fc-week td > div").height(Math.floor((toHeight-50)/6)-1); // 50: approx header height, 6: number of rows in month view
}

我觉得这个技巧有点难看,我想它可以通过获取真实的标题高度和行数来改进,但无论如何它都有效

注意:这个技巧包含在我在 fullCalendar 中的 viewRender 函数中执行的 calendarResize 函数中

于 2013-08-20T16:51:58.837 回答