@datagrok-libraries/utils 4.6.2 → 4.6.4
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/css/query-builder.css +203 -0
- package/img/chevron.svg +3 -0
- package/package.json +1 -1
- package/src/query-builder/query-builder.d.ts +126 -0
- package/src/query-builder/query-builder.d.ts.map +1 -0
- package/src/query-builder/query-builder.js +694 -0
- package/src/test.d.ts +17 -10
- package/src/test.d.ts.map +1 -1
- package/src/test.js +28 -30
- package/src/viewers/forms-viewer.d.ts +2 -2
- package/src/viewers/forms-viewer.d.ts.map +1 -1
- package/src/viewers/forms-viewer.js +6 -11
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
.query-builder-search-query-operator .fa-trash-alt {
|
|
2
|
+
font-size: 12px;
|
|
3
|
+
color: #2083D5;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.query-builder-nested-condition-operators .fa-trash-alt {
|
|
7
|
+
padding: 0px 7px 0px 5px;
|
|
8
|
+
font-size: 10px !important;
|
|
9
|
+
margin-top: 2px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.query-builder-search-query-operator .fa-plus {
|
|
13
|
+
color: #2083D5;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.query-builder-nested-condition-operators .fa-plus {
|
|
17
|
+
padding: 1px 5px 1px 5px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.query-builder-search-query-operator {
|
|
21
|
+
border: none;
|
|
22
|
+
padding-left: 12px;
|
|
23
|
+
position: relative;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.query-builder-search-query-operator[data-nesting-level] {
|
|
27
|
+
border-left: 3px solid var(--nesting-color, #e0e0e0);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.query-builder-search-query-operator .ui-input-text {
|
|
31
|
+
width: 95%;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.query-builder-filter-inputs {
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-direction: row;
|
|
37
|
+
align-items: center;
|
|
38
|
+
gap: 6px;
|
|
39
|
+
min-height: 32px;
|
|
40
|
+
flex-wrap: nowrap;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.query-builder-filter-inputs .query-builder-filter-field,
|
|
44
|
+
.query-builder-filter-inputs .query-builder-filter-operator,
|
|
45
|
+
.query-builder-filter-inputs .query-builder-filter-value {
|
|
46
|
+
flex: 0 0 auto;
|
|
47
|
+
min-width: 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.query-builder-filter-inputs .ui-input-editor {
|
|
51
|
+
width: auto!important;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.query-builder-filter-inputs .ui-input-root {
|
|
55
|
+
width: auto!important;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.property-query-builder-and-or-operator {
|
|
59
|
+
font-size: 10px;
|
|
60
|
+
margin: 0px!important;
|
|
61
|
+
height: 12px!important;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.query-builder-nested-condition-operators .property-query-builder-and-or-operator {
|
|
65
|
+
padding: 2px 5px 0px 5px!important;
|
|
66
|
+
display: none!important;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.property-query-builder-multipe-filelds > .query-builder-nested-condition-operators .property-query-builder-and-or-operator {
|
|
70
|
+
display: flex!important;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.query-builder-nested-condition-operators {
|
|
74
|
+
align-items: center;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.query-builder-match-div {
|
|
78
|
+
display: flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
justify-content: center;
|
|
81
|
+
gap: 5px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.query-builder-nested-condition-operators select {
|
|
85
|
+
width: 50px!important;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.query-builder-filter-inputs .add-delete-icons {
|
|
89
|
+
visibility: hidden;
|
|
90
|
+
gap: 6px;
|
|
91
|
+
padding-top: 15px;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.query-builder-filter-inputs:hover .add-delete-icons {
|
|
95
|
+
visibility: visible;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.nested-add-delete-icons {
|
|
99
|
+
visibility: hidden;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.query-builder-search-query-operator:hover .nested-add-delete-icons {
|
|
103
|
+
visibility: visible !important;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Hide dropdown arrow on select elements by default, show only on hover */
|
|
107
|
+
.query-builder-filter-inputs select.ui-input-editor {
|
|
108
|
+
-webkit-appearance: none !important;
|
|
109
|
+
-moz-appearance: none !important;
|
|
110
|
+
appearance: none !important;
|
|
111
|
+
background-image: none !important;
|
|
112
|
+
background: none !important;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.query-builder-filter-inputs select.ui-input-editor:hover {
|
|
116
|
+
background-image: url("../img/chevron.svg") !important;
|
|
117
|
+
background-repeat: no-repeat !important;
|
|
118
|
+
background-position: right 0px top 50% !important;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.query-builder-filter-inputs-narrow {
|
|
122
|
+
display: flex;
|
|
123
|
+
flex-direction: column;
|
|
124
|
+
padding-top: 8px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.query-builder-filter-inputs-narrow .query-builder-filter-field,
|
|
128
|
+
.query-builder-filter-inputs-narrow .query-builder-filter-operator,
|
|
129
|
+
.query-builder-filter-inputs-narrow .query-builder-filter-value {
|
|
130
|
+
display: flex;
|
|
131
|
+
align-items: center;
|
|
132
|
+
gap: 6px;
|
|
133
|
+
min-height: 32px;
|
|
134
|
+
width: 100%;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.query-builder-filter-inputs-narrow .add-delete-icons {
|
|
138
|
+
justify-content: flex-end;
|
|
139
|
+
padding-right: 10px;
|
|
140
|
+
padding-top: 5px;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.query-builder-filter-inputs-narrow .ui-input-editor {
|
|
144
|
+
width: 100% !important;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* Ensure consistent field sizing and prevent height jumping */
|
|
148
|
+
.query-builder-filter-field,
|
|
149
|
+
.query-builder-filter-operator,
|
|
150
|
+
.query-builder-filter-value {
|
|
151
|
+
display: flex;
|
|
152
|
+
align-items: center;
|
|
153
|
+
min-height: 32px;
|
|
154
|
+
transition: all 0.2s ease;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.query-builder-filter-field .ui-input-editor,
|
|
158
|
+
.query-builder-filter-operator .ui-input-editor,
|
|
159
|
+
.query-builder-filter-value .ui-input-editor {
|
|
160
|
+
min-height: 28px;
|
|
161
|
+
box-sizing: border-box;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* Prevent field height changes during layout switching */
|
|
165
|
+
.query-builder-filter-inputs,
|
|
166
|
+
.query-builder-filter-inputs-narrow {
|
|
167
|
+
transition: flex-direction 0.2s ease;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.add-delete-icons {
|
|
171
|
+
display: flex;
|
|
172
|
+
align-items: center;
|
|
173
|
+
gap: 6px;
|
|
174
|
+
flex-shrink: 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* History icon styling */
|
|
178
|
+
.query-builder-history-icon {
|
|
179
|
+
bottom: 10px;
|
|
180
|
+
left: 10px;
|
|
181
|
+
font-size: 16px;
|
|
182
|
+
transition: opacity 0.2s ease;
|
|
183
|
+
visibility: hidden;
|
|
184
|
+
padding-top: 5px;
|
|
185
|
+
width: 20px;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
.query-builder-narrow .query-builder-history-icon {
|
|
190
|
+
padding-top: 0px;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
/* Only show history icon when history is enabled */
|
|
195
|
+
.query-builder-search-query-operator[data-history="true"]:hover .query-builder-history-icon {
|
|
196
|
+
visibility: visible;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.query-builder-search-query-operator[data-history="false"] .query-builder-history-icon,
|
|
200
|
+
.query-builder-search-query-operator:not([data-history]) .query-builder-history-icon {
|
|
201
|
+
visibility: hidden;
|
|
202
|
+
}
|
|
203
|
+
|
package/img/chevron.svg
ADDED
package/package.json
CHANGED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import '../../css/query-builder.css';
|
|
4
|
+
export declare const SUGGESTIONS_FUNCTION = "suggestionsFunction";
|
|
5
|
+
export declare namespace Operators {
|
|
6
|
+
const CONTAINS = "contains";
|
|
7
|
+
const IN = "in";
|
|
8
|
+
const STARTS_WITH = "starts with";
|
|
9
|
+
const ENDS_WITH = "ends with";
|
|
10
|
+
const GT = ">";
|
|
11
|
+
const GTE = ">=";
|
|
12
|
+
const LT = "<";
|
|
13
|
+
const LTE = "<=";
|
|
14
|
+
const EQ = "=";
|
|
15
|
+
const NOT_EQ = "!=";
|
|
16
|
+
const BEFORE = "before";
|
|
17
|
+
const AFTER = "after";
|
|
18
|
+
const ON = "on";
|
|
19
|
+
const BETWEEN = "between";
|
|
20
|
+
const IS_SIMILAR = "is similar";
|
|
21
|
+
const IS_CONTAINED = "is contained";
|
|
22
|
+
enum Logical {
|
|
23
|
+
and = "and",
|
|
24
|
+
or = "or"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export declare enum QueryBuilderLayout {
|
|
28
|
+
Standard = "standard",
|
|
29
|
+
Narrow = "narrow"
|
|
30
|
+
}
|
|
31
|
+
export interface SimpleCondition<T = any> {
|
|
32
|
+
field: string;
|
|
33
|
+
operator: string;
|
|
34
|
+
value: T;
|
|
35
|
+
}
|
|
36
|
+
export interface ComplexCondition {
|
|
37
|
+
logicalOperator: Operators.Logical;
|
|
38
|
+
conditions: Expression[];
|
|
39
|
+
}
|
|
40
|
+
export type Expression<T = any> = SimpleCondition<T> | ComplexCondition;
|
|
41
|
+
export declare class BaseConditionEditor<T = any> {
|
|
42
|
+
root: HTMLDivElement;
|
|
43
|
+
condition: SimpleCondition<T>;
|
|
44
|
+
onChanged: Subject<SimpleCondition<T>>;
|
|
45
|
+
showSuggestions: boolean;
|
|
46
|
+
suggestionsMenuClicked: boolean;
|
|
47
|
+
constructor(prop: DG.Property, operator: string, initialCondition?: SimpleCondition<T>);
|
|
48
|
+
protected initializeEditor(prop: DG.Property): void;
|
|
49
|
+
initializeSuggestions(prop: DG.Property, input: DG.InputBase): void;
|
|
50
|
+
addSuggestions(prop: DG.Property, input: DG.InputBase): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
export declare class BetweenConditionEditor extends BaseConditionEditor {
|
|
53
|
+
initializeEditor(prop: DG.Property): void;
|
|
54
|
+
}
|
|
55
|
+
export declare class BooleanConditionEditor extends BaseConditionEditor {
|
|
56
|
+
initializeEditor(prop: DG.Property): void;
|
|
57
|
+
}
|
|
58
|
+
export declare class MoleculeConditionEditor extends BaseConditionEditor<string> {
|
|
59
|
+
initializeEditor(prop: DG.Property): void;
|
|
60
|
+
}
|
|
61
|
+
export type MoleculeSimilarity = {
|
|
62
|
+
molecule: string;
|
|
63
|
+
threshold: number;
|
|
64
|
+
};
|
|
65
|
+
export declare class MoleculeSimilarityConditionEditor extends BaseConditionEditor<MoleculeSimilarity> {
|
|
66
|
+
initializeEditor(prop: DG.Property): void;
|
|
67
|
+
}
|
|
68
|
+
export declare class MultiValueConditionEditorString extends BaseConditionEditor<string[]> {
|
|
69
|
+
initializeEditor(prop: DG.Property): void;
|
|
70
|
+
}
|
|
71
|
+
export declare class MultiValueConditionEditorInt extends BaseConditionEditor<number[]> {
|
|
72
|
+
initializeEditor(prop: DG.Property): void;
|
|
73
|
+
}
|
|
74
|
+
export declare class MultiValueConditionEditorFloat extends BaseConditionEditor<number[]> {
|
|
75
|
+
initializeEditor(prop: DG.Property): void;
|
|
76
|
+
}
|
|
77
|
+
export declare class ConditionRegistry {
|
|
78
|
+
private static instance;
|
|
79
|
+
private typeOperators;
|
|
80
|
+
private semTypeOperators;
|
|
81
|
+
private editorRegistry;
|
|
82
|
+
private constructor();
|
|
83
|
+
static getInstance(): ConditionRegistry;
|
|
84
|
+
private initializeDefaultOperators;
|
|
85
|
+
private initializeDefaultEditors;
|
|
86
|
+
registerTypeOperators(propertyType: string, operators: string[]): void;
|
|
87
|
+
registerSemTypeOperators(semType: string, operators: string[]): void;
|
|
88
|
+
getOperatorsForProperty(property: DG.Property): string[];
|
|
89
|
+
isOperatorSupported(property: DG.Property, operator: string): boolean;
|
|
90
|
+
registerEditor<T>(propertyType: string, semType: string, operator: string, editorClass: new (prop: DG.Property, operator: string) => BaseConditionEditor<T>): void;
|
|
91
|
+
createEditor<T>(property: DG.Property, operator: string, initialCondition?: SimpleCondition<T>): BaseConditionEditor<T>;
|
|
92
|
+
getConditionEditor<T = any>(property: DG.Property, operator: string, condition?: SimpleCondition<T>): BaseConditionEditor<T>;
|
|
93
|
+
private createEditorKey;
|
|
94
|
+
}
|
|
95
|
+
export type HistoryItem = {
|
|
96
|
+
date: DG.TYPE.DATE_TIME;
|
|
97
|
+
value: string;
|
|
98
|
+
};
|
|
99
|
+
export declare function saveHistory(key: string, value: string): void;
|
|
100
|
+
export declare function getHistory(key: string): HistoryItem[];
|
|
101
|
+
export declare class QueryBuilder {
|
|
102
|
+
root: HTMLElement;
|
|
103
|
+
condition: ComplexCondition;
|
|
104
|
+
properties: DG.Property[];
|
|
105
|
+
structureChanged: Subject<ComplexCondition>;
|
|
106
|
+
filterValueChanged: Subject<SimpleCondition>;
|
|
107
|
+
layout: QueryBuilderLayout;
|
|
108
|
+
private _historyCacheKey;
|
|
109
|
+
private historyIcon;
|
|
110
|
+
constructor(properties: DG.Property[], initialCondition?: ComplexCondition, layout?: QueryBuilderLayout, _historyCacheKey?: string);
|
|
111
|
+
set historyCache(key: string);
|
|
112
|
+
saveConditionToHistory(): void;
|
|
113
|
+
private setupHistoryIcon;
|
|
114
|
+
private showHistoryMenu;
|
|
115
|
+
private loadCondition;
|
|
116
|
+
conditionToString(condition: ComplexCondition): string;
|
|
117
|
+
private expressionToString;
|
|
118
|
+
private simpleConditionToString;
|
|
119
|
+
createDefaultSimpleCondition(): SimpleCondition;
|
|
120
|
+
rebuildUI(): void;
|
|
121
|
+
setLayout(layout: QueryBuilderLayout): void;
|
|
122
|
+
getLayout(): QueryBuilderLayout;
|
|
123
|
+
buildUI(condition: ComplexCondition, parentCondition?: ComplexCondition, nestingLevel?: number): HTMLElement;
|
|
124
|
+
generateNestingColor(level: number): string;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=query-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["query-builder.ts"],"names":[],"mappings":"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"}
|