Alien-Web-ExtJS-V3
view release on metacpan or search on metacpan
share/examples/calendar/calendar-all-debug.js view on Meta::CPAN
this.toLabel = new Ext.form.Label({
xtype: 'label',
id: this.id + '-to-label',
text: this.toText
});
this.fieldCt = new Ext.Container({
autoEl: {
id: this.id
},
//make sure the container el has the field's id
cls: 'ext-dt-range',
renderTo: ct,
layout: 'table',
layoutConfig: {
columns: 6
},
defaults: {
hideParent: true
},
items: [
this.startDate,
this.startTime,
this.toLabel,
this.endTime,
this.endDate,
this.allDay
]
});
this.fieldCt.ownerCt = this;
this.el = this.fieldCt.getEl();
this.items = new Ext.util.MixedCollection();
this.items.addAll([this.startDate, this.endDate, this.toLabel, this.startTime, this.endTime, this.allDay]);
}
Ext.calendar.DateRangeField.superclass.onRender.call(this, ct, position);
},
// private
checkDates: function(type, startend) {
var startField = Ext.getCmp(this.id + '-start-' + type),
endField = Ext.getCmp(this.id + '-end-' + type),
startValue = this.getDT('start'),
endValue = this.getDT('end');
if (startValue > endValue) {
if (startend == 'start') {
endField.setValue(startValue);
} else {
startField.setValue(endValue);
this.checkDates(type, 'start');
}
}
if (type == 'date') {
this.checkDates('time', startend);
}
},
/**
* Returns an array containing the following values in order:<div class="mdetail-params"><ul>
* <li><b><code>DateTime</code></b> : <div class="sub-desc">The start date/time</div></li>
* <li><b><code>DateTime</code></b> : <div class="sub-desc">The end date/time</div></li>
* <li><b><code>Boolean</code></b> : <div class="sub-desc">True if the dates are all-day, false
* if the time values should be used</div></li><ul></div>
* @return {Array} The array of return values
*/
getValue: function() {
return [
this.getDT('start'),
this.getDT('end'),
this.allDay.getValue()
];
},
// private getValue helper
getDT: function(startend) {
var time = this[startend + 'Time'].getValue(),
dt = this[startend + 'Date'].getValue();
if (Ext.isDate(dt)) {
dt = dt.format(this[startend + 'Date'].format);
}
else {
return null;
};
if (time != '' && this[startend + 'Time'].isVisible()) {
return Date.parseDate(dt + ' ' + time, this[startend + 'Date'].format + ' ' + this[startend + 'Time'].format);
}
return Date.parseDate(dt, this[startend + 'Date'].format);
},
/**
* Sets the values to use in the date range.
* @param {Array/Date/Object} v The value(s) to set into the field. Valid types are as follows:<div class="mdetail-params"><ul>
* <li><b><code>Array</code></b> : <div class="sub-desc">An array containing, in order, a start date, end date and all-day flag.
* This array should exactly match the return type as specified by {@link #getValue}.</div></li>
* <li><b><code>DateTime</code></b> : <div class="sub-desc">A single Date object, which will be used for both the start and
* end dates in the range. The all-day flag will be defaulted to false.</div></li>
* <li><b><code>Object</code></b> : <div class="sub-desc">An object containing properties for StartDate, EndDate and IsAllDay
* as defined in {@link Ext.calendar.EventMappings}.</div></li><ul></div>
*/
setValue: function(v) {
if (Ext.isArray(v)) {
this.setDT(v[0], 'start');
this.setDT(v[1], 'end');
this.allDay.setValue( !! v[2]);
}
else if (Ext.isDate(v)) {
this.setDT(v, 'start');
this.setDT(v, 'end');
this.allDay.setValue(false);
}
else if (v[Ext.calendar.EventMappings.StartDate.name]) {
//object
this.setDT(v[Ext.calendar.EventMappings.StartDate.name], 'start');
if (!this.setDT(v[Ext.calendar.EventMappings.EndDate.name], 'end')) {
this.setDT(v[Ext.calendar.EventMappings.StartDate.name], 'end');
}
this.allDay.setValue( !! v[Ext.calendar.EventMappings.IsAllDay.name]);
}
},
// private setValue helper
setDT: function(dt, startend) {
if (dt && Ext.isDate(dt)) {
this[startend + 'Date'].setValue(dt);
this[startend + 'Time'].setValue(dt.format(this[startend + 'Time'].format));
return true;
}
},
// inherited docs
isDirty: function() {
var dirty = false;
if (this.rendered && !this.disabled) {
this.items.each(function(item) {
if (item.isDirty()) {
dirty = true;
return false;
}
});
}
return dirty;
},
// private
onDisable: function() {
this.delegateFn('disable');
},
// private
onEnable: function() {
this.delegateFn('enable');
},
// inherited docs
reset: function() {
( run in 1.203 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )