mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-01 08:33:58 +00:00
temp root in perspectives
This commit is contained in:
@@ -134,6 +134,7 @@ export class PerspectiveDataProvider {
|
|||||||
for (; groupIndex < props.bindingValues.length; groupIndex++) {
|
for (; groupIndex < props.bindingValues.length; groupIndex++) {
|
||||||
const groupValues = props.bindingValues[groupIndex];
|
const groupValues = props.bindingValues[groupIndex];
|
||||||
const group = tableCache.getBindingGroup(groupValues);
|
const group = tableCache.getBindingGroup(groupValues);
|
||||||
|
if (!group) continue;
|
||||||
if (group.loadedAll) continue;
|
if (group.loadedAll) continue;
|
||||||
if (group.groupSize == 0) {
|
if (group.groupSize == 0) {
|
||||||
group.loadedAll = true;
|
group.loadedAll = true;
|
||||||
|
|||||||
@@ -241,6 +241,7 @@
|
|||||||
use:moveDrag={settings?.canSelectColumns ? [handleMoveStart, handleMove, handleMoveEnd] : null}
|
use:moveDrag={settings?.canSelectColumns ? [handleMoveStart, handleMove, handleMoveEnd] : null}
|
||||||
use:contextMenu={settings?.canSelectColumns ? createMenu : '__no_menu'}
|
use:contextMenu={settings?.canSelectColumns ? createMenu : '__no_menu'}
|
||||||
style={getTableColorStyle($currentThemeDefinition, table)}
|
style={getTableColorStyle($currentThemeDefinition, table)}
|
||||||
|
on:click={settings?.onClickTableHeader ? () => settings?.onClickTableHeader(designerId) : null}
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
{#if settings?.canCheckTables}
|
{#if settings?.canCheckTables}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
export let setConfig;
|
export let setConfig;
|
||||||
|
|
||||||
|
export let onClickTableHeader = null;
|
||||||
|
|
||||||
function createDesignerModel(config: PerspectiveConfig, dbInfos: MultipleDatabaseInfo) {
|
function createDesignerModel(config: PerspectiveConfig, dbInfos: MultipleDatabaseInfo) {
|
||||||
return {
|
return {
|
||||||
...config,
|
...config,
|
||||||
@@ -272,6 +274,7 @@
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
onClickTableHeader,
|
||||||
}}
|
}}
|
||||||
referenceComponent={QueryDesignerReference}
|
referenceComponent={QueryDesignerReference}
|
||||||
value={createDesignerModel(config, dbInfos)}
|
value={createDesignerModel(config, dbInfos)}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
export let database;
|
export let database;
|
||||||
export let node: PerspectiveTreeNode;
|
export let node: PerspectiveTreeNode;
|
||||||
export let root: PerspectiveTreeNode;
|
export let root: PerspectiveTreeNode;
|
||||||
|
export let tempRoot: PerspectiveTreeNode;
|
||||||
export let config: PerspectiveConfig;
|
export let config: PerspectiveConfig;
|
||||||
export let setConfig: ChangePerspectiveConfigFunc;
|
export let setConfig: ChangePerspectiveConfigFunc;
|
||||||
|
|
||||||
@@ -25,12 +26,13 @@
|
|||||||
root,
|
root,
|
||||||
config,
|
config,
|
||||||
setConfig,
|
setConfig,
|
||||||
|
designerId: node?.designerId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="row" use:contextMenu={createMenu}>
|
<div class="row" use:contextMenu={createMenu}>
|
||||||
<span class="expandColumnIcon" style={`margin-right: ${5 + node.level * 10}px`}>
|
<span class="expandColumnIcon" style={`margin-right: ${5 + (node.level - (tempRoot?.level ?? 0)) * 10}px`}>
|
||||||
<FontIcon
|
<FontIcon
|
||||||
icon={node.isExpandable ? plusExpandIcon(node.isExpanded) : 'icon invisible-box'}
|
icon={node.isExpandable ? plusExpandIcon(node.isExpanded) : 'icon invisible-box'}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
|
|||||||
@@ -181,6 +181,7 @@
|
|||||||
node: column.dataNode,
|
node: column.dataNode,
|
||||||
root,
|
root,
|
||||||
setConfig,
|
setConfig,
|
||||||
|
designerId: null,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
td.classList.add('highlight');
|
td.classList.add('highlight');
|
||||||
|
|||||||
@@ -10,7 +10,8 @@
|
|||||||
|
|
||||||
import PerspectiveNodeRow from './PerspectiveNodeRow.svelte';
|
import PerspectiveNodeRow from './PerspectiveNodeRow.svelte';
|
||||||
|
|
||||||
export let root;
|
export let root: PerspectiveTreeNode;
|
||||||
|
export let tempRoot: PerspectiveTreeNode;
|
||||||
export let config: PerspectiveConfig;
|
export let config: PerspectiveConfig;
|
||||||
export let setConfig: ChangePerspectiveConfigFunc;
|
export let setConfig: ChangePerspectiveConfigFunc;
|
||||||
export let conid;
|
export let conid;
|
||||||
@@ -37,6 +38,6 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#each getFlatColumns(root, filter) as node}
|
{#each getFlatColumns(tempRoot ?? root, filter) as node}
|
||||||
<PerspectiveNodeRow {node} {config} {setConfig} {root} {conid} {database} />
|
<PerspectiveNodeRow {node} {config} {setConfig} {root} {tempRoot} {conid} {database} />
|
||||||
{/each}
|
{/each}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
PerspectiveConfig,
|
PerspectiveConfig,
|
||||||
PerspectiveDataProvider,
|
PerspectiveDataProvider,
|
||||||
PerspectiveTableNode,
|
PerspectiveTableNode,
|
||||||
|
PerspectiveTreeNode,
|
||||||
processPerspectiveDefaultColunns,
|
processPerspectiveDefaultColunns,
|
||||||
shouldProcessPerspectiveDefaultColunns,
|
shouldProcessPerspectiveDefaultColunns,
|
||||||
} from 'dbgate-datalib';
|
} from 'dbgate-datalib';
|
||||||
@@ -60,6 +61,10 @@
|
|||||||
import { useMultipleDatabaseInfo } from '../utility/useMultipleDatabaseInfo';
|
import { useMultipleDatabaseInfo } from '../utility/useMultipleDatabaseInfo';
|
||||||
import VerticalSplitter from '../elements/VerticalSplitter.svelte';
|
import VerticalSplitter from '../elements/VerticalSplitter.svelte';
|
||||||
import PerspectiveDesigner from './PerspectiveDesigner.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');
|
const dbg = debug('dbgate:PerspectiveView');
|
||||||
|
|
||||||
@@ -69,6 +74,9 @@
|
|||||||
|
|
||||||
export let config: PerspectiveConfig;
|
export let config: PerspectiveConfig;
|
||||||
export let setConfig: ChangePerspectiveConfigFunc;
|
export let setConfig: ChangePerspectiveConfigFunc;
|
||||||
|
|
||||||
|
let tempRootDesignerId: string = null;
|
||||||
|
|
||||||
export let loadedCounts;
|
export let loadedCounts;
|
||||||
|
|
||||||
export let cache;
|
export let cache;
|
||||||
@@ -140,6 +148,7 @@
|
|||||||
config.rootDesignerId
|
config.rootDesignerId
|
||||||
)
|
)
|
||||||
: null;
|
: null;
|
||||||
|
$: tempRoot = root?.findNodeByDesignerId(tempRootDesignerId);
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
if (shouldProcessPerspectiveDefaultColunns(config, $dbInfos, conid, database)) {
|
if (shouldProcessPerspectiveDefaultColunns(config, $dbInfos, conid, database)) {
|
||||||
@@ -155,6 +164,20 @@
|
|||||||
<div class="left" slot="1">
|
<div class="left" slot="1">
|
||||||
<WidgetColumnBar>
|
<WidgetColumnBar>
|
||||||
<WidgetColumnBarItem title="Choose data" name="perspectiveTree" height={'70%'}>
|
<WidgetColumnBarItem title="Choose data" name="perspectiveTree" height={'70%'}>
|
||||||
|
{#if tempRoot && tempRoot != root}
|
||||||
|
<div class="temp-root">
|
||||||
|
<div>
|
||||||
|
<FontIcon icon="img table" />
|
||||||
|
{tempRoot.title}
|
||||||
|
</div>
|
||||||
|
<InlineButton
|
||||||
|
on:click={() => {
|
||||||
|
tempRootDesignerId = tempRoot?.parentNode?.designerId;
|
||||||
|
}}>Go up</InlineButton
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<SearchBoxWrapper>
|
<SearchBoxWrapper>
|
||||||
<SearchInput placeholder="Search column or table" bind:value={filter} />
|
<SearchInput placeholder="Search column or table" bind:value={filter} />
|
||||||
<CloseSearchButton bind:filter />
|
<CloseSearchButton bind:filter />
|
||||||
@@ -162,7 +185,7 @@
|
|||||||
|
|
||||||
<ManagerInnerContainer width={managerSize}>
|
<ManagerInnerContainer width={managerSize}>
|
||||||
{#if root}
|
{#if root}
|
||||||
<PerspectiveTree {root} {config} {setConfig} {conid} {database} {filter} />
|
<PerspectiveTree {root} {tempRoot} {config} {setConfig} {conid} {database} {filter} />
|
||||||
{/if}
|
{/if}
|
||||||
</ManagerInnerContainer>
|
</ManagerInnerContainer>
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
@@ -176,7 +199,19 @@
|
|||||||
<svelte:fragment slot="2">
|
<svelte:fragment slot="2">
|
||||||
<VerticalSplitter allowCollapseChild1 allowCollapseChild2>
|
<VerticalSplitter allowCollapseChild1 allowCollapseChild2>
|
||||||
<svelte:fragment slot="1">
|
<svelte:fragment slot="1">
|
||||||
<PerspectiveDesigner {config} {conid} {database} {setConfig} dbInfos={$dbInfos} {root} />
|
<PerspectiveDesigner
|
||||||
|
{config}
|
||||||
|
{conid}
|
||||||
|
{database}
|
||||||
|
{setConfig}
|
||||||
|
dbInfos={$dbInfos}
|
||||||
|
{root}
|
||||||
|
onClickTableHeader={designerId => {
|
||||||
|
sleep(100).then(() => {
|
||||||
|
tempRootDesignerId = designerId;
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
<svelte:fragment slot="2">
|
<svelte:fragment slot="2">
|
||||||
<PerspectiveTable {root} {loadedCounts} {config} {setConfig} {conid} {database} />
|
<PerspectiveTable {root} {loadedCounts} {config} {setConfig} {conid} {database} />
|
||||||
@@ -191,4 +226,13 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
background-color: var(--theme-bg-0);
|
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;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user