mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 17:16:01 +00:00
master/detail view - handle reload chidlren
This commit is contained in:
@@ -391,6 +391,9 @@ export default function DataGridCore(props) {
|
||||
loadNextData();
|
||||
}
|
||||
}
|
||||
if (props.masterLoadedTime && props.masterLoadedTime > loadedTime) {
|
||||
display.reload();
|
||||
}
|
||||
if (display.cache.refreshTime > loadedTime) {
|
||||
reload();
|
||||
}
|
||||
@@ -426,10 +429,10 @@ export default function DataGridCore(props) {
|
||||
}, [jslid]);
|
||||
|
||||
React.useEffect(() => {
|
||||
if (props.onRefSourceRowsChanged) {
|
||||
props.onRefSourceRowsChanged(getSelectedRowData());
|
||||
if (props.onRefSourceRowsChanged && ((loadedRows && loadedRows.length > 0) || isLoadedAll)) {
|
||||
props.onRefSourceRowsChanged(getSelectedRowData(), loadedTime);
|
||||
}
|
||||
}, [selectedCells, props.refReloadToken]);
|
||||
}, [selectedCells, props.refReloadToken, loadedRows && loadedRows[0]]);
|
||||
|
||||
// const handleCloseInplaceEditor = React.useCallback(
|
||||
// mode => {
|
||||
|
||||
@@ -22,12 +22,14 @@ export default function TableDataGrid({
|
||||
setConfig = undefined,
|
||||
cache = undefined,
|
||||
setCache = undefined,
|
||||
masterLoadedTime = undefined,
|
||||
}) {
|
||||
const [myConfig, setMyConfig] = React.useState(createGridConfig());
|
||||
const [childConfig, setChildConfig] = React.useState(createGridConfig());
|
||||
const [myCache, setMyCache] = React.useState(createGridCache());
|
||||
const [childCache, setChildCache] = React.useState(createGridCache());
|
||||
const [refReloadToken, setRefReloadToken] = React.useState(0);
|
||||
const [myLoadedTime, setMyLoadedTime] = React.useState(0);
|
||||
|
||||
const connection = useConnectionInfo({ conid });
|
||||
const [reference, setReference] = React.useState(null);
|
||||
@@ -70,7 +72,8 @@ export default function TableDataGrid({
|
||||
}, [conid, database, display]);
|
||||
|
||||
const handleRefSourcedRowsChanged = React.useCallback(
|
||||
(selectedRows) => {
|
||||
(selectedRows, loadedTime) => {
|
||||
setMyLoadedTime(loadedTime);
|
||||
if (!reference) return;
|
||||
const filters = {
|
||||
...(config || myConfig).filters,
|
||||
@@ -112,6 +115,7 @@ export default function TableDataGrid({
|
||||
onReferenceClick={setReference}
|
||||
onRefSourceRowsChanged={reference ? handleRefSourcedRowsChanged : null}
|
||||
refReloadToken={refReloadToken.toString()}
|
||||
masterLoadedTime={masterLoadedTime}
|
||||
/>
|
||||
{reference && (
|
||||
<TableDataGrid
|
||||
@@ -128,6 +132,7 @@ export default function TableDataGrid({
|
||||
setConfig={setChildConfig}
|
||||
cache={childCache}
|
||||
setCache={setChildCache}
|
||||
masterLoadedTime={myLoadedTime}
|
||||
/>
|
||||
)}
|
||||
</VerticalSplitter>
|
||||
|
||||
@@ -13,4 +13,5 @@ export interface DataGridProps {
|
||||
onReferenceClick?: (def: GridReferenceDefinition) => void;
|
||||
onRefSourceRowsChanged?: Function;
|
||||
refReloadToken?: string;
|
||||
masterLoadedTime?: number
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user