perspectives: parent filter switch in filters

This commit is contained in:
Jan Prochazka
2022-08-07 19:30:00 +02:00
parent 339588b8a0
commit cb1d81b586
5 changed files with 52 additions and 3 deletions

View File

@@ -30,6 +30,8 @@
export let database = null;
export let driver = null;
export let jslid = null;
export let customCommandIcon = null;
export let onCustomCommand = null;
export let pureName = null;
export let schemaName = null;
@@ -295,6 +297,11 @@
class:isOk
placeholder="Filter"
/>
{#if customCommandIcon && onCustomCommand}
<InlineButton on:click={onCustomCommand} narrow square>
<FontIcon icon={customCommandIcon} />
</InlineButton>
{/if}
{#if conid && database && driver}
{#if driver?.databaseEngineTypes?.includes('sql') && foreignKey}
<InlineButton on:click={handleShowDictionary} narrow square>

View File

@@ -36,6 +36,9 @@
{conid}
{database}
{driver}
{node}
{config}
{setConfig}
filter={config.filters[uniqueName]}
onSetFilter={value =>
setConfig(cfg => ({

View File

@@ -5,7 +5,12 @@
import InlineButton from '../buttons/InlineButton.svelte';
import FontIcon from '../icons/FontIcon.svelte';
import { getFilterType, getFilterValueExpression } from 'dbgate-filterparser';
import { PerspectiveFilterColumnInfo } from 'dbgate-datalib';
import {
ChangePerspectiveConfigFunc,
PerspectiveConfig,
PerspectiveFilterColumnInfo,
PerspectiveTreeNode,
} from 'dbgate-datalib';
import { showModal } from '../modals/modalTools';
import DictionaryLookupModal from '../modals/DictionaryLookupModal.svelte';
import ValueLookupModal from '../modals/ValueLookupModal.svelte';
@@ -19,6 +24,39 @@
export let conid;
export let database;
export let driver;
export let config: PerspectiveConfig;
export let setConfig: ChangePerspectiveConfigFunc;
export let node: PerspectiveTreeNode;
$: customCommandIcon = node?.parentNode?.supportsParentFilter
? node?.parentNode?.isParentFilter
? 'icon parent-filter'
: 'icon parent-filter-outline'
: null;
function changeParentFilter() {
const tableNode = node?.parentNode;
if (!tableNode) return;
if (tableNode.isParentFilter) {
setConfig(
cfg => ({
...cfg,
parentFilters: cfg.parentFilters.filter(x => x.uniqueName != tableNode.uniqueName),
}),
true
);
} else {
setConfig(
cfg => ({
...cfg,
parentFilters: [...(cfg.parentFilters || []), { uniqueName: tableNode.uniqueName }],
}),
true
);
}
}
</script>
<div class="m-1">
@@ -38,5 +76,7 @@
columnName={filterInfo.columnName}
pureName={filterInfo.pureName}
foreignKey={filterInfo.foreignKey}
{customCommandIcon}
onCustomCommand={customCommandIcon ? changeParentFilter : null}
/>
</div>

View File

@@ -212,7 +212,6 @@
});
}
console.log('tableNode?.supportsParentFilter', tableNode?.supportsParentFilter);
if (tableNode?.supportsParentFilter) {
const isParentFilter = (config.parentFilters || []).find(x => x.uniqueName == tableNode.uniqueName);
if (isParentFilter) {