FullCalendar - длительность события по умолчанию - PullRequest
3 голосов
/ 17 февраля 2011

Я хотел бы иметь возможность изменить продолжительность по умолчанию для всех вновь создаваемых событий.

Я нахожусь в DayView, и если я просто нажму (не перетаскиваю) календарь, я получу полчаса.

Я бы хотел установить один час по умолчанию.

Может быть, с таким кодом:

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

Это эффективно устанавливает хорошую конечную дату, но визуально не обновляется

half hour selection screenshot


Редактировать

Я пытаюсь сделать поведение похожим на Календарь Google: если пользователь щелкнет, он выберет событие в течение 1 часа, но пользователь все еще может выбрать полчаса.

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

На основании одного из примеров:

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 голосов
/ 16 марта 2018

FullCalendar select обратный вызов позволяет сбросить значение end на любое значение. Параметры start и end для функции select являются датами moment.js. Вам просто нужно убедиться, что это не событие всего дня, отметив hasTime(), тогда вы можете использовать момент, чтобы добавить 30 минут ко времени end (чтобы оно длилось час):

select: function(start, end) {
    if (end.hasTime()) {
        end.add(30, 'minutes');
    }
}
0 голосов
/ 22 июня 2013

Вот временное решение, которое я нашел:

В вашем файле fullcalendar.js найдите функцию с именем slotSelectionMousedown. Измените dates = ... строки (строки) на:

    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. Вы можете попытаться добавить эти строки снова, но есть вероятность, что это не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...