diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx index dc54256ae5..b662cca031 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx @@ -337,9 +337,20 @@ const ToolJetDbOperations = ({ optionchanged, options, darkMode, isHorizontalLay ] ); + const triggerTooljetDBStatus = (key) => { + if (window.public_config?.ENABLE_TOOLJET_DB !== 'true') { + toast('Tooljet database is not enabled.', { + icon: '⚠️', + }); + } else if (key === 'addTJDBTable') { + navigate(getPrivateRoute('database')); + } + }; + const fetchTables = async () => { const { error, data } = await tooljetDatabaseService.findAll(organizationId); + triggerTooljetDBStatus(); if (error) { toast.error(error?.message ?? 'Failed to fetch tables'); return; @@ -503,7 +514,7 @@ const ToolJetDbOperations = ({ optionchanged, options, darkMode, isHorizontalLay onChange={(value) => { value?.value && handleTableNameSelect(value?.value); }} - onAdd={() => navigate(getPrivateRoute('database'))} + onAdd={() => triggerTooljetDBStatus('addTJDBTable')} addBtnLabel={'Add new table'} value={generateListForDropdown(tables).find((val) => val?.value === selectedTableId)} /> diff --git a/frontend/src/TooljetDatabase/Drawers/EditRowDrawer/index.jsx b/frontend/src/TooljetDatabase/Drawers/EditRowDrawer/index.jsx index 6ada6b0930..13b59555e3 100644 --- a/frontend/src/TooljetDatabase/Drawers/EditRowDrawer/index.jsx +++ b/frontend/src/TooljetDatabase/Drawers/EditRowDrawer/index.jsx @@ -13,6 +13,7 @@ const EditRowDrawer = ({ setIsEditRowDrawerOpen, selectedRowIds, rows, + isDirectRowExpand, referencedColumnDetails, setReferencedColumnDetails, }) => { @@ -37,38 +38,40 @@ const EditRowDrawer = ({ return ( <> - { - setIsEditRowDrawerOpen(!isEditRowDrawerOpen); - }} - className="gap-0" - data-cy="edit-row-button-" - style={{ - padding: '4px 8px 4px 8px', - }} - > - {/* */} - - - - - -    - - Edit row - - + {!isDirectRowExpand && ( + { + setIsEditRowDrawerOpen(!isEditRowDrawerOpen); + }} + className="gap-0" + data-cy="edit-row-button-" + style={{ + padding: '4px 8px 4px 8px', + }} + > + {/* */} + + + + + +    + + Edit row + + + )} setIsEditRowDrawerOpen(false)} diff --git a/frontend/src/TooljetDatabase/Table/Header.jsx b/frontend/src/TooljetDatabase/Table/Header.jsx index cdc0101c69..92a0f41852 100644 --- a/frontend/src/TooljetDatabase/Table/Header.jsx +++ b/frontend/src/TooljetDatabase/Table/Header.jsx @@ -29,6 +29,7 @@ const Header = ({ setIsEditRowDrawerOpen, setFilterEnable, filterEnable, + isDirectRowExpand, referencedColumnDetails, setReferencedColumnDetails, }) => { @@ -149,7 +150,7 @@ const Header = ({
<> - {Object.keys(selectedRowIds).length === 0 && ( + {(isDirectRowExpand || Object.keys(selectedRowIds).length === 0) && ( <> ) : null} - {Object.keys(selectedRowIds).length > 0 && ( + {!isDirectRowExpand && Object.keys(selectedRowIds).length > 0 && (
{ const [nullValue, setNullValue] = useState(false); const [progress, setProgress] = useState(0); const [isCellUpdateInProgress, setIsCellUpdateInProgress] = useState(false); + const [isDirectRowExpand, setIsDirectRowExpand] = useState(false); const [referencedColumnDetails, setReferencedColumnDetails] = useState([]); const [cachedOptions, setCahedOptions] = useState({}); @@ -225,6 +226,7 @@ const Table = ({ collapseSidebar }) => { const newSelectedIdRef = {}; if (rowIdSelected) newSelectedIdRef[`${rowIdSelected}`] = true; setSelectedRowIds(newSelectedIdRef); + setIsDirectRowExpand(true); return; }; @@ -401,6 +403,14 @@ const Table = ({ collapseSidebar }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedTable]); + useEffect(() => { + if (!isEditRowDrawerOpen && isDirectRowExpand) { + setSelectedRowIds({}); + setIsDirectRowExpand(false); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isEditRowDrawerOpen]); + const tableData = React.useMemo( () => (loading ? Array(10).fill({}) : selectedTableData), [loading, selectedTableData] @@ -1083,6 +1093,8 @@ const Table = ({ collapseSidebar }) => { setIsEditRowDrawerOpen={setIsEditRowDrawerOpen} setFilterEnable={setFilterEnable} filterEnable={filterEnable} + isDirectRowExpand={isDirectRowExpand} + setIsDirectRowExpand={setIsDirectRowExpand} referencedColumnDetails={referencedColumnDetails} setReferencedColumnDetails={setReferencedColumnDetails} // getForeignKeyDetails={getForeignKeyDetails} @@ -1156,15 +1168,20 @@ const Table = ({ collapseSidebar }) => {
0 && Object.keys(selectedRowIds).length < rows.length + isDirectRowExpand + ? false + : Object.keys(selectedRowIds).length > 0 && Object.keys(selectedRowIds).length < rows.length + } + checked={ + isDirectRowExpand ? false : Object.keys(selectedRowIds).length === rows.length && rows.length } - checked={Object.keys(selectedRowIds).length === rows.length && rows.length} onChange={() => toggleSelectOrDeSelectAllRows(rows.length)} style={{ backgroundColor: `${ - (Object.keys(selectedRowIds).length > 0 && + (!isDirectRowExpand && + Object.keys(selectedRowIds).length > 0 && Object.keys(selectedRowIds).length < rows.length) || - (Object.keys(selectedRowIds).length === rows.length && rows.length) + (!isDirectRowExpand && Object.keys(selectedRowIds).length === rows.length && rows.length) ? '#3E63DD' : 'var(--base)' }`, @@ -1263,7 +1280,7 @@ const Table = ({ collapseSidebar }) => { }} > toggleRowSelection(row.id)} /> diff --git a/server/src/services/import_export_resources.service.ts b/server/src/services/import_export_resources.service.ts index 8eb19e7241..9a8067b031 100644 --- a/server/src/services/import_export_resources.service.ts +++ b/server/src/services/import_export_resources.service.ts @@ -53,8 +53,9 @@ export class ImportExportResourcesService { let tableNameMapping = {}; const imports = { app: [], tooljet_database: [] }; const importingVersion = importResourcesDto.tooljet_version; + const isTJDBEnabled = process.env.ENABLE_TOOLJET_DB === 'true'; - if (!isEmpty(importResourcesDto.tooljet_database)) { + if (isTJDBEnabled && !isEmpty(importResourcesDto.tooljet_database)) { const res = await this.tooljetDbImportExportService.bulkImport(importResourcesDto, importingVersion, cloning); tableNameMapping = res.tableNameMapping; imports.tooljet_database = res.tooljet_database;