@zengrid/core 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +10897 -8362
- package/dist/index.esm.js +10898 -8363
- package/dist/package.json +5 -2
- package/dist/src/data/data-accessor/array-accessor.d.ts.map +1 -1
- package/dist/src/data/data-manager.d.ts +5 -7
- package/dist/src/data/data-manager.d.ts.map +1 -1
- package/dist/src/datetime-core/popup/popup-manager.d.ts +4 -12
- package/dist/src/datetime-core/popup/popup-manager.d.ts.map +1 -1
- package/dist/src/events/grid-events.d.ts +3 -0
- package/dist/src/events/grid-events.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-ast-compiler.d.ts +30 -0
- package/dist/src/features/filtering/filter-ast-compiler.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-ast.d.ts +39 -0
- package/dist/src/features/filtering/filter-ast.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-export-manager.d.ts +0 -8
- package/dist/src/features/filtering/filter-export-manager.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-expression.d.ts +15 -0
- package/dist/src/features/filtering/filter-expression.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-manager/filter-core.d.ts +63 -11
- package/dist/src/features/filtering/filter-manager/filter-core.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-manager/filter-export.d.ts +3 -49
- package/dist/src/features/filtering/filter-manager/filter-export.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-manager/filter-optimizer.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-manager/filter-query.d.ts +14 -48
- package/dist/src/features/filtering/filter-manager/filter-query.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-manager/index.d.ts +11 -129
- package/dist/src/features/filtering/filter-manager/index.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-manager/types.d.ts +0 -11
- package/dist/src/features/filtering/filter-manager/types.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-query-parser.d.ts +10 -50
- package/dist/src/features/filtering/filter-query-parser.d.ts.map +1 -1
- package/dist/src/features/filtering/index.d.ts +3 -0
- package/dist/src/features/filtering/index.d.ts.map +1 -1
- package/dist/src/features/query/query-state.d.ts +12 -0
- package/dist/src/features/query/query-state.d.ts.map +1 -0
- package/dist/src/features/sorting/sort-manager.d.ts +9 -23
- package/dist/src/features/sorting/sort-manager.d.ts.map +1 -1
- package/dist/src/features/sorting/sort-request.d.ts +5 -0
- package/dist/src/features/sorting/sort-request.d.ts.map +1 -0
- package/dist/src/grid/api/filter-api.d.ts +7 -3
- package/dist/src/grid/api/filter-api.d.ts.map +1 -1
- package/dist/src/grid/api/sort-api.d.ts.map +1 -1
- package/dist/src/grid/filter-ui.d.ts +34 -5
- package/dist/src/grid/filter-ui.d.ts.map +1 -1
- package/dist/src/grid/grid-core.d.ts +12 -3
- package/dist/src/grid/grid-core.d.ts.map +1 -1
- package/dist/src/grid/grid-setup.d.ts.map +1 -1
- package/dist/src/overlay/index.d.ts +2 -0
- package/dist/src/overlay/index.d.ts.map +1 -0
- package/dist/src/overlay/overlay-manager.d.ts +46 -0
- package/dist/src/overlay/overlay-manager.d.ts.map +1 -0
- package/dist/src/plugins/async-filter-plugin.d.ts.map +1 -1
- package/dist/src/plugins/data-plugin.d.ts +14 -0
- package/dist/src/plugins/data-plugin.d.ts.map +1 -0
- package/dist/src/plugins/filter-plugin.d.ts +1 -1
- package/dist/src/plugins/filter-plugin.d.ts.map +1 -1
- package/dist/src/plugins/filter-ui/filter-ui-plugin.d.ts +1 -0
- package/dist/src/plugins/filter-ui/filter-ui-plugin.d.ts.map +1 -1
- package/dist/src/plugins/header/header-render-params.d.ts.map +1 -1
- package/dist/src/plugins/index.d.ts +2 -0
- package/dist/src/plugins/index.d.ts.map +1 -1
- package/dist/src/plugins/lifecycle/lifecycle-plugin.d.ts +3 -0
- package/dist/src/plugins/lifecycle/lifecycle-plugin.d.ts.map +1 -1
- package/dist/src/plugins/sort-plugin.d.ts +3 -2
- package/dist/src/plugins/sort-plugin.d.ts.map +1 -1
- package/dist/src/rendering/headers/renderers/sortable-header-renderer.d.ts +4 -1
- package/dist/src/rendering/headers/renderers/sortable-header-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/button/button-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/chip/chip-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/dropdown/dropdown-dom.d.ts +1 -1
- package/dist/src/rendering/renderers/dropdown/dropdown-dom.d.ts.map +1 -1
- package/dist/src/rendering/renderers/dropdown/dropdown-events.d.ts.map +1 -1
- package/dist/src/rendering/renderers/dropdown/dropdown-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/dropdown/dropdown-state.d.ts +10 -6
- package/dist/src/rendering/renderers/dropdown/dropdown-state.d.ts.map +1 -1
- package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts.map +1 -1
- package/dist/src/styles.css +93 -4
- package/dist/src/types/data.d.ts +34 -60
- package/dist/src/types/data.d.ts.map +1 -1
- package/dist/src/types/filter.d.ts +107 -35
- package/dist/src/types/filter.d.ts.map +1 -1
- package/dist/src/types/grid.d.ts +1 -46
- package/dist/src/types/grid.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +1 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/query.d.ts +64 -0
- package/dist/src/types/query.d.ts.map +1 -0
- package/dist/src/types/sort.d.ts +9 -6
- package/dist/src/types/sort.d.ts.map +1 -1
- package/package.json +8 -5
|
@@ -1,67 +1,11 @@
|
|
|
1
|
-
import type { FilterModel, FilterQuery, FilterExpression, ColumnDef } from '../../../types';
|
|
2
1
|
import type { ColumnType } from '@zengrid/shared';
|
|
3
|
-
import type {
|
|
2
|
+
import type { ColumnDef, FilterAst, FilterExpression, FilterModel, FilterQuery } from '../../../types';
|
|
4
3
|
import type { FilterExportResult } from '../adapters/types';
|
|
5
|
-
import type { FilterManagerOptions } from './types';
|
|
6
4
|
import type { ColumnFilter } from '../column-filter';
|
|
5
|
+
import type { FieldFilterState } from '../types';
|
|
6
|
+
import type { FilterManagerOptions } from './types';
|
|
7
7
|
/**
|
|
8
|
-
* FilterManager - Manages filtering across all columns
|
|
9
|
-
*
|
|
10
|
-
* Supports both frontend and backend filtering with two input formats:
|
|
11
|
-
* 1. FilterModel[] - Traditional structured filters
|
|
12
|
-
* 2. FilterQuery - SQL-like queries with parameterization
|
|
13
|
-
*
|
|
14
|
-
* @example Traditional Filtering
|
|
15
|
-
* ```typescript
|
|
16
|
-
* const filterManager = new FilterManager({
|
|
17
|
-
* colCount: 10,
|
|
18
|
-
* getValue: (row, col) => data[row][col],
|
|
19
|
-
* mode: 'frontend'
|
|
20
|
-
* });
|
|
21
|
-
*
|
|
22
|
-
* // Add filter for column 0
|
|
23
|
-
* filterManager.setColumnFilter(0, [
|
|
24
|
-
* { operator: 'greaterThan', value: 100 },
|
|
25
|
-
* ]);
|
|
26
|
-
*
|
|
27
|
-
* // Test if row passes all filters
|
|
28
|
-
* const passes = filterManager.testRow(5);
|
|
29
|
-
*
|
|
30
|
-
* // Get visible row indices
|
|
31
|
-
* const visible = filterManager.getVisibleRows(1000);
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* @example SQL-like Filtering
|
|
35
|
-
* ```typescript
|
|
36
|
-
* const filterManager = new FilterManager({
|
|
37
|
-
* colCount: 10,
|
|
38
|
-
* getValue: (row, col) => data[row][col],
|
|
39
|
-
* mode: 'frontend',
|
|
40
|
-
* columnNames: ['id', 'name', 'age', 'status']
|
|
41
|
-
* });
|
|
42
|
-
*
|
|
43
|
-
* // Apply SQL-like filter
|
|
44
|
-
* await filterManager.applyFilter({
|
|
45
|
-
* sql: "age > :minAge AND status = :status",
|
|
46
|
-
* params: { minAge: 18, status: 'active' }
|
|
47
|
-
* });
|
|
48
|
-
* ```
|
|
49
|
-
*
|
|
50
|
-
* @example Backend Filtering
|
|
51
|
-
* ```typescript
|
|
52
|
-
* const filterManager = new FilterManager({
|
|
53
|
-
* colCount: 10,
|
|
54
|
-
* getValue: (row, col) => data[row][col],
|
|
55
|
-
* mode: 'backend',
|
|
56
|
-
* onFilterRequest: async (filter) => {
|
|
57
|
-
* const data = await api.get('/data', {
|
|
58
|
-
* filter: filter.sql,
|
|
59
|
-
* params: filter.params
|
|
60
|
-
* });
|
|
61
|
-
* grid.setData(data);
|
|
62
|
-
* }
|
|
63
|
-
* });
|
|
64
|
-
* ```
|
|
8
|
+
* FilterManager - Manages filtering across all columns.
|
|
65
9
|
*/
|
|
66
10
|
export declare class FilterManager {
|
|
67
11
|
private core;
|
|
@@ -69,90 +13,37 @@ export declare class FilterManager {
|
|
|
69
13
|
private exporter;
|
|
70
14
|
private optimizer;
|
|
71
15
|
constructor(options: FilterManagerOptions);
|
|
72
|
-
/**
|
|
73
|
-
* Set filter for a column
|
|
74
|
-
*/
|
|
75
16
|
setColumnFilter(column: number, conditions: any[], logic?: 'AND' | 'OR'): void;
|
|
76
|
-
/**
|
|
77
|
-
* Clear filter for a column
|
|
78
|
-
*/
|
|
79
17
|
clearColumnFilter(column: number): void;
|
|
80
|
-
/**
|
|
81
|
-
* Clear all filters
|
|
82
|
-
*/
|
|
83
18
|
clearAll(): void;
|
|
84
|
-
/**
|
|
85
|
-
* Test if a row passes all filters
|
|
86
|
-
*/
|
|
87
19
|
testRow(row: number): boolean;
|
|
88
|
-
/**
|
|
89
|
-
* Get all visible row indices
|
|
90
|
-
*/
|
|
91
20
|
getVisibleRows(rowCount: number): number[];
|
|
92
|
-
/**
|
|
93
|
-
* Get filter statistics
|
|
94
|
-
*/
|
|
95
21
|
getStats(rowCount: number): {
|
|
96
22
|
totalRows: number;
|
|
97
23
|
visibleRows: number;
|
|
98
24
|
hiddenRows: number;
|
|
99
25
|
activeFilters: number;
|
|
100
26
|
};
|
|
101
|
-
/**
|
|
102
|
-
* Get current filter state
|
|
103
|
-
*/
|
|
104
27
|
getFilterState(): FilterModel[];
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
28
|
+
setFilterState(models: FilterModel[]): void;
|
|
29
|
+
getFilterAst(): FilterAst | null;
|
|
30
|
+
getAstProjectionWarnings(): string[];
|
|
31
|
+
getAstExecutionWarnings(): string[];
|
|
108
32
|
hasActiveFilters(): boolean;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
33
|
+
hasStructuredFilters(): boolean;
|
|
34
|
+
isUsingAstExecution(): boolean;
|
|
35
|
+
hasUnexecutableFilters(): boolean;
|
|
112
36
|
getColumnFilter(column: number): ColumnFilter | undefined;
|
|
113
|
-
/**
|
|
114
|
-
* Apply filter using SQL-like query or FilterModels
|
|
115
|
-
*/
|
|
116
37
|
applyFilter(filter: FilterQuery | FilterModel[] | null): Promise<void>;
|
|
117
|
-
/**
|
|
118
|
-
* Get current filter expression
|
|
119
|
-
*/
|
|
120
38
|
getCurrentExpression(): FilterExpression | null;
|
|
121
|
-
/**
|
|
122
|
-
* Update column names (for SQL query mapping)
|
|
123
|
-
*/
|
|
124
39
|
setColumnNames(names: string[]): void;
|
|
125
|
-
/**
|
|
126
|
-
* Get current filter state in field-based format
|
|
127
|
-
*/
|
|
128
40
|
getFieldFilterState(): FieldFilterState | null;
|
|
129
|
-
/**
|
|
130
|
-
* Get filter export in all formats (REST, GraphQL, SQL)
|
|
131
|
-
*/
|
|
132
41
|
getFilterExport(): FilterExportResult | null;
|
|
133
|
-
/**
|
|
134
|
-
* Get filter export in specific format
|
|
135
|
-
*/
|
|
136
42
|
getFilterExportAs<T>(format: string): T | null;
|
|
137
|
-
/**
|
|
138
|
-
* Set filter from field-based format
|
|
139
|
-
*/
|
|
140
43
|
setFieldFilter(state: FieldFilterState): void;
|
|
141
|
-
/**
|
|
142
|
-
* Update columns (for export manager)
|
|
143
|
-
*/
|
|
144
44
|
setColumns(columns: ColumnDef[]): void;
|
|
145
|
-
/**
|
|
146
|
-
* Set data version (invalidates cache)
|
|
147
|
-
*/
|
|
148
45
|
setDataVersion(version: number): void;
|
|
149
|
-
/**
|
|
150
|
-
* Index a column for optimized filtering
|
|
151
|
-
*/
|
|
152
46
|
indexColumn(col: number, rowCount: number, type?: ColumnType): void;
|
|
153
|
-
/**
|
|
154
|
-
* Get cache statistics
|
|
155
|
-
*/
|
|
156
47
|
getCacheStats(): {
|
|
157
48
|
hitCount: number;
|
|
158
49
|
missCount: number;
|
|
@@ -160,22 +51,13 @@ export declare class FilterManager {
|
|
|
160
51
|
size: number;
|
|
161
52
|
capacity: number;
|
|
162
53
|
} | null;
|
|
163
|
-
/**
|
|
164
|
-
* Get index memory statistics
|
|
165
|
-
*/
|
|
166
54
|
getIndexMemoryStats(): {
|
|
167
55
|
usedMB: number;
|
|
168
56
|
limitMB: number;
|
|
169
57
|
utilizationPercent: number;
|
|
170
58
|
indexedColumns: number;
|
|
171
59
|
} | null;
|
|
172
|
-
/**
|
|
173
|
-
* Clear all caches and indexes
|
|
174
|
-
*/
|
|
175
60
|
clearOptimizations(): void;
|
|
176
|
-
/**
|
|
177
|
-
* Destroy filter manager
|
|
178
|
-
*/
|
|
179
61
|
destroy(): void;
|
|
180
62
|
}
|
|
181
63
|
export type { FilterManagerOptions } from './types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/filtering/filter-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/filtering/filter-manager/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { FilterModel, ColumnDef } from '../../../types';
|
|
2
|
-
import type { OperationMode } from '@zengrid/shared';
|
|
3
2
|
import type { EventEmitter } from '../../../events/event-emitter';
|
|
4
3
|
import type { GridEvents } from '../../../events/grid-events';
|
|
5
4
|
import type { FilterExportManagerOptions } from '../filter-export-manager';
|
|
@@ -23,20 +22,10 @@ export interface FilterManagerOptions {
|
|
|
23
22
|
* Initial filter models
|
|
24
23
|
*/
|
|
25
24
|
initialFilters?: FilterModel[];
|
|
26
|
-
/**
|
|
27
|
-
* Filter mode: frontend, backend, or auto
|
|
28
|
-
* @default 'frontend'
|
|
29
|
-
*/
|
|
30
|
-
mode?: OperationMode;
|
|
31
25
|
/**
|
|
32
26
|
* Column names for SQL query field mapping
|
|
33
27
|
*/
|
|
34
28
|
columnNames?: string[];
|
|
35
|
-
/**
|
|
36
|
-
* Backend filtering callback
|
|
37
|
-
* Called when mode is 'backend' or 'auto' (with callback present)
|
|
38
|
-
*/
|
|
39
|
-
onFilterRequest?: (filter: any) => Promise<void> | void;
|
|
40
29
|
/**
|
|
41
30
|
* Column definitions (for field-based filtering)
|
|
42
31
|
* Required for FilterExportManager
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/filtering/filter-manager/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/filtering/filter-manager/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAE5C;;OAEG;IACH,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC;IAE/B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEnD;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -1,69 +1,29 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FilterExpression, FilterModel, FilterQuery } from '../../types';
|
|
2
2
|
/**
|
|
3
3
|
* FilterQueryParser - Parses SQL-like filter queries
|
|
4
4
|
*
|
|
5
|
-
* Converts SQL-like syntax to FilterExpression for both backend and frontend use
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* - Comparison: =, !=, <, >, <=, >=
|
|
9
|
-
* - String: LIKE, NOT LIKE
|
|
10
|
-
* - Range: BETWEEN, NOT BETWEEN
|
|
11
|
-
* - List: IN, NOT IN
|
|
12
|
-
* - Null: IS NULL, IS NOT NULL
|
|
13
|
-
* - Logic: AND, OR, NOT, ( )
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* const parser = new FilterQueryParser();
|
|
18
|
-
*
|
|
19
|
-
* // Simple query
|
|
20
|
-
* parser.parse({ sql: "age > 18" });
|
|
21
|
-
*
|
|
22
|
-
* // Parameterized query (recommended)
|
|
23
|
-
* parser.parse({
|
|
24
|
-
* sql: "age > :minAge AND status = :status",
|
|
25
|
-
* params: { minAge: 18, status: 'active' }
|
|
26
|
-
* });
|
|
27
|
-
*
|
|
28
|
-
* // Complex query
|
|
29
|
-
* parser.parse({
|
|
30
|
-
* sql: "age BETWEEN :min AND :max AND (name LIKE :search OR email LIKE :search)",
|
|
31
|
-
* params: { min: 18, max: 65, search: '%john%' }
|
|
32
|
-
* });
|
|
33
|
-
* ```
|
|
5
|
+
* Converts SQL-like syntax to FilterExpression for both backend and frontend use.
|
|
6
|
+
* Supported syntax is lowered into semantic AST nodes so frontend and backend
|
|
7
|
+
* now share the same canonical filter tree.
|
|
34
8
|
*/
|
|
35
9
|
export declare class FilterQueryParser {
|
|
10
|
+
private columnMap;
|
|
36
11
|
/**
|
|
37
12
|
* Set column name to index mapping
|
|
38
13
|
* Required for converting SQL field names to column indices
|
|
39
14
|
*/
|
|
40
|
-
setColumnMapping(
|
|
15
|
+
setColumnMapping(mapping: Record<string, number>): void;
|
|
41
16
|
/**
|
|
42
17
|
* Parse SQL-like filter query into FilterExpression
|
|
43
18
|
*/
|
|
44
19
|
parse(query: FilterQuery): FilterExpression;
|
|
45
|
-
/**
|
|
46
|
-
* Bind named parameters (:paramName) to their values
|
|
47
|
-
* Converts to positional placeholders (?)
|
|
48
|
-
*/
|
|
49
|
-
private bindNamedParameters;
|
|
50
|
-
/**
|
|
51
|
-
* Extract positional parameters from SQL
|
|
52
|
-
* Converts literal values to ? placeholders
|
|
53
|
-
*/
|
|
54
|
-
private extractPositionalParameters;
|
|
55
|
-
/**
|
|
56
|
-
* Check if a value is part of a SQL keyword
|
|
57
|
-
*/
|
|
58
|
-
private isPartOfKeyword;
|
|
59
20
|
/**
|
|
60
21
|
* Convert SQL query to FilterModels (for frontend filtering)
|
|
61
|
-
* This is a simplified conversion - complex queries may not convert perfectly
|
|
62
22
|
*/
|
|
63
23
|
parseToModels(query: FilterQuery, columnNames: string[]): FilterModel[];
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
private
|
|
24
|
+
private parseSemanticAst;
|
|
25
|
+
private resolveTarget;
|
|
26
|
+
private toPositionalQuery;
|
|
27
|
+
private toSqlParamValue;
|
|
68
28
|
}
|
|
69
29
|
//# sourceMappingURL=filter-query-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-query-parser.d.ts","sourceRoot":"","sources":["../../../../src/features/filtering/filter-query-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter-query-parser.d.ts","sourceRoot":"","sources":["../../../../src/features/filtering/filter-query-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,gBAAgB,EAChB,WAAW,EAEX,WAAW,EACZ,MAAM,aAAa,CAAC;AAsCrB;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAkC;IAEnD;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAIvD;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB;IAiB3C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;IAqBvE,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,eAAe;CAYxB"}
|
|
@@ -5,9 +5,12 @@ export { FilterCompiler } from './filter-compiler';
|
|
|
5
5
|
export type { FilterPredicate } from './filter-compiler';
|
|
6
6
|
export { ColumnFilter } from './column-filter';
|
|
7
7
|
export type { ColumnFilterOptions } from './column-filter';
|
|
8
|
+
export { FilterAstCompiler } from './filter-ast-compiler';
|
|
9
|
+
export type { FilterAstRowPredicate } from './filter-ast-compiler';
|
|
8
10
|
export { FilterManager } from './filter-manager';
|
|
9
11
|
export type { FilterManagerOptions } from './filter-manager';
|
|
10
12
|
export { FilterAutocomplete } from './filter-autocomplete';
|
|
13
|
+
export * from './filter-ast';
|
|
11
14
|
export { FilterOptimizer } from './filter-optimizer';
|
|
12
15
|
export { SubstringFilter } from './substring-filter';
|
|
13
16
|
export { FilterCache } from './filter-cache';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/filtering/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAG1E,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/filtering/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAG1E,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ColumnDef, FilterAst, QueryPaginationState, QueryState, SortState } from '../../types';
|
|
2
|
+
export interface BuildQueryStateOptions {
|
|
3
|
+
sortState?: SortState[] | null;
|
|
4
|
+
filterAst?: FilterAst | null;
|
|
5
|
+
pagination?: QueryPaginationState | null;
|
|
6
|
+
columns?: ColumnDef[];
|
|
7
|
+
}
|
|
8
|
+
export declare function buildQueryPaginationState(page: number, pageSize: number, offset?: number): QueryPaginationState;
|
|
9
|
+
export declare function buildRangeQueryPaginationState(startRow: number, endRow: number): QueryPaginationState;
|
|
10
|
+
export declare function buildStoreQueryPaginationState(page: number | null | undefined, pageSize: number | null | undefined): QueryPaginationState | null;
|
|
11
|
+
export declare function buildQueryState(options?: BuildQueryStateOptions): QueryState;
|
|
12
|
+
//# sourceMappingURL=query-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-state.d.ts","sourceRoot":"","sources":["../../../../src/features/query/query-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAkB,GACvB,oBAAoB,CAMtB;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,oBAAoB,CAKtB;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,oBAAoB,GAAG,IAAI,CAU7B;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,UAAU,CAYhF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { SortState, SortDirection
|
|
1
|
+
import type { SortState, SortDirection } from '../../types';
|
|
2
2
|
import type { EventEmitter } from '../../events/event-emitter';
|
|
3
3
|
import type { GridEvents } from '../../events/grid-events';
|
|
4
|
-
import type
|
|
4
|
+
import { type IndexMap } from '../../data/index-map';
|
|
5
5
|
/**
|
|
6
6
|
* Sort manager options
|
|
7
7
|
*/
|
|
@@ -27,20 +27,6 @@ export interface SortManagerOptions {
|
|
|
27
27
|
* Initial sort state
|
|
28
28
|
*/
|
|
29
29
|
initialSort?: SortState[];
|
|
30
|
-
/**
|
|
31
|
-
* Sort mode - determines where sorting is executed
|
|
32
|
-
* - 'frontend': Sort data in memory (default)
|
|
33
|
-
* - 'backend': Emit events only, application handles sorting
|
|
34
|
-
* - 'auto': Use backend mode if onSortRequest is provided, otherwise frontend
|
|
35
|
-
* @default 'frontend'
|
|
36
|
-
*/
|
|
37
|
-
sortMode?: SortMode;
|
|
38
|
-
/**
|
|
39
|
-
* Callback for backend sorting
|
|
40
|
-
* Called when sortMode is 'backend' or 'auto' (with callback present)
|
|
41
|
-
* Application should fetch sorted data and call grid.setData()
|
|
42
|
-
*/
|
|
43
|
-
onSortRequest?: (sortState: SortState[]) => Promise<void> | void;
|
|
44
30
|
}
|
|
45
31
|
/**
|
|
46
32
|
* SortManager - Manages sorting state and execution
|
|
@@ -73,8 +59,6 @@ export declare class SortManager {
|
|
|
73
59
|
private enableMultiSort;
|
|
74
60
|
private sortState;
|
|
75
61
|
private indexMap;
|
|
76
|
-
private sortMode;
|
|
77
|
-
private onSortRequest?;
|
|
78
62
|
constructor(options: SortManagerOptions);
|
|
79
63
|
/**
|
|
80
64
|
* Toggle sort on a column
|
|
@@ -114,16 +98,18 @@ export declare class SortManager {
|
|
|
114
98
|
* Execute the sort
|
|
115
99
|
*/
|
|
116
100
|
private executeSort;
|
|
101
|
+
private sortMultipleColumns;
|
|
102
|
+
private compareRows;
|
|
103
|
+
private compareValues;
|
|
104
|
+
private compareNumbers;
|
|
105
|
+
private compareStrings;
|
|
106
|
+
private compareBooleans;
|
|
107
|
+
private compareDates;
|
|
117
108
|
/**
|
|
118
109
|
* Update row count
|
|
119
110
|
* @param rowCount - New row count
|
|
120
111
|
*/
|
|
121
112
|
updateRowCount(rowCount: number): void;
|
|
122
|
-
/**
|
|
123
|
-
* Get current sort mode (resolved from 'auto')
|
|
124
|
-
* Returns the actual mode being used: 'frontend' or 'backend'
|
|
125
|
-
*/
|
|
126
|
-
getSortMode(): 'frontend' | 'backend';
|
|
127
113
|
/**
|
|
128
114
|
* Destroy sort manager
|
|
129
115
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort-manager.d.ts","sourceRoot":"","sources":["../../../../src/features/sorting/sort-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sort-manager.d.ts","sourceRoot":"","sources":["../../../../src/features/sorting/sort-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAE5C;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,OAAO,EAAE,kBAAkB;IAYvC;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;IA6D3D;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI;IAc1C;;OAEG;IACH,SAAS,IAAI,IAAI;IAajB;;OAEG;IACH,YAAY,IAAI,SAAS,EAAE;IAI3B;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAK5C;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;OAGG;IACH,WAAW,IAAI,QAAQ,GAAG,IAAI;IAI9B;;OAEG;IACH,OAAO,CAAC,WAAW;IA6DnB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAStC;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ColumnDef } from '../../types/column';
|
|
2
|
+
import type { SortDescriptor, SortState } from '../../types/sort';
|
|
3
|
+
export declare function normalizeSortState(sortState: SortState[]): SortState[];
|
|
4
|
+
export declare function serializeSortState(sortState: SortState[], columns?: ColumnDef[]): SortDescriptor[];
|
|
5
|
+
//# sourceMappingURL=sort-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-request.d.ts","sourceRoot":"","sources":["../../../../src/features/sorting/sort-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAiB,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQjF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CA6CtE;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EAAE,EACtB,OAAO,CAAC,EAAE,SAAS,EAAE,GACpB,cAAc,EAAE,CAOlB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { FilterModel } from '../../types';
|
|
1
|
+
import type { FilterExpression, FilterModel } from '../../types';
|
|
2
|
+
import type { FilterExportResult } from '../../features/filtering/adapters/types';
|
|
3
|
+
import type { FieldFilterState } from '../../features/filtering/types';
|
|
2
4
|
import type { SlimGridContext } from '../grid-context';
|
|
3
5
|
export interface FilterApi {
|
|
4
6
|
set(column: number, operator: string, value: any): void;
|
|
@@ -6,12 +8,14 @@ export interface FilterApi {
|
|
|
6
8
|
operator: string;
|
|
7
9
|
value: any;
|
|
8
10
|
}>, logic?: 'AND' | 'OR'): void;
|
|
11
|
+
setFieldState(state: FieldFilterState): void;
|
|
9
12
|
clear(): void;
|
|
10
13
|
clearColumn(column: number): void;
|
|
11
14
|
getState(): FilterModel[];
|
|
12
15
|
setState(models: FilterModel[]): void;
|
|
13
|
-
getFieldState():
|
|
14
|
-
getExports():
|
|
16
|
+
getFieldState(): FieldFilterState | null;
|
|
17
|
+
getExports(): FilterExportResult | null;
|
|
18
|
+
getExpression(): FilterExpression | null;
|
|
15
19
|
getMode(): 'frontend' | 'backend';
|
|
16
20
|
setQuick(query: string, columns?: number[]): void;
|
|
17
21
|
clearQuick(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-api.d.ts","sourceRoot":"","sources":["../../../../src/grid/api/filter-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-api.d.ts","sourceRoot":"","sources":["../../../../src/grid/api/filter-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACxD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3G,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7C,KAAK,IAAI,IAAI,CAAC;IACd,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,IAAI,WAAW,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACtC,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAAC;IACzC,UAAU,IAAI,kBAAkB,GAAG,IAAI,CAAC;IACxC,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAAC;IACzC,OAAO,IAAI,UAAU,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClD,UAAU,IAAI,IAAI,CAAC;IACnB,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC;CACzD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,SAAS,CAoF/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort-api.d.ts","sourceRoot":"","sources":["../../../../src/grid/api/sort-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,SAAS,EAAE,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IACnC,QAAQ,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,OAAO,IAAI,UAAU,GAAG,SAAS,CAAC;CACnC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"sort-api.d.ts","sourceRoot":"","sources":["../../../../src/grid/api/sort-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,SAAS,EAAE,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IACnC,QAAQ,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,OAAO,IAAI,UAAU,GAAG,SAAS,CAAC;CACnC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAsD3D"}
|
|
@@ -1,30 +1,43 @@
|
|
|
1
|
-
import type { ColumnDef, FilterModel } from '../types';
|
|
1
|
+
import type { ColumnDef, FilterExpression, FilterModel } from '../types';
|
|
2
2
|
import type { EventEmitter } from '../events/event-emitter';
|
|
3
3
|
import type { GridEvents } from '../events/grid-events';
|
|
4
|
+
import type { FieldFilterState } from '../features/filtering/types';
|
|
4
5
|
interface FilterUIOptions {
|
|
5
6
|
container: HTMLElement;
|
|
6
7
|
events: EventEmitter<GridEvents>;
|
|
8
|
+
columns?: ColumnDef[];
|
|
7
9
|
getFilterState: () => FilterModel[];
|
|
10
|
+
getFilterExpression: () => FilterExpression | null;
|
|
8
11
|
setColumnFilter: (column: number, conditions: Array<{
|
|
9
12
|
operator: string;
|
|
10
13
|
value: any;
|
|
11
14
|
}>, logic?: 'AND' | 'OR') => void;
|
|
15
|
+
setFieldState: (state: FieldFilterState) => void;
|
|
12
16
|
clearColumnFilter: (column: number) => void;
|
|
17
|
+
clearQuickFilter: () => void;
|
|
18
|
+
clearAllFilters: () => void;
|
|
13
19
|
getColumnDef: (dataCol: number) => ColumnDef | undefined;
|
|
14
20
|
mapVisualToDataCol: (visualCol: number) => number;
|
|
15
21
|
}
|
|
16
22
|
export declare class GridFilterUI {
|
|
17
23
|
private container;
|
|
18
24
|
private events;
|
|
25
|
+
private columns;
|
|
19
26
|
private getFilterState;
|
|
27
|
+
private getFilterExpression;
|
|
20
28
|
private setColumnFilter;
|
|
29
|
+
private setFieldState;
|
|
21
30
|
private clearColumnFilter;
|
|
31
|
+
private clearQuickFilter;
|
|
32
|
+
private clearAllFilters;
|
|
22
33
|
private getColumnDef;
|
|
23
34
|
private mapVisualToDataCol;
|
|
35
|
+
private overlayManager;
|
|
24
36
|
private popup;
|
|
25
|
-
private
|
|
26
|
-
private
|
|
37
|
+
private chipBar;
|
|
38
|
+
private popupKeyHandler;
|
|
27
39
|
private filterClickUnsub;
|
|
40
|
+
private filterChangeUnsub;
|
|
28
41
|
constructor(options: FilterUIOptions);
|
|
29
42
|
private openFilterPopup;
|
|
30
43
|
private buildCondition;
|
|
@@ -32,9 +45,25 @@ export declare class GridFilterUI {
|
|
|
32
45
|
private getOperatorsForType;
|
|
33
46
|
private getOperatorValueCount;
|
|
34
47
|
private getColumnLabel;
|
|
35
|
-
private
|
|
36
|
-
private
|
|
48
|
+
private getColumnLabelByField;
|
|
49
|
+
private getColumnLabelByIndex;
|
|
50
|
+
private ensureChipBar;
|
|
51
|
+
private renderFilterChips;
|
|
52
|
+
private createChipElement;
|
|
53
|
+
private buildChipDescriptors;
|
|
54
|
+
private buildFieldStateChips;
|
|
55
|
+
private removeTopLevelCondition;
|
|
56
|
+
private removeTopLevelGroup;
|
|
57
|
+
private applyStructuredRoot;
|
|
58
|
+
private collectActiveFields;
|
|
59
|
+
private normalizeFieldGroup;
|
|
60
|
+
private describeQuickFilter;
|
|
61
|
+
private describeFieldGroup;
|
|
62
|
+
private describeFieldCondition;
|
|
63
|
+
private formatValue;
|
|
64
|
+
private updateChipBarLayout;
|
|
37
65
|
private closePopup;
|
|
66
|
+
private teardownPopup;
|
|
38
67
|
destroy(): void;
|
|
39
68
|
}
|
|
40
69
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-ui.d.ts","sourceRoot":"","sources":["../../../src/grid/filter-ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"filter-ui.d.ts","sourceRoot":"","sources":["../../../src/grid/filter-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CellRef, GridOptions, GridExportOptions } from '../types';
|
|
1
|
+
import type { CellRef, GridOptions, GridExportOptions, DataRequestState } from '../types';
|
|
2
2
|
import type { GridPlugin } from '../reactive';
|
|
3
3
|
import type { ZenGridTheme, PartialTheme } from '../theming/theme.interface';
|
|
4
4
|
import type { GridStoreImpl } from '../reactive/store';
|
|
@@ -21,6 +21,9 @@ export declare class Grid {
|
|
|
21
21
|
setData(data: any[][]): void;
|
|
22
22
|
getData(row: number, col: number): any;
|
|
23
23
|
getDataMode(): 'frontend' | 'backend';
|
|
24
|
+
getDataStatus(): DataRequestState;
|
|
25
|
+
refreshData(): Promise<void>;
|
|
26
|
+
retryDataRequest(): Promise<void>;
|
|
24
27
|
render(): void;
|
|
25
28
|
refresh(): void;
|
|
26
29
|
clearCache(): void;
|
|
@@ -74,8 +77,8 @@ export declare class Grid {
|
|
|
74
77
|
clearColumnFilter: (col: number) => void;
|
|
75
78
|
getFilterState: () => import("../types").FilterModel[];
|
|
76
79
|
setFilterState: (m: any[]) => void;
|
|
77
|
-
getFieldFilterState: () =>
|
|
78
|
-
getFilterExports: () =>
|
|
80
|
+
getFieldFilterState: () => import("../features/filtering").FieldFilterState | null;
|
|
81
|
+
getFilterExports: () => import("../features/filtering").FilterExportResult | null;
|
|
79
82
|
getFilterMode: () => "frontend" | "backend";
|
|
80
83
|
setQuickFilter: (q: string, cols?: number[]) => void;
|
|
81
84
|
clearQuickFilter: () => void;
|
|
@@ -118,5 +121,11 @@ export declare class Grid {
|
|
|
118
121
|
applyStateSnapshot: (s: any) => void;
|
|
119
122
|
exportCSV: (o?: GridExportOptions) => string;
|
|
120
123
|
exportTSV: (o?: GridExportOptions) => string;
|
|
124
|
+
/** @deprecated Use refreshData() */
|
|
125
|
+
refreshGridData: () => Promise<void>;
|
|
126
|
+
/** @deprecated Use retryDataRequest() */
|
|
127
|
+
retryDataRequestAsync: () => Promise<void>;
|
|
128
|
+
/** @deprecated Use getDataStatus() */
|
|
129
|
+
getDataRequestStatus: () => DataRequestState;
|
|
121
130
|
}
|
|
122
131
|
//# sourceMappingURL=grid-core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-core.d.ts","sourceRoot":"","sources":["../../../src/grid/grid-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,iBAAiB,
|
|
1
|
+
{"version":3,"file":"grid-core.d.ts","sourceRoot":"","sources":["../../../src/grid/grid-core.ts"],"names":[],"mappings":"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"}
|