From 3d7450b308b7e9b8718e84171944cbb790946862 Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Tue, 20 Jul 2021 11:54:12 +0530 Subject: [PATCH] - Fix typo modeSupported. - Add support for collection conditional visibility. --- .../static/js/SchemaView/DataGridView.jsx | 48 +++++++++---------- web/pgadmin/static/js/SchemaView/FormView.jsx | 14 +++--- 2 files changed, 30 insertions(+), 32 deletions(-) diff --git a/web/pgadmin/static/js/SchemaView/DataGridView.jsx b/web/pgadmin/static/js/SchemaView/DataGridView.jsx index 16128c0a2..8083ad2dd 100644 --- a/web/pgadmin/static/js/SchemaView/DataGridView.jsx +++ b/web/pgadmin/static/js/SchemaView/DataGridView.jsx @@ -142,7 +142,7 @@ DataTableHeader.propTypes = { headerGroups: PropTypes.array.isRequired, }; -function DataTableRow({row, totalRows, isResizing, schema, accessPath}) { +function DataTableRow({row, totalRows, isResizing, schema, schemaRef, accessPath}) { const classes = useStyles(); const [key, setKey] = useState(false); const depListener = useContext(DepListenerContext); @@ -151,6 +151,7 @@ function DataTableRow({row, totalRows, isResizing, schema, accessPath}) { * We can avoid re-render by if row data is not changed */ + let depsMap = _.values(row.values, Object.keys(row.values).filter((k)=>!k.startsWith('btn'))); useEffect(()=>{ /* Calculate the fields which depends on the current field deps has info on fields which the current field depends on. */ @@ -163,13 +164,13 @@ function DataTableRow({row, totalRows, isResizing, schema, accessPath}) { let source = accessPath.concat(dep); if(_.isArray(dep)) { source = dep; + depsMap.push(_.get(schemaRef.current.sessData, source)); } depListener.addDepListener(source, accessPath.concat(field.id), field.depChange); }); }); }, []); - let depsMap = _.values(row.values, Object.keys(row.values).filter((k)=>!k.startsWith('btn'))); depsMap = depsMap.concat([totalRows, row.isExpanded, key, isResizing]); return useMemo(()=>
@@ -198,8 +199,15 @@ export default function DataGridView({ let columns = useMemo( ()=>{ let cols = []; + let colInfo = { + Cell: ()=>{}, + }; + colInfo.Cell.displayName = 'Cell', + colInfo.Cell.propTypes = { + row: PropTypes.object.isRequired, + }; if(props.canEdit) { - let colInfo = { + colInfo = { Header: <> , id: 'btn-edit', accessor: ()=>{}, @@ -220,14 +228,10 @@ export default function DataGridView({ />; } }; - colInfo.Cell.displayName = 'Cell', - colInfo.Cell.propTypes = { - row: PropTypes.object.isRequired, - }; cols.push(colInfo); } if(props.canDelete) { - let colInfo = { + colInfo = { Header: <> , id: 'btn-delete', accessor: ()=>{}, @@ -257,10 +261,6 @@ export default function DataGridView({ ); } }; - colInfo.Cell.displayName = 'Cell', - colInfo.Cell.propTypes = { - row: PropTypes.object.isRequired, - }; cols.push(colInfo); } @@ -353,10 +353,9 @@ export default function DataGridView({ useBlockLayout, useResizeColumns, useSortBy, + useExpanded, ]; - if(props.canEdit) { - tablePlugins.push(useExpanded); - } + const { getTableProps, getTableBodyProps, @@ -377,6 +376,10 @@ export default function DataGridView({ const isResizing = _.flatMap(headerGroups, headerGroup => headerGroup.headers.map(col=>col.isResizing)).includes(true); + if(!props.visible) { + return <>; + } + return ( @@ -393,7 +396,7 @@ export default function DataGridView({ prepareRow(row); return + schema={schemaRef.current} schemaRef={schemaRef} accessPath={accessPath.concat([row.index])} /> {props.canEdit && row.isExpanded && -1); + retData.modeSupported = (field.mode.indexOf(viewHelperProps.mode) > -1); } - if(!retData.modeSuppoted) { + if(!retData.modeSupported) { return retData; } @@ -169,10 +169,10 @@ export default function FormView({ /* Prepare the array of components based on the types */ schema.fields.forEach((field)=>{ - let {visible, disabled, readonly, canAdd, canEdit, canDelete, modeSuppoted} = + let {visible, disabled, readonly, canAdd, canEdit, canDelete, modeSupported} = getFieldMetaData(field, schema, value, viewHelperProps); - if(modeSuppoted) { + if(modeSupported) { let {group} = field; group = groupLabels[group] || group || defaultTab; @@ -213,12 +213,12 @@ export default function FormView({ field.schema.top = schema; } - depsMap.push(canAdd, canEdit, canDelete); + depsMap.push(canAdd, canEdit, canDelete, visible); tabs[group].push( useMemo(()=>, depsMap) + {...field} canAdd={canAdd} canEdit={canEdit} canDelete={canDelete} visible={visible}/>, depsMap) ); } else if(field.type === 'group') { groupLabels[field.id] = field.label;