Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除FullCalendar中的重复事件_Javascript_Jquery_Fullcalendar - Fatal编程技术网

Javascript 删除FullCalendar中的重复事件

Javascript 删除FullCalendar中的重复事件,javascript,jquery,fullcalendar,Javascript,Jquery,Fullcalendar,我有一个完整的日历,在那里我生成了一整周的事件。 从数据库中我得到了所有被阻止的事件。 被阻止的事件的长度可以相同,也可以更长。 我的问题是,经过几个小时的尝试,我要么删除了错误的事件,要么没有事件。 我最大的问题是比较这两个事件。 我使用moment.js和moment-range.js 目标是阻止的事件在日历中不再出现,并且阻止事件的时间为空。 我把我的密码贴在了网上 如果你有任何问题,请随时提问 非常感谢 初始化 events = []; var myCalendar = $('#cal

我有一个完整的日历,在那里我生成了一整周的事件。 从数据库中我得到了所有被阻止的事件。 被阻止的事件的长度可以相同,也可以更长。 我的问题是,经过几个小时的尝试,我要么删除了错误的事件,要么没有事件。 我最大的问题是比较这两个事件。 我使用moment.js和moment-range.js

目标是阻止的事件在日历中不再出现,并且阻止事件的时间为空。 我把我的密码贴在了网上

如果你有任何问题,请随时提问

非常感谢

初始化

events = [];

var myCalendar = $('#calendar').fullCalendar({
    minTime: "08:00:00",
    maxTime: "19:00:00",
    firstDay: moment().format('e'),
    defaultView: 'agendaWeek',
    weekends: false,


  });
用生成的事件填充日历

function fillCalendarWithEvents() {

    $('#calendar').fullCalendar('removeEventSources', events);
    var currentDate = moment.now();
    var beginOfWeek = currentDate.start;
    var endOfWeek = currentDate.end;
    var startDay = moment(beginOfWeek).set({
      'hour': 8,
      'minute': 0
    });

    var minutesOfBlock = 30;


    for (var day = 0; day < 14; day++) {

      for (var blocks = 0; blocks < 24; blocks++) {

        var startEvent = startDay.format();
        var endEvent = startDay.add(minutesOfBlock, 'm').format();

        if (isEventNotInPast(startEvent)) {

          events.push({
            title: 'Freier Termin',
            start: startEvent,
            end: endEvent,
            backgroundColor: '#66cdaa',
            url: ""
          });

        }

      }
      startDay.add(1, 'd').set({
        'hour': 8,
        'minute': 0
      });
    }
  }

请在此处发布相关代码,以便人们可以轻松查看(请参阅)。但不管怎样,你的陈述“从数据库中我得到了所有被阻止的事件”和“目标是阻止的事件在日历中不再出现”。这些听起来很矛盾。如果您不希望“阻止”事件出现在日历中,为什么要从数据库返回它们?我不明白你想达到什么目的。请看链接。在那里,您可以看到问题和quellcode。目标是一个空白的地方,那里有一个被阻止的事件。正如我所说的,请在这里发布相关代码,以便人们可以轻松地看到它(请参阅)。我不会阅读你的全部源代码来找到相关部分。此外,对未来读者而言,指向非网站资源的链接可能会过时。你还没有回答我关于你到底想做什么的问题。如果你不想显示“阻止的”事件(不管这意味着什么?),那么不要将它们包含在你的事件提要中。只有相关部分,但无论如何,我在这篇文章中发布了代码:)整整一周,我都从代码中生成所有事件。我有被阻止的事件,在被阻止的事件所在的地方应该有一个空的地方。所以客户不能在同一事件中存储。好的,我现在看得更清楚了。如果只显示“阻塞”事件,而不必费心生成“空闲”事件,则会容易得多-空闲插槽应显示为网格上的空白,以便用户可以选择要添加事件的区域。如有必要,您可以使用其他规则确保它们仅选择预先确定大小的时间块。我认为这是在做一些不必要的事情。在我看来,你正在制造一个你不需要的问题。
  function removeBlockEvents(){
    for(var all = 0; all < events.length; all++){
      for(var blocked = 0; blocked < blockedEventsJSON.length; blocked++){
      const  range = moment.range(events[all].start, events[all].end);
        start = moment(blockedEventsJSON[blocked].begin);
        if(range.contains(start)){
          events.splice(all, 1);


        }
      }
    }
  }



$('#calendar').fullCalendar('addEventSource', events);
blockedEventsJSON = JSON.parse('[{"id":55,"status":0,"user":2,"begin":"2017-06-20 09:00:00","end":"2017-06-20 09:30:00","gcalenderstatus":0,"title":null,"description":"Termin von ","created_at":"2017-06-16 20:24:20","updated_at":"2017-06-16 20:24:20"}]')