From f010e7c934ac1130bcf23d0cb9c09672b8e69ec4 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Sat, 20 Nov 2021 11:50:59 +0100 Subject: [PATCH] filter lookups improvements --- packages/filterparser/src/filterTool.ts | 2 ++ packages/sqltree/src/dumpSqlCommand.ts | 6 +++--- packages/web/src/datagrid/DataFilterControl.svelte | 3 ++- packages/web/src/modals/ValueLookupModal.svelte | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/filterparser/src/filterTool.ts b/packages/filterparser/src/filterTool.ts index af91fefc5..416850641 100644 --- a/packages/filterparser/src/filterTool.ts +++ b/packages/filterparser/src/filterTool.ts @@ -6,6 +6,8 @@ export type FilterMultipleValuesMode = 'is' | 'is_not' | 'contains' | 'begins' | 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'; + if (value === false) return 'FALSE'; return `="${value}"`; } diff --git a/packages/sqltree/src/dumpSqlCommand.ts b/packages/sqltree/src/dumpSqlCommand.ts index d8a1dbccf..ea7fa3aba 100644 --- a/packages/sqltree/src/dumpSqlCommand.ts +++ b/packages/sqltree/src/dumpSqlCommand.ts @@ -6,12 +6,12 @@ import { dumpSqlCondition } from './dumpSqlCondition'; export function dumpSqlSelect(dmp: SqlDumper, cmd: Select) { dmp.put('^select '); - if (cmd.topRecords) { - if (!dmp.dialect.rangeSelect || dmp.dialect.offsetFetchRangeSyntax) dmp.put('^top %s ', cmd.topRecords); - } if (cmd.distinct) { dmp.put('^distinct '); } + if (cmd.topRecords) { + if (!dmp.dialect.rangeSelect || dmp.dialect.offsetFetchRangeSyntax) dmp.put('^top %s ', cmd.topRecords); + } if (cmd.selectAll) { dmp.put('* '); } diff --git a/packages/web/src/datagrid/DataFilterControl.svelte b/packages/web/src/datagrid/DataFilterControl.svelte index cd7269500..026050616 100644 --- a/packages/web/src/datagrid/DataFilterControl.svelte +++ b/packages/web/src/datagrid/DataFilterControl.svelte @@ -6,6 +6,7 @@ import splitterDrag from '../utility/splitterDrag'; import FilterMultipleValuesModal from '../modals/FilterMultipleValuesModal.svelte'; + import { getFilterValueExpression } from 'dbgate-filterparser'; import { showModal } from '../modals/modalTools'; import SetFilterModal from '../modals/SetFilterModal.svelte'; @@ -223,7 +224,7 @@ schemaName, pureName, columnName, - onConfirm: keys => setFilter(keys.map(x => `'${x}'`).join(',')), + onConfirm: keys => setFilter(keys.map(x => getFilterValueExpression(x)).join(',')), }); } diff --git a/packages/web/src/modals/ValueLookupModal.svelte b/packages/web/src/modals/ValueLookupModal.svelte index 6d34d842b..7a2a2faba 100644 --- a/packages/web/src/modals/ValueLookupModal.svelte +++ b/packages/web/src/modals/ValueLookupModal.svelte @@ -151,7 +151,7 @@ { fieldName: 'value', header: 'Value', - formatter: row => row[columnName], + formatter: row => (row[columnName] == null ? '(NULL)' : row[columnName]), }, ]} >