@finos/legend-query-builder 4.14.8 → 4.14.10

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 (51) hide show
  1. package/lib/__lib__/QueryBuilderEvent.d.ts +2 -1
  2. package/lib/__lib__/QueryBuilderEvent.d.ts.map +1 -1
  3. package/lib/__lib__/QueryBuilderEvent.js +1 -0
  4. package/lib/__lib__/QueryBuilderEvent.js.map +1 -1
  5. package/lib/components/QueryBuilder.d.ts.map +1 -1
  6. package/lib/components/QueryBuilder.js +45 -27
  7. package/lib/components/QueryBuilder.js.map +1 -1
  8. package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts +2 -0
  9. package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
  10. package/lib/components/QueryBuilderPropertyExpressionEditor.js +6 -3
  11. package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
  12. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
  13. package/lib/components/explorer/QueryBuilderExplorerPanel.js +12 -9
  14. package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
  15. package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts.map +1 -1
  16. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +6 -5
  17. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
  18. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  19. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +19 -5
  20. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  21. package/lib/components/shared/QueryBuilderPropertyInfoTooltip.d.ts +3 -0
  22. package/lib/components/shared/QueryBuilderPropertyInfoTooltip.d.ts.map +1 -1
  23. package/lib/components/shared/QueryBuilderPropertyInfoTooltip.js +3 -3
  24. package/lib/components/shared/QueryBuilderPropertyInfoTooltip.js.map +1 -1
  25. package/lib/index.css +2 -2
  26. package/lib/index.css.map +1 -1
  27. package/lib/package.json +1 -1
  28. package/lib/stores/QueryBuilderChangeHistoryState.d.ts +35 -0
  29. package/lib/stores/QueryBuilderChangeHistoryState.d.ts.map +1 -0
  30. package/lib/stores/QueryBuilderChangeHistoryState.js +106 -0
  31. package/lib/stores/QueryBuilderChangeHistoryState.js.map +1 -0
  32. package/lib/stores/QueryBuilderState.d.ts +2 -0
  33. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  34. package/lib/stores/QueryBuilderState.js +6 -0
  35. package/lib/stores/QueryBuilderState.js.map +1 -1
  36. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +5 -0
  37. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
  38. package/lib/stores/explorer/QueryBuilderExplorerState.js +32 -0
  39. package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
  40. package/package.json +5 -5
  41. package/src/__lib__/QueryBuilderEvent.ts +2 -0
  42. package/src/components/QueryBuilder.tsx +41 -0
  43. package/src/components/QueryBuilderPropertyExpressionEditor.tsx +16 -2
  44. package/src/components/explorer/QueryBuilderExplorerPanel.tsx +18 -8
  45. package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +8 -5
  46. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +65 -24
  47. package/src/components/shared/QueryBuilderPropertyInfoTooltip.tsx +29 -2
  48. package/src/stores/QueryBuilderChangeHistoryState.ts +129 -0
  49. package/src/stores/QueryBuilderState.ts +6 -0
  50. package/src/stores/explorer/QueryBuilderExplorerState.ts +35 -0
  51. package/tsconfig.json +1 -0
@@ -104,6 +104,7 @@ import {
104
104
  } from './QueryBuilderExecutionContextState.js';
105
105
  import type { QueryBuilderConfig } from '../graph-manager/QueryBuilderConfig.js';
106
106
  import { QUERY_BUILDER_EVENT } from '../__lib__/QueryBuilderEvent.js';
107
+ import { QueryBuilderChangeHistoryState } from './QueryBuilderChangeHistoryState.js';
107
108
 
108
109
  export interface QuerySDLC {}
109
110
 
@@ -136,6 +137,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
136
137
  resultState: QueryBuilderResultState;
137
138
  textEditorState: QueryBuilderTextEditorState;
138
139
  unsupportedQueryState: QueryBuilderUnsupportedQueryState;
140
+ changeHistoryState: QueryBuilderChangeHistoryState;
139
141
  showFunctionsExplorerPanel = false;
140
142
  showParametersPanel = false;
141
143
  isEditingWatermark = false;
@@ -184,6 +186,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
184
186
  isCheckingEntitlments: observable,
185
187
  isCalendarEnabled: observable,
186
188
  changeDetectionState: observable,
189
+ changeHistoryState: observable,
187
190
  executionContextState: observable,
188
191
  class: observable,
189
192
  isQueryChatOpened: observable,
@@ -236,6 +239,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
236
239
  this.graphManagerState.pluginManager.getPureGraphManagerPlugins(),
237
240
  );
238
241
  this.changeDetectionState = new QueryBuilderChangeDetectionState(this);
242
+ this.changeHistoryState = new QueryBuilderChangeHistoryState(this);
239
243
  this.config = config;
240
244
  this.sourceInfo = sourceInfo;
241
245
  }
@@ -441,6 +445,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
441
445
  this.explorerState.refreshTreeData();
442
446
  this.fetchStructureState.implementation.onClassChange(val);
443
447
  this.milestoningState.updateMilestoningConfiguration();
448
+ this.changeHistoryState.cacheNewQuery(this.buildQuery());
444
449
  }
445
450
 
446
451
  changeMapping(val: Mapping, options?: { keepQueryContent?: boolean }): void {
@@ -553,6 +558,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
553
558
  });
554
559
  this.resetQueryResult();
555
560
  this.changeDetectionState.initialize(query);
