mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Display the 'No menu available for this object' message if the selected tree node does not have any options. #5775
This commit is contained in:
parent
ff3555cf1d
commit
5abb748c3e
@ -113,4 +113,16 @@ export default class MainMenuFactory {
|
|||||||
Menu.sortMenus(menuList);
|
Menu.sortMenus(menuList);
|
||||||
return menuList;
|
return menuList;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
static checkNoMenuOptionForNode(d){
|
||||||
|
let selectedNodeFromNodes=pgAdmin.Browser.Nodes[d._type];
|
||||||
|
let selectedNode=pgAdmin.Browser.tree.selected();
|
||||||
|
let flag=!_.isUndefined(selectedNodeFromNodes.showMenu);
|
||||||
|
if(flag){
|
||||||
|
var showMenu = selectedNodeFromNodes.showMenu(d, selectedNode);
|
||||||
|
return {flag:showMenu?false:flag,showMenu};
|
||||||
|
} else{
|
||||||
|
return {flag,showMenu:undefined};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -378,77 +378,91 @@ define('pgadmin.browser', [
|
|||||||
masterpass_callback_queue: [],
|
masterpass_callback_queue: [],
|
||||||
getMenuList: function(name, item, d, skipDisabled=false) {
|
getMenuList: function(name, item, d, skipDisabled=false) {
|
||||||
let obj = this;
|
let obj = this;
|
||||||
let category = {
|
//This 'checkNoMenuOptionForNode' function will check if showMenu flag is present or not for selected node
|
||||||
'common': []
|
let {flag,showMenu}=MainMenuFactory.checkNoMenuOptionForNode(d);
|
||||||
};
|
if(flag){
|
||||||
const nodeTypeMenus = obj.all_menus_cache[name][d._type];
|
if(showMenu===false){
|
||||||
for(let key of Object.keys(nodeTypeMenus)) {
|
return [MainMenuFactory.createMenuItem({
|
||||||
let menuItem = nodeTypeMenus[key];
|
enable : false,
|
||||||
let menuCategory = menuItem.category ?? 'common';
|
label: gettext('No menu available for this object.'),
|
||||||
category[menuCategory] = category[menuCategory] ?? [];
|
name:'',
|
||||||
category[menuCategory].push(menuItem);
|
priority: 1,
|
||||||
}
|
category: 'create',
|
||||||
let menuItemList = [];
|
})];
|
||||||
|
|
||||||
for(let c in category) {
|
|
||||||
if((c in obj.menu_categories || category[c].length > 1) && c != 'common' ) {
|
|
||||||
let allMenuItemsDisabled = true;
|
|
||||||
category[c].forEach((mi)=> {
|
|
||||||
mi.checkAndSetDisabled(d, item);
|
|
||||||
if(allMenuItemsDisabled) {
|
|
||||||
allMenuItemsDisabled = mi.isDisabled;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const categoryMenuOptions = obj.menu_categories[c];
|
|
||||||
let label = categoryMenuOptions?.label ?? c;
|
|
||||||
let priority = categoryMenuOptions?.priority ?? 10;
|
|
||||||
|
|
||||||
if(categoryMenuOptions?.above) {
|
|
||||||
menuItemList.push(MainMenuFactory.getSeparator(label, priority));
|
|
||||||
}
|
|
||||||
if(!allMenuItemsDisabled && skipDisabled) {
|
|
||||||
let _menuItem = MainMenuFactory.createMenuItem({
|
|
||||||
name: c,
|
|
||||||
label: label,
|
|
||||||
module: c,
|
|
||||||
category: c,
|
|
||||||
menu_items: category[c],
|
|
||||||
priority: priority
|
|
||||||
});
|
|
||||||
|
|
||||||
menuItemList.push(_menuItem);
|
|
||||||
} else if(!skipDisabled){
|
|
||||||
let _menuItem = MainMenuFactory.createMenuItem({
|
|
||||||
name: c,
|
|
||||||
label: label,
|
|
||||||
module:c,
|
|
||||||
category: c,
|
|
||||||
menu_items: category[c],
|
|
||||||
priority: priority
|
|
||||||
});
|
|
||||||
|
|
||||||
menuItemList.push(_menuItem);
|
|
||||||
}
|
|
||||||
if(categoryMenuOptions?.below) {
|
|
||||||
menuItemList.push(MainMenuFactory.getSeparator(label, priority));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
category[c].forEach((c)=> {
|
|
||||||
c.checkAndSetDisabled(d, item);
|
|
||||||
});
|
|
||||||
|
|
||||||
category[c].forEach((m)=> {
|
|
||||||
if(!skipDisabled) {
|
|
||||||
menuItemList.push(m);
|
|
||||||
} else if(skipDisabled && !m.isDisabled){
|
|
||||||
menuItemList.push(m);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}else{
|
||||||
|
let category = {
|
||||||
|
'common': []
|
||||||
|
};
|
||||||
|
const nodeTypeMenus = obj.all_menus_cache[name][d._type];
|
||||||
|
for(let key of Object.keys(nodeTypeMenus)) {
|
||||||
|
let menuItem = nodeTypeMenus[key];
|
||||||
|
let menuCategory = menuItem.category ?? 'common';
|
||||||
|
category[menuCategory] = category[menuCategory] ?? [];
|
||||||
|
category[menuCategory].push(menuItem);
|
||||||
|
}
|
||||||
|
let menuItemList = [];
|
||||||
|
|
||||||
return menuItemList;
|
for(let c in category) {
|
||||||
|
if((c in obj.menu_categories || category[c].length > 1) && c != 'common' ) {
|
||||||
|
let allMenuItemsDisabled = true;
|
||||||
|
category[c].forEach((mi)=> {
|
||||||
|
mi.checkAndSetDisabled(d, item);
|
||||||
|
if(allMenuItemsDisabled) {
|
||||||
|
allMenuItemsDisabled = mi.isDisabled;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const categoryMenuOptions = obj.menu_categories[c];
|
||||||
|
let label = categoryMenuOptions?.label ?? c;
|
||||||
|
let priority = categoryMenuOptions?.priority ?? 10;
|
||||||
|
|
||||||
|
if(categoryMenuOptions?.above) {
|
||||||
|
menuItemList.push(MainMenuFactory.getSeparator(label, priority));
|
||||||
|
}
|
||||||
|
if(!allMenuItemsDisabled && skipDisabled) {
|
||||||
|
let _menuItem = MainMenuFactory.createMenuItem({
|
||||||
|
name: c,
|
||||||
|
label: label,
|
||||||
|
module: c,
|
||||||
|
category: c,
|
||||||
|
menu_items: category[c],
|
||||||
|
priority: priority
|
||||||
|
});
|
||||||
|
|
||||||
|
menuItemList.push(_menuItem);
|
||||||
|
} else if(!skipDisabled){
|
||||||
|
let _menuItem = MainMenuFactory.createMenuItem({
|
||||||
|
name: c,
|
||||||
|
label: label,
|
||||||
|
module:c,
|
||||||
|
category: c,
|
||||||
|
menu_items: category[c],
|
||||||
|
priority: priority
|
||||||
|
});
|
||||||
|
|
||||||
|
menuItemList.push(_menuItem);
|
||||||
|
}
|
||||||
|
if(categoryMenuOptions?.below) {
|
||||||
|
menuItemList.push(MainMenuFactory.getSeparator(label, priority));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
category[c].forEach((c)=> {
|
||||||
|
c.checkAndSetDisabled(d, item);
|
||||||
|
});
|
||||||
|
|
||||||
|
category[c].forEach((m)=> {
|
||||||
|
if(!skipDisabled) {
|
||||||
|
menuItemList.push(m);
|
||||||
|
} else if(skipDisabled && !m.isDisabled){
|
||||||
|
menuItemList.push(m);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return menuItemList;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// Enable/disable menu options
|
// Enable/disable menu options
|
||||||
enable_disable_menus: function(item) {
|
enable_disable_menus: function(item) {
|
||||||
|
@ -108,7 +108,7 @@ function BrowserTree(props) {
|
|||||||
return <PgMenuDivider key={i}/>;
|
return <PgMenuDivider key={i}/>;
|
||||||
}
|
}
|
||||||
if(menuItem.isDisabled) {
|
if(menuItem.isDisabled) {
|
||||||
return <React.Fragment key={i}></React.Fragment>;
|
return <React.Fragment key={i}><div style={{padding: '0 0.7rem',opacity: '0.5'}}>{menuItem.label}</div></React.Fragment>;
|
||||||
}
|
}
|
||||||
const hasCheck = typeof menuItem.checked == 'boolean';
|
const hasCheck = typeof menuItem.checked == 'boolean';
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user