FullCalendar事件对象:非标准字段(GCAL)



fullcalendar(fc)文档状态

非标准字段除了上述字段外,您还可以 在每个事件对象中包括您自己的非标准字段。 FullCalendar不会修改或删除这些字段。例如, 开发人员通常包括一个描述字段,用于回调此类回调 作为事件。[来源:事件对象]

和Google日历事件资源

高级:扩展属性 Google日历的API允许您为事件指定扩展属性。扩展特性 将作为附加的扩展性哈希提供 每个事件对象。[来源:Google日历的事件]

然而,不太清楚的是,哪些gcal Eventsource属性被归类为标准,哪些是非标准的。

‍‍‍‍‍‍

假设第一个事件对象上列出的属性也适用于GCAL Eventsources的标准属性,则意味着其他任何可能是非标准字段,对吗?

如果我想查询给定的FC事件的创建者字段,例如 creator.displayname creator.email 根据Google API Ref Doc的事件#ExtendedProperties出现在事件弹出的底部。在Google日历中,不是FC),但我不确定如何完成此操作。 ‍‍‍‍‍‍

我找不到标准的完整列表&FullCalendar(V3)GCAL Eventsources的非标准字段, nover Incor doc/示例有关如何访问这些属性的示例。

‍‍‍‍‍‍

无论如何尝试以下内容:

console.log(event.extendedProperties.creator.displayName);
console.log(event.extendedProperties.creator.email);

刚刚产生

jQuery-3.3.1.min.js:2 jquery.deferred异常:无法读取未定义typeError的属性'displayName'displionName'displionName'displionName'无法读取displayname的'displayname'displayName'displionName'

‍‍‍‍‍‍

肯定的事件。ExtendedProperties.creator确实产生了不确定的。但是接下来我尝试了:

console.log(event.extendedProperties);
console.dir(event.extendedProperties);

没有产生错误,而是似乎是一个空的对象

console.dir(event.extendedProperties)的屏幕截图

因此,如果它一无所有(即空对象),则可以假设我要查询的给定事件没有扩展的杂物,并且可以合理地假设创建者字段也许是: creator.displayname creator.email 不是 non-standard fields 毕竟,或至少不是扩展属性类型。

等一下,这是否暗示我们正在处理的非标准字段列表上可能有两种类型,还是我一直盯着这个屏幕了太久?🤔

‍‍‍‍‍‍

最后,我试图仔细检查以确保它们还不是事件对象的一部分。

console.log(event.creator.displayName);
console.log(event.creator.email);

,但这再次导致

uck typeerror :无法读取未定义的

的属性'displayName'

‍‍‍‍‍‍


我完全亏损。我应该如何获得在FullCalendar网站上任何地方都没有提及的字段,也不是扩展的属性?

我是否忽略了任何东西,或者可能有一个我以某种方式错过的标准/非标准字段的列表?


关于如何获得这些创建者字段的任何想法将是很多 感谢。

‍‍‍‍‍‍

‍‍‍‍‍‍

我看不到任何形式的代码示例在这里有所帮助,但是正如我最近被告知的" 代码在堆栈溢出上几乎总是需要的"样本...

<div id='calendar'></div>
<script>
$(function() {
  $('#calendar').fullCalendar({
    googleCalendarApiKey: '%googleCalendarApiKey%',
    events: {
      googleCalendarId: 'lph029pf163sce67stdgfcdpfg@group.calendar.google.com' //imdb UK
    },
    defaultView: 'month',
    eventRender: function(event, element) {
      element.popover({
        animation:true,
        delay: 300,
        title: event.title,
        content: event.description, // + req << creator.displayName/email >>  e.g."Created by: imdbreleases@gmail.com"
        placement: 'auto',
        trigger: 'hover'
      });
    }
  });
});
</script>

ps并没有像建议不要共享googleapikey

的情况下创建Codepen

fullcalendar文档说

Google日历的API允许您指定扩展属性 您的活动。扩展属性将作为 每个事件对象附加的扩展杂货哈希。

他们指的是您在Google日历事件中可能定义的额外自定义字段 - 日历API其他不支持或提供的字段作为标准。这些是FullCalendar将复制为"额外"的字段。它是不是指的是" fullcalendar 通常不将其视为标准的任何字段。

现在,因为日历API返回的几乎没有事件数据结构将直接映射到FullCalendar要求您提供的数据结构上以构建有效的事件对象(请参阅FullCalendar的"标准"字段的列表事件对象文档),我们不能简单地将日历API的JSON输出直接提供到FullCalendar,并期望其工作并自动映射字段。

这就是为什么FullCalendar提供了gcal.js文件作为方便实用程序连接到API,检索事件数据并将其转换为FullCalendar期望并且会理解的格式的原因。显然,开发人员选择了他们将要从一个领域转移到另一个领域。由于正在构造一个新对象以传递到FullCalendar,因此没有任何形式的自动映射 - 所有这些都依赖于代码中写的内容。通常,如果您将JSON提供给FullCalendar Direct Direct,则它还在对象中发现的任何其他字段中也复制了它实际上是"标准"的(即标准标准是用于特定目的的标准)。文档)。但是再次,由于代码为FullCalendar创建了新对象,因此也不会发生。

除了" ExtendedProperties"上的注释之外,没有明确的文档将代码从API输出副本填充到FullCalendar兼容的事件对象中。在您的页面中使用console.log($("#calendar").fullCalendar("clientEvents"));的快速体验将揭示最终事件的属性,但您也可以在源代码中查看。在撰写本文时,FullCalendar V3的最新版本为3.10,该版本的gcal.js源代码(在此处可查看)。

该代码包含以下片段以将API数据转换为FullCalendar对象:

    return {
        id: item.id,
        title: item.summary,
        start: item.start.dateTime || item.start.date,
        end: item.end.dateTime || item.end.date,
        url: url,
        location: item.location,
        description: item.description,
        extendedProperties: extendedProperties
    };

在您的问题和评论中,您已经提到您对日历API提供的creatordescription字段感兴趣。这些是GCAL中的标准字段(根据资源表示文档),因此不会在"扩展杂货"集合中。您还可以看到 description已经由gcal.js复制了,即使这不是FullCalendar通常会使用的字段 - 但是,如果您想在日历中使用某些使用。

,它在那里。 。

因此,您需要做的所有需要在FullCalendar事件中提供的creator字段(或来自GCAL属性的任何其他字段)都包括在GCAL.JS复制的数据中。例如:

    return {
        id: item.id,
        title: item.summary,
        start: item.start.dateTime || item.start.date,
        end: item.end.dateTime || item.end.date,
        url: url,
        location: item.location,
        description: item.description,
        extendedProperties: extendedProperties,
        creator: item.creator
    };

当然,如果您通过cdn包括gcal.js/gcal.min.js。您需要更改代码以托管自己的修改版本。


顺便说一句,如果您觉得FullCalendar项目将从默认包含GCAL的更多字段中受益,那么由于FullCalendar是一个开源,社区项目,您可以自由地提出功能请求要更改GCAL实用程序(这实际上只是一个便利性附加组件,作为FullCalendar的标准功能和Google Calendar API之间的一层),甚至还对包含建议的更改做出代码贡献,以供维护者考虑包含的纳入者在主要版本中。如果不这样做,您可以继续维护您的gcal.js的修改版本,甚至可以将其完全替换为与日历API互动的实用程序。

相关内容

  • 没有找到相关文章