带有Google icalendar的Bryntum日历递归Extjs

问题描述

我正在使用Extjs Bryntum日历创建事件,并希望将它们另存为google ics文件并将事件再次加载到Sch日历中。

任何机构都可以说出如何从Cal.model.Event转换为ical事件,反之亦然吗? 数据来自api作为ical数据。

我的代码是:

资源存储区:

Ext.define('my.store.CalendarResource',{
    extend: 'Cal.data.ResourceStore',storeId: 'resource',//    proxy: 'memory',model:'my.model.CalendarResource',proxy: {
        type: 'rest',url: 'api/calendars/scheduler'
    },});

资源模型:

Ext.define('my.model.CalendarResource',{
    extend : 'Cal.model.Resource',fields: [{
        name: 'Id',type:'string'
    },{
        name: 'Name',type: 'string'
    },{
        name: 'Color',{
        name: 'data'
    }]
});

日历视图

Ext.define('my.view.RecurrenceCalendar',{
    extend : 'Cal.panel.Calendar',xtype  : 'recurrencecalendar',requires : [
        'Sch.data.util.recurrence.Legend','my.store.CalendarEvent','my.store.CalendarResource'
    ],date          : new Date(),eventStore    : 'event',resourceStore : 'resource',// show the resource filter
    resourceFilter : {
        dock : 'right'
    },// Uncomment the below line to disable the recurring events feature
//     recurringEvents : false,initComponent : function () {
        var me = this;

        Ext.apply(me,{
            eventRenderer : function (eventRecord,resourceRecord,tplData) {
                var legend = '';

                if (me.recurringEvents && eventRecord.getRecurrence()) {
                    legend = Sch.data.util.recurrence.Legend.getLegend(eventRecord.getRecurrence(),eventRecord.getStartDate());
                }

                return eventRecord.getName() + (legend ? ' | ' + legend : '');
            },beforeeventadd : function (me,eventRecord,resources,eOpts) {
                var resourceStore = me.getResourceStore();
                alert('aaaaaaa')
            }
        });
        me.on('eventclick',function ( view,record,e ) {
            var el = e.getTarget(me.getSchedulingView().eventSelector,10,true);

            me.editor.edit(record,el);
        });
        me.on('eventdbclick',el);
        });
        me.on('beforeeventadd',function(me,eOpts){
            alert('123')
        });
        Ext.getStore('resource').reload();
        me.callParent(arguments);
    },onEventCreated : function (newEventRecord,resources) {
        // Overridden to provide some default values

        var resourceStore = this.getResourceStore();

        if (!newEventRecord.getResourceId()) {
            if (!Ext.isEmpty(resources)) {
                newEventRecord.assign(resources);
            } else if (resourceStore && resourceStore.getCount() > 0) {
                newEventRecord.assign(resourceStore.first());
            }
        }
    },});

事件存储:

Ext.define('my.store.CalendarEvent',{
    extend  : 'Cal.data.EventStore',storeId : 'event',});

谢谢。

解决方法

你做了什么?

要将记录另存为iCalendar文件:

您可以将记录从import Type序列化为格式storehttps://www.ietf.org/rfc/rfc2445.txt)。

要将文件加载为事件:

例如您可以收听.ical输入的change并将file格式解码为模型参数。

您可以使用现有的开放源代码库,例如https://github.com/nwcell/ics.js

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...