2011-02-17 61 views
2

我希望能够更改任何新创建事件的默认持续时间。FullCalendar - 默认事件持续时间

我在dayView中,如果我只是在日历上点击(不拖动&下拉列表),我会得到一个半小时的会话。

我想将其设置为默认一小时。

, select: function (startDate, endDate, allDay, jsEvent, view) { 
    endDate = new Date(startDate); 
    endDate.setHours(endDate.getHours() + 1); 
} 

这有效地设置好结束日期,但不visualy更新

half hour selection screenshot


编辑

我:

用这种代码

也许米试以使行为类似于Google日历:如果用户点击它,则会选择1小时事件,但用户仍可以选择半小时。

回答

2

基础上的一个例子:

select: function(start, end, allDay) { 
    var title = prompt('Event Title:'); 
    if (title) { 
     end = new Date(start); 
     end.setHours(end.getHours() + 1); 

     calendar.fullCalendar('renderEvent', 
     { 
     title: title, 
     start: start, 
     end: end, 
     allDay: allDay 
     }, 
     true // make the event "stick" 
     ); 
    } 
    calendar.fullCalendar('unselect'); 
}, 

问题的更新之前:

像这样的东西应该工作:

eventClick: function (calEvent, jsEvent, view) { 
    calEvent.end = new Date(calEvent.start); 
    calEvent.end.setHours(calEvent.start.getHours() + 1); 
    $('#calendar').fullCalendar('updateEvent', calEvent); 
}, 
+0

我在说“eventClick”时犯了一个错误。事实上,我正在谈论新会议的定义,而不是现有会议的定义。所以更多的是关于“选择”事件。 (我已更新我的问题) – 2011-02-17 15:18:10

0

这是临时的解决方案,我发现:

在您的fullcalendar.js文件,找到名为slotSelectionMousedown的函数。更改dates = ...线(S)本:

if (cell == origCell && (t.name == "agendaWeek" || t.name == "agendaDay")) 
     dates = [ 
      d1, 
      addMinutes(cloneDate(d1), snapMinutes), // calculate minutes depending on selection slot minutes 
      d2, 
      addMinutes(cloneDate(d2), snapMinutes + 30) 
     ].sort(cmp); 
    else 
     dates = [ 
      d1, 
      addMinutes(cloneDate(d1), snapMinutes), // calculate minutes depending on selection slot minutes 
      d2, 
      addMinutes(cloneDate(d2), snapMinutes) 
     ].sort(cmp); 

请注意,这只是治标不治本/黑客,因为它会用新版本Fullcalendar覆盖。您可能会尝试再次添加这些行,但有可能无法使用。