mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-28 19:56:00 +00:00
view data tab
This commit is contained in:
@@ -143,10 +143,10 @@ export default class ChangeSetGrider extends Grider {
|
|||||||
this.dispatchChangeSet({ type: 'redo' });
|
this.dispatchChangeSet({ type: 'redo' });
|
||||||
}
|
}
|
||||||
get canUndo() {
|
get canUndo() {
|
||||||
return this.changeSetState.canUndo;
|
return this.changeSetState?.canUndo;
|
||||||
}
|
}
|
||||||
get canRedo() {
|
get canRedo() {
|
||||||
return this.changeSetState.canRedo;
|
return this.changeSetState?.canRedo;
|
||||||
}
|
}
|
||||||
get containsChanges() {
|
get containsChanges() {
|
||||||
return changeSetContainsChanges(this.changeSet);
|
return changeSetContainsChanges(this.changeSet);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
export let gridCoreComponent;
|
export let gridCoreComponent;
|
||||||
|
|
||||||
export let isDetailView = false;
|
export let isDetailView = false;
|
||||||
export let showReferences = true;
|
export let showReferences = false;
|
||||||
|
|
||||||
let managerSize;
|
let managerSize;
|
||||||
</script>
|
</script>
|
||||||
@@ -21,7 +21,13 @@
|
|||||||
<ColumnManager {...$$props} {managerSize} />
|
<ColumnManager {...$$props} {managerSize} />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|
||||||
<WidgetColumnBarItem title="References" name="references" height="30%" collapsed={isDetailView}>
|
<WidgetColumnBarItem
|
||||||
|
title="References"
|
||||||
|
name="references"
|
||||||
|
height="30%"
|
||||||
|
collapsed={isDetailView}
|
||||||
|
skip={!showReferences}
|
||||||
|
>
|
||||||
<ReferenceManager {...$$props} {managerSize} />
|
<ReferenceManager {...$$props} {managerSize} />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
</WidgetColumnBar>
|
</WidgetColumnBar>
|
||||||
|
|||||||
@@ -112,6 +112,7 @@
|
|||||||
{...$$props}
|
{...$$props}
|
||||||
gridCoreComponent={SqlDataGridCore}
|
gridCoreComponent={SqlDataGridCore}
|
||||||
{display}
|
{display}
|
||||||
|
showReferences
|
||||||
onReferenceSourceChanged={reference ? handleReferenceSourceChanged : null}
|
onReferenceSourceChanged={reference ? handleReferenceSourceChanged : null}
|
||||||
onReferenceClick={value => {
|
onReferenceClick={value => {
|
||||||
if (value && value.referenceId && reference && reference.referenceId == value.referenceId) {
|
if (value && value.referenceId && reference && reference.referenceId == value.referenceId) {
|
||||||
|
|||||||
54
packages/web/src/tabs/ViewDataTab.svelte
Normal file
54
packages/web/src/tabs/ViewDataTab.svelte
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<script lang="ts" context="module">
|
||||||
|
export const matchingProps = ['conid', 'database', 'schemaName', 'pureName'];
|
||||||
|
export const allowAddToFavorites = props => true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { createGridCache, ViewGridDisplay } from 'dbgate-datalib';
|
||||||
|
import { findEngineDriver } from 'dbgate-tools';
|
||||||
|
import { writable } from 'svelte/store';
|
||||||
|
|
||||||
|
import DataGrid from '../datagrid/DataGrid.svelte';
|
||||||
|
import SqlDataGridCore from '../datagrid/SqlDataGridCore.svelte';
|
||||||
|
import { extensions } from '../stores';
|
||||||
|
import { useConnectionInfo, useViewInfo } from '../utility/metadataLoaders';
|
||||||
|
import useGridConfig from '../utility/useGridConfig';
|
||||||
|
|
||||||
|
export let tabid;
|
||||||
|
export let conid;
|
||||||
|
export let database;
|
||||||
|
export let schemaName;
|
||||||
|
export let pureName;
|
||||||
|
|
||||||
|
$: connection = useConnectionInfo({ conid });
|
||||||
|
$: viewInfo = useViewInfo({ conid, database, schemaName, pureName });
|
||||||
|
|
||||||
|
const config = useGridConfig(tabid);
|
||||||
|
const cache = writable(createGridCache());
|
||||||
|
|
||||||
|
$: display =
|
||||||
|
$viewInfo && $connection
|
||||||
|
? new ViewGridDisplay(
|
||||||
|
$viewInfo,
|
||||||
|
findEngineDriver($connection, $extensions),
|
||||||
|
//@ts-ignore
|
||||||
|
$config,
|
||||||
|
config.update,
|
||||||
|
$cache,
|
||||||
|
cache.update
|
||||||
|
)
|
||||||
|
: null;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if display}
|
||||||
|
<DataGrid
|
||||||
|
{...$$props}
|
||||||
|
{display}
|
||||||
|
config={$config}
|
||||||
|
setConfig={config.update}
|
||||||
|
cache={$cache}
|
||||||
|
setCache={cache.update}
|
||||||
|
focusOnVisible
|
||||||
|
gridCoreComponent={SqlDataGridCore}
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as TableDataTab from './TableDataTab.svelte';
|
import * as TableDataTab from './TableDataTab.svelte';
|
||||||
// import ViewDataTab from './ViewDataTab';
|
import * as ViewDataTab from './ViewDataTab.svelte';
|
||||||
// import TableStructureTab from './TableStructureTab';
|
// import TableStructureTab from './TableStructureTab';
|
||||||
import * as QueryTab from './QueryTab.svelte';
|
import * as QueryTab from './QueryTab.svelte';
|
||||||
import * as ShellTab from './ShellTab.svelte';
|
import * as ShellTab from './ShellTab.svelte';
|
||||||
@@ -16,7 +16,7 @@ import * as MarkdownEditorTab from './MarkdownEditorTab.svelte';
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
TableDataTab,
|
TableDataTab,
|
||||||
// ViewDataTab,
|
ViewDataTab,
|
||||||
// TableStructureTab,
|
// TableStructureTab,
|
||||||
QueryTab,
|
QueryTab,
|
||||||
// InfoPageTab,
|
// InfoPageTab,
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { cacheClean } from './cache';
|
|||||||
import socket from './socket';
|
import socket from './socket';
|
||||||
import getAsArray from './getAsArray';
|
import getAsArray from './getAsArray';
|
||||||
import { DatabaseInfo } from 'dbgate-types';
|
import { DatabaseInfo } from 'dbgate-types';
|
||||||
|
import { derived } from 'svelte/store';
|
||||||
|
|
||||||
const databaseInfoLoader = ({ conid, database }) => ({
|
const databaseInfoLoader = ({ conid, database }) => ({
|
||||||
url: 'database-connections/structure',
|
url: 'database-connections/structure',
|
||||||
@@ -247,11 +248,14 @@ export async function getDbCore(args, objectTypeField = undefined) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function useDbCore(args, objectTypeField = undefined) {
|
export function useDbCore(args, objectTypeField = undefined) {
|
||||||
const db = useDatabaseInfo(args);
|
const dbStore = useDatabaseInfo(args);
|
||||||
if (!db) return null;
|
if (!dbStore) return null;
|
||||||
return db[objectTypeField || args.objectTypeField].find(
|
return derived(dbStore, db => {
|
||||||
x => x.pureName == args.pureName && x.schemaName == args.schemaName
|
if (!db) return null;
|
||||||
);
|
return db[objectTypeField || args.objectTypeField].find(
|
||||||
|
x => x.pureName == args.pureName && x.schemaName == args.schemaName
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @returns {Promise<import('dbgate-types').TableInfo>} */
|
/** @returns {Promise<import('dbgate-types').TableInfo>} */
|
||||||
|
|||||||
@@ -27,11 +27,12 @@
|
|||||||
{
|
{
|
||||||
collapsed,
|
collapsed,
|
||||||
height,
|
height,
|
||||||
|
skip,
|
||||||
},
|
},
|
||||||
dynamicProps
|
dynamicProps
|
||||||
);
|
);
|
||||||
|
|
||||||
$: updateWidgetItemDefinition(widgetItemIndex, { collapsed: !visible, height });
|
$: updateWidgetItemDefinition(widgetItemIndex, { collapsed: !visible, height, skip });
|
||||||
|
|
||||||
$: setInitialSize(height, $widgetColumnBarHeight);
|
$: setInitialSize(height, $widgetColumnBarHeight);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user