pgadmin4/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js
2024-01-01 14:13:48 +05:30

101 lines
2.9 KiB
JavaScript

/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2024, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
import React from 'react';
import GrantWizard from './GrantWizard';
import { BROWSER_PANELS } from '../../../../browser/static/js/constants';
// Grant Wizard
define([
'sources/gettext', 'pgadmin.browser',
'tools/grant_wizard/static/js/menu_utils',
'sources/nodes/supported_database_node',
], function(
gettext, pgBrowser, menuUtils, supportedNodes
) {
// if module is already initialized, refer to that.
if (pgBrowser.GrantWizard) {
return pgBrowser.GrantWizard;
}
// Create an Object GrantWizard of pgBrowser class
pgBrowser.GrantWizard = {
init: function() {
if (this.initialized)
return;
this.initialized = true;
// Define the nodes on which the menus to be appear
let menus = [{
name: 'grant_wizard_schema',
module: this,
applies: ['tools'],
callback: 'start_grant_wizard',
priority: 1,
label: gettext('Grant Wizard...'),
icon: 'fa fa-unlock',
enable: supportedNodes.enabled.bind(
null, pgBrowser.tree, menuUtils.supportedNodes
),
data: {
data_disabled: gettext('Please select any database, schema or schema objects from the object explorer to access Grant Wizard Tool.'),
},
}];
// Add supported menus into the menus list
for (let mnu_val of menuUtils.supportedNodes) {
menus.push({
name: 'grant_wizard_schema_context_' + mnu_val,
node: mnu_val,
module: this,
applies: ['context'],
callback: 'start_grant_wizard',
priority: 14,
label: gettext('Grant Wizard...'),
enable: supportedNodes.enabled.bind(
null, pgBrowser.tree, menuUtils.supportedNodes
),
});
}
pgBrowser.add_menus(menus);
return this;
},
// Callback to draw Wizard Dialog
start_grant_wizard: function() {
let t = pgBrowser.tree,
i = t.selected(),
d = this.d = i ? t.itemData(i) : undefined,
info = this.info = pgBrowser.tree.getTreeNodeHierarchy(i);
let sid = info.server._id,
did = info.database._id;
const panelTitle = gettext('Grant Wizard');
const panelId = BROWSER_PANELS.GRANT_WIZARD;
pgBrowser.docker.openDialog({
id: panelId,
title: panelTitle,
manualClose: false,
content: (
<GrantWizard sid={sid} did={did} nodeInfo={info} nodeData={d}
onClose={()=>{pgBrowser.docker.close(panelId);}}
/>
)
}, pgBrowser.stdW.lg, pgBrowser.stdH.lg);
},
};
return pgBrowser.GrantWizard;
});