Копирование месяцев событий FullCalendar на следующий месяц

Я использую FullCalendar, и он отлично работает (иш) 🙂

Теперь мои пользователи требуют простой способ скопировать полные месяцы запланированных смен на следующий месяц — или любой месяц.

У меня уже есть функция «Копировать неделю», и она отлично работает. Но я просто не могу понять, как правильно копировать целые месячные смены.
Я думал скопировать «день N Месяц А» в «день N Месяц Б», но это приводит к провалу — поскольку 1. день месяца постоянно движется.

Есть идеи как это сделать?

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

Задача, которую я ищу для ввода, на самом деле находится в бэкэнде PHP / MySQL. В интерфейсе пользователя просто есть 2 выбора: Копировать месяц в и кнопка «Копировать».

В бэкэнде я получаю «mthfrom => 2014-1» и «mthto => 2015-1». У меня нет проблем с поиском всех событий 2014-1 с SELECT * from dbevent WHERE year(shiftstart)='2014' and MONTH(shiftstart)='1';,

Проблема заключается в том, что мне нужно «сопоставить» правильные рабочие дни, поэтому соответствующие дни недели совпадают с копированием в месяц. Например. Я хочу скопировать все смены с января 2014 года по март 2014 года.

  • Как убедиться, что смены в понедельник заканчиваются в правильный день недели?
  • Как сделать так, чтобы в субботу / воскресенье не было смен?
  • Что делать, если пользователь хочет скопировать месяц с 28 днями на месяц с 31 днем ​​или наоборот?

0

Решение

Возможно, вы можете использовать два подключенных средства выбора даты (то есть, самая ранняя дата второго дня должна быть позже, чем дата первого), и использовать кнопку для копирования событий.

ИМО лучший способ — скопировать события на сервере. Предполагая, что у вас есть БД, вы должны выбрать события из данного периода и дублировать события одним нажатием кнопки.

Таким образом, у вас будет «Копировать события по периодам» вместо «Копировать события по неделям (и месяцам, и кварталам, ..)».

Итак, ваш код переднего плана будет примерно таким:

<div class='input-group date' id='dtpFrom'>
<input type='text' class="form-control" />
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<div class='input-group date' id='dtpTo'>
<input type='text' class="form-control" />
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<button id="copyEvents" class="btn btn-default">Copy Events </button>
<div id="calendar"></div>

<script>
$('#dtpFrom').datetimepicker();
$('#dtpTo').datetimepicker();

$("#copyEvents").on('click', function() {
var dateFrom = $('#dtpFrom').data("DateTimePicker").getDate(),
dateTo = $("#dtpTo").data("DateTimePicker").getDate();

$.ajax({
url: 'url-for-server',
data: {from: dateFrom, to: dateTo},
type: 'post',
dataType: 'json',
success: function() {
// reload events if you want
$("#calendar").fullCalendar( 'refetchEvents' );
}
});
});

// start fullcalendar
$("#calendar").fullCalendar();
</script>

Полный код в этом JsFiddle и служит демонстрацией, чтобы вести вас. Я использовал Bootstrap, но вы можете использовать средства выбора даты из пользовательского интерфейса jQuery.

Единственное, чего нет, это серверный код, который вам нужно создать для себя. Тем не менее, у вас будет период для копирования в следующий месяц, поэтому достаточно просто продублировать строки БД, добавив 1 месяц к каждому началу / концу.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]