filter behaviour WIP

This commit is contained in:
Jan Prochazka
2024-08-19 12:49:26 +02:00
parent 2a48e0c4a0
commit c3609e8c7b
24 changed files with 105 additions and 76 deletions

View File

@@ -10,7 +10,7 @@ import {
referenceIsConnecting,
mergeSelectsFromDesigner,
findQuerySource,
findDesignerFilterType,
findDesignerFilterBehaviour,
} from './designerTools';
import { parseFilter } from 'dbgate-filterparser';
@@ -83,7 +83,7 @@ export class DesignerQueryDumper {
}
try {
const condition = parseFilter(column[filterField], findDesignerFilterType(column, this.designer));
const condition = parseFilter(column[filterField], findDesignerFilterBehaviour(column, this.designer));
if (condition) {
conditions.push(
_.cloneDeepWith(condition, expr => {

View File

@@ -1,6 +1,6 @@
<script lang="ts">
import { presetDarkPalettes, presetPalettes } from '@ant-design/colors';
import { filterName } from 'dbgate-tools';
import { filterName, stringFilterBehaviour } from 'dbgate-tools';
import { tick } from 'svelte';
import { createDatabaseObjectMenu } from '../appobj/DatabaseObjectAppObject.svelte';
@@ -303,7 +303,7 @@
</div>
{#if settings?.getMutliColumnFilter && settings?.setMutliColumnFilter}
<DataFilterControl
filterType="string"
filterBehaviour={stringFilterBehaviour}
filter={settings?.getMutliColumnFilter(designerId)}
setFilter={value => settings?.setMutliColumnFilter(designerId, value)}
placeholder="Data filter"

View File

@@ -5,7 +5,7 @@ import type { EngineDriver } from 'dbgate-types';
import type { DesignerInfo, DesignerTableInfo, DesignerReferenceInfo, DesignerJoinType } from './types';
import { DesignerComponentCreator } from './DesignerComponentCreator';
import { DesignerQueryDumper } from './DesignerQueryDumper';
import { getFilterType } from 'dbgate-filterparser';
import { detectSqlFilterBehaviour } from 'dbgate-tools';
export function referenceIsConnecting(
reference: DesignerReferenceInfo,
@@ -133,13 +133,13 @@ export function isConnectedByReference(
return array1 == array2;
}
export function findDesignerFilterType({ designerId, columnName }, designer) {
export function findDesignerFilterBehaviour({ designerId, columnName }, designer) {
const table = (designer.tables || []).find(x => x.designerId == designerId);
if (table) {
const column = (table.columns || []).find(x => x.columnName == columnName);
if (column) {
const { dataType } = column;
return getFilterType(dataType);
return detectSqlFilterBehaviour(dataType);
}
}
return 'string';