diff --git a/packages/datalib/src/GridConfig.ts b/packages/datalib/src/GridConfig.ts index c12a0c2ea..647b2b307 100644 --- a/packages/datalib/src/GridConfig.ts +++ b/packages/datalib/src/GridConfig.ts @@ -32,6 +32,7 @@ export interface GridConfig extends GridConfigColumns { multiColumnFilter?: string; searchInColumns?: string; disabledFilterColumns: string[]; + disabledMultiColumnFilter?: boolean; } export interface GridCache { diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts index a8dd11bf8..1386efaf5 100644 --- a/packages/datalib/src/GridDisplay.ts +++ b/packages/datalib/src/GridDisplay.ts @@ -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 = { conditionType: 'or', conditions: [], @@ -427,6 +427,7 @@ export abstract class GridDisplay { ...cfg, multiColumnFilter: value, formViewRecordNumber: 0, + disabledMultiColumnFilter: false, })); this.reload(); } @@ -485,6 +486,18 @@ export abstract class GridDisplay { return this.config.disabledFilterColumns.includes(uniqueName); } + toggleMultiColumnFilterEnabled() { + this.setConfig(cfg => ({ + ...cfg, + disabledMultiColumnFilter: !cfg.disabledMultiColumnFilter, + })); + this.reload(); + } + + isMultiColumnFilterDisabled() { + return this.config.disabledMultiColumnFilter; + } + setSort(uniqueName, order) { this.setConfig(cfg => ({ ...cfg, diff --git a/packages/web/src/formview/FormViewFilters.svelte b/packages/web/src/formview/FormViewFilters.svelte index deab9bc4c..d4093ef8f 100644 --- a/packages/web/src/formview/FormViewFilters.svelte +++ b/packages/web/src/formview/FormViewFilters.svelte @@ -8,6 +8,7 @@ import keycodes from '../utility/keycodes'; import FormViewFilterColumn from './FormViewFilterColumn.svelte'; import { stringFilterBehaviour } from 'dbgate-tools'; + import CheckboxField from '../forms/CheckboxField.svelte'; // import PrimaryKeyFilterEditor from './PrimaryKeyFilterEditor.svelte'; export let managerSize; @@ -64,6 +65,13 @@