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

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

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

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

Любые идеи, как это сделать?

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

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

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

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

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

Solutions Collecting From Web of "Копирование месячных событий FullCalendar на следующий месяц"

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

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

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

Таким образом, ваш внешний код будет выглядеть примерно так:

 <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, но вы можете использовать datepickers из jQuery UI.

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