drizzle-cube 0.1.8 → 0.1.9
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/client/components/QueryBuilder/FilterBuilder.d.ts +4 -0
- package/dist/client/components/QueryBuilder/FilterGroup.d.ts +4 -0
- package/dist/client/components/QueryBuilder/FilterItem.d.ts +4 -0
- package/dist/client/components/QueryBuilder/FilterValueSelector.d.ts +4 -0
- package/dist/client/components/QueryBuilder/types.d.ts +43 -1
- package/dist/client/components/QueryBuilder/utils.d.ts +76 -1
- package/dist/client/hooks/useCubeQuery.d.ts +1 -0
- package/dist/client/hooks/useDebounce.d.ts +12 -0
- package/dist/client/hooks/useFilterValues.d.ts +16 -0
- package/dist/client/index.js +9489 -8561
- package/dist/client/styles.css +1 -1
- package/dist/client/types.d.ts +12 -5
- package/dist/server/index.d.ts +14 -1
- package/dist/server/index.js +590 -463
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CubeQuery } from '../../types';
|
|
1
|
+
import { CubeQuery, FilterOperator, Filter, SimpleFilter, GroupFilter } from '../../types';
|
|
2
2
|
export interface MetaField {
|
|
3
3
|
name: string;
|
|
4
4
|
title: string;
|
|
@@ -89,6 +89,7 @@ export interface CubeMetaExplorerProps {
|
|
|
89
89
|
}
|
|
90
90
|
export interface QueryPanelProps {
|
|
91
91
|
query: CubeQuery;
|
|
92
|
+
schema: MetaResponse | null;
|
|
92
93
|
validationStatus: ValidationStatus;
|
|
93
94
|
validationError: string | null;
|
|
94
95
|
validationSql: {
|
|
@@ -99,6 +100,7 @@ export interface QueryPanelProps {
|
|
|
99
100
|
onExecute: () => void;
|
|
100
101
|
onRemoveField: (fieldName: string, fieldType: 'measures' | 'dimensions' | 'timeDimensions') => void;
|
|
101
102
|
onTimeDimensionGranularityChange: (dimensionName: string, granularity: string) => void;
|
|
103
|
+
onFiltersChange: (filters: Filter[]) => void;
|
|
102
104
|
onClearQuery?: () => void;
|
|
103
105
|
showSettings?: boolean;
|
|
104
106
|
onSettingsClick?: () => void;
|
|
@@ -130,3 +132,43 @@ export declare const TIME_GRANULARITIES: readonly [{
|
|
|
130
132
|
readonly label: "Year";
|
|
131
133
|
}];
|
|
132
134
|
export type TimeGranularity = typeof TIME_GRANULARITIES[number]['value'];
|
|
135
|
+
export interface FilterOperatorMeta {
|
|
136
|
+
label: string;
|
|
137
|
+
description: string;
|
|
138
|
+
requiresValues: boolean;
|
|
139
|
+
supportsMultipleValues: boolean;
|
|
140
|
+
valueType: 'string' | 'number' | 'date' | 'boolean' | 'any';
|
|
141
|
+
fieldTypes: string[];
|
|
142
|
+
}
|
|
143
|
+
export declare const FILTER_OPERATORS: Record<FilterOperator, FilterOperatorMeta>;
|
|
144
|
+
export interface FilterBuilderProps {
|
|
145
|
+
filters: Filter[];
|
|
146
|
+
schema: MetaResponse | null;
|
|
147
|
+
query: CubeQuery;
|
|
148
|
+
onFiltersChange: (filters: Filter[]) => void;
|
|
149
|
+
}
|
|
150
|
+
export interface FilterItemProps {
|
|
151
|
+
filter: SimpleFilter;
|
|
152
|
+
index: number;
|
|
153
|
+
onFilterChange: (index: number, filter: SimpleFilter) => void;
|
|
154
|
+
onFilterRemove: (index: number) => void;
|
|
155
|
+
schema: MetaResponse | null;
|
|
156
|
+
query: CubeQuery;
|
|
157
|
+
}
|
|
158
|
+
export interface FilterGroupProps {
|
|
159
|
+
group: GroupFilter;
|
|
160
|
+
index: number;
|
|
161
|
+
onGroupChange: (index: number, group: GroupFilter) => void;
|
|
162
|
+
onGroupChangeWithUnwrap?: (index: number, group: GroupFilter) => void;
|
|
163
|
+
onGroupRemove: (index: number) => void;
|
|
164
|
+
schema: MetaResponse | null;
|
|
165
|
+
query: CubeQuery;
|
|
166
|
+
depth: number;
|
|
167
|
+
}
|
|
168
|
+
export interface FilterValueSelectorProps {
|
|
169
|
+
fieldName: string;
|
|
170
|
+
operator: FilterOperator;
|
|
171
|
+
values: any[];
|
|
172
|
+
onValuesChange: (values: any[]) => void;
|
|
173
|
+
schema: MetaResponse | null;
|
|
174
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CubeQuery } from '../../types';
|
|
1
|
+
import { CubeQuery, Filter, SimpleFilter, GroupFilter } from '../../types';
|
|
2
2
|
import { MetaField, MetaResponse } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Check if a field is selected in the current query
|
|
@@ -36,7 +36,82 @@ export declare function groupFieldsByCube(fields: MetaField[]): Record<string, M
|
|
|
36
36
|
* Clean query object by removing empty arrays
|
|
37
37
|
*/
|
|
38
38
|
export declare function cleanQuery(query: CubeQuery): CubeQuery;
|
|
39
|
+
/**
|
|
40
|
+
* Clean a query and transform filters for server compatibility
|
|
41
|
+
* This version transforms GroupFilter to legacy and/or format
|
|
42
|
+
*/
|
|
43
|
+
export declare function cleanQueryForServer(query: CubeQuery): CubeQuery;
|
|
39
44
|
/**
|
|
40
45
|
* Create an empty query object
|
|
41
46
|
*/
|
|
42
47
|
export declare function createEmptyQuery(): CubeQuery;
|
|
48
|
+
/**
|
|
49
|
+
* Filter utility functions
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* Check if a filter is a simple filter
|
|
53
|
+
*/
|
|
54
|
+
export declare function isSimpleFilter(filter: Filter): filter is SimpleFilter;
|
|
55
|
+
/**
|
|
56
|
+
* Check if a filter is a group filter
|
|
57
|
+
*/
|
|
58
|
+
export declare function isGroupFilter(filter: Filter): filter is GroupFilter;
|
|
59
|
+
/**
|
|
60
|
+
* Check if a filter is an AND filter
|
|
61
|
+
*/
|
|
62
|
+
export declare function isAndFilter(filter: Filter): filter is GroupFilter;
|
|
63
|
+
/**
|
|
64
|
+
* Check if a filter is an OR filter
|
|
65
|
+
*/
|
|
66
|
+
export declare function isOrFilter(filter: Filter): filter is GroupFilter;
|
|
67
|
+
/**
|
|
68
|
+
* Flatten all simple filters from a hierarchical filter structure
|
|
69
|
+
*/
|
|
70
|
+
export declare function flattenFilters(filters: Filter[]): SimpleFilter[];
|
|
71
|
+
/**
|
|
72
|
+
* Get all filterable fields from schema (measures, dimensions, and time dimensions)
|
|
73
|
+
*/
|
|
74
|
+
export declare function getFilterableFields(schema: MetaResponse, query?: CubeQuery): MetaField[];
|
|
75
|
+
/**
|
|
76
|
+
* Get available operators for a field type
|
|
77
|
+
*/
|
|
78
|
+
export declare function getAvailableOperators(fieldType: string): Array<{
|
|
79
|
+
operator: string;
|
|
80
|
+
label: string;
|
|
81
|
+
}>;
|
|
82
|
+
/**
|
|
83
|
+
* Get field type from schema
|
|
84
|
+
*/
|
|
85
|
+
export declare function getFieldType(fieldName: string, schema: MetaResponse): string;
|
|
86
|
+
/**
|
|
87
|
+
* Validate a filter
|
|
88
|
+
*/
|
|
89
|
+
export declare function validateFilter(filter: SimpleFilter, schema: MetaResponse): {
|
|
90
|
+
isValid: boolean;
|
|
91
|
+
errors: string[];
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Count total filters in hierarchical structure
|
|
95
|
+
*/
|
|
96
|
+
export declare function countFilters(filters: Filter[]): number;
|
|
97
|
+
/**
|
|
98
|
+
* Create a new simple filter
|
|
99
|
+
*/
|
|
100
|
+
export declare function createSimpleFilter(member: string, operator?: string, values?: any[]): SimpleFilter;
|
|
101
|
+
/**
|
|
102
|
+
* Create a new AND filter group
|
|
103
|
+
*/
|
|
104
|
+
export declare function createAndFilter(filters?: Filter[]): GroupFilter;
|
|
105
|
+
/**
|
|
106
|
+
* Create a new OR filter group
|
|
107
|
+
*/
|
|
108
|
+
export declare function createOrFilter(filters?: Filter[]): GroupFilter;
|
|
109
|
+
/**
|
|
110
|
+
* Clean up filters by removing any that reference fields not in the current query
|
|
111
|
+
*/
|
|
112
|
+
export declare function cleanupFilters(filters: Filter[], query: CubeQuery): Filter[];
|
|
113
|
+
/**
|
|
114
|
+
* Transform filters from new GroupFilter format to legacy server format
|
|
115
|
+
* Server expects { and: [...] } and { or: [...] } instead of { type: 'and', filters: [...] }
|
|
116
|
+
*/
|
|
117
|
+
export declare function transformFiltersForServer(filters: Filter[]): any[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom hook for debouncing values
|
|
3
|
+
* Delays updating the value until after the specified delay has passed
|
|
4
|
+
* since the last change
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Debounces a value by the specified delay
|
|
8
|
+
* @param value The value to debounce
|
|
9
|
+
* @param delay The delay in milliseconds
|
|
10
|
+
* @returns The debounced value
|
|
11
|
+
*/
|
|
12
|
+
export declare function useDebounce<T>(value: T, delay: number): T;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook for fetching distinct field values for filter dropdowns
|
|
3
|
+
* Uses the /load API to get actual data values
|
|
4
|
+
*/
|
|
5
|
+
interface UseFilterValuesResult {
|
|
6
|
+
values: any[];
|
|
7
|
+
loading: boolean;
|
|
8
|
+
error: string | null;
|
|
9
|
+
refetch: () => void;
|
|
10
|
+
searchValues: (searchTerm: string, force?: boolean) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Custom hook to fetch distinct values for a field
|
|
14
|
+
*/
|
|
15
|
+
export declare function useFilterValues(fieldName: string | null, enabled?: boolean): UseFilterValuesResult;
|
|
16
|
+
export {};
|