我使用的是FullCalendar,它非常完美(ish):)
现在,我的用户要求一种简单的方法,将整整一个月的计划轮班复制到下个月——或者任何一个月。
我已经有了一个"复制周"功能,它运行良好。但我根本无法找到复制整个月轮班的正确方法。我想把"A月A日N"复制到"B月B日N",但这导致了失败——如1。一个月中的每一天都在不断地移动。
有什么想法可以做到这一点吗?
编辑:
我正在寻找输入的任务实际上是在PHP/MySQL后端。在前端,用户只需选择2个:Copy month to和一个按钮"Copy"。
在后端,我收到"mthfrom=>2014-1"answers"mthto=>2015-1"。我可以用SELECT * from dbevent WHERE year(shiftstart)='2014' and MONTH(shiftstart)='1';
找到2014-1的所有事件。
问题是我需要"匹配"正确的工作日,因此相应的工作日在复制到的月份匹配。例如,我想复制2014年1月至2014年3月的所有班次。
- 如何确保周一的轮班在正确的工作日结束
- 如何确保星期六/星期日没有轮班
- 如果用户想将28天的月份复制到31天的月份,或者反之亦然,该怎么办
也许您可以使用两个连接的日期选择器(即,第二个日期的最早日期应该晚于第一个日期),并使用按钮复制事件。
IMO最好的方法是在服务器中复制事件。假设您有一个DB,您将从给定的时间段中选择事件,并在单击按钮时复制事件。
这样,您将有一个"按周期复制事件",而不是"按周(和月,和季度,..)复制事件"。
所以,你的前端代码应该是这样的:
<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,但您可以使用jQueryUI中的日期选择器。
唯一不存在的是您需要自己创建的服务器代码。但是,您将有一段时间复制到下个月,因此只需复制DB行,每个开始/结束添加1个月即可。