Ext /** * 带时分秒的时间控件选择器 */Ext.define('baseUx.form.datetime.DateTimePicker', { extend: 'Ext.picker.Date', alias: 'widget.datetimepicker', alternateClassName: 'Ext.DateTimePicker', renderTpl: [ ' ', ' ', ' ', ' {%this.r
/** * 带时分秒的时间控件选择器 */ Ext.define('baseUx.form.datetime.DateTimePicker', { extend: 'Ext.picker.Date', alias: 'widget.datetimepicker', alternateClassName: 'Ext.DateTimePicker', renderTpl: [ ' ', ' ', ' ', ' {%this.renderMonthBtn(values, out)%} ', ' ', ' ', '', ' ', '{#:this.isEndOfWeek}', ' ', ' ', '{.:this.firstInitial} ', '', ' ', ' ', ' ', '', '', '', '', '', ' ', ' ', '', ' {%this.renderHour(values, out)%}{%this.renderMinute(values, out)%}{%this.renderSecond(values, out)%}{%this.renderTodayBtn(values, out)%} ', ' ', ' ', { firstInitial: function(value) { return value.substr(0,1); }, isEndOfWeek: function(value) { // convert from 1 based index to 0 based // by decrementing value once. value--; var end = value % 7 === 0 && value !== 0; return end ? '' : ''; }, longDay: function(value){ return Ext.Date.format(value, this.longDayFormat); }, renderHour: function(values, out) { Ext.DomHelper.generateMarkup(values.$comp.hour.getRenderTree(), out); }, renderMinute: function(values, out) { out.push(' : '); Ext.DomHelper.generateMarkup(values.$comp.minute.getRenderTree(), out); }, renderSecond: function(values, out) { out.push(' : '); Ext.DomHelper.generateMarkup(values.$comp.second.getRenderTree(), out); }, renderTodayBtn: function(values, out) { Ext.DomHelper.generateMarkup(values.$comp.todayBtn.getRenderTree(), out); }, renderMonthBtn: function(values, out) { Ext.DomHelper.generateMarkup(values.$comp.monthBtn.getRenderTree(), out); } } ], /** * 创建时分秒控件 */ beforeRender: function () { /**---------------------*/ var me = this; me.hour = Ext.create('Ext.form.field.Number', { scope: me, ownerCt: me, editable : false, ownerLayout: me.getComponentLayout(), minValue: 0, maxValue: 23, width: 45, style: {float:"left"}, enableKeyEvents: true, listeners: { keyup: function(field, e){ if (field.getValue() > 23){ e.stopEvent(); field.setValue(23); } } } }); me.minute = Ext.create('Ext.form.field.Number', { scope: me, ownerCt: me, style : {float:"left"}, ownerLayout: me.getComponentLayout(), minValue: 0, maxValue: 59, editable : false, width: 45, enableKeyEvents: true, listeners: { keyup: function(field, e){ if (field.getValue() > 59){ e.stopEvent(); field.setValue(59); } } } }); me.second = Ext.create('Ext.form.field.Number', { scope: me, ownerCt: me, editable : false, style : {float:"left"}, ownerLayout: me.getComponentLayout(), minValue: 0, maxValue: 59, width: 45, enableKeyEvents: true, listeners: { keyup: function(field, e){ if (field.getValue() > 59){ e.stopEvent(); field.setValue(59); } } } }); me.callParent(); }, /** * 渲染时分秒控件 */ finishRenderChildren: function () { this.callParent(); /**--------------------------------------*/ this.hour.finishRender(); this.minute.finishRender(); this.second.finishRender(); /**--------------------------------------*/ }, /** * Update the contents of the picker * @private * @param {Date} date The new date * @param {Boolean} forceRefresh True to force a full refresh */ update : function(date, forceRefresh){ var me = this; /**-----------设置时分秒----------------*/ date.setHours(me.hour.getValue()); date.setMinutes(me.minute.getValue()); date.setSeconds(me.second.getValue()); /**-----------设置时分秒----------------*/ me.callParent(arguments); } }); /** * 带时分秒的日期控件 * @author linzhichao */ Ext.define('baseUx.form.datetime.DateTime', { extend:'Ext.form.field.Date', alias: 'widget.datetimefield', requires: ['baseUx.form.datetime.DateTimePicker'], trigger1Cls: Ext.baseCSSPrefix + 'form-clear-trigger', trigger2Cls: Ext.baseCSSPrefix + 'form-date-trigger', editable : false, format : 'Y-m-d H:i:s', /** * 添加清除按钮 */ initComponent: function() { var me = this; me.onTrigger2Click = Ext.clone(me.onTrigger1Click); me.onTrigger1Click = function(){ me.reset(); } me.callParent(arguments); }, /** * 创建时间选择器 * @return {} */ createPicker: function() { var me = this, format = Ext.String.format; return new baseUx.form.datetime.DateTimePicker({ pickerField: me, ownerCt: me.ownerCt, renderTo: document.body, floating: true, hidden: true, focusOnShow: true, minDate: me.minValue, maxDate: me.maxValue, disabledDatesRE: me.disabledDatesRE, disabledDatesText: me.disabledDatesText, disabledDays: me.disabledDays, disabledDaysText: me.disabledDaysText, format: me.format, showToday: me.showToday, startDay: me.startDay, minText: format(me.minText, me.formatDate(me.minValue)), maxText: format(me.maxText, me.formatDate(me.maxValue)), listeners: { scope: me, select: me.onSelect }, keyNavConfig: { esc: function() { me.collapse(); } } }); }, /** * 控制按钮的显隐 */ afterRender: function(){ this.callParent(); if(this.hideTrigger1){//隐藏清除按钮 this.triggerCell.item(0).setDisplayed(false); } if(this.hideTrigger2){//隐藏选择按钮 this.triggerCell.item(1).setDisplayed(false); } }, /** * @private * 设置选择器的值 */ onExpand: function() { var me = this, value = me.getValue() instanceof Date ? me.getValue() : new Date(); me.picker.setValue(value); me.picker.hour.setValue(value.getHours()); me.picker.minute.setValue(value.getMinutes()); me.picker.second.setValue(value.getSeconds()); } });