Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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 完整日历在数据转换后删除事件对象_Javascript_Fullcalendar - Fatal编程技术网

Javascript 完整日历在数据转换后删除事件对象

Javascript 完整日历在数据转换后删除事件对象,javascript,fullcalendar,Javascript,Fullcalendar,我有一个关于完整日历的奇怪问题。我正在尝试为不同类型的事件创建mouseover,并且在“eventDataTransform”和“eventMouseover”函数之间出现了一些事件对象属性消失的问题 这适用于将从API加载数据以填充完整日历的web应用程序。当我不对事件执行转换时,我能够获得对象的所有属性。我正在检查对象,并显示它在对象变换时存在,而在鼠标悬停时不存在 calendar = $("#k_calendar").fullCalendar({ isRTL: KUtil.isRT

我有一个关于完整日历的奇怪问题。我正在尝试为不同类型的事件创建mouseover,并且在“eventDataTransform”和“eventMouseover”函数之间出现了一些事件对象属性消失的问题

这适用于将从API加载数据以填充完整日历的web应用程序。当我不对事件执行转换时,我能够获得对象的所有属性。我正在检查对象,并显示它在对象变换时存在,而在鼠标悬停时不存在

calendar = $("#k_calendar").fullCalendar({
  isRTL: KUtil.isRTL(),
  header: {
    left: "prev,next today",
    center: "title",
    right: "month"
  },
  editable: false,
  eventLimit: false,
  navLinks: true,
  weekends: true,
  eventSources: [
    // Loaded from a previous source
    data,
    "{% url 'pentesting-api:pentest-events' %}"
  ],
  displayEventTime: false,
  // Where the error is
  eventDataTransform: function (eventData) {
    if (eventData.hasOwnProperty('vendor')) {
      eventData.end = moment(eventData.end).add(1, 'days').format();
      eventData.title = eventData.full_name;
      eventData.backgroundColor = statusColors[eventData.status];
      eventData.allDay = true;
      return eventData;

    }
    else {
      eventData.title = eventData.event_name;
      eventData.backgroundColor = eventColors[eventData.event_type];
      // all attributes are on the object here
      console.log(eventData);
      return eventData;
    }
    // Using the below commented out code works but doesn't distinguish between events 
    // eventData.end = moment(eventData.end).add(1, 'days').format();
    //   eventData.title = eventData.full_name;
    //   eventData.backgroundColor = statusColors[eventData.status];
    //   return eventData;
  },
  eventMouseover: function (event, jsEvent, view) {
    closePopovers();
    // console.log(event);
    if (event.hasOwnProperty('event_type')) {
      console.log('this mouse over');
      // object dropped the 'end' attribute
      console.log(event);
      let start_base, end_base, start_date, end_date, start_time, end_time;
      start_base = event.start.format().split('T');
      start_date = start_base[0];
      start_time = start_base[1].split('-')[0].split(':')[0] + ':' + start_base[1].split('-')[0].split(':')[1];
      end_base = event.end.format().split('T');
      end_date = end_base[0];
      end_time = end_base[1].split('-')[0].split(':')[0] + ':' + end_base[1].split('-')[0].split(':')[1];
      popoverElement = $(jsEvent.target);
      $(jsEvent.target).popover({
        title: event.event_name,
        content: function () {
          let content;
          content = 'Event Type: ' + event.event_type +
            '<br>Start: ' + start_date + ' ' + start_time +
            '<br>End: ' + end_date + ' ' + end_time +
            '<br>Resource: ' + event.resource;
          return content
        },
        trigger: 'hover',
        html: true
      }).popover('show')
    }
    else {
      var end = event.end.subtract(1, 'days').format().split('T')[0];
      popoverElement = $(jsEvent.target);
      $(jsEvent.target).popover({
        title: event.title,
        content: function () {
          var content;
          content = 'Pentest ID: ' + event.id +
            '<br>Pentest Status:' + event.status +
            '<br>Start Date: ' + event.start.format() +
            '<br>End Date: ' + end +
            '<br>Resources: ' + event.tester +
            '<br>Duration: ' + event.duration;
          return content
        },
        trigger: 'hover',
        html: true
      }).popover('show')
    }
  },
  eventMouseout: function (event, jsEvent, view) {
    $(jsEvent.target).popover('hide')
  }
})});
传递给eventMouseover函数的对象(同一个对象,但缺少“end”属性)

id:“\u fc12”
全天:错
背景颜色:“添加8E6”
类名:数组[]
结束:空
事件名称:“测试事件”
事件类型:“演示”
身份证号码:11
pentest_id:null
资源:“1”
来源:对象{日历:{…},uid:“4”,url:“/api/pentesting/events/”,…}
开始:对象{u isamentintobject:true,_i:“2019-03-29T08:52:44.330075-07:00”,_f:“YYYY-MM-DDTHH:MM:ss.ssz”,…}
标题:“测试事件”
:对象{…}
五旬斋:1781:23

根据规范(在本错误报告中有详细说明-),结束日期必须不同于开始日期(否则结束日期将为“null”!)


在开始之前,我也会小心地确定结束日期-在eventmouse中,无论你减去一天-你可能应该做一个快速检查,以确保结束日期>开始日期(而不是=因为你将有“null”问题…)。我没有发现任何关于在开始之前就有结束的信息,但是我非常确定fullCalendar会“忽略”它(可能也会有一个空值,因为结束是可选的)。

根据规范(在这个bug报告中有很好的记录-),结束日期必须不同于开始日期(或者结束日期将是“空的”!)


在开始之前,我也会小心地确定结束日期-在eventmouse中,无论你减去一天-你可能应该做一个快速检查,以确保结束日期>开始日期(而不是=因为你将有“null”问题…)。我没有发现任何关于在开始之前有结束的内容,但我非常确定fullCalendar会“忽略”它(可能也会有一个空值,因为结束是可选的)。

不应该被标记为
django
感谢您的关注!不应该被标记为django谢谢你的关注!问题是开始日期和结束日期基本相同。我能够创建具有不同开始和结束日期的新事件,从而解决了问题。再次感谢你的帮助!很高兴你成功了。作为将来的参考,您有时可能需要“null”-用于全天的活动,等等-只是一些保存在您的“bag-o-tricks”中的东西,它将随着您进行更多编程而增长(并且增长!)。快乐编码!问题是开始日期和结束日期基本相同。我能够创建具有不同开始和结束日期的新事件,从而解决了问题。再次感谢你的帮助!很高兴你成功了。作为将来的参考,您有时可能需要“null”-用于全天的活动,等等-只是一些保存在您的“bag-o-tricks”中的东西,它将随着您进行更多编程而增长(并且增长!)。快乐编码!
{
  "id": 11,
  "resource": "1",
  "event_name": "Test Event",
  "start": "2019-03-29T08:52:44.330075-07:00",
  "end": "2019-03-29T08:52:44.330173-07:00",
  "event_type": "Demo",
  "pentest_id": null,
  "title": "Test Event",
  "backgroundColor": "#ADD8E6"
}
id: "_fc12"
allDay: false
backgroundColor: "#ADD8E6"
className: Array []
end: null
event_name: "Test Event"
event_type: "Demo"
id: 11
pentest_id: null
resource: "1"
source: Object { calendar: {…}, uid: "4", url: "/api/pentesting/events/", … }
start: Object { _isAMomentObject: true, _i: "2019-03-29T08:52:44.330075-07:00", _f: "YYYY-MM-DDTHH:mm:ss.SSSSZ", … }
title: "Test Event"
<prototype>: Object { … }
pentesting:1781:23