filter list in perspective

This commit is contained in:
Jan Prochazka
2022-08-04 08:16:22 +02:00
parent 7dcbe6c7c1
commit 9051ba2ee1
5 changed files with 83 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
<script lang="ts">
import { ChangePerspectiveConfigFunc, PerspectiveConfig } from 'dbgate-datalib';
import _ from 'lodash';
import ManagerInnerContainer from '../elements/ManagerInnerContainer.svelte';
import PerspectiveFiltersColumn from './PerspectiveFiltersColumn.svelte';
export let managerSize;
export let config: PerspectiveConfig;
export let setConfig: ChangePerspectiveConfigFunc;
$: allFilterNames = _.keys(config.filterInfos || {});
</script>
<ManagerInnerContainer width={managerSize}>
{#each allFilterNames as uniqueName}
<PerspectiveFiltersColumn
columnName={config.filterInfos[uniqueName].columnName}
{uniqueName}
filter={config.filters[uniqueName]}
filterType={config.filterInfos[uniqueName].filterType}
onSetFilter={value =>
setConfig(cfg => ({
...cfg,
filters: {
...cfg.filters,
[uniqueName]: value,
},
}))}
onRemoveFilter={value =>
setConfig(cfg => ({
...cfg,
filters: _.omit(cfg.filters, [uniqueName]),
filterInfos: _.omit(cfg.filterInfos, [uniqueName]),
}))}
/>
{/each}
</ManagerInnerContainer>

View File

@@ -0,0 +1,24 @@
<script lang="ts">
import DataFilterControl from '../datagrid/DataFilterControl.svelte';
import ColumnLabel from '../elements/ColumnLabel.svelte';
import InlineButton from '../buttons/InlineButton.svelte';
import FontIcon from '../icons/FontIcon.svelte';
import { getFilterType } from 'dbgate-filterparser';
export let filter;
export let onSetFilter;
export let onRemoveFilter;
export let filterType;
export let columnName;
</script>
<div class="m-1">
<div class="space-between">
{columnName}
<InlineButton square narrow on:click={onRemoveFilter}>
<FontIcon icon="icon close" />
</InlineButton>
</div>
<DataFilterControl {filterType} {filter} setFilter={onSetFilter} />
</div>

View File

@@ -49,6 +49,8 @@
import registerCommand from '../commands/registerCommand';
import { showModal } from '../modals/modalTools';
import CustomJoinModal from './CustomJoinModal.svelte';
import JsonViewFilters from '../jsonview/JsonViewFilters.svelte';
import PerspectiveFilters from './PerspectiveFilters.svelte';
const dbg = debug('dbgate:PerspectiveView');
@@ -114,6 +116,10 @@
{/if}
</ManagerInnerContainer>
</WidgetColumnBarItem>
<WidgetColumnBarItem title="Filters" name="tableFilters" height={'15%'}>
<PerspectiveFilters {managerSize} {config} {setConfig} />
</WidgetColumnBarItem>
</WidgetColumnBar>
</div>