如何解决完整日历 删除重复发生的事件
我有一个复杂的场景,我想在其中实施。我使用的是完整日历 v4.4.0,为了显示重复事件,我使用了 rrule 插件。我正在从 MysqL 加载事件。我成功加载它们并在网站上显示它们。它工作得很好,但现在客户提出了另一个要求。
如前所述,我使用 rrule 插件来显示重复事件。在我的门户中只有 2 个重复事件
- 每周
- 每月
现在客户想要删除一个事件,例如一个每周发生的事件,他想删除它一次。例如,在 4 月 13 日添加一个事件并且每周重复一次。也就是说,他只想删除 4 月 27 日的事件,并希望按原样继续序列。我如何实现它,因为所有重复事件的事件 ID 都相同。
需要说明的是,我在事件发生的地方使用了 MysqL。
我的加载事件代码
$model = Event::find()->all(); // getting all events
foreach ($model as $mod)
{
$day=array();
if ($mod->event_frequency==2)
{
$start=date('N',strtotime($mod->start_time));
$end=date('N',strtotime($mod->end_time));
if($start==$end)
{
$day[]=$start;
}
else
{
$day[]=$start;
$day[]=$end;
}
$data[]=[
'id' =>$mod->id,'title'=>$mod->event_name,// 'start' => $mod->start_time,// 'end' => $mod->end_time,'backgroundColor' => $mod->event_tag_color,'textColor' => '#FFF','rrule'=> [
'freq'=> 'WEEKLY','interval'=> 1,'dtstart'=> $mod->start_time,'until' => '2022-12-31',],];
}
else if($mod->event_frequency==3)
{
$start=date('N','rrule'=> [
'freq'=> 'MONTHLY',];
}
else
{
$data[]=[
'id' =>$mod->id,'start' => $mod->start_time,'end' => $mod->end_time,];
}
}
return JSON::encode($data);
加载的calender.js如下
var calendarEl = document.getElementById('calendar-event');
var calendar = new FullCalendar.Calendar(calendarEl,{
plugins: ['interaction','dayGrid','timeGrid','list','rrule'],header: {
left: 'prev,next today',center: 'title',right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth'
},navLinks: true,// can click day/week names to navigate views
businessHours: true,// display business hours
editable: true,//uncomment to have a default date
//defaultDate: '2020-04-07',events: url+'calender/load',// loading events
}
删除服务器上的事件
$event_id=Yii::$app->request->post('event_id');
$model= Event::findOne($event_id);
$model->delete();
$response= array();
$response['status']="ok";
return JSON::encode($response);
$(".delete-event-calender").on("click",function(evt) {
$data=$('form').serialize();
$url=$(this).data('url');
$.ajax({
type: "POST",url: $url,data: $data,dataType: "json",Traditional: true,success: function (response) {
//alert(response.status);
if (response.status==="ok"){
calendar.refetchEvents();
$(".ajax_form").trigger("reset");
}
else
{
}
},error: function (response) {
debugger;
alert(response.d);
}
});
});
如果我尝试删除 4 月 27 日的事件,它将采用主事件的事件 ID(设置日期)并删除整个序列?我该如何预防。
我怎样才能实现它?有什么建议请
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。