@finos/legend-query-builder 0.6.19 → 0.6.21
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/components/QueryBuilder.d.ts +1 -0
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +27 -3
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderComponentTestUtils.d.ts.map +1 -1
- package/lib/components/QueryBuilderComponentTestUtils.js +3 -2
- package/lib/components/QueryBuilderComponentTestUtils.js.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts +1 -0
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderDiffPanel.d.ts +1 -0
- package/lib/components/QueryBuilderDiffPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.d.ts +1 -0
- package/lib/components/QueryBuilderParametersPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts +1 -0
- package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.d.ts +1 -0
- package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.js +28 -9
- package/lib/components/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.d.ts +1 -0
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderTextEditor.d.ts +1 -0
- package/lib/components/QueryBuilderTextEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts +1 -0
- package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.d.ts +4 -0
- package/lib/components/QueryBuilder_LegendApplicationPlugin.d.ts.map +1 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.js +3 -0
- package/lib/components/QueryBuilder_LegendApplicationPlugin.js.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts +1 -0
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts +1 -0
- package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts +1 -0
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts +1 -0
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +1 -0
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderOLAPGroupByPanel.d.ts +1 -0
- package/lib/components/fetch-structure/QueryBuilderOLAPGroupByPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts +1 -0
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts +1 -0
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts +1 -0
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts +1 -0
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts +1 -0
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/shared/LambdaEditor.d.ts +1 -0
- package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
- package/lib/components/shared/LambdaParameterValuesEditor.d.ts +1 -0
- package/lib/components/shared/LambdaParameterValuesEditor.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts +1 -0
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.d.ts +1 -0
- package/lib/components/watermark/QueryBuilderWatermark.d.ts.map +1 -1
- package/lib/graphManager/QueryBuilderHashUtils.d.ts +2 -1
- package/lib/graphManager/QueryBuilderHashUtils.d.ts.map +1 -1
- package/lib/graphManager/QueryBuilderHashUtils.js +1 -0
- package/lib/graphManager/QueryBuilderHashUtils.js.map +1 -1
- package/lib/index.css +1 -17
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/package.json +10 -9
- package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderResultState.js +2 -1
- package/lib/stores/QueryBuilderResultState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +4 -0
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +17 -0
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateTestUtils.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateTestUtils.js +3 -2
- package/lib/stores/QueryBuilderStateTestUtils.js.map +1 -1
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.d.ts +25 -0
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.d.ts.map +1 -0
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.js +40 -0
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.js.map +1 -0
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js +5 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
- package/package.json +17 -16
- package/src/components/QueryBuilder.tsx +75 -0
- package/src/components/QueryBuilderComponentTestUtils.tsx +3 -1
- package/src/components/QueryBuilderResultPanel.tsx +33 -22
- package/src/components/QueryBuilder_LegendApplicationPlugin.ts +9 -0
- package/src/components/explorer/QueryBuilderExplorerPanel.tsx +0 -1
- package/src/graphManager/QueryBuilderHashUtils.ts +2 -0
- package/src/index.ts +4 -1
- package/src/stores/QueryBuilderResultState.ts +5 -4
- package/src/stores/QueryBuilderState.ts +19 -0
- package/src/stores/QueryBuilderStateTestUtils.ts +3 -1
- package/src/stores/entitlements/QueryBuilderCheckEntitlementsState.ts +46 -0
- package/src/stores/explorer/QueryBuilderExplorerState.ts +7 -1
- package/tsconfig.json +1 -0
@@ -14,7 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
-
import {
|
17
|
+
import { AgGridReact } from '@ag-grid-community/react';
|
18
18
|
import { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';
|
19
19
|
import {
|
20
20
|
BlankPanelContent,
|
@@ -59,6 +59,7 @@ import {
|
|
59
59
|
guaranteeNonNullable,
|
60
60
|
isBoolean,
|
61
61
|
type PlainObject,
|
62
|
+
prettyDuration,
|
62
63
|
} from '@finos/legend-shared';
|
63
64
|
import { forwardRef, useState } from 'react';
|
64
65
|
import type { CellMouseOverEvent } from '@ag-grid-community/core';
|
@@ -362,18 +363,14 @@ const QueryBuilderGridResult = observer(
|
|
362
363
|
onCellMouseOver={(event): void => {
|
363
364
|
setCellDoubleClickedEvent(event);
|
364
365
|
}}
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
flex={1}
|
374
|
-
/>
|
375
|
-
))}
|
376
|
-
</AgGridReact>
|
366
|
+
columnDefs={columns.map((colName) => ({
|
367
|
+
minWidth: 50,
|
368
|
+
sortable: true,
|
369
|
+
resizable: true,
|
370
|
+
field: colName,
|
371
|
+
flex: 1,
|
372
|
+
}))}
|
373
|
+
/>
|
377
374
|
</ContextMenu>
|
378
375
|
);
|
379
376
|
},
|
@@ -498,15 +495,29 @@ export const QueryBuilderResultPanel = observer(
|
|
498
495
|
);
|
499
496
|
};
|
500
497
|
const allowSettingPreviewLimit = queryBuilderState.isQuerySupported;
|
501
|
-
const resultSetSize = (result: ExecutionResult | undefined): string =>
|
502
|
-
result
|
503
|
-
? result instanceof TDSExecutionResult
|
504
|
-
? `${
|
505
|
-
result.result.rows.length
|
506
|
-
} row(s) in ${resultState.executionDuration?.toString()} ms`
|
507
|
-
: `run in ${resultState.executionDuration?.toString()} ms`
|
508
|
-
: '';
|
509
498
|
|
499
|
+
const getResultSetDescription = (
|
500
|
+
_executionResult: ExecutionResult,
|
501
|
+
): string | undefined => {
|
502
|
+
const queryDuration = resultState.executionDuration
|
503
|
+
? prettyDuration(resultState.executionDuration, {
|
504
|
+
ms: true,
|
505
|
+
})
|
506
|
+
: undefined;
|
507
|
+
if (_executionResult instanceof TDSExecutionResult) {
|
508
|
+
const rowLength = _executionResult.result.rows.length;
|
509
|
+
return `${rowLength} row(s)${
|
510
|
+
queryDuration ? ` in ${queryDuration}` : ''
|
511
|
+
}`;
|
512
|
+
}
|
513
|
+
if (!queryDuration) {
|
514
|
+
return undefined;
|
515
|
+
}
|
516
|
+
return `query ran in ${queryDuration}`;
|
517
|
+
};
|
518
|
+
const resultDescription = executionResult
|
519
|
+
? getResultSetDescription(executionResult)
|
520
|
+
: undefined;
|
510
521
|
return (
|
511
522
|
<div
|
512
523
|
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_RESULT_PANEL}
|
@@ -516,7 +527,7 @@ export const QueryBuilderResultPanel = observer(
|
|
516
527
|
<div className="panel__header__title">
|
517
528
|
<div className="panel__header__title__label">result</div>
|
518
529
|
<div className="query-builder__result__analytics">
|
519
|
-
{
|
530
|
+
{resultDescription ?? ''}
|
520
531
|
</div>
|
521
532
|
{executionResult && resultState.checkForStaleResults && (
|
522
533
|
<div className="query-builder__result__stale-status">
|
@@ -22,6 +22,11 @@ import {
|
|
22
22
|
} from '@finos/legend-application';
|
23
23
|
import packageJson from '../../package.json';
|
24
24
|
import { QUERY_BUILDER_COMMAND_CONFIG } from '../stores/QueryBuilderCommand.js';
|
25
|
+
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
26
|
+
|
27
|
+
export type CheckEntitlementEditorRender = (
|
28
|
+
queryBuilderState: QueryBuilderState,
|
29
|
+
) => React.ReactNode | undefined;
|
25
30
|
|
26
31
|
export class QueryBuilder_LegendApplicationPlugin extends LegendApplicationPlugin {
|
27
32
|
static NAME = packageJson.extensions.applicationPlugin;
|
@@ -41,4 +46,8 @@ export class QueryBuilder_LegendApplicationPlugin extends LegendApplicationPlugi
|
|
41
46
|
QUERY_BUILDER_COMMAND_CONFIG,
|
42
47
|
);
|
43
48
|
}
|
49
|
+
|
50
|
+
getCheckEntitlementsEditorRender(): CheckEntitlementEditorRender | undefined {
|
51
|
+
return undefined;
|
52
|
+
}
|
44
53
|
}
|
@@ -803,7 +803,6 @@ export const QueryBuilderExplorerPanel = observer(
|
|
803
803
|
applicationStore.alertUnhandledError,
|
804
804
|
);
|
805
805
|
}, [applicationStore, explorerState, queryBuilderState.mapping]);
|
806
|
-
|
807
806
|
return (
|
808
807
|
<div
|
809
808
|
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_EXPLORER}
|
@@ -113,4 +113,6 @@ export enum QUERY_BUILDER_HASH_STRUCTURE {
|
|
113
113
|
MILESTONING_STATE = 'MILESTONING_STATE',
|
114
114
|
UNSUPPORTED_QUERY_STATE = 'UNSUPPORTED_QUERY_STATE',
|
115
115
|
QUERY_BUILDER_STATE = 'QUERY_BUILDER_STATE',
|
116
|
+
|
117
|
+
CHECK_ENTITLEMENTS_STATE = 'CHECK_ENTITLEMENTS_STATE',
|
116
118
|
}
|
package/src/index.ts
CHANGED
@@ -18,7 +18,10 @@ export * from './stores/QueryBuilderBootstraper.js';
|
|
18
18
|
export { QueryBuilder_GraphManagerPreset } from './graphManager/QueryBuilder_GraphManagerPreset.js';
|
19
19
|
|
20
20
|
export { QUERY_BUILDER_TEST_ID } from './components/QueryBuilder_TestID.js';
|
21
|
-
export {
|
21
|
+
export {
|
22
|
+
type CheckEntitlementEditorRender,
|
23
|
+
QueryBuilder_LegendApplicationPlugin,
|
24
|
+
} from './components/QueryBuilder_LegendApplicationPlugin.js';
|
22
25
|
export { QueryBuilderNavigationBlocker } from './components/QueryBuilderNavigationBlocker.js';
|
23
26
|
export {
|
24
27
|
QueryBuilder,
|
@@ -210,6 +210,10 @@ export class QueryBuilderResultState {
|
|
210
210
|
`Runtime is required to execute query`,
|
211
211
|
);
|
212
212
|
const query = this.buildExecutionRawLambda();
|
213
|
+
const parameterValues = buildExecutionParameterValues(
|
214
|
+
this.queryBuilderState.parametersState.parameterStates,
|
215
|
+
this.queryBuilderState.graphManagerState,
|
216
|
+
);
|
213
217
|
const startTime = Date.now();
|
214
218
|
const promise =
|
215
219
|
this.queryBuilderState.graphManagerState.graphManager.runQuery(
|
@@ -218,10 +222,7 @@ export class QueryBuilderResultState {
|
|
218
222
|
runtime,
|
219
223
|
this.queryBuilderState.graphManagerState.graph,
|
220
224
|
{
|
221
|
-
parameterValues
|
222
|
-
this.queryBuilderState.parametersState.parameterStates,
|
223
|
-
this.queryBuilderState.graphManagerState,
|
224
|
-
),
|
225
|
+
parameterValues,
|
225
226
|
},
|
226
227
|
);
|
227
228
|
this.setQueryRunPromise(promise);
|
@@ -77,6 +77,7 @@ import { QUERY_BUILDER_HASH_STRUCTURE } from '../graphManager/QueryBuilderHashUt
|
|
77
77
|
import { QUERY_BUILDER_COMMAND_KEY } from './QueryBuilderCommand.js';
|
78
78
|
import { QueryBuilderWatermarkState } from './watermark/QueryBuilderWatermarkState.js';
|
79
79
|
import { QueryBuilderConstantsState } from './QueryBuilderConstantsState.js';
|
80
|
+
import { QueryBuilderCheckEntitlementsState } from './entitlements/QueryBuilderCheckEntitlementsState.js';
|
80
81
|
|
81
82
|
export abstract class QueryBuilderState implements CommandRegistrar {
|
82
83
|
applicationStore: GenericLegendApplicationStore;
|
@@ -91,6 +92,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
91
92
|
fetchStructureState: QueryBuilderFetchStructureState;
|
92
93
|
filterState: QueryBuilderFilterState;
|
93
94
|
watermarkState: QueryBuilderWatermarkState;
|
95
|
+
checkEntitlementsState: QueryBuilderCheckEntitlementsState;
|
94
96
|
filterOperators: QueryBuilderFilterOperator[] =
|
95
97
|
getQueryBuilderCoreFilterOperators();
|
96
98
|
resultState: QueryBuilderResultState;
|
@@ -102,6 +104,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
102
104
|
showFunctionsExplorerPanel = false;
|
103
105
|
showParametersPanel = false;
|
104
106
|
isEditingWatermark = false;
|
107
|
+
isCheckingEntitlments = false;
|
105
108
|
|
106
109
|
class?: Class | undefined;
|
107
110
|
mapping?: Mapping | undefined;
|
@@ -123,12 +126,14 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
123
126
|
fetchStructureState: observable,
|
124
127
|
filterState: observable,
|
125
128
|
watermarkState: observable,
|
129
|
+
checkEntitlementsState: observable,
|
126
130
|
resultState: observable,
|
127
131
|
textEditorState: observable,
|
128
132
|
unsupportedQueryState: observable,
|
129
133
|
showFunctionsExplorerPanel: observable,
|
130
134
|
showParametersPanel: observable,
|
131
135
|
isEditingWatermark: observable,
|
136
|
+
isCheckingEntitlments: observable,
|
132
137
|
changeDetectionState: observable,
|
133
138
|
class: observable,
|
134
139
|
mapping: observable,
|
@@ -141,6 +146,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
141
146
|
setShowFunctionsExplorerPanel: action,
|
142
147
|
setShowParametersPanel: action,
|
143
148
|
setIsEditingWatermark: action,
|
149
|
+
setIsCheckingEntitlments: action,
|
144
150
|
setClass: action,
|
145
151
|
setMapping: action,
|
146
152
|
setRuntimeValue: action,
|
@@ -167,6 +173,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
167
173
|
this.fetchStructureState = new QueryBuilderFetchStructureState(this);
|
168
174
|
this.filterState = new QueryBuilderFilterState(this, this.filterOperators);
|
169
175
|
this.watermarkState = new QueryBuilderWatermarkState(this);
|
176
|
+
this.checkEntitlementsState = new QueryBuilderCheckEntitlementsState(this);
|
170
177
|
this.resultState = new QueryBuilderResultState(this);
|
171
178
|
this.textEditorState = new QueryBuilderTextEditorState(this);
|
172
179
|
this.unsupportedQueryState = new QueryBuilderUnsupportedQueryState(this);
|
@@ -230,6 +237,10 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
230
237
|
this.isEditingWatermark = val;
|
231
238
|
}
|
232
239
|
|
240
|
+
setIsCheckingEntitlments(val: boolean): void {
|
241
|
+
this.isCheckingEntitlments = val;
|
242
|
+
}
|
243
|
+
|
233
244
|
setClass(val: Class | undefined): void {
|
234
245
|
this.class = val;
|
235
246
|
}
|
@@ -284,13 +295,20 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
284
295
|
this.textEditorState = new QueryBuilderTextEditorState(this);
|
285
296
|
this.unsupportedQueryState = new QueryBuilderUnsupportedQueryState(this);
|
286
297
|
this.milestoningState = new QueryBuilderMilestoningState(this);
|
298
|
+
const mappingModelCoverageAnalysisResult =
|
299
|
+
this.explorerState.mappingModelCoverageAnalysisResult;
|
287
300
|
this.explorerState = new QueryBuilderExplorerState(this);
|
301
|
+
if (mappingModelCoverageAnalysisResult) {
|
302
|
+
this.explorerState.mappingModelCoverageAnalysisResult =
|
303
|
+
mappingModelCoverageAnalysisResult;
|
304
|
+
}
|
288
305
|
this.explorerState.refreshTreeData();
|
289
306
|
this.parametersState = new QueryBuilderParametersState(this);
|
290
307
|
this.constantState = new QueryBuilderConstantsState(this);
|
291
308
|
this.functionsExplorerState = new QueryFunctionsExplorerState(this);
|
292
309
|
this.filterState = new QueryBuilderFilterState(this, this.filterOperators);
|
293
310
|
this.watermarkState = new QueryBuilderWatermarkState(this);
|
311
|
+
this.checkEntitlementsState = new QueryBuilderCheckEntitlementsState(this);
|
294
312
|
|
295
313
|
const currentFetchStructureImplementationType =
|
296
314
|
this.fetchStructureState.implementation.type;
|
@@ -528,6 +546,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
528
546
|
this.parametersState,
|
529
547
|
this.filterState,
|
530
548
|
this.watermarkState,
|
549
|
+
this.checkEntitlementsState,
|
531
550
|
this.fetchStructureState.implementation,
|
532
551
|
]);
|
533
552
|
}
|
@@ -74,13 +74,15 @@ export const TEST__setUpQueryBuilderState = async (
|
|
74
74
|
}
|
75
75
|
}
|
76
76
|
|
77
|
-
if (rawMappingModelCoverageAnalysisResult) {
|
77
|
+
if (rawMappingModelCoverageAnalysisResult && executionContext) {
|
78
|
+
const graph = queryBuilderState.graphManagerState.graph;
|
78
79
|
createSpy(
|
79
80
|
queryBuilderState.graphManagerState.graphManager,
|
80
81
|
'analyzeMappingModelCoverage',
|
81
82
|
).mockResolvedValue(
|
82
83
|
queryBuilderState.graphManagerState.graphManager.buildMappingModelCoverageAnalysisResult(
|
83
84
|
rawMappingModelCoverageAnalysisResult,
|
85
|
+
graph.getMapping(executionContext.mapping),
|
84
86
|
),
|
85
87
|
);
|
86
88
|
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
import { type Hashable, hashArray } from '@finos/legend-shared';
|
18
|
+
import { makeObservable, observable, action, computed } from 'mobx';
|
19
|
+
import { QUERY_BUILDER_HASH_STRUCTURE } from '../../graphManager/QueryBuilderHashUtils.js';
|
20
|
+
import type { QueryBuilderState } from '../QueryBuilderState.js';
|
21
|
+
|
22
|
+
export class QueryBuilderCheckEntitlementsState implements Hashable {
|
23
|
+
readonly queryBuilderState: QueryBuilderState;
|
24
|
+
isCheckingEntitlements = false;
|
25
|
+
|
26
|
+
constructor(queryBuilderState: QueryBuilderState) {
|
27
|
+
makeObservable(this, {
|
28
|
+
isCheckingEntitlements: observable,
|
29
|
+
setIsCheckingEntitlements: action,
|
30
|
+
hashCode: computed,
|
31
|
+
});
|
32
|
+
|
33
|
+
this.queryBuilderState = queryBuilderState;
|
34
|
+
}
|
35
|
+
|
36
|
+
setIsCheckingEntitlements(val: boolean): void {
|
37
|
+
this.isCheckingEntitlements = val;
|
38
|
+
}
|
39
|
+
|
40
|
+
get hashCode(): string {
|
41
|
+
return hashArray([
|
42
|
+
QUERY_BUILDER_HASH_STRUCTURE.CHECK_ENTITLEMENTS_STATE,
|
43
|
+
this.isCheckingEntitlements,
|
44
|
+
]);
|
45
|
+
}
|
46
|
+
}
|
@@ -660,7 +660,13 @@ export class QueryBuilderExplorerState {
|
|
660
660
|
}
|
661
661
|
|
662
662
|
*analyzeMappingModelCoverage(): GeneratorFn<void> {
|
663
|
-
if
|
663
|
+
// We will only refetch if the analysis result's mapping has changed.
|
664
|
+
// This makes the assumption that the mapping has not been edited, which is a valid assumption since query is not for editing mappings
|
665
|
+
if (
|
666
|
+
this.queryBuilderState.mapping &&
|
667
|
+
this.queryBuilderState.mapping !==
|
668
|
+
this.mappingModelCoverageAnalysisResult?.mapping
|
669
|
+
) {
|
664
670
|
this.mappingModelCoverageAnalysisState.inProgress();
|
665
671
|
this.mappingModelCoverageAnalysisState.setMessage('Analyzing Mapping...');
|
666
672
|
try {
|
package/tsconfig.json
CHANGED
@@ -68,6 +68,7 @@
|
|
68
68
|
"./src/stores/QueryBuilderValueSpecificationBuilderHelper.ts",
|
69
69
|
"./src/stores/QueryBuilderValueSpecificationHelper.ts",
|
70
70
|
"./src/stores/ServiceInfo.ts",
|
71
|
+
"./src/stores/entitlements/QueryBuilderCheckEntitlementsState.ts",
|
71
72
|
"./src/stores/explorer/QueryBuilderExplorerState.ts",
|
72
73
|
"./src/stores/explorer/QueryBuilderPropertySearchState.ts",
|
73
74
|
"./src/stores/explorer/QueryFunctionsExplorerState.ts",
|