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