mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-21 13:37:28 +00:00
110 lines
2.9 KiB
JavaScript
110 lines
2.9 KiB
JavaScript
import React, { createContext, useState, useMemo } from 'react';
|
|
import Layout from '@/_ui/Layout';
|
|
import TooljetDatabasePage from './TooljetDatabasePage';
|
|
import { usePostgrestQueryBuilder } from './usePostgrestQueryBuilder';
|
|
|
|
export const TooljetDatabaseContext = createContext({
|
|
organizationId: null,
|
|
setOrganizationId: () => {},
|
|
selectedTable: '',
|
|
setSelectedTable: () => {},
|
|
searchParam: '',
|
|
setSearchParam: () => {},
|
|
selectedTableData: [],
|
|
setSelectedTableData: () => {},
|
|
tables: [],
|
|
setTables: () => {},
|
|
columns: [],
|
|
setColumns: () => {},
|
|
totalRecords: 0,
|
|
setTotalRecords: () => {},
|
|
handleBuildFilterQuery: () => {},
|
|
handleBuildSortQuery: () => {},
|
|
buildPaginationQuery: () => {},
|
|
resetSortQuery: () => {},
|
|
resetFilterQuery: () => {},
|
|
queryFilters: {},
|
|
setQueryFilters: () => {},
|
|
sortFilters: {},
|
|
setSortFilters: () => {},
|
|
});
|
|
|
|
export const TooljetDatabase = (props) => {
|
|
const { organization_id } = JSON.parse(localStorage.getItem('currentUser')) || {};
|
|
const [organizationId, setOrganizationId] = useState(organization_id);
|
|
const [columns, setColumns] = useState([]);
|
|
const [tables, setTables] = useState([]);
|
|
const [searchParam, setSearchParam] = useState('');
|
|
const [selectedTable, setSelectedTable] = useState('');
|
|
const [selectedTableData, setSelectedTableData] = useState([]);
|
|
|
|
const [totalRecords, setTotalRecords] = useState(0);
|
|
|
|
const [queryFilters, setQueryFilters] = useState({});
|
|
const [sortFilters, setSortFilters] = useState({});
|
|
|
|
const {
|
|
handleBuildFilterQuery,
|
|
handleBuildSortQuery,
|
|
buildPaginationQuery,
|
|
resetSortQuery,
|
|
resetFilterQuery,
|
|
resetAll,
|
|
} = usePostgrestQueryBuilder({
|
|
organizationId,
|
|
selectedTable,
|
|
setSelectedTableData,
|
|
setTotalRecords,
|
|
});
|
|
|
|
const value = useMemo(
|
|
() => ({
|
|
searchParam,
|
|
setSearchParam,
|
|
organizationId,
|
|
setOrganizationId,
|
|
tables,
|
|
setTables,
|
|
columns,
|
|
setColumns,
|
|
selectedTable,
|
|
setSelectedTable,
|
|
selectedTableData,
|
|
setSelectedTableData,
|
|
totalRecords,
|
|
setTotalRecords,
|
|
handleBuildFilterQuery,
|
|
handleBuildSortQuery,
|
|
buildPaginationQuery,
|
|
resetSortQuery,
|
|
resetFilterQuery,
|
|
queryFilters,
|
|
setQueryFilters,
|
|
sortFilters,
|
|
setSortFilters,
|
|
resetAll,
|
|
}),
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
[
|
|
searchParam,
|
|
organizationId,
|
|
tables,
|
|
columns,
|
|
selectedTable,
|
|
selectedTableData,
|
|
totalRecords,
|
|
queryFilters,
|
|
sortFilters,
|
|
]
|
|
);
|
|
|
|
return (
|
|
<Layout switchDarkMode={props.switchDarkMode} darkMode={props.darkMode}>
|
|
<div className="page-wrapper tooljet-database">
|
|
<TooljetDatabaseContext.Provider value={value}>
|
|
<TooljetDatabasePage />
|
|
</TooljetDatabaseContext.Provider>
|
|
</div>
|
|
</Layout>
|
|
);
|
|
};
|