/** * @class Ext.calendar.data.EventModel * @extends Ext.data.Record *

This is the {@link Ext.data.Record Record} specification for calendar event data used by the * {@link Ext.calendar.CalendarPanel CalendarPanel}'s underlying store. It can be overridden as * necessary to customize the fields supported by events, although the existing column names should * not be altered. If your model fields are named differently you should update the mapping * configs accordingly.

*

The only required fields when creating a new event record instance are StartDate and * EndDate. All other fields are either optional are will be defaulted if blank.

*

Here is a basic example for how to create a new record of this type:


rec = new Ext.calendar.data.EventModel({
    StartDate: '2101-01-12 12:00:00',
    EndDate: '2101-01-12 13:30:00',
    Title: 'My cool event',
    Notes: 'Some notes'
});
* If you have overridden any of the record's data mappings via the Ext.calendar.data.EventMappings object * you may need to set the values using this alternate syntax to ensure that the fields match up correctly:

var M = Ext.calendar.data.EventMappings;

rec = new Ext.calendar.data.EventModel();
rec.data[M.StartDate.name] = '2101-01-12 12:00:00';
rec.data[M.EndDate.name] = '2101-01-12 13:30:00';
rec.data[M.Title.name] = 'My cool event';
rec.data[M.Notes.name] = 'Some notes';
* @constructor * @param {Object} data (Optional) An object, the properties of which provide values for the new Record's * fields. If not specified the {@link Ext.data.Field#defaultValue defaultValue} * for each field will be assigned. * @param {Object} id (Optional) The id of the Record. The id is used by the * {@link Ext.data.Store} object which owns the Record to index its collection * of Records (therefore this id should be unique within each store). If an * id is not specified a {@link #phantom} * Record will be created with an {@link #Record.id automatically generated id}. */ Ext.define('Ext.calendar.data.EventModel', { extend: 'Ext.data.Model', requires: [ 'Ext.util.MixedCollection', 'Ext.calendar.data.EventMappings' ], statics: { /** * Reconfigures the default record definition based on the current {@link Ext.calendar.data.EventMappings EventMappings} * object. See the header documentation for {@link Ext.calendar.data.EventMappings} for complete details and * examples of reconfiguring an EventRecord. * @method create * @static * @return {Function} The updated EventRecord constructor function */ reconfigure: function() { var Data = Ext.calendar.data, Mappings = Data.EventMappings, proto = Data.EventModel.prototype, fields = []; // It is critical that the id property mapping is updated in case it changed, since it // is used elsewhere in the data package to match records on CRUD actions: proto.idProperty = Mappings.EventId.name || 'id'; for(prop in Mappings){ if(Mappings.hasOwnProperty(prop)){ fields.push(Mappings[prop]); } } proto.fields.clear(); for(var i = 0, len = fields.length; i < len; i++){ proto.fields.add(Ext.create('Ext.data.Field', fields[i])); } return Data.EventModel; } } }, function(){ Ext.calendar.data.EventModel.reconfigure(); });