Я использую 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 года.
Возможно, вы можете использовать два подключенных средства выбора даты (то есть, самая ранняя дата второго дня должна быть позже, чем дата первого), и использовать кнопку для копирования событий.
ИМО лучший способ — скопировать события на сервере. Предполагая, что у вас есть БД, вы должны выбрать события из данного периода и дублировать события одним нажатием кнопки.
Таким образом, у вас будет «Копировать события по периодам» вместо «Копировать события по неделям (и месяцам, и кварталам, ..)».
Итак, ваш код переднего плана будет примерно таким:
<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 месяц к каждому началу / концу.
Других решений пока нет …