561
+ this.changeHistoryState.initialize(query);
556
562
  }
557
563
 
558
564
  /**
@@ -72,6 +72,7 @@ import { QueryBuilderPropertySearchState } from './QueryBuilderPropertySearchSta
72
72
  import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../graph/QueryBuilderMetaModelConst.js';
73
73
  import { propertyExpression_setFunc } from '../shared/ValueSpecificationModifierHelper.js';
74
74
  import { QueryBuilderTelemetryHelper } from '../../__lib__/QueryBuilderTelemetryHelper.js';
75
+ import { createRef } from 'react';
75
76
 
76
77
  export enum QUERY_BUILDER_EXPLORER_TREE_DND_TYPE {
77
78
  ROOT = 'ROOT',
@@ -97,6 +98,7 @@ export interface QueryBuilderExplorerTreeDragSource {
97
98
  export abstract class QueryBuilderExplorerTreeNodeData implements TreeNodeData {
98
99
  isSelected?: boolean | undefined;
99
100
  isOpen?: boolean | undefined;
101
+ isHighlighting?: boolean | undefined;
100
102
  id: string;
101
103
  label: string;
102
104
  dndText: string;
@@ -104,6 +106,7 @@ export abstract class QueryBuilderExplorerTreeNodeData implements TreeNodeData {
104
106
  isPartOfDerivedPropertyBranch: boolean;
105
107
  type: Type;
106
108
  mappingData: QueryBuilderExplorerTreeNodeMappingData;
109
+ elementRef: React.RefObject<HTMLDivElement>;
107
110
 
108
111
  constructor(
109
112
  id: string,
@@ -114,7 +117,9 @@ export abstract class QueryBuilderExplorerTreeNodeData implements TreeNodeData {
114
117
  mappingData: QueryBuilderExplorerTreeNodeMappingData,
115
118
  ) {
116
119
  makeObservable(this, {
120
+ isHighlighting: observable,
117
121
  isSelected: observable,
122
+ setIsHighlighting: action,
118
123
  setIsSelected: action,
119
124
  });
120
125
 
@@ -124,11 +129,16 @@ export abstract class QueryBuilderExplorerTreeNodeData implements TreeNodeData {
124
129
  this.isPartOfDerivedPropertyBranch = isPartOfDerivedPropertyBranch;
125
130
  this.type = type;
126
131
  this.mappingData = mappingData;
132
+ this.elementRef = createRef();
127
133
  }
128
134
 
129
135
  setIsSelected(val: boolean | undefined): void {
130
136
  this.isSelected = val;
131
137
  }
138
+
139
+ setIsHighlighting(val: boolean | undefined): void {
140
+ this.isHighlighting = val;
141
+ }
132
142
  }
133
143
 
134
144
  export type QueryBuilderExplorerTreeNodeMappingData = {
@@ -663,6 +673,7 @@ export class QueryBuilderExplorerState {
663
673
  setHumanizePropertyName: action,
664
674
  setShowUnmappedProperties: action,
665
675
  setHighlightUsedProperties: action,
676
+ highlightTreeNode: action,
666
677
  analyzeMappingModelCoverage: flow,
667
678
  previewData: flow,
668
679
  });
@@ -717,6 +728,30 @@ export class QueryBuilderExplorerState {
717
728
  );
718
729
  }
719
730
 
731
+ highlightTreeNode(key: string): void {
732
+ const nodeToHighlight = this.treeData?.nodes.get(key);
733
+ if (nodeToHighlight instanceof QueryBuilderExplorerTreePropertyNodeData) {
734
+ let nodeToOpen: QueryBuilderExplorerTreeNodeData | null =
735
+ this.treeData?.nodes.get(nodeToHighlight.parentId) ?? null;
736
+ while (nodeToOpen !== null) {
737
+ if (!nodeToOpen.isOpen) {
738
+ nodeToOpen.isOpen = true;
739
+ }
740
+ nodeToOpen =
741
+ nodeToOpen instanceof QueryBuilderExplorerTreePropertyNodeData
742
+ ? this.treeData?.nodes.get(nodeToOpen.parentId) ?? null
743
+ : null;
744
+ }
745
+ this.refreshTree();
746
+ nodeToHighlight.setIsHighlighting(true);
747
+ // scrollIntoView must be called in a setTimeout because it must happen after
748
+ // the tree nodes are recursively opened and the tree is refreshed.
749
+ setTimeout(() => {
750
+ nodeToHighlight.elementRef.current?.scrollIntoView();
751
+ }, 0);
752
+ }
753
+ }
754
+
720
755
  *analyzeMappingModelCoverage(): GeneratorFn<void> {
721
756
  // We will only refetch if the analysis result's mapping has changed.
722
757
  // This makes the assumption that the mapping has not been edited, which is a valid assumption since query is not for editing mappings
package/tsconfig.json CHANGED
@@ -56,6 +56,7 @@
56
56
  "./src/graph-manager/protocol/pure/v1/V1_QueryBuilder_PureGraphManagerExtension.ts",
57
57
  "./src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts",
58
58
  "./src/stores/QueryBuilderChangeDetectionState.ts",
59
+ "./src/stores/QueryBuilderChangeHistoryState.ts",
59
60
  "./src/stores/QueryBuilderCommand.ts",
60
61
  "./src/stores/QueryBuilderConfig.ts",
61
62
  "./src/stores/QueryBuilderConstantsState.ts",