Allow disable/re-enable multicolumn filter #1174

This commit is contained in:
Stela Augustinova
2025-10-22 14:20:23 +02:00
parent da52dd006b
commit 18dc6a3ff5
3 changed files with 25 additions and 1 deletions

View File

@@ -32,6 +32,7 @@ export interface GridConfig extends GridConfigColumns {
multiColumnFilter?: string; multiColumnFilter?: string;
searchInColumns?: string; searchInColumns?: string;
disabledFilterColumns: string[]; disabledFilterColumns: string[];
disabledMultiColumnFilter?: boolean;
} }
export interface GridCache { export interface GridCache {

View File

@@ -260,7 +260,7 @@ export abstract class GridDisplay {
} }
} }
if (this.baseTableOrView && this.config.multiColumnFilter) { if (this.baseTableOrView && this.config.multiColumnFilter && !this.isMultiColumnFilterDisabled()) {
const orCondition: CompoudCondition = { const orCondition: CompoudCondition = {
conditionType: 'or', conditionType: 'or',
conditions: [], conditions: [],
@@ -427,6 +427,7 @@ export abstract class GridDisplay {
...cfg, ...cfg,
multiColumnFilter: value, multiColumnFilter: value,
formViewRecordNumber: 0, formViewRecordNumber: 0,
disabledMultiColumnFilter: false,
})); }));
this.reload(); this.reload();
} }
@@ -485,6 +486,18 @@ export abstract class GridDisplay {
return this.config.disabledFilterColumns.includes(uniqueName); return this.config.disabledFilterColumns.includes(uniqueName);
} }
toggleMultiColumnFilterEnabled() {
this.setConfig(cfg => ({
...cfg,
disabledMultiColumnFilter: !cfg.disabledMultiColumnFilter,
}));
this.reload();
}
isMultiColumnFilterDisabled() {
return this.config.disabledMultiColumnFilter;
}
setSort(uniqueName, order) { setSort(uniqueName, order) {
this.setConfig(cfg => ({ this.setConfig(cfg => ({
...cfg, ...cfg,

View File

@@ -8,6 +8,7 @@
import keycodes from '../utility/keycodes'; import keycodes from '../utility/keycodes';
import FormViewFilterColumn from './FormViewFilterColumn.svelte'; import FormViewFilterColumn from './FormViewFilterColumn.svelte';
import { stringFilterBehaviour } from 'dbgate-tools'; import { stringFilterBehaviour } from 'dbgate-tools';
import CheckboxField from '../forms/CheckboxField.svelte';
// import PrimaryKeyFilterEditor from './PrimaryKeyFilterEditor.svelte'; // import PrimaryKeyFilterEditor from './PrimaryKeyFilterEditor.svelte';
export let managerSize; export let managerSize;
@@ -64,6 +65,13 @@
<div class="space-between"> <div class="space-between">
<span>Multi column filter</span> <span>Multi column filter</span>
{#if multiColumnFilter} {#if multiColumnFilter}
<div class="flex items-center gap-2">
<CheckboxField
checked={!display.isMultiColumnFilterDisabled()}
on:change={() => {
display.toggleMultiColumnFilterEnabled();
}}
/>
<InlineButton <InlineButton
square square
narrow narrow
@@ -73,6 +81,7 @@
> >
<FontIcon icon="icon close" /> <FontIcon icon="icon close" />
</InlineButton> </InlineButton>
</div>
{/if} {/if}
</div> </div>
@@ -85,6 +94,7 @@
{database} {database}
{schemaName} {schemaName}
{pureName} {pureName}
filterDisabled={display.isMultiColumnFilterDisabled()}
/> />
</div> </div>
{/if} {/if}