/** * @class Ext.ensible.cal.ReminderField * @extends Ext.form.ComboBox *

A custom combo used for choosing a reminder setting for an event.

*

This is pretty much a standard combo that is simply pre-configured for the options needed by the * calendar components. The default configs are as follows:


width: 200,
fieldLabel: 'Reminder',
mode: 'local',
triggerAction: 'all',
forceSelection: true,
displayField: 'desc',
valueField: 'value',
noneText: 'None',
atStartTimeText: 'At start time',
reminderValueFormat: '{0} {1} before start'
*

To customize the descriptions in the dropdown list override the following methods: * {@link #getMinutesText}, {@link #getHoursText}, {@link #getDaysText} and {@link #getWeeksText}.

* @constructor * @param {Object} config The config object */ Ext.ensible.cal.ReminderField = Ext.extend(Ext.form.ComboBox, { width: 200, fieldLabel: 'Reminder', mode: 'local', triggerAction: 'all', forceSelection: true, displayField: 'desc', valueField: 'value', noneText: 'None', atStartTimeText: 'At start time', reminderValueFormat: '{0} {1} before start', // the following are all deprecated in favor of the corresponding get* template methods. // they are still here only for backwards-compatibility and will be removed in a future release. minutesText: 'minutes', hourText: 'hour', hoursText: 'hours', dayText: 'day', daysText: 'days', weekText: 'week', weeksText: 'weeks',
/** * Returns the list of reminder values used as the contents of the combo list. This method is provided so that * the value list can be easily overridden as needed. * @return {Array} A 2-dimensional array of type [{String}, {String}] which contains the value and description * respectively of each item in the combo list. By default the value is the number of minutes for the selected * time value (e.g., value 120 == '2 hours') with empty string for no value, but these can be set to anything. */ getValueList: function(){ var me = this, fmt = me.reminderValueFormat, stringFormat = String.format; return [ ['', me.noneText], ['0', me.atStartTimeText], ['5', stringFormat(fmt, '5', me.getMinutesText(5))], ['15', stringFormat(fmt, '15', me.getMinutesText(15))], ['30', stringFormat(fmt, '30', me.getMinutesText(30))], ['60', stringFormat(fmt, '1', me.getHoursText(1))], ['90', stringFormat(fmt, '1.5', me.getHoursText(1.5))], ['120', stringFormat(fmt, '2', me.getHoursText(2))], ['180', stringFormat(fmt, '3', me.getHoursText(3))], ['360', stringFormat(fmt, '6', me.getHoursText(6))], ['720', stringFormat(fmt, '12', me.getHoursText(12))], ['1440', stringFormat(fmt, '1', me.getDaysText(1))], ['2880', stringFormat(fmt, '2', me.getDaysText(2))], ['4320', stringFormat(fmt, '3', me.getDaysText(3))], ['5760', stringFormat(fmt, '4', me.getDaysText(4))], ['7200', stringFormat(fmt, '5', me.getDaysText(5))], ['10080', stringFormat(fmt, '1', me.getWeeksText(1))], ['20160', stringFormat(fmt, '2', me.getWeeksText(2))] ] },
/** * Returns the unit text to use for a reminder that has a specified number of minutes * prior to the due time (defaults to 'minute' when the passed value === 1, else 'minutes'). * @param {Number} numMinutes The number of minutes prior to the due time * @return {String} The unit text */ getMinutesText: function(numMinutes){ return numMinutes === 1 ? this.minuteText : this.minutesText; },
/** * Returns the unit text to use for a reminder that has a specified number of hours * prior to the due time (defaults to 'hour' when the passed value === 1, else 'hours'). * @param {Number} numHours The number of hours prior to the due time * @return {String} The unit text */ getHoursText: function(numHours){ return numHours === 1 ? this.hourText : this.hoursText; },
/** * Returns the unit text to use for a reminder that has a specified number of days * prior to the due time (defaults to 'day' when the passed value === 1, else 'days'). * @param {Number} numDays The number of days prior to the due time * @return {String} The unit text */ getDaysText: function(numDays){ return numDays === 1 ? this.dayText : this.daysText; },
/** * Returns the unit text to use for a reminder that has a specified number of weeks * prior to the due time (defaults to 'week' when the passed value === 1, else 'weeks'). * @param {Number} numWeeks The number of weeks prior to the due time * @return {String} The unit text */ getWeeksText: function(numWeeks){ return numWeeks === 1 ? this.weekText : this.weeksText; }, // private initComponent: function(){ Ext.ensible.cal.ReminderField.superclass.initComponent.call(this); this.store = this.store || new Ext.data.ArrayStore({ fields: [this.valueField, this.displayField], idIndex: 0, data: this.getValueList() }); }, // inherited docs initValue : function(){ if(this.value !== undefined){ this.setValue(this.value); } else{ this.setValue(''); } this.originalValue = this.getValue(); } }); Ext.reg('extensible.reminderfield', Ext.ensible.cal.ReminderField);