mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 14:46:01 +00:00
perspectives: parent filter switch in filters
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
{conid}
|
||||
{database}
|
||||
{driver}
|
||||
{node}
|
||||
{config}
|
||||
{setConfig}
|
||||
filter={config.filters[uniqueName]}
|
||||
onSetFilter={value =>
|
||||
setConfig(cfg => ({
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user