@finos/legend-application-query 13.7.4 → 13.7.6

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 (47) hide show
  1. package/lib/application/LegendQueryApplicationConfig.d.ts +1 -0
  2. package/lib/application/LegendQueryApplicationConfig.d.ts.map +1 -1
  3. package/lib/application/LegendQueryApplicationConfig.js +2 -0
  4. package/lib/application/LegendQueryApplicationConfig.js.map +1 -1
  5. package/lib/components/Core_LegendQueryApplicationPlugin.d.ts +3 -2
  6. package/lib/components/Core_LegendQueryApplicationPlugin.d.ts.map +1 -1
  7. package/lib/components/Core_LegendQueryApplicationPlugin.js +157 -4
  8. package/lib/components/Core_LegendQueryApplicationPlugin.js.map +1 -1
  9. package/lib/components/QueryEditor.d.ts.map +1 -1
  10. package/lib/components/QueryEditor.js +9 -2
  11. package/lib/components/QueryEditor.js.map +1 -1
  12. package/lib/components/__test-utils__/QueryEditorComponentTestUtils.d.ts +3 -3
  13. package/lib/components/__test-utils__/QueryEditorComponentTestUtils.d.ts.map +1 -1
  14. package/lib/components/__test-utils__/QueryEditorComponentTestUtils.js +39 -10
  15. package/lib/components/__test-utils__/QueryEditorComponentTestUtils.js.map +1 -1
  16. package/lib/index.css +1 -1
  17. package/lib/package.json +3 -3
  18. package/lib/stores/LegendQueryApplicationPlugin.d.ts +4 -3
  19. package/lib/stores/LegendQueryApplicationPlugin.d.ts.map +1 -1
  20. package/lib/stores/LegendQueryApplicationPlugin.js +0 -1
  21. package/lib/stores/LegendQueryApplicationPlugin.js.map +1 -1
  22. package/lib/stores/QueryEditorStore.d.ts +13 -2
  23. package/lib/stores/QueryEditorStore.d.ts.map +1 -1
  24. package/lib/stores/QueryEditorStore.js +135 -30
  25. package/lib/stores/QueryEditorStore.js.map +1 -1
  26. package/lib/stores/data-space/DataSpaceQueryCreatorStore.d.ts +2 -1
  27. package/lib/stores/data-space/DataSpaceQueryCreatorStore.d.ts.map +1 -1
  28. package/lib/stores/data-space/DataSpaceQueryCreatorStore.js +8 -12
  29. package/lib/stores/data-space/DataSpaceQueryCreatorStore.js.map +1 -1
  30. package/lib/stores/data-space/DataSpaceQuerySetupState.d.ts +1 -0
  31. package/lib/stores/data-space/DataSpaceQuerySetupState.d.ts.map +1 -1
  32. package/lib/stores/data-space/DataSpaceQuerySetupState.js +1 -0
  33. package/lib/stores/data-space/DataSpaceQuerySetupState.js.map +1 -1
  34. package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.d.ts +3 -1
  35. package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.d.ts.map +1 -1
  36. package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.js +41 -24
  37. package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.js.map +1 -1
  38. package/package.json +15 -15
  39. package/src/application/LegendQueryApplicationConfig.ts +3 -0
  40. package/src/components/Core_LegendQueryApplicationPlugin.tsx +281 -7
  41. package/src/components/QueryEditor.tsx +25 -1
  42. package/src/components/__test-utils__/QueryEditorComponentTestUtils.tsx +72 -25
  43. package/src/stores/LegendQueryApplicationPlugin.tsx +6 -5
  44. package/src/stores/QueryEditorStore.ts +247 -53
  45. package/src/stores/data-space/DataSpaceQueryCreatorStore.ts +17 -28
  46. package/src/stores/data-space/DataSpaceQuerySetupState.ts +1 -0
  47. package/src/stores/data-space/DataSpaceTemplateQueryCreatorStore.ts +73 -51
