table child config refacvtor

This commit is contained in:
Jan Prochazka
2020-10-10 16:15:43 +02:00
parent 5638706252
commit 7aec8ccf99
3 changed files with 27 additions and 6 deletions

View File

@@ -27,6 +27,8 @@ export interface GridConfig extends GridConfigColumns {
order: 'ASC' | 'DESC'; order: 'ASC' | 'DESC';
}[]; }[];
grouping: { [uniqueName: string]: GroupFunc }; grouping: { [uniqueName: string]: GroupFunc };
childConfig?: GridConfig;
reference?: GridReferenceDefinition;
} }
export interface GridCache { export interface GridCache {

View File

@@ -43,15 +43,32 @@ export default function TableDataGrid({
masterLoadedTime = undefined, masterLoadedTime = undefined,
}) { }) {
const [myConfig, setMyConfig] = React.useState(createGridConfig()); const [myConfig, setMyConfig] = React.useState(createGridConfig());
const [childConfig, setChildConfig] = React.useState(createGridConfig()); // const [childConfig, setChildConfig] = React.useState(createGridConfig());
const [myCache, setMyCache] = React.useState(createGridCache()); const [myCache, setMyCache] = React.useState(createGridCache());
const [childCache, setChildCache] = React.useState(createGridCache()); const [childCache, setChildCache] = React.useState(createGridCache());
const [refReloadToken, setRefReloadToken] = React.useState(0); const [refReloadToken, setRefReloadToken] = React.useState(0);
const [myLoadedTime, setMyLoadedTime] = React.useState(0); const [myLoadedTime, setMyLoadedTime] = React.useState(0);
const { childConfig } = config || myConfig;
const setChildConfig = (value, reference = undefined) => {
if (_.isFunction(value)) {
(setConfig || setMyConfig)((x) => ({
...x,
childConfig: value(x.childConfig),
}));
} else {
(setConfig || setMyConfig)((x) => ({
...x,
childConfig: value,
reference: reference === undefined ? x.reference : reference,
}));
}
};
const { reference } = config || myConfig;
const connection = useConnectionInfo({ conid }); const connection = useConnectionInfo({ conid });
const dbinfo = useDatabaseInfo({ conid, database }); const dbinfo = useDatabaseInfo({ conid, database });
const [reference, setReference] = React.useState(null); // const [reference, setReference] = React.useState(null);
function createDisplay() { function createDisplay() {
return connection return connection
@@ -125,7 +142,7 @@ export default function TableDataGrid({
); );
const handleCloseReference = () => { const handleCloseReference = () => {
setReference(null); setChildConfig(null, null);
}; };
if (!display) return null; if (!display) return null;
@@ -142,7 +159,7 @@ export default function TableDataGrid({
dispatchChangeSet={dispatchChangeSet} dispatchChangeSet={dispatchChangeSet}
toolbarPortalRef={toolbarPortalRef} toolbarPortalRef={toolbarPortalRef}
showReferences showReferences
onReferenceClick={setReference} onReferenceClick={(reference) => setChildConfig(createGridConfig(), reference)}
onReferenceSourceChanged={reference ? handleReferenceSourceChanged : null} onReferenceSourceChanged={reference ? handleReferenceSourceChanged : null}
refReloadToken={refReloadToken.toString()} refReloadToken={refReloadToken.toString()}
masterLoadedTime={masterLoadedTime} masterLoadedTime={masterLoadedTime}

View File

@@ -1,17 +1,19 @@
import React from 'react'; import React from 'react';
import { createGridCache, createChangeSet } from '@dbgate/datalib'; import { createGridCache, createChangeSet, createGridConfig } from '@dbgate/datalib';
import useUndoReducer from '../utility/useUndoReducer'; import useUndoReducer from '../utility/useUndoReducer';
import usePropsCompare from '../utility/usePropsCompare'; import usePropsCompare from '../utility/usePropsCompare';
import { useUpdateDatabaseForTab } from '../utility/globalState'; import { useUpdateDatabaseForTab } from '../utility/globalState';
import TableDataGrid from '../datagrid/TableDataGrid'; import TableDataGrid from '../datagrid/TableDataGrid';
export default function TableDataTab({ conid, database, schemaName, pureName, tabVisible, toolbarPortalRef }) { export default function TableDataTab({ conid, database, schemaName, pureName, tabVisible, toolbarPortalRef, tabid }) {
const [changeSetState, dispatchChangeSet] = useUndoReducer(createChangeSet()); const [changeSetState, dispatchChangeSet] = useUndoReducer(createChangeSet());
useUpdateDatabaseForTab(tabVisible, conid, database); useUpdateDatabaseForTab(tabVisible, conid, database);
// const [config, setConfig] = React.useState(createGridConfig());
return ( return (
<TableDataGrid <TableDataGrid
conid={conid} conid={conid}
// config={config}
database={database} database={database}
schemaName={schemaName} schemaName={schemaName}
pureName={pureName} pureName={pureName}