diff --git a/packages/web/src/buttons/ToolStripCommandButton.svelte b/packages/web/src/buttons/ToolStripCommandButton.svelte index ef56c0c2e..107fb46c3 100644 --- a/packages/web/src/buttons/ToolStripCommandButton.svelte +++ b/packages/web/src/buttons/ToolStripCommandButton.svelte @@ -16,6 +16,7 @@ export let command; export let component = ToolStripButton; export let hideDisabled = false; + export let buttonLabel = null; $: cmd = Object.values($commandsCustomized).find((x: any) => x.id == command) as any; @@ -29,6 +30,6 @@ disabled={!cmd.enabled} {...$$restProps} > - {cmd.toolbarName || cmd.name} + {buttonLabel || cmd.toolbarName || cmd.name} {/if} diff --git a/packages/web/src/buttons/ToolStripCommandSplitButton.svelte b/packages/web/src/buttons/ToolStripCommandSplitButton.svelte index 2810e7ab9..933b5fe51 100644 --- a/packages/web/src/buttons/ToolStripCommandSplitButton.svelte +++ b/packages/web/src/buttons/ToolStripCommandSplitButton.svelte @@ -5,7 +5,16 @@ import ToolStripSplitDropDownButton from './ToolStripSplitDropDownButton.svelte'; export let commands; - $: menu = _.compact(commands).map(command => ({ command })); + export let hideDisabled = false; + export let buttonLabel = null; + + $: menu = _.compact(commands).map(command => (_.isString(command) ? { command } : command)); - + diff --git a/packages/web/src/tabs/TableDataTab.svelte b/packages/web/src/tabs/TableDataTab.svelte index 18d5f0f0c..facb17718 100644 --- a/packages/web/src/tabs/TableDataTab.svelte +++ b/packages/web/src/tabs/TableDataTab.svelte @@ -1,5 +1,6 @@ @@ -50,12 +91,13 @@ import { showSnackbarSuccess } from '../utility/snackbar'; import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte'; import openNewTab from '../utility/openNewTab'; - import { setContext } from 'svelte'; + import { onDestroy, setContext } from 'svelte'; import { apiCall } from '../utility/api'; import { getLocalStorage, setLocalStorage } from '../utility/storageCache'; import ToolStripContainer from '../buttons/ToolStripContainer.svelte'; import ToolStripCommandButton from '../buttons/ToolStripCommandButton.svelte'; import ToolStripExportButton, { createQuickExportHandlerRef } from '../buttons/ToolStripExportButton.svelte'; + import ToolStripCommandSplitButton from '../buttons/ToolStripCommandSplitButton.svelte'; export let tabid; export let conid; @@ -68,6 +110,11 @@ const config = useGridConfig(tabid); const cache = writable(createGridCache()); const dbinfo = useDatabaseInfo({ conid, database }); + + let autoRefreshInterval = 10; + let autoRefreshStarted = false; + let autoRefreshTimer = null; + $: connection = useConnectionInfo({ conid }); const [changeSetStore, dispatchChangeSet] = createUndoReducer(createChangeSet()); @@ -106,6 +153,38 @@ return changeSetContainsChanges($changeSetStore?.value); } + export function setAutoRefresh(interval) { + autoRefreshInterval = interval; + startAutoRefresh(); + invalidateCommands(); + } + + export function isAutoRefresh() { + return autoRefreshStarted; + } + + export function startAutoRefresh() { + closeRefreshTimer(); + autoRefreshTimer = setInterval(() => { + cache.update(reloadDataCacheFunc); + }, autoRefreshInterval * 1000); + autoRefreshStarted = true; + invalidateCommands(); + } + + export function stopAutoRefresh() { + closeRefreshTimer(); + autoRefreshStarted = false; + invalidateCommands(); + } + + function closeRefreshTimer() { + if (autoRefreshTimer) { + clearInterval(autoRefreshTimer); + autoRefreshTimer = null; + } + } + $: { $changeSetStore; invalidateCommands(); @@ -117,7 +196,21 @@ setContext('collapsedLeftColumnStore', collapsedLeftColumnStore); $: setLocalStorage('dataGrid_collapsedLeftColumn', $collapsedLeftColumnStore); + onDestroy(() => { + closeRefreshTimer(); + }); + const quickExportHandlerRef = createQuickExportHandlerRef(); + + function createAutoRefreshMenu() { + return [ + { divider: true }, + { command: 'tableData.stopAutoRefresh', hideDisabled: true }, + { command: 'tableData.startAutoRefresh', hideDisabled: true }, + 'tableData.setAutoRefresh.1', + ...INTERVALS.map(seconds => ({ command: `tableData.setAutoRefresh.${seconds}`, text: `...${seconds} seconds` })), + ]; + } @@ -134,8 +227,19 @@ /> - - + + + +