FtDateField.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * From-To datefield
  3. * @author yingp
  4. */
  5. Ext.define('erp.view.core.form.FtDateField', {
  6. extend: 'Ext.form.FieldContainer',
  7. alias: 'widget.ftdatefield',
  8. layout: 'column',
  9. value: "BETWEEN '' AND ''",
  10. height: 22,
  11. items: [],
  12. initComponent : function(){
  13. this.callParent(arguments);
  14. var me = this;
  15. me.insert(0, {
  16. xtype: 'datefield',
  17. columnWidth: 0.5,
  18. fieldStyle: me.fieldStyle,
  19. listeners: {
  20. change: function(){
  21. var from = me.items.items[0].value;
  22. var to = me.items.items[1].value;
  23. me.items.items[1].setMinValue(from);
  24. from = from == null || from == '' ? to == null || to == '' ? '' : to : from;
  25. to = to == null || to == '' ? from == null || from == '' ? '' : from : to;
  26. me.value = "BETWEEN to_date('" + Ext.Date.format(from,'Y-m-d') + " 00:00:00','yyyy-mm-dd hh24:mi:ss') AND to_date('"
  27. + Ext.Date.format(to,'Y-m-d') + " 23:59:59','yyyy-mm-dd hh24:mi:ss')";
  28. me.firstItem.value = from;
  29. me.secondItem.value = to;
  30. }
  31. }
  32. });
  33. me.insert(1, {
  34. xtype: 'datefield',
  35. columnWidth: 0.5,
  36. fieldStyle: me.fieldStyle,
  37. listeners: {
  38. change: function(){
  39. var from = me.items.items[0].value;
  40. var to = me.items.items[1].value;
  41. me.items.items[0].setMaxValue(to);
  42. from = from == null || from == '' ? to == null || to == '' ? '' : to : from;
  43. to = to == null || to == '' ? from == null || from == '' ? '' : from : to;
  44. me.value = "BETWEEN to_date('" + Ext.Date.format(from,'Y-m-d') + " 00:00:00','yyyy-mm-dd hh24:mi:ss') AND to_date('"
  45. + Ext.Date.format(to,'Y-m-d') + " 23:59:59','yyyy-mm-dd hh24:mi:ss')";
  46. me.firstItem.value = from;
  47. me.secondItem.value = to;
  48. }
  49. }
  50. });
  51. this.firstItem = this.items.items[0];
  52. this.secondItem = this.items.items[1];
  53. },
  54. reset: function(){
  55. this.items.items[0].reset();
  56. this.items.items[1].reset();
  57. },
  58. setValue: function(value){
  59. if(value != null && value != '' && contains(value, '~', true)){
  60. this.items.items[0].setValue(value.split('~')[0]);
  61. this.items.items[1].setValue(value.split('~')[1]);
  62. }
  63. },
  64. setValues: function(first, second) {
  65. this.firstItem.setValue(first);
  66. this.secondItem.setValue(second || first || null);
  67. },
  68. listeners: {
  69. afterrender: function(){
  70. var tb = this.getEl().dom;
  71. if(tb.nodeName == 'TABLE') {
  72. return;
  73. }
  74. tb.childNodes[1].style.height = 22;
  75. tb.childNodes[1].style.overflow = 'hidden';
  76. }
  77. },
  78. getValue: function(){
  79. if(this.items.items[0].value != null && this.items.items[0].value != ''){
  80. return Ext.Date.format(this.items.items[0].value, 'Y-m-d') + '~' + Ext.Date.format(this.items.items[1].value, 'Y-m-d');
  81. } else {
  82. return '';
  83. }
  84. },
  85. isValid: function(){
  86. return true;
  87. }
  88. });