diff --git a/packages/web/src/perspectives/PerspectiveFilters.svelte b/packages/web/src/perspectives/PerspectiveFilters.svelte
index 682428abb..184d1dda5 100644
--- a/packages/web/src/perspectives/PerspectiveFilters.svelte
+++ b/packages/web/src/perspectives/PerspectiveFilters.svelte
@@ -36,6 +36,9 @@
{conid}
{database}
{driver}
+ {node}
+ {config}
+ {setConfig}
filter={config.filters[uniqueName]}
onSetFilter={value =>
setConfig(cfg => ({
diff --git a/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte b/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte
index a89cce50d..644fea366 100644
--- a/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte
+++ b/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte
@@ -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
+ );
+ }
+ }
@@ -38,5 +76,7 @@
columnName={filterInfo.columnName}
pureName={filterInfo.pureName}
foreignKey={filterInfo.foreignKey}
+ {customCommandIcon}
+ onCustomCommand={customCommandIcon ? changeParentFilter : null}
/>
diff --git a/packages/web/src/perspectives/PerspectiveTable.svelte b/packages/web/src/perspectives/PerspectiveTable.svelte
index dbb33496d..4b7000904 100644
--- a/packages/web/src/perspectives/PerspectiveTable.svelte
+++ b/packages/web/src/perspectives/PerspectiveTable.svelte
@@ -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) {