2021-02-02 14:47:58 +05:30
|
|
|
/////////////////////////////////////////////////////////////
|
|
|
|
|
//
|
|
|
|
|
// pgAdmin 4 - PostgreSQL Tools
|
|
|
|
|
//
|
2024-01-01 14:13:48 +05:30
|
|
|
// Copyright (C) 2013 - 2024, The pgAdmin Development Team
|
2021-02-02 14:47:58 +05:30
|
|
|
// This software is released under the PostgreSQL Licence
|
|
|
|
|
//
|
|
|
|
|
//////////////////////////////////////////////////////////////
|
2023-10-23 17:43:17 +05:30
|
|
|
import {MenuItem as NewMenuItem} from '../helpers/Menu';
|
2022-12-06 18:16:36 +05:30
|
|
|
import pgAdmin from 'sources/pgadmin';
|
2021-02-02 14:47:58 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
// Allow us to
|
|
|
|
|
const getMenuName = (item) => {
|
2022-12-06 18:16:36 +05:30
|
|
|
return item.label;
|
2021-02-02 14:47:58 +05:30
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export function menuSearch(param, props) {
|
|
|
|
|
param = param.trim();
|
|
|
|
|
const setState = props.setState;
|
|
|
|
|
let result = [];
|
|
|
|
|
|
2022-12-06 18:16:36 +05:30
|
|
|
const iterItem = (subMenus, path, parentPath) => {
|
|
|
|
|
subMenus.forEach((subMenu) =>{
|
2022-12-22 14:25:18 +05:30
|
|
|
if(subMenu instanceof NewMenuItem) {
|
2022-12-06 18:16:36 +05:30
|
|
|
if(subMenu.type != 'separator' && subMenu?.label?.toLowerCase().indexOf(param.toLowerCase()) != -1){
|
|
|
|
|
let localPath = path;
|
|
|
|
|
if(parentPath) {
|
|
|
|
|
localPath = `${parentPath} > ${path} `;
|
|
|
|
|
}
|
|
|
|
|
subMenu.path = localPath;
|
|
|
|
|
let selectedNode = pgAdmin.Browser.tree.selected();
|
|
|
|
|
if(subMenu.path == 'Object') {
|
|
|
|
|
if(selectedNode && selectedNode._metadata.data._type == subMenu.module.parent_type) {
|
|
|
|
|
result.push(subMenu);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
result.push(subMenu);
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-22 14:25:18 +05:30
|
|
|
if(subMenu.getMenuItems()) {
|
|
|
|
|
iterItem(subMenu.getMenuItems(), getMenuName(subMenu), path);
|
2022-12-06 18:16:36 +05:30
|
|
|
}
|
2024-02-26 11:55:36 +05:30
|
|
|
} else if(typeof(subMenu) == 'object' && !(subMenu instanceof NewMenuItem)) {
|
|
|
|
|
iterItem(Object.values(subMenu), path, parentPath);
|
2022-12-06 18:16:36 +05:30
|
|
|
} else {
|
2024-02-26 11:55:36 +05:30
|
|
|
iterItem(subMenu, path, parentPath);
|
2021-02-02 14:47:58 +05:30
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-09 18:41:23 +05:30
|
|
|
const mainMenus = pgAdmin.Browser.MainMenus;
|
|
|
|
|
mainMenus.forEach((menu) => {
|
2024-12-09 18:04:47 +05:30
|
|
|
const subMenus = menu.getMenuItems();
|
2023-01-09 18:41:23 +05:30
|
|
|
iterItem(Object.values(subMenus), getMenuName(menu));
|
|
|
|
|
});
|
2021-02-02 14:47:58 +05:30
|
|
|
|
2022-12-06 18:16:36 +05:30
|
|
|
setState(state => ({
|
|
|
|
|
...state,
|
|
|
|
|
fetched: true,
|
|
|
|
|
data: result,
|
|
|
|
|
}));
|
2021-02-02 14:47:58 +05:30
|
|
|
}
|