问题描述
我正在使用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
序列化为格式store
(https://www.ietf.org/rfc/rfc2445.txt)。
要将文件加载为事件:
例如您可以收听.ical
输入的change
并将file
格式解码为模型参数。
您可以使用现有的开放源代码库,例如https://github.com/nwcell/ics.js