master/detail view - handle reload chidlren

This commit is contained in:
Jan Prochazka
2020-05-10 09:38:00 +02:00
parent c6695bba32
commit 9b39677b93
3 changed files with 13 additions and 4 deletions

View File

@@ -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 => {

View File

@@ -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>

View File

@@ -13,4 +13,5 @@ export interface DataGridProps {
onReferenceClick?: (def: GridReferenceDefinition) => void;
onRefSourceRowsChanged?: Function;
refReloadToken?: string;
masterLoadedTime?: number
}