',
'
',
'',
'',
''),
trackOver: true,
overItemCls : 'x-navitem-over',
selectedClass : 'x-navitem-selected',
singleSelect : true,
itemSelector : '.x-navitem',
listeners: {
itemmouseenter: me.showNavMenu,
itemmouseleave: me.hideNavMenu,
itemclick: me.menuItemClick,
scope: me
}
});
Ext.apply(me, {
items: [view]
});
me.view = view;
me.callParent();
},
showNavMenu: function(view, record, item, index, e, eOpts) {
var me = this,
recData = record.data,
menuItems = recData.items || [],
itemBox = item.getBoundingClientRect(),
pos = [itemBox.left + itemBox.width, itemBox.top],
id = recData.id,
menuId = 'navMenu-' + id,
menu = Ext.getCmp(menuId);
if(!menu) {
var view = new Ext.DataView({
store : Ext.create('Ext.data.Store', {
fields: ['id', 'text', 'formType', 'queryType'],
data: menuItems
}),
tpl: new Ext.XTemplate(''),
trackOver: true,
overItemCls : 'menuitem-over',
selectedClass : 'menuitem-selected',
singleSelect : true,
itemSelector : 'menu',
listeners: {
boxready: function(view, width, height, eOpts) {
var menu = view.up('menu'),
menuView = view.el.dom.getElementsByClassName('x-navitem-menu')[0],
menuBox = menuView.getBoundingClientRect(),
menuViewWidth = menuBox.width,
menuViewHeight = menuBox.height,
menuItem = menuView.getElementsByClassName('menuitem');
menu.setWidth(menuViewWidth);
menu.setHeight(menuViewHeight);
menu.updateLayout();
view.el.dom.addEventListener('mouseleave', function() {
menu.hide();
});
Ext.Array.each(menuItem, function(mi) {
var menuItemText = mi.getElementsByClassName('item-text');
var menuItemIcon = mi.getElementsByClassName('item-icon');
Ext.Array.each(menuItemText, function(item) {
item.addEventListener('click', function(e) {
var target = e.target,
dataset = target.dataset;
mainView = Ext.getCmp('mainView'),
controller = mainView.getController();
controller.setActiveTab(dataset);
menu.hide();
});
});
Ext.Array.each(menuItemIcon, function(item) {
item.addEventListener('click', function(e) {
var target = e.target,
dataset = target.dataset;
mainView = Ext.getCmp('mainView'),
controller = mainView.getController();
controller.setActiveTab(dataset);
menu.hide();
});
});
});
},
}
});
var menu = Ext.create('Ext.menu.Menu', {
id: menuId,
width: window.innerWidth,
items: [view]
});
}
menu.showAt(pos);
},
hideNavMenu: function(view, record, item, index, e, eOpts) {
var recData = record.data,
cx = e.browserEvent.clientX,
cy = e.browserEvent.clientY,
itemBox = item.getBoundingClientRect(),
id = recData.id,
menuId = 'navMenu-' + id,
menu = Ext.getCmp(menuId);
if(cx <= itemBox.left || cy <= itemBox.top || cy >= (itemBox.top + itemBox.height)) {
if(menu) {
menu.hide();
}
}
}
});