mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-22 11:06:02 +00:00
perspectives: parent filter switch in filters
This commit is contained in:
@@ -173,8 +173,8 @@ async function handleQueryData({ msgid, sql }, skipReadonlyCheck = false) {
|
|||||||
const driver = requireEngineDriver(storedConnection);
|
const driver = requireEngineDriver(storedConnection);
|
||||||
try {
|
try {
|
||||||
if (!skipReadonlyCheck) ensureExecuteCustomScript(driver);
|
if (!skipReadonlyCheck) ensureExecuteCustomScript(driver);
|
||||||
const res = await driver.query(systemConnection, sql);
|
|
||||||
// console.log(sql);
|
// console.log(sql);
|
||||||
|
const res = await driver.query(systemConnection, sql);
|
||||||
process.send({ msgtype: 'response', msgid, ...res });
|
process.send({ msgtype: 'response', msgid, ...res });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
process.send({ msgtype: 'response', msgid, errorMessage: err.message });
|
process.send({ msgtype: 'response', msgid, errorMessage: err.message });
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
export let database = null;
|
export let database = null;
|
||||||
export let driver = null;
|
export let driver = null;
|
||||||
export let jslid = null;
|
export let jslid = null;
|
||||||
|
export let customCommandIcon = null;
|
||||||
|
export let onCustomCommand = null;
|
||||||
|
|
||||||
export let pureName = null;
|
export let pureName = null;
|
||||||
export let schemaName = null;
|
export let schemaName = null;
|
||||||
@@ -295,6 +297,11 @@
|
|||||||
class:isOk
|
class:isOk
|
||||||
placeholder="Filter"
|
placeholder="Filter"
|
||||||
/>
|
/>
|
||||||
|
{#if customCommandIcon && onCustomCommand}
|
||||||
|
<InlineButton on:click={onCustomCommand} narrow square>
|
||||||
|
<FontIcon icon={customCommandIcon} />
|
||||||
|
</InlineButton>
|
||||||
|
{/if}
|
||||||
{#if conid && database && driver}
|
{#if conid && database && driver}
|
||||||
{#if driver?.databaseEngineTypes?.includes('sql') && foreignKey}
|
{#if driver?.databaseEngineTypes?.includes('sql') && foreignKey}
|
||||||
<InlineButton on:click={handleShowDictionary} narrow square>
|
<InlineButton on:click={handleShowDictionary} narrow square>
|
||||||
|
|||||||
@@ -36,6 +36,9 @@
|
|||||||
{conid}
|
{conid}
|
||||||
{database}
|
{database}
|
||||||
{driver}
|
{driver}
|
||||||
|
{node}
|
||||||
|
{config}
|
||||||
|
{setConfig}
|
||||||
filter={config.filters[uniqueName]}
|
filter={config.filters[uniqueName]}
|
||||||
onSetFilter={value =>
|
onSetFilter={value =>
|
||||||
setConfig(cfg => ({
|
setConfig(cfg => ({
|
||||||
|
|||||||
@@ -5,7 +5,12 @@
|
|||||||
import InlineButton from '../buttons/InlineButton.svelte';
|
import InlineButton from '../buttons/InlineButton.svelte';
|
||||||
import FontIcon from '../icons/FontIcon.svelte';
|
import FontIcon from '../icons/FontIcon.svelte';
|
||||||
import { getFilterType, getFilterValueExpression } from 'dbgate-filterparser';
|
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 { showModal } from '../modals/modalTools';
|
||||||
import DictionaryLookupModal from '../modals/DictionaryLookupModal.svelte';
|
import DictionaryLookupModal from '../modals/DictionaryLookupModal.svelte';
|
||||||
import ValueLookupModal from '../modals/ValueLookupModal.svelte';
|
import ValueLookupModal from '../modals/ValueLookupModal.svelte';
|
||||||
@@ -19,6 +24,39 @@
|
|||||||
export let conid;
|
export let conid;
|
||||||
export let database;
|
export let database;
|
||||||
export let driver;
|
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>
|
</script>
|
||||||
|
|
||||||
<div class="m-1">
|
<div class="m-1">
|
||||||
@@ -38,5 +76,7 @@
|
|||||||
columnName={filterInfo.columnName}
|
columnName={filterInfo.columnName}
|
||||||
pureName={filterInfo.pureName}
|
pureName={filterInfo.pureName}
|
||||||
foreignKey={filterInfo.foreignKey}
|
foreignKey={filterInfo.foreignKey}
|
||||||
|
{customCommandIcon}
|
||||||
|
onCustomCommand={customCommandIcon ? changeParentFilter : null}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -212,7 +212,6 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('tableNode?.supportsParentFilter', tableNode?.supportsParentFilter);
|
|
||||||
if (tableNode?.supportsParentFilter) {
|
if (tableNode?.supportsParentFilter) {
|
||||||
const isParentFilter = (config.parentFilters || []).find(x => x.uniqueName == tableNode.uniqueName);
|
const isParentFilter = (config.parentFilters || []).find(x => x.uniqueName == tableNode.uniqueName);
|
||||||
if (isParentFilter) {
|
if (isParentFilter) {
|
||||||
|
|||||||
Reference in New Issue
Block a user