Skip to content

Instantly share code, notes, and snippets.

@vitaliy-evsyukov
Created August 1, 2012 12:20
Show Gist options
  • Save vitaliy-evsyukov/3226387 to your computer and use it in GitHub Desktop.
Save vitaliy-evsyukov/3226387 to your computer and use it in GitHub Desktop.
ExtJS 4.1 grid feature to get long column menu
/**
* @class Sotm.ux.grid.feature.LongColumnMenu
* Фича, добавляющая в меню выбора колонок в гриде пункт, открывающий подменю с оставшимися колонками, если общшее их
* число превышает установленное
* @extends Ext.grid.feature.Feature
* @ftype longcolmenu
*/
Ext4.define('Sotm.ux.grid.feature.LongColumnMenu', {
extend : 'Ext4.grid.feature.Feature',
alias : 'feature.longcolmenu',
/**
* @cfg {String} menuText
* Текст пункта меню
*/
menuText : 'Другие...',
/**
* @cfg {Number} maxColumns
* Максимальное число колонок
*/
maxColumns : 20,
attachEvents : function () {
var me = this,
view = me.view,
headerCt = view.headerCt,
originalGetMenu = headerCt.getColumnMenu;
headerCt.getColumnMenu = function () {
var columns = originalGetMenu.call(headerCt, headerCt);
if (columns.length > me.maxColumns) {
columns = Ext4.Array.push(Ext4.Array.slice(columns, 0, me.maxColumns), {
text : me.menuText,
// workaround, чтобы избежать ошибки, т.к. пункт меню не имеет чекбокса
enableCheckChange : function () {
return true;
},
menu : {
items : Ext4.Array.slice(columns, me.maxColumns)
}
});
}
return columns;
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment