diff --git a/packages/datalib/src/PerspectiveConfig.ts b/packages/datalib/src/PerspectiveConfig.ts index 0d8baad8d..aafebbcd2 100644 --- a/packages/datalib/src/PerspectiveConfig.ts +++ b/packages/datalib/src/PerspectiveConfig.ts @@ -1,3 +1,5 @@ +import { ForeignKeyInfo } from "dbgate-types"; + export interface PerspectiveConfigColumns { expandedColumns: string[]; checkedColumns: string[]; @@ -21,7 +23,9 @@ export interface PerspectiveCustomJoinConfig { export interface PerspectiveFilterColumnInfo { columnName: string; filterType: string; - tableName: string; + pureName: string; + schemaName: string; + foreignKey: ForeignKeyInfo; } export interface PerspectiveConfig extends PerspectiveConfigColumns { filters: { [uniqueName: string]: string }; diff --git a/packages/datalib/src/PerspectiveTreeNode.ts b/packages/datalib/src/PerspectiveTreeNode.ts index 06b6c8e42..6c7a0be6b 100644 --- a/packages/datalib/src/PerspectiveTreeNode.ts +++ b/packages/datalib/src/PerspectiveTreeNode.ts @@ -353,7 +353,9 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode { return { columnName: this.columnName, filterType: this.filterType, - tableName: this.column.pureName, + pureName: this.column.pureName, + schemaName: this.column.schemaName, + foreignKey: this.foreignKey, }; } diff --git a/packages/filterparser/src/filterTool.ts b/packages/filterparser/src/filterTool.ts index af50bf38b..552f37bfe 100644 --- a/packages/filterparser/src/filterTool.ts +++ b/packages/filterparser/src/filterTool.ts @@ -3,7 +3,7 @@ import moment from 'moment'; export type FilterMultipleValuesMode = 'is' | 'is_not' | 'contains' | 'begins' | 'ends'; -export function getFilterValueExpression(value, dataType) { +export function getFilterValueExpression(value, dataType?) { if (value == null) return 'NULL'; if (isTypeDateTime(dataType)) return moment(value).format('YYYY-MM-DD HH:mm:ss'); if (value === true) return 'TRUE'; diff --git a/packages/web/src/elements/ManagerInnerContainer.svelte b/packages/web/src/elements/ManagerInnerContainer.svelte index fba5bf99c..503a72f2b 100644 --- a/packages/web/src/elements/ManagerInnerContainer.svelte +++ b/packages/web/src/elements/ManagerInnerContainer.svelte @@ -1,6 +1,6 @@
diff --git a/packages/web/src/perspectives/PerspectiveFilters.svelte b/packages/web/src/perspectives/PerspectiveFilters.svelte index aa0dbb6e0..559649a16 100644 --- a/packages/web/src/perspectives/PerspectiveFilters.svelte +++ b/packages/web/src/perspectives/PerspectiveFilters.svelte @@ -4,13 +4,17 @@ import _ from 'lodash'; import ManagerInnerContainer from '../elements/ManagerInnerContainer.svelte'; -import FontIcon from '../icons/FontIcon.svelte'; + import FontIcon from '../icons/FontIcon.svelte'; import PerspectiveFiltersColumn from './PerspectiveFiltersColumn.svelte'; export let managerSize; export let config: PerspectiveConfig; export let setConfig: ChangePerspectiveConfigFunc; + export let conid; + export let database; + export let driver; + $: allFilterNames = _.keys(config.filterInfos || {}); @@ -25,6 +29,9 @@ import FontIcon from '../icons/FontIcon.svelte'; setConfig(cfg => ({ diff --git a/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte b/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte index c15a36183..a89cce50d 100644 --- a/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte +++ b/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte @@ -4,22 +4,39 @@ import ColumnLabel from '../elements/ColumnLabel.svelte'; import InlineButton from '../buttons/InlineButton.svelte'; import FontIcon from '../icons/FontIcon.svelte'; - import { getFilterType } from 'dbgate-filterparser'; + import { getFilterType, getFilterValueExpression } from 'dbgate-filterparser'; import { PerspectiveFilterColumnInfo } from 'dbgate-datalib'; + import { showModal } from '../modals/modalTools'; + import DictionaryLookupModal from '../modals/DictionaryLookupModal.svelte'; + import ValueLookupModal from '../modals/ValueLookupModal.svelte'; export let filterInfo: PerspectiveFilterColumnInfo; export let filter; export let onSetFilter; export let onRemoveFilter; + + export let conid; + export let database; + export let driver;
- {filterInfo.columnName} ({filterInfo.tableName}) + {filterInfo.columnName} ({filterInfo.pureName})
- +
diff --git a/packages/web/src/perspectives/PerspectiveView.svelte b/packages/web/src/perspectives/PerspectiveView.svelte index 088d7f72a..7093b6889 100644 --- a/packages/web/src/perspectives/PerspectiveView.svelte +++ b/packages/web/src/perspectives/PerspectiveView.svelte @@ -58,6 +58,7 @@ export let database; export let schemaName; export let pureName; + export let driver; export let config: PerspectiveConfig; export let setConfig: ChangePerspectiveConfigFunc; @@ -118,7 +119,7 @@ - +
diff --git a/packages/web/src/tabs/PerspectiveTab.svelte b/packages/web/src/tabs/PerspectiveTab.svelte index 3d45a0f1b..c23d2dda3 100644 --- a/packages/web/src/tabs/PerspectiveTab.svelte +++ b/packages/web/src/tabs/PerspectiveTab.svelte @@ -26,6 +26,9 @@ import createActivator, { getActiveComponent } from '../utility/createActivator'; import ToolStripContainer from '../buttons/ToolStripContainer.svelte'; import ToolStripCommandButton from '../buttons/ToolStripCommandButton.svelte'; + import { findEngineDriver } from 'dbgate-tools'; + import { useConnectionInfo } from '../utility/metadataLoaders'; + import { extensions } from '../stores'; export let tabid; export let conid; @@ -35,6 +38,9 @@ export const activator = createActivator('PerspectiveTab', true); + $: connection = useConnectionInfo({ conid }); + $: driver = findEngineDriver($connection, $extensions); + const config = usePerspectiveConfig(tabid); const cache = new PerspectiveCache(); const loadedCounts = writable({}); @@ -51,6 +57,7 @@ {database} {schemaName} {pureName} + {driver} config={$config} setConfig={(value, reload) => { if (reload) {