Ext.ux.grid.HeaderToolTip
A very simple extension to add tooltips to grid column headers:
Code:
/**
* @class Ext.ux.grid.HeaderToolTip
* @namespace Ext.ux.grid
*
* Text tooltips should be stored in the grid column definition
*/
Ext.define('Ext.ux.grid.HeaderToolTip', {
alias: 'plugin.headertooltip',
init : function(grid) {
var headerCt = grid.headerCt
grid.headerCt.on("afterrender", function(g) {
grid.tip = Ext.create('Ext.tip.ToolTip', {
target: headerCt.el,
delegate: ".x-column-header",
trackMouse: true,
renderTo: Ext.getBody(),
listeners: {
beforeshow: function(tip) {
var c = headerCt.down('gridcolumn[id=' + tip.triggerElement.id +']');
if (c && c.tooltip)
tip.update(c.tooltip);
else
return false;
}
}
});
})
}
});
Does not work in MVC approach
Hello,
I can not make it work using a MVC app. It fails on init function...
Could manage to make it work
Hi there, thank you for your answer but I could manage to make it work by myself. Misstypo problem.
Great plugin! One small issue...
Right away I experienced an issue where hovering between a column with a tooltip and one without a tooltip would prevent the tooltip from showing again until you mouse out from the header container and mouse back in.
Adding tip.clearTimers() before returning false in the beforeshow event addressed this issue:
Code:
/**
* @class Ext.ux.grid.HeaderToolTip
* @namespace ux.grid
*
* Text tooltips should be stored in the grid column definition
*
* Sencha forum url:
* http://www.sencha.com/forum/showthread.php?132637-Ext.ux.grid.HeaderToolTip
*/
Ext.define('Ext.ux.grid.HeaderToolTip', {
alias: 'plugin.headertooltip',
init : function(grid) {
var headerCt = grid.headerCt;
grid.headerCt.on("afterrender", function(g) {
grid.tip = Ext.create('Ext.tip.ToolTip', {
target: headerCt.el,
delegate: ".x-column-header",
trackMouse: true,
renderTo: Ext.getBody(),
listeners: {
beforeshow: function(tip) {
var c = headerCt.down('gridcolumn[id=' + tip.triggerElement.id +']');
if (c && c.tooltip) {
tip.update(c.tooltip);
} else {
tip.clearTimers();
return false;
}
}
}
});
});
}
});
fix for use with locked Columns
I have had a problem with locked columns, because headerCt is moved into "sub grids" on locking. See my fixed version:
Code:
/**
* @class Ext.ux.grid.HeaderToolTip
* @namespace ux.grid
*
* Text tooltips should be stored in the grid column definition
*
* Sencha forum url:
* http://www.sencha.com/forum/showthread.php?132637-Ext.ux.grid.HeaderToolTip
*/
Ext.define('Ext.ux.grid.HeaderToolTip', {
alias: 'plugin.headertooltip',
init : function(grid){
if( grid.headerCt ) {
this.initColumnHeaders( grid.headerCt, grid );
} else if( grid.lockable ){
this.initColumnHeaders( grid.lockedGrid.headerCt, grid );
this.initColumnHeaders( grid.normalGrid.headerCt, grid );
}
},
initColumnHeaders: function( headerCt, grid ) {
headerCt.on("afterrender", function(g) {
grid.tip = Ext.create('Ext.tip.ToolTip', {
target: headerCt.el,
delegate: ".x-column-header",
trackMouse: true,
renderTo: Ext.getBody(),
listeners: {
beforeshow: function(tip) {
var c = headerCt.down('gridcolumn[id=' + tip.triggerElement.id +']');
if (c && c.tooltip) {
tip.update(c.tooltip);
} else {
tip.clearTimers();
return false;
}
}
}
});
});
}
});
... works with 4.0.7, with 4.1.1 it isn't working because of missing clone() method. has anybody a workaround for that?