@finos/legend-query-builder 3.2.0 → 3.2.1

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.
Files changed (69) hide show
  1. package/lib/__lib__/QueryBuilderColorTheme.d.ts +23 -0
  2. package/lib/__lib__/QueryBuilderColorTheme.d.ts.map +1 -0
  3. package/lib/__lib__/QueryBuilderColorTheme.js +24 -0
  4. package/lib/__lib__/QueryBuilderColorTheme.js.map +1 -0
  5. package/lib/components/QueryBuilder.d.ts.map +1 -1
  6. package/lib/components/QueryBuilder.js +17 -15
  7. package/lib/components/QueryBuilder.js.map +1 -1
  8. package/lib/components/QueryBuilder_LegendApplicationPlugin.d.ts.map +1 -1
  9. package/lib/components/QueryBuilder_LegendApplicationPlugin.js +3 -0
  10. package/lib/components/QueryBuilder_LegendApplicationPlugin.js.map +1 -1
  11. package/lib/components/QueryLoader.d.ts.map +1 -1
  12. package/lib/components/QueryLoader.js +6 -2
  13. package/lib/components/QueryLoader.js.map +1 -1
  14. package/lib/components/data-access/DataAccessOverview.d.ts +23 -0
  15. package/lib/components/data-access/DataAccessOverview.d.ts.map +1 -0
  16. package/lib/components/data-access/DataAccessOverview.js +146 -0
  17. package/lib/components/data-access/DataAccessOverview.js.map +1 -0
  18. package/lib/components/execution-plan/ExecutionPlanViewer.d.ts.map +1 -1
  19. package/lib/components/execution-plan/ExecutionPlanViewer.js +3 -3
  20. package/lib/components/execution-plan/ExecutionPlanViewer.js.map +1 -1
  21. package/lib/components/execution-plan/SQLExecutionNodeViewer.js +1 -1
  22. package/lib/components/execution-plan/SQLExecutionNodeViewer.js.map +1 -1
  23. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +1 -1
  24. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
  25. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts +0 -18
  26. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  27. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +34 -36
  28. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  29. package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
  30. package/lib/components/shared/LambdaEditor.js +7 -19
  31. package/lib/components/shared/LambdaEditor.js.map +1 -1
  32. package/lib/index.css +1 -17
  33. package/lib/index.css.map +1 -1
  34. package/lib/index.d.ts +2 -0
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +2 -0
  37. package/lib/index.js.map +1 -1
  38. package/lib/package.json +4 -2
  39. package/lib/stores/QueryBuilderState.d.ts +3 -3
  40. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  41. package/lib/stores/QueryBuilderState.js +34 -18
  42. package/lib/stores/QueryBuilderState.js.map +1 -1
  43. package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts +9 -0
  44. package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts.map +1 -1
  45. package/lib/stores/data-access/DataAccessState.d.ts +56 -0
  46. package/lib/stores/data-access/DataAccessState.d.ts.map +1 -0
  47. package/lib/stores/data-access/DataAccessState.js +212 -0
  48. package/lib/stores/data-access/DataAccessState.js.map +1 -0
  49. package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.d.ts +4 -2
  50. package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.d.ts.map +1 -1
  51. package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.js +20 -6
  52. package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.js.map +1 -1
  53. package/package.json +12 -10
  54. package/src/__lib__/QueryBuilderColorTheme.ts +23 -0
  55. package/src/components/QueryBuilder.tsx +63 -47
  56. package/src/components/QueryBuilder_LegendApplicationPlugin.ts +4 -0
  57. package/src/components/QueryLoader.tsx +4 -1
  58. package/src/components/data-access/DataAccessOverview.tsx +308 -0
  59. package/src/components/execution-plan/ExecutionPlanViewer.tsx +1 -3
  60. package/src/components/execution-plan/SQLExecutionNodeViewer.tsx +1 -1
  61. package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +1 -1
  62. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +99 -102
  63. package/src/components/shared/LambdaEditor.tsx +4 -21
  64. package/src/index.ts +4 -0
  65. package/src/stores/QueryBuilderState.ts +65 -19
  66. package/src/stores/QueryBuilder_LegendApplicationPlugin_Extension.ts +10 -0
  67. package/src/stores/data-access/DataAccessState.ts +322 -0
  68. package/src/stores/entitlements/QueryBuilderCheckEntitlementsState.ts +53 -6
  69. 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
- isCheckingEntitlements = false;
23
+ dataAccessState;
24
+ showCheckEntitlementsViewer = false;
22
25
  constructor(queryBuilderState) {
23
26
  makeObservable(this, {
24
- isCheckingEntitlements: observable,
25
- setIsCheckingEntitlements: action,
27
+ showCheckEntitlementsViewer: observable,
28
+ dataAccessState: observable,
29
+ setShowCheckEntitlementsViewer: action,
26
30
  hashCode: computed,
27
31
  });
28
32
  this.queryBuilderState = queryBuilderState;
29
33
  }
