diff --git a/packages/datalib/src/PerspectiveDataProvider.ts b/packages/datalib/src/PerspectiveDataProvider.ts index a6eb955c1..67fb90dbf 100644 --- a/packages/datalib/src/PerspectiveDataProvider.ts +++ b/packages/datalib/src/PerspectiveDataProvider.ts @@ -134,6 +134,7 @@ export class PerspectiveDataProvider { for (; groupIndex < props.bindingValues.length; groupIndex++) { const groupValues = props.bindingValues[groupIndex]; const group = tableCache.getBindingGroup(groupValues); + if (!group) continue; if (group.loadedAll) continue; if (group.groupSize == 0) { group.loadedAll = true; diff --git a/packages/web/src/designer/DesignerTable.svelte b/packages/web/src/designer/DesignerTable.svelte index bed751dcf..a7bab85fe 100644 --- a/packages/web/src/designer/DesignerTable.svelte +++ b/packages/web/src/designer/DesignerTable.svelte @@ -241,6 +241,7 @@ use:moveDrag={settings?.canSelectColumns ? [handleMoveStart, handleMove, handleMoveEnd] : null} use:contextMenu={settings?.canSelectColumns ? createMenu : '__no_menu'} style={getTableColorStyle($currentThemeDefinition, table)} + on:click={settings?.onClickTableHeader ? () => settings?.onClickTableHeader(designerId) : null} >
{#if settings?.canCheckTables} diff --git a/packages/web/src/perspectives/PerspectiveDesigner.svelte b/packages/web/src/perspectives/PerspectiveDesigner.svelte index c4f843e5c..7a8b8b1c4 100644 --- a/packages/web/src/perspectives/PerspectiveDesigner.svelte +++ b/packages/web/src/perspectives/PerspectiveDesigner.svelte @@ -25,6 +25,8 @@ export let setConfig; + export let onClickTableHeader = null; + function createDesignerModel(config: PerspectiveConfig, dbInfos: MultipleDatabaseInfo) { return { ...config, @@ -272,6 +274,7 @@ return false; }, + onClickTableHeader, }} referenceComponent={QueryDesignerReference} value={createDesignerModel(config, dbInfos)} diff --git a/packages/web/src/perspectives/PerspectiveNodeRow.svelte b/packages/web/src/perspectives/PerspectiveNodeRow.svelte index e9dcac134..771f7584c 100644 --- a/packages/web/src/perspectives/PerspectiveNodeRow.svelte +++ b/packages/web/src/perspectives/PerspectiveNodeRow.svelte @@ -14,6 +14,7 @@ export let database; export let node: PerspectiveTreeNode; export let root: PerspectiveTreeNode; + export let tempRoot: PerspectiveTreeNode; export let config: PerspectiveConfig; export let setConfig: ChangePerspectiveConfigFunc; @@ -25,12 +26,13 @@ root, config, setConfig, + designerId: node?.designerId, }); }
- + { @@ -74,7 +76,7 @@ {node.title} - + {#if node.getFilter()} {/if} diff --git a/packages/web/src/perspectives/PerspectiveTable.svelte b/packages/web/src/perspectives/PerspectiveTable.svelte index 62ac828de..39884958e 100644 --- a/packages/web/src/perspectives/PerspectiveTable.svelte +++ b/packages/web/src/perspectives/PerspectiveTable.svelte @@ -181,6 +181,7 @@ node: column.dataNode, root, setConfig, + designerId: null, }) ); td.classList.add('highlight'); diff --git a/packages/web/src/perspectives/PerspectiveTree.svelte b/packages/web/src/perspectives/PerspectiveTree.svelte index 1abf3b04d..2501251be 100644 --- a/packages/web/src/perspectives/PerspectiveTree.svelte +++ b/packages/web/src/perspectives/PerspectiveTree.svelte @@ -10,7 +10,8 @@ import PerspectiveNodeRow from './PerspectiveNodeRow.svelte'; - export let root; + export let root: PerspectiveTreeNode; + export let tempRoot: PerspectiveTreeNode; export let config: PerspectiveConfig; export let setConfig: ChangePerspectiveConfigFunc; export let conid; @@ -37,6 +38,6 @@ } -{#each getFlatColumns(root, filter) as node} - +{#each getFlatColumns(tempRoot ?? root, filter) as node} + {/each} diff --git a/packages/web/src/perspectives/PerspectiveView.svelte b/packages/web/src/perspectives/PerspectiveView.svelte index 8786fc391..23003eb3f 100644 --- a/packages/web/src/perspectives/PerspectiveView.svelte +++ b/packages/web/src/perspectives/PerspectiveView.svelte @@ -31,6 +31,7 @@ PerspectiveConfig, PerspectiveDataProvider, PerspectiveTableNode, + PerspectiveTreeNode, processPerspectiveDefaultColunns, shouldProcessPerspectiveDefaultColunns, } from 'dbgate-datalib'; @@ -60,6 +61,10 @@ import { useMultipleDatabaseInfo } from '../utility/useMultipleDatabaseInfo'; import VerticalSplitter from '../elements/VerticalSplitter.svelte'; import PerspectiveDesigner from './PerspectiveDesigner.svelte'; + import { tick } from 'svelte'; + import { sleep } from '../utility/common'; + import FontIcon from '../icons/FontIcon.svelte'; + import InlineButton from '../buttons/InlineButton.svelte'; const dbg = debug('dbgate:PerspectiveView'); @@ -69,6 +74,9 @@ export let config: PerspectiveConfig; export let setConfig: ChangePerspectiveConfigFunc; + + let tempRootDesignerId: string = null; + export let loadedCounts; export let cache; @@ -140,6 +148,7 @@ config.rootDesignerId ) : null; + $: tempRoot = root?.findNodeByDesignerId(tempRootDesignerId); $: { if (shouldProcessPerspectiveDefaultColunns(config, $dbInfos, conid, database)) { @@ -155,6 +164,20 @@
+ {#if tempRoot && tempRoot != root} +
+
+ + {tempRoot.title} +
+ { + tempRootDesignerId = tempRoot?.parentNode?.designerId; + }}>Go up +
+ {/if} + @@ -162,7 +185,7 @@ {#if root} - + {/if}
@@ -176,7 +199,19 @@ - + { + sleep(100).then(() => { + tempRootDesignerId = designerId; + }); + }} + /> @@ -191,4 +226,13 @@ flex: 1; background-color: var(--theme-bg-0); } + + .temp-root { + border: 1px solid var(--theme-border); + background-color: var(--theme-bg-1); + display: flex; + justify-content: space-between; + align-items: center; + padding-left: 2px; + }