@finos/legend-query-builder 3.2.0 → 3.2.2
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/__lib__/QueryBuilderColorTheme.d.ts +23 -0
- package/lib/__lib__/QueryBuilderColorTheme.d.ts.map +1 -0
- package/lib/__lib__/QueryBuilderColorTheme.js +24 -0
- package/lib/__lib__/QueryBuilderColorTheme.js.map +1 -0
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +24 -34
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.d.ts +0 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.d.ts.map +1 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.js +3 -4
- package/lib/components/QueryBuilder_LegendApplicationPlugin.js.map +1 -1
- package/lib/components/QueryLoader.d.ts.map +1 -1
- package/lib/components/QueryLoader.js +6 -2
- package/lib/components/QueryLoader.js.map +1 -1
- package/lib/components/data-access/DataAccessOverview.d.ts +23 -0
- package/lib/components/data-access/DataAccessOverview.d.ts.map +1 -0
- package/lib/components/data-access/DataAccessOverview.js +146 -0
- package/lib/components/data-access/DataAccessOverview.js.map +1 -0
- package/lib/components/execution-plan/ExecutionPlanViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/ExecutionPlanViewer.js +3 -3
- package/lib/components/execution-plan/ExecutionPlanViewer.js.map +1 -1
- package/lib/components/execution-plan/SQLExecutionNodeViewer.js +1 -1
- package/lib/components/execution-plan/SQLExecutionNodeViewer.js.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +2 -2
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts +0 -18
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +34 -36
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
- package/lib/components/shared/LambdaEditor.js +7 -19
- package/lib/components/shared/LambdaEditor.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +6 -4
- package/lib/stores/QueryBuilderState.d.ts +3 -3
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +34 -18
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts +9 -0
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts.map +1 -1
- package/lib/stores/data-access/DataAccessState.d.ts +56 -0
- package/lib/stores/data-access/DataAccessState.d.ts.map +1 -0
- package/lib/stores/data-access/DataAccessState.js +212 -0
- package/lib/stores/data-access/DataAccessState.js.map +1 -0
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.d.ts +4 -2
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.d.ts.map +1 -1
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.js +20 -6
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.js.map +1 -1
- package/package.json +14 -12
- package/src/__lib__/QueryBuilderColorTheme.ts +23 -0
- package/src/components/QueryBuilder.tsx +85 -96
- package/src/components/QueryBuilder_LegendApplicationPlugin.ts +4 -5
- package/src/components/QueryLoader.tsx +4 -1
- package/src/components/data-access/DataAccessOverview.tsx +308 -0
- package/src/components/execution-plan/ExecutionPlanViewer.tsx +1 -3
- package/src/components/execution-plan/SQLExecutionNodeViewer.tsx +1 -1
- package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +1 -1
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +2 -3
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +99 -102
- package/src/components/shared/LambdaEditor.tsx +4 -21
- package/src/index.ts +4 -0
- package/src/stores/QueryBuilderState.ts +65 -19
- package/src/stores/QueryBuilder_LegendApplicationPlugin_Extension.ts +10 -0
- package/src/stores/data-access/DataAccessState.ts +322 -0
- package/src/stores/entitlements/QueryBuilderCheckEntitlementsState.ts +53 -6
- package/tsconfig.json +3 -0
@@ -16,24 +16,38 @@
|
|
16
16
|
import { hashArray } from '@finos/legend-shared';
|
17
17
|
import { makeObservable, observable, action, computed } from 'mobx';
|
18
18
|
import { QUERY_BUILDER_STATE_HASH_STRUCTURE } from '../QueryBuilderStateHashUtils.js';
|
19
|
+
import { DataAccessState } from '../data-access/DataAccessState.js';
|
20
|
+
import { RuntimePointer, InMemoryGraphData, } from '@finos/legend-graph';
|
19
21
|
export class QueryBuilderCheckEntitlementsState {
|
20
22
|
queryBuilderState;
|
21
|
-
|
23
|
+
dataAccessState;
|
24
|
+
showCheckEntitlementsViewer = false;
|
22
25
|
constructor(queryBuilderState) {
|
23
26
|
makeObservable(this, {
|
24
|
-
|
25
|
-
|
27
|
+
showCheckEntitlementsViewer: observable,
|
28
|
+
dataAccessState: observable,
|
29
|
+
setShowCheckEntitlementsViewer: action,
|
26
30
|
hashCode: computed,
|
27
31
|
});
|
28
32
|
this.queryBuilderState = queryBuilderState;
|
29
33
|
}
|
30
|
-
|
31
|
-
this.
|
34
|
+
setShowCheckEntitlementsViewer(val) {
|
35
|
+
this.showCheckEntitlementsViewer = val;
|
36
|
+
this.dataAccessState = undefined;
|
37
|
+
if (this.queryBuilderState.mapping &&
|
38
|
+
this.queryBuilderState.runtimeValue instanceof RuntimePointer) {
|
39
|
+
const mappingPath = this.queryBuilderState.mapping.path;
|
40
|
+
const runtimePath = this.queryBuilderState.runtimeValue.packageableRuntime.value.path;
|
41
|
+
this.dataAccessState = new DataAccessState(this.queryBuilderState.applicationStore, this.queryBuilderState.graphManagerState, {
|
42
|
+
surveyDatasets: async () => this.queryBuilderState.graphManagerState.graphManager.surveyDatasets(mappingPath, runtimePath, this.queryBuilderState.buildQuery(), new InMemoryGraphData(this.queryBuilderState.graphManagerState.graph)),
|
43
|
+
checkDatasetEntitlements: async (datasets) => this.queryBuilderState.graphManagerState.graphManager.checkDatasetEntitlements(datasets, mappingPath, runtimePath, this.queryBuilderState.buildQuery(), new InMemoryGraphData(this.queryBuilderState.graphManagerState.graph)),
|
44
|
+
});
|
45
|
+
}
|
32
46
|
}
|
33
47
|
get hashCode() {
|
34
48
|
return hashArray([
|
35
49
|
QUERY_BUILDER_STATE_HASH_STRUCTURE.CHECK_ENTITLEMENTS_STATE,
|
36
|
-
this.
|
50
|
+
this.showCheckEntitlementsViewer,
|
37
51
|
]);
|
38
52
|
}
|
39
53
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"QueryBuilderCheckEntitlementsState.js","sourceRoot":"","sources":["../../../src/stores/entitlements/QueryBuilderCheckEntitlementsState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAiB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACpE,OAAO,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;
|
1
|
+
{"version":3,"file":"QueryBuilderCheckEntitlementsState.js","sourceRoot":"","sources":["../../../src/stores/entitlements/QueryBuilderCheckEntitlementsState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAiB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACpE,OAAO,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAEtF,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EACL,cAAc,EAGd,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,OAAO,kCAAkC;IACpC,iBAAiB,CAAoB;IAE9C,eAAe,CAA+B;IAC9C,2BAA2B,GAAG,KAAK,CAAC;IAEpC,YAAY,iBAAoC;QAC9C,cAAc,CAAC,IAAI,EAAE;YACnB,2BAA2B,EAAE,UAAU;YACvC,eAAe,EAAE,UAAU;YAC3B,8BAA8B,EAAE,MAAM;YACtC,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,8BAA8B,CAAC,GAAY;QACzC,IAAI,CAAC,2BAA2B,GAAG,GAAG,CAAC;QAEvC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,IACE,IAAI,CAAC,iBAAiB,CAAC,OAAO;YAC9B,IAAI,CAAC,iBAAiB,CAAC,YAAY,YAAY,cAAc,EAC7D;YACA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC;YACxD,MAAM,WAAW,GACf,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;YACpE,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CACxC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EACvC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EACxC;gBACE,cAAc,EAAE,KAAK,IAAqC,EAAE,CAC1D,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAClE,WAAW,EACX,WAAW,EACX,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,EACnC,IAAI,iBAAiB,CACnB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,CAC/C,CACF;gBACH,wBAAwB,EAAE,KAAK,EAC7B,QAAgC,EACK,EAAE,CACvC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC,wBAAwB,CAC5E,QAAQ,EACR,WAAW,EACX,WAAW,EACX,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,EACnC,IAAI,iBAAiB,CACnB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,CAC/C,CACF;aACJ,CACF,CAAC;SACH;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,SAAS,CAAC;YACf,kCAAkC,CAAC,wBAAwB;YAC3D,IAAI,CAAC,2BAA2B;SACjC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@finos/legend-query-builder",
|
3
|
-
"version": "3.2.
|
3
|
+
"version": "3.2.2",
|
4
4
|
"description": "Legend query builder core",
|
5
5
|
"keywords": [
|
6
6
|
"legend",
|
@@ -42,28 +42,30 @@
|
|
42
42
|
"test:watch": "jest --watch"
|
43
43
|
},
|
44
44
|
"dependencies": {
|
45
|
-
"@finos/legend-application": "15.0.
|
46
|
-
"@finos/legend-art": "7.0.
|
47
|
-
"@finos/legend-graph": "28.1.
|
48
|
-
"@finos/legend-lego": "0.1
|
49
|
-
"@finos/legend-server-depot": "6.0.
|
50
|
-
"@finos/legend-shared": "10.0.
|
51
|
-
"@finos/legend-storage": "3.0.
|
45
|
+
"@finos/legend-application": "15.0.9",
|
46
|
+
"@finos/legend-art": "7.0.10",
|
47
|
+
"@finos/legend-graph": "28.1.5",
|
48
|
+
"@finos/legend-lego": "1.0.1",
|
49
|
+
"@finos/legend-server-depot": "6.0.5",
|
50
|
+
"@finos/legend-shared": "10.0.4",
|
51
|
+
"@finos/legend-storage": "3.0.54",
|
52
52
|
"@testing-library/react": "14.0.0",
|
53
|
-
"@types/react": "18.2.
|
54
|
-
"@types/react-dom": "18.2.
|
53
|
+
"@types/react": "18.2.1",
|
54
|
+
"@types/react-dom": "18.2.2",
|
55
|
+
"chart.js": "4.3.0",
|
55
56
|
"mathjs": "11.8.0",
|
56
57
|
"mobx": "6.9.0",
|
57
58
|
"mobx-react-lite": "3.4.3",
|
58
|
-
"monaco-editor": "0.
|
59
|
+
"monaco-editor": "0.38.0",
|
59
60
|
"react": "18.2.0",
|
61
|
+
"react-chartjs-2": "5.2.0",
|
60
62
|
"react-dnd": "16.0.1",
|
61
63
|
"react-dom": "18.2.0",
|
62
64
|
"serializr": "3.0.2",
|
63
65
|
"sql-formatter": "12.2.0"
|
64
66
|
},
|
65
67
|
"devDependencies": {
|
66
|
-
"@finos/legend-dev-utils": "2.0.
|
68
|
+
"@finos/legend-dev-utils": "2.0.59",
|
67
69
|
"@jest/globals": "29.5.0",
|
68
70
|
"cross-env": "7.0.3",
|
69
71
|
"eslint": "8.39.0",
|
@@ -0,0 +1,23 @@
|
|
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
|
+
export enum QUERY_BUILDER_COLOR_THEME_KEY {
|
18
|
+
DATA_ACCESS_OVERVIEW__CHART__ACCESS_GRANTED = 'data-access-overview.chart.access-granted',
|
19
|
+
DATA_ACCESS_OVERVIEW__CHART__ACCESS_APPROVED = 'data-access-overview.chart.access-approved',
|
20
|
+
DATA_ACCESS_OVERVIEW__CHART__ACCESS_REQUESTED = 'data-access-overview.chart.access-requested',
|
21
|
+
DATA_ACCESS_OVERVIEW__CHART__ACCESS_NOT_GRANTED = 'data-access-overview.chart.access-not-granted',
|
22
|
+
DATA_ACCESS_OVERVIEW__CHART__UNSUPPORTED_ACCESS = 'data-access-overview.chart.unsupported-access',
|
23
|
+
}
|
@@ -40,7 +40,7 @@ import {
|
|
40
40
|
ModalHeader,
|
41
41
|
BlankPanelContent,
|
42
42
|
ModalFooterButton,
|
43
|
-
|
43
|
+
CalendarClockIcon,
|
44
44
|
} from '@finos/legend-art';
|
45
45
|
import { QueryBuilderFilterPanel } from './filter/QueryBuilderFilterPanel.js';
|
46
46
|
import { QueryBuilderExplorerPanel } from './explorer/QueryBuilderExplorerPanel.js';
|
@@ -69,9 +69,9 @@ import { QueryBuilderGraphFetchTreeState } from '../stores/fetch-structure/graph
|
|
69
69
|
import { QueryBuilderPostTDSPanel } from './fetch-structure/QueryBuilderPostTDSPanel.js';
|
70
70
|
import { QueryBuilderWatermarkEditor } from './watermark/QueryBuilderWatermark.js';
|
71
71
|
import { QueryBuilderConstantExpressionPanel } from './QueryBuilderConstantExpressionPanel.js';
|
72
|
-
import { QueryBuilder_LegendApplicationPlugin } from './QueryBuilder_LegendApplicationPlugin.js';
|
73
72
|
import { QUERY_BUILDER_SETTING_KEY } from '../__lib__/QueryBuilderSetting.js';
|
74
73
|
import { QUERY_BUILDER_COMPONENT_ELEMENT_ID } from './QueryBuilderComponentElement.js';
|
74
|
+
import { DataAccessOverview } from './data-access/DataAccessOverview.js';
|
75
75
|
|
76
76
|
const QueryBuilderStatusBar = observer(
|
77
77
|
(props: { queryBuilderState: QueryBuilderState }) => {
|
@@ -199,49 +199,6 @@ const QueryBuilderPostGraphFetchPanel = observer(
|
|
199
199
|
},
|
200
200
|
);
|
201
201
|
|
202
|
-
const renderCheckEntitlementsEditor = (
|
203
|
-
queryBuilderState: QueryBuilderState,
|
204
|
-
plugins: QueryBuilder_LegendApplicationPlugin[],
|
205
|
-
): React.ReactNode => {
|
206
|
-
const checkEntitlementsEditorRenderers = plugins.flatMap(
|
207
|
-
(plugin) => plugin.getCheckEntitlementsEditorRender() ?? [],
|
208
|
-
);
|
209
|
-
for (const editorRenderer of checkEntitlementsEditorRenderers) {
|
210
|
-
const editor = editorRenderer(queryBuilderState);
|
211
|
-
if (editor) {
|
212
|
-
return editor;
|
213
|
-
}
|
214
|
-
}
|
215
|
-
|
216
|
-
const handleClose = (): void => {
|
217
|
-
queryBuilderState.checkEntitlementsState.setIsCheckingEntitlements(false);
|
218
|
-
};
|
219
|
-
|
220
|
-
return (
|
221
|
-
<Dialog
|
222
|
-
open={queryBuilderState.checkEntitlementsState.isCheckingEntitlements}
|
223
|
-
onClose={handleClose}
|
224
|
-
classes={{
|
225
|
-
root: 'editor-modal__root-container',
|
226
|
-
container: 'editor-modal__container',
|
227
|
-
paper: 'editor-modal__content',
|
228
|
-
}}
|
229
|
-
>
|
230
|
-
<Modal darkMode={true} className="editor-modal">
|
231
|
-
<ModalHeader title="Query Entitlements" />
|
232
|
-
<ModalBody>
|
233
|
-
<BlankPanelContent>
|
234
|
-
Check Entitlements is not supported yet
|
235
|
-
</BlankPanelContent>
|
236
|
-
</ModalBody>
|
237
|
-
<ModalFooter>
|
238
|
-
<ModalFooterButton text="Close" onClick={handleClose} />
|
239
|
-
</ModalFooter>
|
240
|
-
</Modal>
|
241
|
-
</Dialog>
|
242
|
-
);
|
243
|
-
};
|
244
|
-
|
245
202
|
export const QueryBuilder = observer(
|
246
203
|
(props: { queryBuilderState: QueryBuilderState }) => {
|
247
204
|
const { queryBuilderState } = props;
|
@@ -249,7 +206,6 @@ export const QueryBuilder = observer(
|
|
249
206
|
const fetchStructureState = queryBuilderState.fetchStructureState;
|
250
207
|
const isTDSState =
|
251
208
|
fetchStructureState.implementation instanceof QueryBuilderTDSState;
|
252
|
-
const applicationStore = queryBuilderState.applicationStore;
|
253
209
|
const openLambdaEditor = (mode: QueryBuilderTextEditorMode): void =>
|
254
210
|
queryBuilderState.textEditorState.openModal(mode);
|
255
211
|
const toggleShowFunctionPanel = (): void => {
|
@@ -347,9 +303,15 @@ export const QueryBuilder = observer(
|
|
347
303
|
};
|
348
304
|
|
349
305
|
const openCheckEntitlmentsEditor = (): void => {
|
350
|
-
queryBuilderState.checkEntitlementsState.
|
306
|
+
queryBuilderState.checkEntitlementsState.setShowCheckEntitlementsViewer(
|
307
|
+
true,
|
308
|
+
);
|
309
|
+
};
|
310
|
+
const handleClose = (): void => {
|
311
|
+
queryBuilderState.checkEntitlementsState.setShowCheckEntitlementsViewer(
|
312
|
+
false,
|
313
|
+
);
|
351
314
|
};
|
352
|
-
|
353
315
|
useCommands(queryBuilderState);
|
354
316
|
const toggleShowOLAPGroupByPanel = (): void => {
|
355
317
|
if (isTDSState) {
|
@@ -392,26 +354,25 @@ export const QueryBuilder = observer(
|
|
392
354
|
/>
|
393
355
|
<div className="query-builder__body">
|
394
356
|
<div className="query-builder__content">
|
395
|
-
<div className="query-
|
396
|
-
<div className="query-
|
357
|
+
<div className="query-builder__header">
|
358
|
+
<div className="query-builder__header__statuses">
|
397
359
|
{queryBuilderState.watermarkState.value && (
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
</button>
|
407
|
-
</>
|
360
|
+
<button
|
361
|
+
className="query-builder__header__status query-builder__header__status--action"
|
362
|
+
onClick={openWatermark}
|
363
|
+
tabIndex={-1}
|
364
|
+
title="Used watermark"
|
365
|
+
>
|
366
|
+
<WaterDropIcon />
|
367
|
+
</button>
|
408
368
|
)}
|
409
369
|
{queryBuilderState.isCalendarEnabled && (
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
370
|
+
<div
|
371
|
+
className="query-builder__header__status"
|
372
|
+
title="Used calendar aggregation"
|
373
|
+
>
|
374
|
+
<CalendarClockIcon className="query-builder__header__status__icon--calendar" />
|
375
|
+
</div>
|
415
376
|
)}
|
416
377
|
{queryBuilderState.watermarkState.isEditingWatermark && (
|
417
378
|
<QueryBuilderWatermarkEditor
|
@@ -419,9 +380,9 @@ export const QueryBuilder = observer(
|
|
419
380
|
/>
|
420
381
|
)}
|
421
382
|
</div>
|
422
|
-
<div className="query-
|
383
|
+
<div className="query-builder__header__actions">
|
423
384
|
<DropdownMenu
|
424
|
-
className="query-
|
385
|
+
className="query-builder__header__advanced-dropdown"
|
425
386
|
title="Show Advanced Menu..."
|
426
387
|
content={
|
427
388
|
<MenuContent>
|
@@ -434,7 +395,7 @@ export const QueryBuilder = observer(
|
|
434
395
|
<CheckIcon />
|
435
396
|
) : null}
|
436
397
|
</MenuContentItemIcon>
|
437
|
-
<MenuContentItemLabel
|
398
|
+
<MenuContentItemLabel>
|
438
399
|
Show Function(s)
|
439
400
|
</MenuContentItemLabel>
|
440
401
|
</MenuContentItem>
|
@@ -452,7 +413,7 @@ export const QueryBuilder = observer(
|
|
452
413
|
<CheckIcon />
|
453
414
|
) : null}
|
454
415
|
</MenuContentItemIcon>
|
455
|
-
<MenuContentItemLabel
|
416
|
+
<MenuContentItemLabel>
|
456
417
|
Show Parameter(s)
|
457
418
|
</MenuContentItemLabel>
|
458
419
|
</MenuContentItem>
|
@@ -471,7 +432,7 @@ export const QueryBuilder = observer(
|
|
471
432
|
<CheckIcon />
|
472
433
|
) : null}
|
473
434
|
</MenuContentItemIcon>
|
474
|
-
<MenuContentItemLabel
|
435
|
+
<MenuContentItemLabel>
|
475
436
|
Show Constant(s)
|
476
437
|
</MenuContentItemLabel>
|
477
438
|
</MenuContentItem>
|
@@ -490,10 +451,9 @@ export const QueryBuilder = observer(
|
|
490
451
|
<CheckIcon />
|
491
452
|
) : null}
|
492
453
|
</MenuContentItemIcon>
|
493
|
-
<MenuContentItemLabel
|
494
|
-
Show Filter
|
495
|
-
</MenuContentItemLabel>
|
454
|
+
<MenuContentItemLabel>Show Filter</MenuContentItemLabel>
|
496
455
|
</MenuContentItem>
|
456
|
+
<MenuContentDivider />
|
497
457
|
<MenuContentItem
|
498
458
|
onClick={toggleShowOLAPGroupByPanel}
|
499
459
|
disabled={
|
@@ -516,8 +476,8 @@ export const QueryBuilder = observer(
|
|
516
476
|
<CheckIcon />
|
517
477
|
) : null}
|
518
478
|
</MenuContentItemIcon>
|
519
|
-
<MenuContentItemLabel
|
520
|
-
Show Window
|
479
|
+
<MenuContentItemLabel>
|
480
|
+
Show Window Function(s)
|
521
481
|
</MenuContentItemLabel>
|
522
482
|
</MenuContentItem>
|
523
483
|
<MenuContentItem
|
@@ -541,13 +501,13 @@ export const QueryBuilder = observer(
|
|
541
501
|
<CheckIcon />
|
542
502
|
) : null}
|
543
503
|
</MenuContentItemIcon>
|
544
|
-
<MenuContentItemLabel
|
504
|
+
<MenuContentItemLabel>
|
545
505
|
Show Post-Filter
|
546
506
|
</MenuContentItemLabel>
|
547
507
|
</MenuContentItem>
|
548
508
|
<MenuContentItem onClick={openWatermark}>
|
549
509
|
<MenuContentItemIcon>{null}</MenuContentItemIcon>
|
550
|
-
<MenuContentItemLabel
|
510
|
+
<MenuContentItemLabel>
|
551
511
|
Show Watermark
|
552
512
|
</MenuContentItemLabel>
|
553
513
|
</MenuContentItem>
|
@@ -566,7 +526,7 @@ export const QueryBuilder = observer(
|
|
566
526
|
<CheckIcon />
|
567
527
|
) : null}
|
568
528
|
</MenuContentItemIcon>
|
569
|
-
<MenuContentItemLabel
|
529
|
+
<MenuContentItemLabel>
|
570
530
|
Enable Calendar
|
571
531
|
</MenuContentItemLabel>
|
572
532
|
</MenuContentItem>
|
@@ -581,20 +541,20 @@ export const QueryBuilder = observer(
|
|
581
541
|
.projectionColumns.length === 0
|
582
542
|
}
|
583
543
|
>
|
584
|
-
<MenuContentItemIcon
|
585
|
-
<MenuContentItemLabel
|
544
|
+
<MenuContentItemIcon />
|
545
|
+
<MenuContentItemLabel>
|
586
546
|
Check Entitlements
|
587
547
|
</MenuContentItemLabel>
|
588
548
|
</MenuContentItem>
|
589
549
|
<MenuContentItem onClick={editQueryInPure}>
|
590
|
-
<MenuContentItemIcon
|
591
|
-
<MenuContentItemLabel
|
550
|
+
<MenuContentItemIcon />
|
551
|
+
<MenuContentItemLabel>
|
592
552
|
Edit Query in Pure
|
593
553
|
</MenuContentItemLabel>
|
594
554
|
</MenuContentItem>
|
595
555
|
<MenuContentItem onClick={showQueryProtocol}>
|
596
|
-
<MenuContentItemIcon
|
597
|
-
<MenuContentItemLabel
|
556
|
+
<MenuContentItemIcon />
|
557
|
+
<MenuContentItemLabel>
|
598
558
|
Show Query Protocol
|
599
559
|
</MenuContentItemLabel>
|
600
560
|
</MenuContentItem>
|
@@ -606,10 +566,10 @@ export const QueryBuilder = observer(
|
|
606
566
|
elevation: 7,
|
607
567
|
}}
|
608
568
|
>
|
609
|
-
<div className="query-
|
569
|
+
<div className="query-builder__header__advanced-dropdown__label">
|
610
570
|
Advanced
|
611
571
|
</div>
|
612
|
-
<CaretDownIcon className="query-
|
572
|
+
<CaretDownIcon className="query-builder__header__advanced-dropdown__icon" />
|
613
573
|
</DropdownMenu>
|
614
574
|
</div>
|
615
575
|
</div>
|
@@ -709,16 +669,45 @@ export const QueryBuilder = observer(
|
|
709
669
|
{queryBuilderState.textEditorState.mode && (
|
710
670
|
<QueryBuilderTextEditor queryBuilderState={queryBuilderState} />
|
711
671
|
)}
|
712
|
-
{queryBuilderState.checkEntitlementsState
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
.
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
672
|
+
{queryBuilderState.checkEntitlementsState
|
673
|
+
.showCheckEntitlementsViewer && (
|
674
|
+
<Dialog
|
675
|
+
open={
|
676
|
+
queryBuilderState.checkEntitlementsState
|
677
|
+
.showCheckEntitlementsViewer
|
678
|
+
}
|
679
|
+
onClose={handleClose}
|
680
|
+
classes={{
|
681
|
+
root: 'editor-modal__root-container',
|
682
|
+
container: 'editor-modal__container',
|
683
|
+
paper: 'editor-modal__content',
|
684
|
+
}}
|
685
|
+
>
|
686
|
+
<Modal darkMode={true} className="editor-modal">
|
687
|
+
<ModalHeader title="Query Entitlements" />
|
688
|
+
<ModalBody className="query-builder__data-access-overview">
|
689
|
+
<div className="query-builder__data-access-overview__container">
|
690
|
+
{queryBuilderState.checkEntitlementsState
|
691
|
+
.dataAccessState ? (
|
692
|
+
<DataAccessOverview
|
693
|
+
dataAccessState={
|
694
|
+
queryBuilderState.checkEntitlementsState
|
695
|
+
.dataAccessState
|
696
|
+
}
|
697
|
+
/>
|
698
|
+
) : (
|
699
|
+
<BlankPanelContent>
|
700
|
+
No data access information available
|
701
|
+
</BlankPanelContent>
|
702
|
+
)}
|
703
|
+
</div>
|
704
|
+
</ModalBody>
|
705
|
+
<ModalFooter>
|
706
|
+
<ModalFooterButton text="Close" onClick={handleClose} />
|
707
|
+
</ModalFooter>
|
708
|
+
</Modal>
|
709
|
+
</Dialog>
|
710
|
+
)}
|
722
711
|
</div>
|
723
712
|
<QueryBuilderStatusBar queryBuilderState={queryBuilderState} />
|
724
713
|
</div>
|
@@ -28,6 +28,7 @@ import { QUERY_BUILDER_SETTING_CONFIG } from '../__lib__/QueryBuilderSetting.js'
|
|
28
28
|
import { QUERY_BUILDER_COMMAND_CONFIG } from '../stores/QueryBuilderCommand.js';
|
29
29
|
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
30
30
|
import { configureDataGridComponent } from '@finos/legend-lego/data-grid';
|
31
|
+
import { Chart as ChartJS, ArcElement, Tooltip } from 'chart.js';
|
31
32
|
|
32
33
|
export type CheckEntitlementEditorRender = (
|
33
34
|
queryBuilderState: QueryBuilderState,
|
@@ -50,6 +51,9 @@ export class QueryBuilder_LegendApplicationPlugin extends LegendApplicationPlugi
|
|
50
51
|
return [
|
51
52
|
async (applicationStore) => {
|
52
53
|
configureDataGridComponent();
|
54
|
+
|
55
|
+
// configure chart component
|
56
|
+
ChartJS.register(ArcElement, Tooltip);
|
53
57
|
},
|
54
58
|
];
|
55
59
|
}
|
@@ -65,9 +69,4 @@ export class QueryBuilder_LegendApplicationPlugin extends LegendApplicationPlugi
|
|
65
69
|
QUERY_BUILDER_SETTING_CONFIG,
|
66
70
|
);
|
67
71
|
}
|
68
|
-
|
69
|
-
// TODO: rework and move this to query builder plugin (to be created) or `QueryBuilder_LegendApplicationPlugin_Extension`
|
70
|
-
getCheckEntitlementsEditorRender(): CheckEntitlementEditorRender | undefined {
|
71
|
-
return undefined;
|
72
|
-
}
|
73
72
|
}
|
@@ -86,7 +86,6 @@ const QueryPreviewViewer = observer(
|
|
86
86
|
}
|
87
87
|
isReadOnly={true}
|
88
88
|
language={CODE_EDITOR_LANGUAGE.PURE}
|
89
|
-
showMiniMap={true}
|
90
89
|
/>
|
91
90
|
</ModalBody>
|
92
91
|
<ModalFooter>
|
@@ -324,12 +323,16 @@ export const QueryLoader = observer(
|
|
324
323
|
onChange={changeQueryNameInputValue}
|
325
324
|
onKeyDown={(event) => {
|
326
325
|
if (event.code === 'Enter') {
|
326
|
+
event.stopPropagation();
|
327
327
|
renameQuery(query)();
|
328
328
|
} else if (event.code === 'Escape') {
|
329
|
+
event.stopPropagation();
|
329
330
|
hideEditQueryNameInput();
|
330
331
|
}
|
331
332
|
}}
|
332
333
|
onBlur={() => hideEditQueryNameInput()}
|
334
|
+
// avoid clicking on the input causing the call to load query
|
335
|
+
onClick={(event) => event.stopPropagation()}
|
333
336
|
/>
|
334
337
|
</div>
|
335
338
|
) : (
|