diff --git a/packages/api/src/controllers/jsldata.js b/packages/api/src/controllers/jsldata.js index 1bf19df08..84ce60e5f 100644 --- a/packages/api/src/controllers/jsldata.js +++ b/packages/api/src/controllers/jsldata.js @@ -121,7 +121,13 @@ module.exports = { getStats_meta: 'get', getStats({ jslid }) { const file = `${getJslFileName(jslid)}.stats`; - if (fs.existsSync(file)) return JSON.parse(fs.readFileSync(file, 'utf-8')); + if (fs.existsSync(file)) { + try { + return JSON.parse(fs.readFileSync(file, 'utf-8')); + } catch (e) { + return {}; + } + } return {}; }, diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 5da2eca7b..0635dbe7c 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -13,7 +13,7 @@ keyText: 'F5', toolbar: true, icon: 'icon reload', - enabledStore: derived(currentDataGrid, grid => grid != null), + enabledStore: derived(currentDataGrid, grid => grid?.getDisplay().supportsReload), onClick: () => get(currentDataGrid).refresh(), }); @@ -179,6 +179,7 @@ export let onReferenceSourceChanged = undefined; export let onReferenceClick = undefined; export let onSave; + export let focusOnVisible = false; export let isLoadedAll; export let loadedTime; @@ -226,6 +227,10 @@ return changeSetStore; } + export function getDisplay() { + return display; + } + export function revertRowChanges() { grider.beginUpdate(); for (const index of getSelectedRowIndexes()) { @@ -382,7 +387,7 @@ } } - $: if ($tabVisible && domFocusField) { + $: if ($tabVisible && domFocusField && focusOnVisible) { domFocusField.focus(); } diff --git a/packages/web/src/tabs/TableDataTab.svelte b/packages/web/src/tabs/TableDataTab.svelte index c82efd6d9..14df732aa 100644 --- a/packages/web/src/tabs/TableDataTab.svelte +++ b/packages/web/src/tabs/TableDataTab.svelte @@ -37,6 +37,7 @@ cache={$cache} setCache={cache.update} changeSetState={$changeSetStore} + focusOnVisible {changeSetStore} {dispatchChangeSet} />