@finos/legend-query-builder 4.14.39 → 4.14.41
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/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +1 -1
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.js +20 -2
- package/lib/components/QueryBuilderParametersPanel.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +5 -14
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +12 -4
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +6 -2
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.js +2 -1
- package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts +11 -9
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.js +158 -143
- package/lib/components/shared/BasicValueSpecificationEditor.js.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.js +8 -1
- package/lib/components/shared/QueryBuilderVariableSelector.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +5 -5
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts +1 -0
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.js +2 -1
- package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +12 -0
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts +1 -0
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_In.js +2 -2
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_In.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.d.ts +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.d.ts.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.js +4 -3
- package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_In.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_In.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.d.ts +1 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.js +16 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.d.ts +3 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningState.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js +40 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts +1 -0
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.js +48 -0
- package/lib/stores/shared/ValueSpecificationEditorHelper.js.map +1 -1
- package/package.json +13 -13
- package/src/components/QueryBuilder.tsx +1 -0
- package/src/components/QueryBuilderParametersPanel.tsx +55 -0
- package/src/components/QueryBuilderSideBar.tsx +0 -35
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +22 -6
- package/src/components/filter/QueryBuilderFilterPanel.tsx +13 -5
- package/src/components/result/QueryBuilderResultPanel.tsx +9 -1
- package/src/components/shared/BasicValueSpecificationEditor.tsx +288 -285
- package/src/components/shared/QueryBuilderVariableSelector.tsx +22 -0
- package/src/stores/QueryBuilderPropertyEditorState.ts +2 -1
- package/src/stores/QueryBuilderState.ts +14 -0
- package/src/stores/QueryBuilder_LegendApplicationPlugin_Extension.ts +1 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_In.ts +2 -2
- package/src/stores/filter/QueryBuilderFilterState.ts +6 -3
- package/src/stores/filter/operators/QueryBuilderFilterOperator_In.ts +2 -2
- package/src/stores/milestoning/QueryBuilderMilestoningHelper.ts +24 -0
- package/src/stores/milestoning/QueryBuilderMilestoningState.ts +54 -0
- package/src/stores/shared/ValueSpecificationEditorHelper.ts +63 -0
|
@@ -29,9 +29,11 @@ import {
|
|
|
29
29
|
ModalFooterButton,
|
|
30
30
|
PanelFormValidatedTextField,
|
|
31
31
|
QuestionCircleIcon,
|
|
32
|
+
PanelFormSection,
|
|
32
33
|
} from '@finos/legend-art';
|
|
33
34
|
import {
|
|
34
35
|
type Type,
|
|
36
|
+
type ValueSpecification,
|
|
35
37
|
VariableExpression,
|
|
36
38
|
GenericTypeExplicitReference,
|
|
37
39
|
GenericType,
|
|
@@ -53,6 +55,10 @@ import {
|
|
|
53
55
|
getPackageableElementOptionFormatter,
|
|
54
56
|
type PackageableElementOption,
|
|
55
57
|
} from '@finos/legend-lego/graph-editor';
|
|
58
|
+
import { deepClone } from '@finos/legend-shared';
|
|
59
|
+
import { BasicValueSpecificationEditor } from './shared/BasicValueSpecificationEditor.js';
|
|
60
|
+
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../graph/QueryBuilderMetaModelConst.js';
|
|
61
|
+
import { createSupportedFunctionExpression } from '../stores/shared/ValueSpecificationEditorHelper.js';
|
|
56
62
|
|
|
57
63
|
type MultiplicityOption = { label: string; value: Multiplicity };
|
|
58
64
|
|
|
@@ -118,6 +124,13 @@ const VariableExpressionEditor = observer(
|
|
|
118
124
|
const nameInputRef = useCallback((ref: HTMLInputElement | null): void => {
|
|
119
125
|
ref?.focus();
|
|
120
126
|
}, []);
|
|
127
|
+
const [defaultMilestoningValue, setDefaultMilestoningValue] = useState(
|
|
128
|
+
deepClone(lambdaParameterState.value),
|
|
129
|
+
);
|
|
130
|
+
const isMilestoningParameter =
|
|
131
|
+
queryBuilderState.milestoningState.isMilestoningParameter(
|
|
132
|
+
lambdaParameterState.parameter,
|
|
133
|
+
);
|
|
121
134
|
|
|
122
135
|
const getValidationMessage = (input: string): string | undefined =>
|
|
123
136
|
!hasEditedName
|
|
@@ -146,6 +159,13 @@ const VariableExpressionEditor = observer(
|
|
|
146
159
|
if (isCreating) {
|
|
147
160
|
queryParametersState.addParameter(lambdaParameterState);
|
|
148
161
|
}
|
|
162
|
+
if (isMilestoningParameter) {
|
|
163
|
+
queryBuilderState.milestoningState.updateMilestoningParameterValue(
|
|
164
|
+
lambdaParameterState.parameter,
|
|
165
|
+
defaultMilestoningValue,
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
|
|
149
169
|
handleCancel();
|
|
150
170
|
};
|
|
151
171
|
|
|
@@ -231,6 +251,41 @@ const VariableExpressionEditor = observer(
|
|
|
231
251
|
}
|
|
232
252
|
/>
|
|
233
253
|
</div>
|
|
254
|
+
{isMilestoningParameter && defaultMilestoningValue && (
|
|
255
|
+
<PanelFormSection>
|
|
256
|
+
<div className="panel__content__form__section__header__label">
|
|
257
|
+
Value
|
|
258
|
+
</div>
|
|
259
|
+
<div className="panel__content__form__section__header__prompt">
|
|
260
|
+
Choose a default value for this milestoning parameter
|
|
261
|
+
</div>
|
|
262
|
+
<div className="query-builder__variable-editor">
|
|
263
|
+
<BasicValueSpecificationEditor
|
|
264
|
+
valueSpecification={defaultMilestoningValue}
|
|
265
|
+
setValueSpecification={(val: ValueSpecification): void => {
|
|
266
|
+
setDefaultMilestoningValue(deepClone(val));
|
|
267
|
+
}}
|
|
268
|
+
graph={queryBuilderState.graphManagerState.graph}
|
|
269
|
+
obseverContext={queryBuilderState.observerContext}
|
|
270
|
+
typeCheckOption={{
|
|
271
|
+
expectedType: selectedType.value,
|
|
272
|
+
match: selectedType.value === PrimitiveType.DATETIME,
|
|
273
|
+
}}
|
|
274
|
+
resetValue={() => {
|
|
275
|
+
const now = createSupportedFunctionExpression(
|
|
276
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.NOW,
|
|
277
|
+
PrimitiveType.DATETIME,
|
|
278
|
+
);
|
|
279
|
+
setDefaultMilestoningValue(now);
|
|
280
|
+
queryBuilderState.milestoningState.updateMilestoningParameterValue(
|
|
281
|
+
lambdaParameterState.parameter,
|
|
282
|
+
now,
|
|
283
|
+
);
|
|
284
|
+
}}
|
|
285
|
+
/>
|
|
286
|
+
</div>
|
|
287
|
+
</PanelFormSection>
|
|
288
|
+
)}
|
|
234
289
|
</ModalBody>
|
|
235
290
|
<ModalFooter>
|
|
236
291
|
<ModalFooterButton
|
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
CustomSelectorInput,
|
|
19
19
|
createFilter,
|
|
20
20
|
CogIcon,
|
|
21
|
-
ClockIcon,
|
|
22
21
|
clsx,
|
|
23
22
|
PanelHeader,
|
|
24
23
|
compareLabelFn,
|
|
@@ -34,7 +33,6 @@ import {
|
|
|
34
33
|
LATEST_DATE,
|
|
35
34
|
PrimitiveInstanceValue,
|
|
36
35
|
VariableExpression,
|
|
37
|
-
getMilestoneTemporalStereotype,
|
|
38
36
|
PackageableElementExplicitReference,
|
|
39
37
|
RuntimePointer,
|
|
40
38
|
VARIABLE_REFERENCE_TOKEN,
|
|
@@ -75,23 +73,11 @@ const generateClassLabel = (
|
|
|
75
73
|
val: Class,
|
|
76
74
|
queryBuilderState: QueryBuilderState,
|
|
77
75
|
): React.ReactNode => {
|
|
78
|
-
const milestoneStereotype = getMilestoneTemporalStereotype(
|
|
79
|
-
val,
|
|
80
|
-
queryBuilderState.graphManagerState.graph,
|
|
81
|
-
);
|
|
82
|
-
|
|
83
76
|
const isDeprecatedClass = isElementDeprecated(
|
|
84
77
|
val,
|
|
85
78
|
queryBuilderState.graphManagerState.graph,
|
|
86
79
|
);
|
|
87
80
|
|
|
88
|
-
let milestoningTooltipText: string | undefined;
|
|
89
|
-
if (milestoneStereotype) {
|
|
90
|
-
milestoningTooltipText = queryBuilderState.milestoningState
|
|
91
|
-
.getMilestoningImplementation(milestoneStereotype)
|
|
92
|
-
.getMilestoningToolTipText();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
81
|
return (
|
|
96
82
|
<div
|
|
97
83
|
className={clsx('query-builder__setup__class-option-label', {
|
|
@@ -102,12 +88,6 @@ const generateClassLabel = (
|
|
|
102
88
|
<div className="query-builder__setup__class-option-label__name">
|
|
103
89
|
{val.name}
|
|
104
90
|
</div>
|
|
105
|
-
{milestoningTooltipText && (
|
|
106
|
-
<ClockIcon
|
|
107
|
-
className="query-builder__setup__class-option-label__milestoning"
|
|
108
|
-
title={`This class is milestoned:\n${milestoningTooltipText}`}
|
|
109
|
-
/>
|
|
110
|
-
)}
|
|
111
91
|
</div>
|
|
112
92
|
);
|
|
113
93
|
};
|
|
@@ -151,10 +131,6 @@ export const QueryBuilderClassSelector = observer(
|
|
|
151
131
|
onClassChange?.(val.value);
|
|
152
132
|
};
|
|
153
133
|
|
|
154
|
-
// milestoning
|
|
155
|
-
const showMilestoningEditor = (): void =>
|
|
156
|
-
milestoningState.setShowMilestoningEditor(true);
|
|
157
|
-
|
|
158
134
|
return (
|
|
159
135
|
<div className="query-builder__setup__config-group query-builder__setup__config-group--class">
|
|
160
136
|
<div className="query-builder__setup__config-group__item ">
|
|
@@ -192,17 +168,6 @@ export const QueryBuilderClassSelector = observer(
|
|
|
192
168
|
.TEMPORARY__isLightColorThemeEnabled,
|
|
193
169
|
})}
|
|
194
170
|
/>
|
|
195
|
-
{queryBuilderState.isQuerySupported && (
|
|
196
|
-
<button
|
|
197
|
-
className="btn--dark btn__icon--dark query-builder__setup__milestoning"
|
|
198
|
-
tabIndex={-1}
|
|
199
|
-
onClick={showMilestoningEditor}
|
|
200
|
-
disabled={!milestoningState.isMilestonedQuery}
|
|
201
|
-
title="Edit Milestoning Parameters"
|
|
202
|
-
>
|
|
203
|
-
<ClockIcon />
|
|
204
|
-
</button>
|
|
205
|
-
)}
|
|
206
171
|
{milestoningState.isMilestonedQuery && (
|
|
207
172
|
<MilestoningParametersEditor
|
|
208
173
|
queryBuilderState={queryBuilderState}
|
|
@@ -1163,8 +1163,12 @@ export const QueryBuilderTDSPanel = observer(
|
|
|
1163
1163
|
>
|
|
1164
1164
|
<div className="query-builder__projection__result-modifier-prompt__header__label__title">
|
|
1165
1165
|
{getNameOfValueSpecification(
|
|
1166
|
-
tdsState.queryBuilderState.milestoningState
|
|
1167
|
-
.
|
|
1166
|
+
tdsState.queryBuilderState.milestoningState.getMilestoningParameterValue(
|
|
1167
|
+
tdsState.queryBuilderState.milestoningState
|
|
1168
|
+
.businessDate,
|
|
1169
|
+
) ??
|
|
1170
|
+
tdsState.queryBuilderState.milestoningState
|
|
1171
|
+
.businessDate,
|
|
1168
1172
|
tdsState.queryBuilderState,
|
|
1169
1173
|
)}
|
|
1170
1174
|
</div>
|
|
@@ -1182,8 +1186,12 @@ export const QueryBuilderTDSPanel = observer(
|
|
|
1182
1186
|
>
|
|
1183
1187
|
<div className="query-builder__projection__result-modifier-prompt__header__label__title">
|
|
1184
1188
|
{getNameOfValueSpecification(
|
|
1185
|
-
tdsState.queryBuilderState.milestoningState
|
|
1186
|
-
.
|
|
1189
|
+
tdsState.queryBuilderState.milestoningState.getMilestoningParameterValue(
|
|
1190
|
+
tdsState.queryBuilderState.milestoningState
|
|
1191
|
+
.processingDate,
|
|
1192
|
+
) ??
|
|
1193
|
+
tdsState.queryBuilderState.milestoningState
|
|
1194
|
+
.processingDate,
|
|
1187
1195
|
tdsState.queryBuilderState,
|
|
1188
1196
|
)}
|
|
1189
1197
|
</div>
|
|
@@ -1223,12 +1231,20 @@ export const QueryBuilderTDSPanel = observer(
|
|
|
1223
1231
|
<div className="query-builder__projection__result-modifier-prompt__header__label__title">
|
|
1224
1232
|
(
|
|
1225
1233
|
{getNameOfValueSpecification(
|
|
1226
|
-
tdsState.queryBuilderState.milestoningState.
|
|
1234
|
+
tdsState.queryBuilderState.milestoningState.getMilestoningParameterValue(
|
|
1235
|
+
tdsState.queryBuilderState.milestoningState
|
|
1236
|
+
.startDate,
|
|
1237
|
+
) ??
|
|
1238
|
+
tdsState.queryBuilderState.milestoningState
|
|
1239
|
+
.startDate,
|
|
1227
1240
|
tdsState.queryBuilderState,
|
|
1228
1241
|
)}{' '}
|
|
1229
1242
|
-{' '}
|
|
1230
1243
|
{getNameOfValueSpecification(
|
|
1231
|
-
tdsState.queryBuilderState.milestoningState.
|
|
1244
|
+
tdsState.queryBuilderState.milestoningState.getMilestoningParameterValue(
|
|
1245
|
+
tdsState.queryBuilderState.milestoningState.endDate,
|
|
1246
|
+
) ??
|
|
1247
|
+
tdsState.queryBuilderState.milestoningState.endDate,
|
|
1232
1248
|
tdsState.queryBuilderState,
|
|
1233
1249
|
)}
|
|
1234
1250
|
)
|
|
@@ -92,6 +92,7 @@ import {
|
|
|
92
92
|
SimpleFunctionExpression,
|
|
93
93
|
type ValueSpecification,
|
|
94
94
|
VariableExpression,
|
|
95
|
+
PrimitiveType,
|
|
95
96
|
} from '@finos/legend-graph';
|
|
96
97
|
import {
|
|
97
98
|
type QueryBuilderProjectionColumnDragSource,
|
|
@@ -111,6 +112,7 @@ import { getPropertyChainName } from '../../stores/QueryBuilderPropertyEditorSta
|
|
|
111
112
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../graph/QueryBuilderMetaModelConst.js';
|
|
112
113
|
import { buildPropertyExpressionChain } from '../../stores/QueryBuilderValueSpecificationBuilderHelper.js';
|
|
113
114
|
import { QueryBuilderPanelIssueCountBadge } from '../shared/QueryBuilderPanelIssueCountBadge.js';
|
|
115
|
+
import { convertTextToPrimitiveInstanceValue } from '../../stores/shared/ValueSpecificationEditorHelper.js';
|
|
114
116
|
|
|
115
117
|
const isCollectionProperty = (
|
|
116
118
|
propertyExpression: AbstractPropertyExpression,
|
|
@@ -771,11 +773,17 @@ const QueryBuilderFilterConditionEditor = observer(
|
|
|
771
773
|
};
|
|
772
774
|
const debouncedTypeaheadSearch = useMemo(
|
|
773
775
|
() =>
|
|
774
|
-
debounce(
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
776
|
+
debounce((inputValue: string) => {
|
|
777
|
+
const inputValueSpec = convertTextToPrimitiveInstanceValue(
|
|
778
|
+
PrimitiveType.STRING,
|
|
779
|
+
inputValue,
|
|
780
|
+
queryBuilderState.observerContext,
|
|
781
|
+
);
|
|
782
|
+
return node.condition.handleTypeaheadSearch(
|
|
783
|
+
inputValueSpec ?? undefined,
|
|
784
|
+
);
|
|
785
|
+
}, 1000),
|
|
786
|
+
[node, queryBuilderState.observerContext],
|
|
779
787
|
);
|
|
780
788
|
const cleanUpReloadValues = (): void => {
|
|
781
789
|
node.condition.typeaheadSearchState.complete();
|
|
@@ -204,7 +204,15 @@ export const QueryBuilderResultPanel = observer(
|
|
|
204
204
|
const runQuery = (): void => {
|
|
205
205
|
resultState.setSelectedCells([]);
|
|
206
206
|
resultState.pressedRunQuery.inProgress();
|
|
207
|
-
if (
|
|
207
|
+
if (
|
|
208
|
+
queryParametersState.parameterStates.length &&
|
|
209
|
+
queryParametersState.parameterStates.find(
|
|
210
|
+
(param) =>
|
|
211
|
+
!queryBuilderState.milestoningState.isMilestoningParameter(
|
|
212
|
+
param.parameter,
|
|
213
|
+
),
|
|
214
|
+
)
|
|
215
|
+
) {
|
|
208
216
|
queryParametersState.parameterValuesEditorState.open(
|
|
209
217
|
(): Promise<void> =>
|
|
210
218
|
flowResult(resultState.runQuery()).catch(
|