mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-26 06:26:00 +00:00
perspective filter menu
This commit is contained in:
@@ -161,6 +161,10 @@
|
|||||||
<SortOrderIcon {...sortOrderProps} />
|
<SortOrderIcon {...sortOrderProps} />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
{#if settings?.isColumnFiltered && settings?.isColumnFiltered(designerId, column.columnName)}
|
||||||
|
<FontIcon icon="img filter" />
|
||||||
|
{/if}
|
||||||
|
|
||||||
{#if designer?.style?.showNullability || designer?.style?.showDataType}
|
{#if designer?.style?.showNullability || designer?.style?.showDataType}
|
||||||
<div class="space" />
|
<div class="space" />
|
||||||
{#if designer?.style?.showDataType && column?.dataType}
|
{#if designer?.style?.showDataType && column?.dataType}
|
||||||
|
|||||||
@@ -11,7 +11,12 @@
|
|||||||
|
|
||||||
import Designer from '../designer/Designer.svelte';
|
import Designer from '../designer/Designer.svelte';
|
||||||
import QueryDesignerReference from '../designer/QueryDesignerReference.svelte';
|
import QueryDesignerReference from '../designer/QueryDesignerReference.svelte';
|
||||||
import { addToPerspectiveSort, clearPerspectiveSort, setPerspectiveSort } from './perspectiveMenu';
|
import {
|
||||||
|
addToPerspectiveFilter,
|
||||||
|
addToPerspectiveSort,
|
||||||
|
clearPerspectiveSort,
|
||||||
|
setPerspectiveSort,
|
||||||
|
} from './perspectiveMenu';
|
||||||
|
|
||||||
export let config: PerspectiveConfig;
|
export let config: PerspectiveConfig;
|
||||||
export let dbInfos: MultipleDatabaseInfo;
|
export let dbInfos: MultipleDatabaseInfo;
|
||||||
@@ -153,6 +158,11 @@
|
|||||||
text: 'Clear sort criteria',
|
text: 'Clear sort criteria',
|
||||||
onClick: () => onChange(cfg => clearPerspectiveSort(cfg, designerId)),
|
onClick: () => onChange(cfg => clearPerspectiveSort(cfg, designerId)),
|
||||||
},
|
},
|
||||||
|
{ divider: true },
|
||||||
|
{
|
||||||
|
text: 'Add to filter',
|
||||||
|
onClick: () => onChange(cfg => addToPerspectiveFilter(cfg, designerId, column.columnName)),
|
||||||
|
},
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
createReferenceText: reference => (reference.isAutoGenerated ? 'FK' : 'Custom'),
|
createReferenceText: reference => (reference.isAutoGenerated ? 'FK' : 'Custom'),
|
||||||
@@ -195,6 +205,9 @@
|
|||||||
const orderIndex = sort.length > 1 ? _.findIndex(sort, x => x.columnName == columnName) : -1;
|
const orderIndex = sort.length > 1 ? _.findIndex(sort, x => x.columnName == columnName) : -1;
|
||||||
return { order, orderIndex };
|
return { order, orderIndex };
|
||||||
},
|
},
|
||||||
|
isColumnFiltered: (designerId, columnName) => {
|
||||||
|
return !!config.nodes.find(x => x.designerId == designerId)?.filters?.[columnName];
|
||||||
|
},
|
||||||
}}
|
}}
|
||||||
referenceComponent={QueryDesignerReference}
|
referenceComponent={QueryDesignerReference}
|
||||||
value={createDesignerModel(config, dbInfos)}
|
value={createDesignerModel(config, dbInfos)}
|
||||||
|
|||||||
@@ -74,6 +74,10 @@
|
|||||||
<span>{node.title}</span>
|
<span>{node.title}</span>
|
||||||
|
|
||||||
<SortOrderIcon order={node.sortOrder} orderIndex={node.sortOrderIndex} />
|
<SortOrderIcon order={node.sortOrder} orderIndex={node.sortOrderIndex} />
|
||||||
|
|
||||||
|
{#if node.getFilter()}
|
||||||
|
<FontIcon icon="img filter" />
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -64,6 +64,28 @@ export function clearPerspectiveSort(cfg: PerspectiveConfig, designerId: string)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function addToPerspectiveFilter(
|
||||||
|
cfg: PerspectiveConfig,
|
||||||
|
designerId: string,
|
||||||
|
columnName: string,
|
||||||
|
filterValue: string = ''
|
||||||
|
) {
|
||||||
|
return {
|
||||||
|
...cfg,
|
||||||
|
nodes: cfg.nodes.map(n =>
|
||||||
|
n.designerId == designerId
|
||||||
|
? {
|
||||||
|
...n,
|
||||||
|
filters: {
|
||||||
|
...n.filters,
|
||||||
|
[columnName]: filterValue,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
: n
|
||||||
|
),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function getPerspectiveNodeMenu(props: PerspectiveNodeMenuProps) {
|
export function getPerspectiveNodeMenu(props: PerspectiveNodeMenuProps) {
|
||||||
const { node, conid, database, root, config, setConfig } = props;
|
const { node, conid, database, root, config, setConfig } = props;
|
||||||
const customJoin = node.customJoinConfig;
|
const customJoin = node.customJoinConfig;
|
||||||
@@ -120,21 +142,7 @@ export function getPerspectiveNodeMenu(props: PerspectiveNodeMenuProps) {
|
|||||||
|
|
||||||
filterInfo && {
|
filterInfo && {
|
||||||
text: 'Add to filter',
|
text: 'Add to filter',
|
||||||
onClick: () =>
|
onClick: () => setConfig(cfg => addToPerspectiveFilter(cfg, parentDesignerId, columnName)),
|
||||||
setConfig(cfg => ({
|
|
||||||
...cfg,
|
|
||||||
nodes: cfg.nodes.map(n =>
|
|
||||||
n.designerId == parentDesignerId
|
|
||||||
? {
|
|
||||||
...n,
|
|
||||||
filters: {
|
|
||||||
...n.filters,
|
|
||||||
[columnName]: '',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
: n
|
|
||||||
),
|
|
||||||
})),
|
|
||||||
|
|
||||||
// setConfig(cfg => ({
|
// setConfig(cfg => ({
|
||||||
// ...cfg,
|
// ...cfg,
|
||||||
|
|||||||
Reference in New Issue
Block a user