facetFilter

HTML

<script src="http://cdn.sencha.com/ext/gpl/4.2.1/ext-all-dev.js"></script>
<link rel="stylesheet" href="http://cdn.sencha.com/ext/gpl/4.2.1/resources/css/ext-all.css">

JavaScript

Ext.define('BCS.grid.plugin.FacetFilter', {
    extend: 'Ext.AbstractPlugin',

    alias: 'plugin.facetFilter',
    lockableScope: 'both',

    init: function (grid) {
        var me = this;
        me.grid = grid;
debugger;
        me.callParent(arguments);
    },
    setShowMenuBy: function (grid) {
        grid.headerCt.showMenuBy = function (t, header) {
            var args = Ext.callback(me.setFacetFilter, this, [t, header]),
                newHeader = args[1];
            Ext.callback(oldFn, newHeader, args);
        };
    },
    setFacetFilter: function (t, header) {
        var menu = header.getMenu(),
            facetfilter = menu.down('facetfilter'),
            sep = facetfilter.prev();

        if (header.filterable === false) {
            sep.hide();
            facetfilter.hide();
        } else {
            sep.show();
            facetfilter.show();
        }
        return [t, header];
    }
});



Ext.create('Ext.data.Store', {
    storeId:'simpsonsStore',
    fields:['name', 'email', 'phone'],
    data:{'items':[
        {"name":"Lisa", "email":"[email protected]", "phone":"555-111-1224"},
        {"name":"Bart", "email":"[email protected]", "phone":"555-222-1234"},
        {"name":"Homer", "email":"[email protected]", "phone":"555-222-1244"},
        {"name":"Marge", "email":"[email protected]", "phone":"555-222-1254"}
    ]},
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'items'
        }
    }
});



Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [
        {header: 'Name',  dataIndex: 'name', editor: 'textfield', lockable:false, locked:true},
        {header: 'Email', dataIndex: 'email', flex:1,
            editor: {
                xtype: 'textfield',
                allowBlank: false
            }
        },
        {header: 'Phone', dataIndex: 'phone'}
    ],
    selType: 'rowmodel',
//   plugins: [
// ...