///////////////////////////////////////////////////////////// // // pgAdmin 4 - PostgreSQL Tools // // Copyright (C) 2013 - 2022, The pgAdmin Development Team // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// import React from 'react'; import ReactDOM from 'react-dom'; import Theme from 'sources/Theme'; import Dependencies from '../../../misc/dependencies/static/js/Dependencies'; import Dependents from '../../../misc/dependents/static/js/Dependents'; import Statistics from '../../../misc/statistics/static/js/Statistics'; import SQL from '../../../misc/sql/static/js/SQL'; import Dashboard from '../../../dashboard/static/js/Dashboard'; import _ from 'lodash'; import { CollectionNodeView } from '../../../misc/properties/CollectionNodeProperties'; /* The entry point for rendering React based view in properties, called in node.js */ export function getPanelView( tree, container, pgBrowser, panelType, panelVisible = true ) { let item = !_.isNull(tree)? tree.selected(): null, nodeData, node, treeNodeInfo, preferences, graphPref, dashPref; if (item){ nodeData = tree.itemData(item); node = nodeData && pgBrowser.Nodes[nodeData._type]; treeNodeInfo = pgBrowser.tree.getTreeNodeHierarchy(item); dashPref = pgBrowser.get_preferences_for_module('dashboards'); graphPref = pgBrowser.get_preferences_for_module('graphs'); preferences = _.merge(dashPref, graphPref); } if (panelType == 'dashboard') { ReactDOM.render( , container ); } if (panelType == 'statistics') { ReactDOM.render( , container ); } if (panelType == 'properties' && nodeData?.is_collection) { ReactDOM.render( , container ); } if (panelType == 'dependencies') { ReactDOM.render( , container ); } if (panelType == 'dependents') { ReactDOM.render( , container ); } if (panelType == 'sql') { ReactDOM.render( , container ); } } /* When switching from normal node to collection node, clean up the React mounted DOM */ export function removePanelView(container) { ReactDOM.unmountComponentAtNode(container); }