mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-01-24 15:26:46 -06:00
102e0a9839
- Remove the SCSS dependency completely and use MUI for theming. - Update - date-fns, @date-io, notistack. Remove - popper.js, sass-loader. - Cleanup webpack config. - Port PSQL tool to use MUI themes instead of SCSS theme. - Theme change will reflect realtime without refreshing pgAdmin.
93 lines
2.7 KiB
JavaScript
93 lines
2.7 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 CollectionNodeProperties from './CollectionNodeProperties';
|
|
import ErrorBoundary from '../../static/js/helpers/ErrorBoundary';
|
|
import withStandardTabInfo from '../../static/js/helpers/withStandardTabInfo';
|
|
import { BROWSER_PANELS } from '../../browser/static/js/constants';
|
|
import ObjectNodeProperties from './ObjectNodeProperties';
|
|
import EmptyPanelMessage from '../../static/js/components/EmptyPanelMessage';
|
|
import gettext from 'sources/gettext';
|
|
import { Box } from '@mui/material';
|
|
import { makeStyles } from '@mui/styles';
|
|
import { usePgAdmin } from '../../static/js/BrowserComponent';
|
|
import PropTypes from 'prop-types';
|
|
import _ from 'lodash';
|
|
|
|
const useStyles = makeStyles((theme) => ({
|
|
root: {
|
|
height: '100%',
|
|
background: theme.otherVars.emptySpaceBg,
|
|
display: 'flex',
|
|
flexDirection: 'column'
|
|
},
|
|
}));
|
|
|
|
function Properties(props) {
|
|
const isCollection = props.nodeData?._type?.startsWith('coll-') || props.nodeData?._type == 'dbms_job_scheduler';
|
|
const classes = useStyles();
|
|
const pgAdmin = usePgAdmin();
|
|
let noPropertyMsg = '';
|
|
|
|
if (!props.node) {
|
|
noPropertyMsg = gettext('Please select an object in the tree view.');
|
|
} else if (!_.isUndefined(props.node.hasProperties) && !props.node.hasProperties) {
|
|
noPropertyMsg = gettext('No information is available for the selected object.');
|
|
}
|
|
|
|
if(noPropertyMsg) {
|
|
return (
|
|
<Box className={classes.root}>
|
|
<Box margin={'4px auto'}>
|
|
<EmptyPanelMessage text={noPropertyMsg} />
|
|
</Box>
|
|
</Box>
|
|
);
|
|
}
|
|
|
|
if(isCollection) {
|
|
return (
|
|
<Box className={classes.root}>
|
|
<ErrorBoundary>
|
|
<CollectionNodeProperties
|
|
{...props}
|
|
/>
|
|
</ErrorBoundary>
|
|
</Box>
|
|
);
|
|
} else {
|
|
return (
|
|
<Box className={classes.root}>
|
|
<ErrorBoundary>
|
|
<ObjectNodeProperties
|
|
{...props}
|
|
actionType='properties'
|
|
formType="tab"
|
|
onEdit={()=>{
|
|
pgAdmin.Browser.Node.callbacks.show_obj_properties.call(
|
|
props.node, {action: 'edit'}
|
|
);
|
|
}}
|
|
/>
|
|
</ErrorBoundary>
|
|
</Box>
|
|
);
|
|
}
|
|
}
|
|
|
|
Properties.propTypes = {
|
|
node: PropTypes.func,
|
|
treeNodeInfo: PropTypes.object,
|
|
nodeData: PropTypes.object,
|
|
nodeItem: PropTypes.object,
|
|
};
|
|
|
|
export default withStandardTabInfo(Properties, BROWSER_PANELS.PROPERTIES);
|