diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js index 41681483017..ef5a9c63207 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js @@ -279,7 +279,7 @@ define('pgadmin.node.table', [ type:'GET', }) .done(function(res) { - Notify.success(res.info); + Notify.success(res.info, undefined, true); d.rows_cnt = res.data.total_rows; t.unload(i); t.setInode(i); diff --git a/web/pgadmin/browser/static/js/node_view.jsx b/web/pgadmin/browser/static/js/node_view.jsx index d441884518a..f14807a3e57 100644 --- a/web/pgadmin/browser/static/js/node_view.jsx +++ b/web/pgadmin/browser/static/js/node_view.jsx @@ -210,6 +210,7 @@ export function getNodeView(nodeType, treeNodeInfo, actionType, itemNodeData, fo key={itemNodeData?._id} formType={formType} getInitData={initData} + updatedData={{rows_cnt: itemNodeData?.rows_cnt}} schema={schema} viewHelperProps={viewHelperProps} onSave={onSaveClick} diff --git a/web/pgadmin/static/js/SchemaView/index.jsx b/web/pgadmin/static/js/SchemaView/index.jsx index b84d1e8aa19..0cd4c353e98 100644 --- a/web/pgadmin/static/js/SchemaView/index.jsx +++ b/web/pgadmin/static/js/SchemaView/index.jsx @@ -866,7 +866,7 @@ const usePropsStyles = makeStyles((theme)=>({ /* If its the properties tab */ function SchemaPropertiesView({ - getInitData, viewHelperProps, schema={}, ...props}) { + getInitData, viewHelperProps, schema={}, updatedData, ...props}) { const classes = usePropsStyles(); let defaultTab = 'General'; let tabs = {}; @@ -890,6 +890,14 @@ function SchemaPropertiesView({ }); }, []); + useEffect(()=>{ + if(updatedData) { + setOrigData(prevData => ({ + ...prevData, + ...updatedData + })); + } + },[updatedData]); /* A simple loop to get all the controls for the fields */ schema.fields.forEach((field)=>{ @@ -1008,6 +1016,7 @@ function SchemaPropertiesView({ SchemaPropertiesView.propTypes = { getInitData: PropTypes.func.isRequired, + updatedData: PropTypes.object, viewHelperProps: PropTypes.shape({ mode: PropTypes.string.isRequired, serverInfo: PropTypes.shape({ diff --git a/web/pgadmin/static/js/helpers/Notifier.jsx b/web/pgadmin/static/js/helpers/Notifier.jsx index bc47bb638d4..f336e6517c5 100644 --- a/web/pgadmin/static/js/helpers/Notifier.jsx +++ b/web/pgadmin/static/js/helpers/Notifier.jsx @@ -26,6 +26,7 @@ import pgWindow from 'sources/window'; import ModalProvider, { useModal } from './ModalProvider'; const AUTO_HIDE_DURATION = 3000; // In milliseconds +const PERSIST_SNACK_BAR = false; // Snackbar stays on the screen, unless it is dismissed let snackbarRef; let notifierInitialized = false; @@ -119,34 +120,35 @@ AlertContent.propTypes = { let Notifier = { - success(msg, autoHideDuration = AUTO_HIDE_DURATION) { - this._callNotify(msg, MESSAGE_TYPE.SUCCESS, autoHideDuration); + success(msg, autoHideDuration = AUTO_HIDE_DURATION, persist = PERSIST_SNACK_BAR) { + this._callNotify(msg, MESSAGE_TYPE.SUCCESS, autoHideDuration, persist); }, - warning(msg, autoHideDuration = AUTO_HIDE_DURATION) { - this._callNotify(msg, MESSAGE_TYPE.WARNING, autoHideDuration); + warning(msg, autoHideDuration = AUTO_HIDE_DURATION, persist = PERSIST_SNACK_BAR) { + this._callNotify(msg, MESSAGE_TYPE.WARNING, autoHideDuration, persist); }, - info(msg, autoHideDuration = AUTO_HIDE_DURATION) { - this._callNotify(msg, MESSAGE_TYPE.INFO, autoHideDuration); + info(msg, autoHideDuration = AUTO_HIDE_DURATION, persist = PERSIST_SNACK_BAR) { + this._callNotify(msg, MESSAGE_TYPE.INFO, autoHideDuration, persist); }, - error(msg, autoHideDuration = AUTO_HIDE_DURATION) { - this._callNotify(msg, MESSAGE_TYPE.ERROR, autoHideDuration); + error(msg, autoHideDuration = AUTO_HIDE_DURATION, persist = PERSIST_SNACK_BAR) { + this._callNotify(msg, MESSAGE_TYPE.ERROR, autoHideDuration, persist); }, - notify(content, autoHideDuration) { + notify(content, autoHideDuration, persist) { if (content) { if(!notifierInitialized) { initializeNotifier(); } let options = {autoHideDuration, content:(key) => ( {React.cloneElement(content, {onClose:()=>{snackbarRef.closeSnackbar(key);}})} - )}; + ), persist}; options.content.displayName = 'content'; snackbarRef.enqueueSnackbar(null, options); } }, - _callNotify(msg, type, autoHideDuration) { + _callNotify(msg, type, autoHideDuration, persist) { this.notify( , - autoHideDuration + autoHideDuration, + persist ); },