30
- setIsCheckingEntitlements(val) {
31
- this.isCheckingEntitlements = val;
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.isCheckingEntitlements,
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;AAGtF,MAAM,OAAO,kCAAkC;IACpC,iBAAiB,CAAoB;IAC9C,sBAAsB,GAAG,KAAK,CAAC;IAE/B,YAAY,iBAAoC;QAC9C,cAAc,CAAC,IAAI,EAAE;YACnB,sBAAsB,EAAE,UAAU;YAClC,yBAAyB,EAAE,MAAM;YACjC,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,yBAAyB,CAAC,GAAY;QACpC,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,SAAS,CAAC;YACf,kCAAkC,CAAC,wBAAwB;YAC3D,IAAI,CAAC,sBAAsB;SAC5B,CAAC,CAAC;IACL,CAAC;CACF"}
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.0",
3
+ "version": "3.2.1",
4
4
  "description": "Legend query builder core",
5
5
  "keywords": [
6
6
  "legend",
@@ -42,20 +42,20 @@
42
42
  "test:watch": "jest --watch"
43
43
  },
44
44
  "dependencies": {
45
- "@finos/legend-application": "15.0.7",
46
- "@finos/legend-art": "7.0.8",
47
- "@finos/legend-graph": "28.1.4",
48
- "@finos/legend-lego": "0.1.13",
49
- "@finos/legend-server-depot": "6.0.4",
50
- "@finos/legend-shared": "10.0.3",
51
- "@finos/legend-storage": "3.0.53",
45
+ "@finos/legend-application": "15.0.8",
46
+ "@finos/legend-art": "7.0.9",
47
+ "@finos/legend-graph": "28.1.5",
48
+ "@finos/legend-lego": "1.0.0",
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
53
  "@types/react": "18.2.0",
54
54
  "@types/react-dom": "18.2.1",
55
55
  "mathjs": "11.8.0",
56
56
  "mobx": "6.9.0",
57
57
  "mobx-react-lite": "3.4.3",
58
- "monaco-editor": "0.37.1",
58
+ "monaco-editor": "0.38.0",
59
59
  "react": "18.2.0",
60
60
  "react-dnd": "16.0.1",
61
61
  "react-dom": "18.2.0",
@@ -63,12 +63,14 @@
63
63
  "sql-formatter": "12.2.0"
64
64
  },
65
65
  "devDependencies": {
66
- "@finos/legend-dev-utils": "2.0.57",
66
+ "@finos/legend-dev-utils": "2.0.58",
67
67
  "@jest/globals": "29.5.0",
68
+ "chart.js": "4.3.0",
68
69
  "cross-env": "7.0.3",
69
70
  "eslint": "8.39.0",
70
71
  "jest": "29.5.0",
71
72
  "npm-run-all": "4.1.5",
73
+ "react-chartjs-2": "5.2.0",
72
74
  "rimraf": "5.0.0",
73
75
  "sass": "1.62.1",
74
76
  "typescript": "5.0.4"
@@ -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
- CalendarIcon,
43
+ CalendarClockIcon,
44
44
  } from '@finos/legend-art';
45
45
  import { QueryBuilderFilterPanel } from './filter/QueryBuilderFilterPanel.js';
46
46
  import { QueryBuilderExplorerPanel } from './explorer/QueryBuilderExplorerPanel.js';
@@ -72,6 +72,7 @@ import { QueryBuilderConstantExpressionPanel } from './QueryBuilderConstantExpre
72
72
  import { QueryBuilder_LegendApplicationPlugin } from './QueryBuilder_LegendApplicationPlugin.js';
73
73
  import { QUERY_BUILDER_SETTING_KEY } from '../__lib__/QueryBuilderSetting.js';
74
74
  import { QUERY_BUILDER_COMPONENT_ELEMENT_ID } from './QueryBuilderComponentElement.js';
75
+ import { DataAccessOverview } from './data-access/DataAccessOverview.js';
75
76
 
76
77
  const QueryBuilderStatusBar = observer(
77
78
  (props: { queryBuilderState: QueryBuilderState }) => {
@@ -214,12 +215,16 @@ const renderCheckEntitlementsEditor = (
214
215
  }
215
216
 
216
217
  const handleClose = (): void => {
217
- queryBuilderState.checkEntitlementsState.setIsCheckingEntitlements(false);
218
+ queryBuilderState.checkEntitlementsState.setShowCheckEntitlementsViewer(
219
+ false,
220
+ );
218
221
  };
219
222
 
220
223
  return (
221
224
  <Dialog
222
- open={queryBuilderState.checkEntitlementsState.isCheckingEntitlements}
225
+ open={
226
+ queryBuilderState.checkEntitlementsState.showCheckEntitlementsViewer
227
+ }
223
228
  onClose={handleClose}
224
229
  classes={{
225
230
  root: 'editor-modal__root-container',
@@ -229,10 +234,20 @@ const renderCheckEntitlementsEditor = (
229
234
  >
230
235
  <Modal darkMode={true} className="editor-modal">
231
236
  <ModalHeader title="Query Entitlements" />
232
- <ModalBody>
233
- <BlankPanelContent>
234
- Check Entitlements is not supported yet
235
- </BlankPanelContent>
237
+ <ModalBody className="query-builder__data-access-overview">
238
+ <div className="query-builder__data-access-overview__container">
239
+ {queryBuilderState.checkEntitlementsState.dataAccessState ? (
240
+ <DataAccessOverview
241
+ dataAccessState={
242
+ queryBuilderState.checkEntitlementsState.dataAccessState
243
+ }
244
+ />
245
+ ) : (
246
+ <BlankPanelContent>
247
+ No data access information available
248
+ </BlankPanelContent>
249
+ )}
250
+ </div>
236
251
  </ModalBody>
237
252
  <ModalFooter>
238
253
  <ModalFooterButton text="Close" onClick={handleClose} />
@@ -347,7 +362,9 @@ export const QueryBuilder = observer(
347
362
  };
348
363
 
349
364
  const openCheckEntitlmentsEditor = (): void => {
350
- queryBuilderState.checkEntitlementsState.setIsCheckingEntitlements(true);
365
+ queryBuilderState.checkEntitlementsState.setShowCheckEntitlementsViewer(
366
+ true,
367
+ );
351
368
  };
352
369
 
353
370
  useCommands(queryBuilderState);
@@ -392,26 +409,25 @@ export const QueryBuilder = observer(
392
409
  />
393
410
  <div className="query-builder__body">
394
411
  <div className="query-builder__content">
395
- <div className="query-builder__sub-header">
396
- <div className="query-builder__sub-header__content__icons">
412
+ <div className="query-builder__header">
413
+ <div className="query-builder__header__statuses">
397
414
  {queryBuilderState.watermarkState.value && (
398
- <>
399
- <button
400
- className="panel__header__action"
401
- onClick={openWatermark}
402
- tabIndex={-1}
403
- title="Show Watermark"
404
- >
405
- <WaterDropIcon />
406
- </button>
407
- </>
415
+ <button
416
+ className="query-builder__header__status query-builder__header__status--action"
417
+ onClick={openWatermark}
418
+ tabIndex={-1}
419
+ title="Used watermark"
420
+ >
421
+ <WaterDropIcon />
422
+ </button>
408
423
  )}
409
424
  {queryBuilderState.isCalendarEnabled && (
410
- <>
411
- <div className="query-builder__sub-header__content__icon">
412
- <CalendarIcon />
413
- </div>
414
- </>
425
+ <div
426
+ className="query-builder__header__status"
427
+ title="Used calendar aggregation"
428
+ >
429
+ <CalendarClockIcon className="query-builder__header__status__icon--calendar" />
430
+ </div>
415
431
  )}
416
432
  {queryBuilderState.watermarkState.isEditingWatermark && (
417
433
  <QueryBuilderWatermarkEditor
@@ -419,9 +435,9 @@ export const QueryBuilder = observer(
419
435
  />
420
436
  )}
421
437
  </div>
422
- <div className="query-builder__sub-header__content__actions">
438
+ <div className="query-builder__header__actions">
423
439
  <DropdownMenu
424
- className="query-builder__sub-header__custom-action"
440
+ className="query-builder__header__advanced-dropdown"
425
441
  title="Show Advanced Menu..."
426
442
  content={
427
443
  <MenuContent>
@@ -434,7 +450,7 @@ export const QueryBuilder = observer(
434
450
  <CheckIcon />
435
451
  ) : null}
436
452
  </MenuContentItemIcon>
437
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
453
+ <MenuContentItemLabel>
438
454
  Show Function(s)
439
455
  </MenuContentItemLabel>
440
456
  </MenuContentItem>
@@ -452,7 +468,7 @@ export const QueryBuilder = observer(
452
468
  <CheckIcon />
453
469
  ) : null}
454
470
  </MenuContentItemIcon>
455
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
471
+ <MenuContentItemLabel>
456
472
  Show Parameter(s)
457
473
  </MenuContentItemLabel>
458
474
  </MenuContentItem>
@@ -471,7 +487,7 @@ export const QueryBuilder = observer(
471
487
  <CheckIcon />
472
488
  ) : null}
473
489
  </MenuContentItemIcon>
474
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
490
+ <MenuContentItemLabel>
475
491
  Show Constant(s)
476
492
  </MenuContentItemLabel>
477
493
  </MenuContentItem>
@@ -490,10 +506,9 @@ export const QueryBuilder = observer(
490
506
  <CheckIcon />
491
507
  ) : null}
492
508
  </MenuContentItemIcon>
493
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
494
- Show Filter
495
- </MenuContentItemLabel>
509
+ <MenuContentItemLabel>Show Filter</MenuContentItemLabel>
496
510
  </MenuContentItem>
511
+ <MenuContentDivider />
497
512
  <MenuContentItem
498
513
  onClick={toggleShowOLAPGroupByPanel}
499
514
  disabled={
@@ -516,8 +531,8 @@ export const QueryBuilder = observer(
516
531
  <CheckIcon />
517
532
  ) : null}
518
533
  </MenuContentItemIcon>
519
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
520
- Show Window Func(s)
534
+ <MenuContentItemLabel>
535
+ Show Window Function(s)
521
536
  </MenuContentItemLabel>
522
537
  </MenuContentItem>
523
538
  <MenuContentItem
@@ -541,13 +556,13 @@ export const QueryBuilder = observer(
541
556
  <CheckIcon />
542
557
  ) : null}
543
558
  </MenuContentItemIcon>
544
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
559
+ <MenuContentItemLabel>
545
560
  Show Post-Filter
546
561
  </MenuContentItemLabel>
547
562
  </MenuContentItem>
548
563
  <MenuContentItem onClick={openWatermark}>
549
564
  <MenuContentItemIcon>{null}</MenuContentItemIcon>
550
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
565
+ <MenuContentItemLabel>
551
566
  Show Watermark
552
567
  </MenuContentItemLabel>
553
568
  </MenuContentItem>
@@ -566,7 +581,7 @@ export const QueryBuilder = observer(
566
581
  <CheckIcon />
567
582
  ) : null}
568
583
  </MenuContentItemIcon>
569
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
584
+ <MenuContentItemLabel>
570
585
  Enable Calendar
571
586
  </MenuContentItemLabel>
572
587
  </MenuContentItem>
@@ -581,20 +596,20 @@ export const QueryBuilder = observer(
581
596
  .projectionColumns.length === 0
582
597
  }
583
598
  >
584
- <MenuContentItemIcon>{null}</MenuContentItemIcon>
585
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
599
+ <MenuContentItemIcon />
600
+ <MenuContentItemLabel>
586
601
  Check Entitlements
587
602
  </MenuContentItemLabel>
588
603
  </MenuContentItem>
589
604
  <MenuContentItem onClick={editQueryInPure}>
590
- <MenuContentItemIcon>{null}</MenuContentItemIcon>
591
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
605
+ <MenuContentItemIcon />
606
+ <MenuContentItemLabel>
592
607
  Edit Query in Pure
593
608
  </MenuContentItemLabel>
594
609
  </MenuContentItem>
595
610
  <MenuContentItem onClick={showQueryProtocol}>
596
- <MenuContentItemIcon>{null}</MenuContentItemIcon>
597
- <MenuContentItemLabel className="query-builder__sub-header__menu-content">
611
+ <MenuContentItemIcon />
612
+ <MenuContentItemLabel>
598
613
  Show Query Protocol
599
614
  </MenuContentItemLabel>
600
615
  </MenuContentItem>
@@ -606,10 +621,10 @@ export const QueryBuilder = observer(
606
621
  elevation: 7,
607
622
  }}
608
623
  >
609
- <div className="query-builder__sub-header__custom-action__label">
624
+ <div className="query-builder__header__advanced-dropdown__label">
610
625
  Advanced
611
626
  </div>
612
- <CaretDownIcon className="query-builder__sub-header__custom-action__icon" />
627
+ <CaretDownIcon className="query-builder__header__advanced-dropdown__icon" />
613
628
  </DropdownMenu>
614
629
  </div>
615
630
  </div>
@@ -709,7 +724,8 @@ export const QueryBuilder = observer(
709
724
  {queryBuilderState.textEditorState.mode && (
710
725
  <QueryBuilderTextEditor queryBuilderState={queryBuilderState} />
711
726
  )}
712
- {queryBuilderState.checkEntitlementsState.isCheckingEntitlements &&
727
+ {queryBuilderState.checkEntitlementsState
728
+ .showCheckEntitlementsViewer &&
713
729
  renderCheckEntitlementsEditor(
714
730
  queryBuilderState,
715
731
  applicationStore.pluginManager
@@ -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
  }
@@ -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
  ) : (