',
'
',
'',
'',
''),
trackOver: true,
overItemCls: 'x-navitem-over',
selectedItemCls: 'x-navitem-selected',
singleSelect: true,
itemSelector: '.x-navitem',
listeners: {
itemmouseenter: me.showNavMenu,
itemmouseleave: me.hideNavMenu,
itemClick: me.clickNavMenu,
scope: me
}
});
Ext.apply(me, {
items: [view]
});
me.view = view;
me.callParent();
},
clickNavMenu: function (view, record, item, index, e, eOpts) {
var me = this;
this.showNavMenu(view, record, item, index, e, eOpts);
},
showNavMenu: function (navView, record, navItem, index, e, eOpts) {
var me = this,
recData = record.data,
menuItems = recData.items || [],
itemBox = navItem.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', 'addType', 'viewType', 'ctype'],
data: menuItems
}),
tpl: new Ext.XTemplate(''),
trackOver: true,
overItemCls: 'menuitem-over',
selectedItemCls: 'menuitem-selected',
singleSelect: true,
itemSelector: '.menuitem',
listeners: {
boxready: function(view, width, height, eOpts) {
me.menuBoxReady(view, width, height, eOpts);
},
itemclick: me.menuItemClick
}
});
var menu = Ext.create('Ext.menu.Menu', {
navView: navView,
navItem: navItem,
id: menuId,
width: 200,
cls: 'x-nav-menu',
layout: 'fit',
shadow: 'drop',
bodyPadding: me.menuPadding,
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) && cx <= (itemBox.left + itemBox.width - 10))) {
if (menu) {
menu.hide();
}
}
},
menuBoxReady: function (view, width, height, eOpts) {
var me = this;
var menu = view.up('menu'),
menuView = view.el.dom.getElementsByClassName('x-navitem-menu')[0],
menuBox = menuView.getBoundingClientRect(),
menuViewWidth = menuBox.width + me.menuPadding * 2,
menuViewHeight = menuBox.height + me.menuPadding * 2,
menuItem = menuView.getElementsByClassName('menuitem');
menu.setWidth(menuViewWidth);
menu.setHeight(menuViewHeight);
menu.updateLayout();
view.el.dom.addEventListener('mouseenter', function (e) {
menu.show();
menu.navItem.classList.add(menu.navView.overItemCls);
});
view.el.dom.addEventListener('mouseleave', function (e) {
menu.navItem.classList.remove(menu.navView.overItemCls);
menu.hide();
});
},
menuItemClick: function(view, record, item, index, e, eOpts) {
var viewType = record.get('view');
var tabTitle = record.get('text');
var tabId = record.get('id');
var config = record.get('config') || [];
var menu = view.up('menu');
var op = record.get('op') || 'tab';
if(op == 'tab') {
school.util.BaseUtil.openTab(viewType, tabTitle, tabId, config);
}else if(op == 'blank') {
window.open('http://localhost:8080');
}
menu.hide();
}
});