@@ -21,11 +21,12 @@ import {
21
21
  QueryProjectCoordinates,
22
22
  extractElementNameFromPath,
23
23
  } from '@finos/legend-graph';
24
+ import { type DepotServerClient } from '@finos/legend-server-depot';
24
25
  import {
25
- type DepotServerClient,
26
- StoreProjectData,
27
- } from '@finos/legend-server-depot';
28
- import { IllegalStateError, uuid } from '@finos/legend-shared';
26
+ IllegalStateError,
27
+ uuid,
28
+ type GeneratorFn,
29
+ } from '@finos/legend-shared';
29
30
  import {
30
31
  type QueryBuilderState,
31
32
  QueryBuilderDataBrowserWorkflow,
@@ -35,18 +36,16 @@ import {
35
36
  parseGACoordinates,
36
37
  } from '@finos/legend-storage';
37
38
  import {
39
+ type QueryPersistConfiguration,
38
40
  QueryBuilderActionConfig_QueryApplication,
39
41
  QueryEditorStore,
40
- type QueryPersistConfiguration,
41
42
  } from '../QueryEditorStore.js';
42
43
  import type { LegendQueryApplicationStore } from '../LegendQueryBaseStore.js';
43
44
  import {
44
- DSL_DataSpace_getGraphManagerExtension,
45
+ DataSpacePackageableElementExecutable,
45
46
  getDataSpace,
46
- retrieveAnalyticsResultCache,
47
47
  getExecutionContextFromDataspaceExecutable,
48
48
  getQueryFromDataspaceExecutable,
49
- DataSpacePackageableElementExecutable,
50
49
  } from '@finos/legend-extension-dsl-data-space/graph';
51
50
  import {
52
51
  type DataSpaceInfo,
@@ -90,62 +89,84 @@ export class DataSpaceTemplateQueryCreatorStore extends QueryEditorStore {
90
89
  };
91
90
  }
92
91
 
92
+ override *buildGraph(): GeneratorFn<void> {
93
+ // do nothing
94
+ }
95
+
93
96
  async initializeQueryBuilderState(): Promise<QueryBuilderState> {
97
+ const { dataSpaceAnalysisResult, isLightGraphEnabled } =
98
+ await this.buildGraphAndDataspaceAnalyticsResult(
99
+ this.groupId,
100
+ this.artifactId,
101
+ this.versionId,
102
+ undefined,
103
+ this.dataSpacePath,
104
+ this.templateQueryId,
105
+ );
94
106
  const dataSpace = getDataSpace(
95
107
  this.dataSpacePath,
96
108
  this.graphManagerState.graph,
97
109
  );
98
- let template = dataSpace.executables?.find(
99
- (executable) => executable.id === this.templateQueryId,
100
- );
101
- if (!template) {
102
- template = dataSpace.executables?.find(
103
- (executable) =>
104
- executable instanceof DataSpacePackageableElementExecutable &&
105
- executable.executable.value.path === this.templateQueryId,
110
+ let query;
111
+ let executionContext;
112
+ if (dataSpace.executables && dataSpace.executables.length > 0) {
113
+ let template = dataSpace.executables.find(
114
+ (ex) => ex.id === this.templateQueryId,
106
115
  );
107
- }
108
- if (!template) {
109
- throw new IllegalStateError(
110
- `Can't find template query with id '${this.templateQueryId}'`,
116
+ if (!template) {
117
+ template = dataSpace.executables.find(
118
+ (executable) =>
119
+ executable instanceof DataSpacePackageableElementExecutable &&
120
+ executable.executable.value.path === this.templateQueryId,
121
+ );
122
+ }
123
+ if (!template) {
124
+ throw new IllegalStateError(
125
+ `Can't find template query with id '${this.templateQueryId}'`,
126
+ );
127
+ }
128
+ executionContext = getExecutionContextFromDataspaceExecutable(
129
+ dataSpace,
130
+ template,
111
131
  );
112
- }
113
- const executionContext = getExecutionContextFromDataspaceExecutable(
114
- dataSpace,
115
- template,
116
- );
117
- if (!executionContext) {
118
- throw new IllegalStateError(
119
- `Can't find a correpsonding execution context`,
132
+ query = getQueryFromDataspaceExecutable(template, this.graphManagerState);
133
+ this.templateQueryTitle = template.title;
134
+ } else {
135
+ let template = dataSpaceAnalysisResult?.executables.find(
136
+ (executable) => executable.info?.id === this.templateQueryId,
120
137
  );
138
+ if (!template) {
139
+ template = dataSpaceAnalysisResult?.executables.find(
140
+ (executable) => executable.executable === this.templateQueryId,
141
+ );
142
+ }
143
+ if (!template) {
144
+ throw new IllegalStateError(
145
+ `Can't find template query with id '${this.templateQueryId}'`,
146
+ );
147
+ }
148
+ executionContext =
149
+ template.info?.executionContextKey === undefined
150
+ ? dataSpace.defaultExecutionContext
151
+ : dataSpace.executionContexts.find(
152
+ (ex) => ex.name === template.info?.executionContextKey,
153
+ );
154
+ if (template.info) {
155
+ query = await this.graphManagerState.graphManager.pureCodeToLambda(
156
+ template.info.query,
157
+ );
158
+ }
159
+ this.templateQueryTitle = template.title;
121
160
  }
122
- const query = getQueryFromDataspaceExecutable(
123
- template,
124
- this.graphManagerState,
125
- );
126
161
  if (!query) {
127
162
  throw new IllegalStateError(
128
163
  `Can't fetch query from dataspace executable`,
129
164
  );
130
165
  }
131
- this.templateQueryTitle = template.title;
132
- let dataSpaceAnalysisResult;
133
- try {
134
- const project = StoreProjectData.serialization.fromJson(
135
- await this.depotServerClient.getProject(this.groupId, this.artifactId),
136
- );
137
- dataSpaceAnalysisResult = await DSL_DataSpace_getGraphManagerExtension(
138
- this.graphManagerState.graphManager,
139
- ).retrieveDataSpaceAnalysisFromCache(() =>
140
- retrieveAnalyticsResultCache(
141
- project,
142
- this.versionId,
143
- dataSpace.path,
144
- this.depotServerClient,
145
- ),
166
+ if (!executionContext) {
167
+ throw new IllegalStateError(
168
+ `Can't find a correpsonding execution context`,
146
169
  );
147
- } catch {
148
- // do nothing
149
170
  }
150
171
  const sourceInfo = {
151
172
  groupId: this.groupId,
@@ -160,6 +181,7 @@ export class DataSpaceTemplateQueryCreatorStore extends QueryEditorStore {
160
181
  new QueryBuilderActionConfig_QueryApplication(this),
161
182
  dataSpace,
162
183
  executionContext,
184
+ isLightGraphEnabled,
163
185
  createDataSpaceDepoRepo(
164
186
  this,
165
187
  this.groupId,
@@ -167,7 +189,7 @@ export class DataSpaceTemplateQueryCreatorStore extends QueryEditorStore {
167
189
  this.versionId,
168
190
  undefined,
169
191
  ),
170
- (dataSpaceInfo: DataSpaceInfo) => {
192
+ async (dataSpaceInfo: DataSpaceInfo) => {
171
193
  this.applicationStore.notificationService.notifyWarning(
172
194
  `Can't switch data space to visit current template query`,
173
195
  );
@@ -180,7 +202,7 @@ export class DataSpaceTemplateQueryCreatorStore extends QueryEditorStore {
180
202
  sourceInfo,
181
203
  );
182
204
  queryBuilderState.setExecutionContext(executionContext);
183
- queryBuilderState.propagateExecutionContextChange(executionContext);
205
+ await queryBuilderState.propagateExecutionContextChange(true);
184
206
  queryBuilderState.initializeWithQuery(query);
185
207
  return queryBuilderState;
186
208
  }