完整日历 删除重复发生的事件

我有一个复杂的场景,我想在其中实施。我使用的是完整日历 v4.4.0,为了显示重复事件,我使用了 rrule 插件。我正在从 mysql 加载事件。我成功加载它们并在网站上显示它们。它工作得很好,但现在客户提出了另一个要求。

如前所述,我使用 rrule 插件来显示重复事件。在我的门户中只有 2 个重复事件

  1. 每周
  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);

调用动作删除动作的js文件

$(".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(设置日期)并删除整个序列?我该如何预防。

我怎样才能实现它?有什么建议请

谢谢

liyazhao 回答:完整日历 删除重复发生的事件

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/591307.html

大家都在问