2014-11-25 3 views
1

나는 분으로 가치가 있으며 시간과 분으로 변환되어 (예 : 615 분 = 10 시간 15 분) 그리드에 표시됩니다. 기본적으로 ext js 5는 문자열로 필터를 제공합니다. 그러나 나는 시간과 분으로 걸러 내고 싶다. 가능한가? 그렇다면 알려주세요.EXT JS 5 - Custome Filter for hours and minutes

+0

는 로컬 또는 원격 필터는? 코드 또는 스크린 샷을 제공 할 수 있습니까? – hgulyan

+1

당신이 gridfilters 플러그인에 대해 이야기하고 있다고 가정하면, 그렇습니다. 자신 만의 맞춤 필터를 만들어서 쉽게 할 수 있습니다. – existdissolve

답변

3

Ext.grid.filters.filter.String 필터를 쉽게 확장 할 수 있습니다. 사용

예 코드 timefield :

Ext.define('Ext.ux.grid.filters.filter.Time', { 
    extend: 'Ext.grid.filters.filter.String', 
    alias: 'grid.filter.time', 

    type: 'time', 
    operator: 'eq', 

    // change item template to timefield 
    itemDefaults: { 
     xtype: 'timefield', 
     enableKeyEvents: true, 
     format: 'H:i', 
     hideEmptyLabel: false, 
     iconCls: Ext.baseCSSPrefix + 'grid-filters-find', 
     labelSeparator: '', 
     labelWidth: 29, 
     margin: 0, 
     selectOnFocus: true 
    }, 
    createMenu: function() { 
     var me = this; 
     me.callParent(); 

     // add handler to change event 
     me.inputItem.on({ 
      scope: me, 
      change: { 
       fn: me.onChange, 
       buffer: 200 
      } 
     }); 
    }, 
    // handle change event 
    onChange: function(field) { 
     this.setValue(field.getValue()); 
    }, 
    // set value - value comes as date 
    setValue: function (value) { 
     var me = this; 

     if (me.inputItem) { 
      me.inputItem.setValue(value); 
     } 

     // convert date to number 
     me.filter.setValue(value.getHours() * 60 + value.getMinutes()); 

     if (value && me.active) { 
      me.updateStoreFilter(me.filter); 
     } else { 
      me.setActive(!!value); 
     } 
    }, 
    activateMenu: function() { 
     var value = this.filter.getValue(); 

     // convert number back to date 
     this.inputItem.setValue(
      new Date(2008, 0, 1, Math.floor(value/60), (value % 60), 0) 
     ); 
    } 
}); 

바이올린 : http://jsfiddle.net/dw82uxkh/9/

+0

솔루션을 제공해 주셔서 감사 합니다만 약간의 변경이 필요합니다. 시간 열을 필터링하면 01:32 형식으로 문자열이 필터링되지만 1:32이됩니다. 따라서 1:32는 필터링되지 않습니다. –