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

@@ -1,5 +1,5 @@
<script lang="ts">
import { getFilterType } from 'dbgate-filterparser';
import { detectSqlFilterBehaviour, standardFilterBehaviours, mongoFilterBehaviour } from 'dbgate-tools';
import DataFilterControl from '../datagrid/DataFilterControl.svelte';
@@ -17,22 +17,20 @@
export let schemaName;
export let pureName;
export let useEvalFilters;
export let isDynamicStructure;
export let isFormView;
$: column = isFormView
? display.formColumns?.find(x => x.uniqueName == uniqueName)
: display?.findColumn(uniqueName);
$: column = isFormView ? display.formColumns?.find(x => x.uniqueName == uniqueName) : display?.findColumn(uniqueName);
function computeFilterType(column, isDynamicStructure, useEvalFilters) {
if (useEvalFilters) return 'eval';
if (isDynamicStructure) return 'mongo';
if (column) {
return column.filterType || getFilterType(column.dataType);
function computeFilterBehavoir(column, display, isDynamicStructure) {
if (display?.filterBehaviourOverride) {
return display?.filterBehaviourOverride;
}
return 'string';
const fromDriver = display?.driver?.getFilterBehaviour(column.dataType, standardFilterBehaviours);
if (fromDriver) return fromDriver;
if (isDynamicStructure) return mongoFilterBehaviour;
return detectSqlFilterBehaviour(column.dataType);
}
</script>
@@ -51,7 +49,7 @@
</InlineButton>
</div>
<DataFilterControl
filterType={computeFilterType(column, isDynamicStructure, useEvalFilters)}
filterBehaviour={computeFilterBehavoir(column, display, isDynamicStructure)}
filter={filters[uniqueName]}
setFilter={value => display.setFilter(uniqueName, value)}
{driver}

View File

@@ -20,7 +20,6 @@
export let pureName;
export let isDynamicStructure;
export let useEvalFilters;
export let isFormView;
export let hasMultiColumnFilter;
@@ -93,7 +92,6 @@
{#each allFilterNames as uniqueName}
<FormViewFilterColumn
{isDynamicStructure}
{useEvalFilters}
{isFormView}
{uniqueName}
{display}