2014-12-03 3 views
0

Когда я нажимаю на пустой временной интервал на fullCalendar, он рисует прямоугольник в этой пустой ячейке. Итак, если мой slotDuration равен 30min, блок представляет 30 минут. Я также могу перетащить курсор на несколько ячеек и выбрать настраиваемый диапазон. Но мне нужно сделать, когда пользователь нажимает (не перетаскивает) на ячейку, выбирает и рисует прямоугольник на 2 ячейки (составляет 1 час). Это возможно? Я не могу изменить slotDuration. Если я изменяю snapDuration на 1 час, это работает, но, к сожалению, я не могу его изменить. Что я искал, это способ переопределить event.end, но это не сработало.Выберите несколько временных интервалов при нажатии

Update 1:
Я был в состоянии сделать это, раскрывающую cellDuration свойство:

на fullCalendar.js:

t.setCellDuration = function (minutes) {   
    var duration = moment.duration(minutes, 'minutes'); 
    var view = t.getView();  
    view.timeGrid.cellDuration = duration; 
} 

теперь на renderEvent обработчик, я могу назвать

element.fullCalendar("setCellDuration", 60); 

Это работает, но если есть альтернатива th в не связано с изменением полного кода в календаре, было бы неплохо.

+0

@downvoter: как я могу улучшить этот вопрос? – Leo

ответ

0

Я думаю, вы не можете сделать это, просто изменив свойства календаря, но вы можете сделать это, изменив файл fullCalendar.js. Да, я знаю, что вы указали это по своему вопросу, но я думаю, что альтернативы нет.

Именно функция listenStop, которая находится на линии 4527 at version 2.3.3

listenStop проверить вызов массива dates

dates[ 
    {FCMoment}, //start 
    {FCMoment} //end 
] 

Таким образом, до этого чека, вы можете изменить свой конец времени, как вы предпочитаете. Кроме того, вы должны сделать это. В коде, теперь функция listenStop() должно быть что-то вроде:

listenStop: function(ev) { 
      if (dates) { // started and ended on a cell? 
       if (dates[0].isSame(dates[1])) { 
        dates[1] = dates[0].clone().add(1, 'hours'); //Now we modify the end 
        _this.renderSelection(dates[0], dates[1]);  //And render the modified selection 
        view.trigger('dayClick', dayEl[0], start, ev); 
       } 
       if (isSelectable) { 
        // the selection will already have been rendered. just report it 
        view.reportSelection(start, end, ev); 
       } 
      } 
     } 
Смежные вопросы