columns in tables list

This commit is contained in:
Jan Prochazka
2021-03-01 20:27:09 +01:00
parent ea05ae0079
commit ad0e02de5d
8 changed files with 74 additions and 7 deletions

View File

@@ -23,7 +23,7 @@
<div class="main" class:isBold draggable on:click use:contextMenu={menu}>
{#if expandIcon}
<span class="expand-icon" on:click={handleExpand}>
<span class="expand-icon" on:click|stopPropagation={handleExpand}>
<FontIcon icon={expandIcon} />
</span>
{/if}

View File

@@ -1,4 +1,8 @@
<script>
import { plusExpandIcon } from '../icons/expandIcons';
import FontIcon from '../icons/FontIcon.svelte';
import AppObjectListItem from './AppObjectListItem.svelte';
export let group;
@@ -12,13 +16,17 @@
</script>
<div class="group" on:click={() => (isExpanded = !isExpanded)}>
<span class="expand-icon">
<FontIcon icon={plusExpandIcon(isExpanded)} />
</span>
{group}
{items && `(${countText})`}
</div>
{#if isExpanded}
{#each filtered as item (module.extractKey(item.data))}
<AppObjectListItem {module} data={item.data} on:objectClick />
<AppObjectListItem {...$$restProps} {module} data={item.data} on:objectClick />
{/each}
{/if}
@@ -34,4 +42,7 @@
.group:hover {
background-color: var(--theme-bg-hover);
}
.expand-icon {
margin-right: 3px;
}
</style>

View File

@@ -10,6 +10,7 @@
export let expandOnClick = false;
export let isExpandable = undefined;
export let filter;
export let expandIconFunc = undefined;
export let groupFunc = undefined;
@@ -35,10 +36,18 @@
{#if groupFunc}
{#each _.keys(groups) as group (group)}
<AppObjectGroup {group} {module} items={groups[group]} />
<AppObjectGroup {group} {module} items={groups[group]} {expandIconFunc} {isExpandable} {subItemsComponent} />
{/each}
{:else}
{#each filtered as data (module.extractKey(data))}
<AppObjectListItem {module} {subItemsComponent} {expandOnClick} {data} {isExpandable} on:objectClick />
<AppObjectListItem
{module}
{subItemsComponent}
{expandOnClick}
{data}
{isExpandable}
on:objectClick
{expandIconFunc}
/>
{/each}
{/if}

View File

@@ -26,6 +26,10 @@
}
}
function handleExpandButton() {
isExpanded = !isExpanded;
}
$: expandable = data && isExpandable && isExpandable(data);
$: if (!expandable && isExpanded) isExpanded = false;
@@ -35,7 +39,7 @@
this={module.default}
{data}
on:click={handleExpand}
on:expand={handleExpand}
on:expand={handleExpandButton}
expandIcon={getExpandIcon(expandable, subItemsComponent, isExpanded, expandIconFunc)}
/>

View File

@@ -0,0 +1,22 @@
<script lang="ts" context="module">
export const extractKey = ({ columnName }) => columnName;
</script>
<script lang="ts">
import { getColumnIcon } from '../datagrid/ColumnLabel.svelte';
import AppObjectCore from './AppObjectCore.svelte';
export let data;
$: extInfo = data.foreignKey ? `${data.dataType} -> ${data.foreignKey.refTableName}` : data.dataType;
</script>
<AppObjectCore
{...$$restProps}
{data}
title={data.columnName}
{extInfo}
icon={getColumnIcon(data, true)}
disableHover
/>

View File

@@ -42,4 +42,5 @@
title={data.schemaName ? `${data.schemaName}.${data.pureName}` : data.pureName}
icon={icons[data.objectTypeField]}
on:click={handleClick}
on:expand
/>

View File

@@ -0,0 +1,16 @@
<script lang="ts">
import { findForeignKeyForColumn } from 'dbgate-tools';
import AppObjectList from './AppObjectList.svelte';
import * as columnAppObject from './ColumnAppObject.svelte';
export let data;
</script>
<AppObjectList
list={(data.columns || []).map(col => ({
...col,
foreignKey: findForeignKeyForColumn(data, col),
}))}
module={columnAppObject}
/>