@finos/legend-extension-dsl-data-space 10.3.81 → 10.3.83

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 (36) hide show
  1. package/lib/components/query-builder/DataSpaceQueryBuilderTemplateQueryPanelContent.d.ts.map +1 -1
  2. package/lib/components/query-builder/DataSpaceQueryBuilderTemplateQueryPanelContent.js +32 -23
  3. package/lib/components/query-builder/DataSpaceQueryBuilderTemplateQueryPanelContent.js.map +1 -1
  4. package/lib/graph-manager/action/analytics/DataSpaceAnalysis.d.ts +3 -1
  5. package/lib/graph-manager/action/analytics/DataSpaceAnalysis.d.ts.map +1 -1
  6. package/lib/graph-manager/action/analytics/DataSpaceAnalysis.js +2 -0
  7. package/lib/graph-manager/action/analytics/DataSpaceAnalysis.js.map +1 -1
  8. package/lib/graph-manager/action/analytics/DataSpaceAnalysisHelper.d.ts +5 -2
  9. package/lib/graph-manager/action/analytics/DataSpaceAnalysisHelper.d.ts.map +1 -1
  10. package/lib/graph-manager/action/analytics/DataSpaceAnalysisHelper.js +39 -1
  11. package/lib/graph-manager/action/analytics/DataSpaceAnalysisHelper.js.map +1 -1
  12. package/lib/graph-manager/index.d.ts +1 -0
  13. package/lib/graph-manager/index.d.ts.map +1 -1
  14. package/lib/graph-manager/index.js +1 -0
  15. package/lib/graph-manager/index.js.map +1 -1
  16. package/lib/graph-manager/protocol/pure/DSL_DataSpace_PureGraphManagerExtension.d.ts +3 -1
  17. package/lib/graph-manager/protocol/pure/DSL_DataSpace_PureGraphManagerExtension.d.ts.map +1 -1
  18. package/lib/graph-manager/protocol/pure/DSL_DataSpace_PureGraphManagerExtension.js.map +1 -1
  19. package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.d.ts +3 -2
  20. package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.d.ts.map +1 -1
  21. package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.js.map +1 -1
  22. package/lib/index.css +2 -2
  23. package/lib/index.css.map +1 -1
  24. package/lib/package.json +1 -1
  25. package/lib/stores/query-builder/DataSpaceQueryBuilderState.d.ts +9 -6
  26. package/lib/stores/query-builder/DataSpaceQueryBuilderState.d.ts.map +1 -1
  27. package/lib/stores/query-builder/DataSpaceQueryBuilderState.js +41 -9
  28. package/lib/stores/query-builder/DataSpaceQueryBuilderState.js.map +1 -1
  29. package/package.json +9 -9
  30. package/src/components/query-builder/DataSpaceQueryBuilderTemplateQueryPanelContent.tsx +49 -40
  31. package/src/graph-manager/action/analytics/DataSpaceAnalysis.ts +4 -0
  32. package/src/graph-manager/action/analytics/DataSpaceAnalysisHelper.ts +70 -3
  33. package/src/graph-manager/index.ts +2 -0
  34. package/src/graph-manager/protocol/pure/DSL_DataSpace_PureGraphManagerExtension.ts +7 -0
  35. package/src/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.ts +1 -1
  36. package/src/stores/query-builder/DataSpaceQueryBuilderState.ts +71 -31
@@ -22,26 +22,23 @@ import {
22
22
  TagIcon,
23
23
  } from '@finos/legend-art';
24
24
  import { observer } from 'mobx-react-lite';
25
- import { useRef } from 'react';
25
+ import { useEffect, useRef } from 'react';
26
26
  import {
27
27
  ActionAlertActionType,
28
28
  ActionAlertType,
29
29
  useApplicationStore,
30
30
  } from '@finos/legend-application';
31
31
  import { DocumentationLink } from '@finos/legend-lego/application';
32
- import type { DataSpaceExecutable } from '../../graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js';
33
32
  import type { DataSpaceQueryBuilderState } from '../../stores/query-builder/DataSpaceQueryBuilderState.js';
34
33
  import { DSL_DATA_SPACE_LEGEND_QUERY_DOCUMENTATION_KEY } from '../../__lib__/query/DSL_DataSpace_LegendQueryDocumentation.js';
35
- import {
36
- getExecutionContextFromDataspaceExecutable,
37
- getQueryFromDataspaceExecutable,
38
- } from '../../graph-manager/DSL_DataSpace_GraphManagerHelper.js';
34
+ import { flowResult } from 'mobx';
35
+ import type { DataSpaceExecutableAnalysisResult } from '../../graph-manager/action/analytics/DataSpaceAnalysis.js';
39
36
 
40
37
  const DataSpaceTemplateQueryDialog = observer(
41
38
  (props: {
42
39
  triggerElement: HTMLElement | null;
43
40
  queryBuilderState: DataSpaceQueryBuilderState;
44
- templateQueries: DataSpaceExecutable[];
41
+ templateQueries: DataSpaceExecutableAnalysisResult[];
45
42
  }) => {
46
43
  const { triggerElement, queryBuilderState, templateQueries } = props;
47
44
  const applicationStore = useApplicationStore();
@@ -49,42 +46,43 @@ const DataSpaceTemplateQueryDialog = observer(
49
46
  queryBuilderState.setTemplateQueryDialogOpen(false);
50
47
  };
51
48
 
52
- const loadTemplateQuery = (template: DataSpaceExecutable): void => {
53
- const executionContext = getExecutionContextFromDataspaceExecutable(
54
- queryBuilderState.dataSpace,
55
- template,
56
- );
57
- if (!executionContext) {
58
- applicationStore.notificationService.notifyError(
59
- 'Unable find an executionContext of this template query within current dataspace',
60
- );
49
+ const loadTemplateQuery = async (
50
+ template: DataSpaceExecutableAnalysisResult,
51
+ ): Promise<void> => {
52
+ let query;
53
+ if (template.info) {
54
+ query =
55
+ await queryBuilderState.graphManagerState.graphManager.pureCodeToLambda(
56
+ template.info.query,
57
+ );
61
58
  }
62
- const query = getQueryFromDataspaceExecutable(
63
- template,
64
- queryBuilderState.graphManagerState,
65
- );
66
59
  if (!query) {
67
60
  applicationStore.notificationService.notifyError(
68
61
  'Unable get a query from this template query',
69
62
  );
70
- }
71
- if (
72
- query &&
73
- executionContext &&
74
- executionContext.hashCode !==
75
- queryBuilderState.executionContext.hashCode
76
- ) {
77
- queryBuilderState.setExecutionContext(executionContext);
78
- queryBuilderState.propagateExecutionContextChange(executionContext);
79
- queryBuilderState.initializeWithQuery(query);
80
- queryBuilderState.onExecutionContextChange?.(executionContext);
81
- } else if (query) {
82
- queryBuilderState.initializeWithQuery(query);
63
+ } else {
64
+ const executionContext =
65
+ queryBuilderState.dataSpace.executionContexts.filter(
66
+ (ex) => ex.name === template.info?.executionContextKey,
67
+ )[0];
68
+ if (
69
+ executionContext &&
70
+ executionContext.name !== queryBuilderState.executionContext.name
71
+ ) {
72
+ queryBuilderState.setExecutionContext(executionContext);
73
+ queryBuilderState.propagateExecutionContextChange(executionContext);
74
+ queryBuilderState.initializeWithQuery(query);
75
+ queryBuilderState.onExecutionContextChange?.(executionContext);
76
+ } else {
77
+ queryBuilderState.initializeWithQuery(query);
78
+ }
83
79
  }
84
80
  handleClose();
85
81
  };
86
82
 
87
- const loadQuery = (template: DataSpaceExecutable): void => {
83
+ const loadQuery = async (
84
+ template: DataSpaceExecutableAnalysisResult,
85
+ ): Promise<void> => {
88
86
  if (queryBuilderState.changeDetectionState.hasChanged) {
89
87
  applicationStore.alertService.setActionAlertInfo({
90
88
  message:
@@ -94,7 +92,9 @@ const DataSpaceTemplateQueryDialog = observer(
94
92
  {
95
93
  label: 'Proceed',
96
94
  type: ActionAlertActionType.PROCEED_WITH_CAUTION,
97
- handler: (): void => loadTemplateQuery(template),
95
+ handler: (): void => {
96
+ flowResult(loadTemplateQuery(template));
97
+ },
98
98
  },
99
99
  {
100
100
  label: 'Abort',
@@ -104,11 +104,13 @@ const DataSpaceTemplateQueryDialog = observer(
104
104
  ],
105
105
  });
106
106
  } else {
107
- loadTemplateQuery(template);
107
+ flowResult(loadTemplateQuery(template));
108
108
  }
109
109
  };
110
110
 
111
- const visitTemplateQuery = (template: DataSpaceExecutable): void => {
111
+ const visitTemplateQuery = (
112
+ template: DataSpaceExecutableAnalysisResult,
113
+ ): void => {
112
114
  if (queryBuilderState.dataSpaceRepo.canVisitTemplateQuery) {
113
115
  queryBuilderState.dataSpaceRepo.visitTemplateQuery(
114
116
  queryBuilderState.dataSpace,
@@ -157,7 +159,9 @@ const DataSpaceTemplateQueryDialog = observer(
157
159
  <button
158
160
  className="query-builder__data-space__template-query-panel__query__entry"
159
161
  title="click to load template query"
160
- onClick={() => loadQuery(query)}
162
+ onClick={() => {
163
+ flowResult(loadQuery(query));
164
+ }}
161
165
  >
162
166
  <div className="query-builder__data-space__template-query-panel__query__entry__content">
163
167
  <div className="query-builder__data-space__template-query-panel__query__entry__content__title">
@@ -196,12 +200,17 @@ const DataSpaceTemplateQueryDialog = observer(
196
200
  const DataSpaceQueryBuilderTemplateQueryPanel = observer(
197
201
  (props: { queryBuilderState: DataSpaceQueryBuilderState }) => {
198
202
  const { queryBuilderState } = props;
203
+ const applicationStore = useApplicationStore();
199
204
  const templateQueryButtonRef = useRef<HTMLButtonElement>(null);
200
- const templateQueries = queryBuilderState.dataSpace.executables;
201
-
202
205
  const showTemplateQueries = (): void => {
203
206
  queryBuilderState.setTemplateQueryDialogOpen(true);
204
207
  };
208
+ const templateQueries = queryBuilderState.displayedTemplateQueries;
209
+ useEffect(() => {
210
+ flowResult(queryBuilderState.intialize()).catch(
211
+ applicationStore.alertUnhandledError,
212
+ );
213
+ }, [queryBuilderState, applicationStore.alertUnhandledError]);
205
214
 
206
215
  return (
207
216
  <>
@@ -21,6 +21,7 @@ import type {
21
21
  PureModel,
22
22
  DatasetSpecification,
23
23
  MappingModelCoverageAnalysisResult,
24
+ FunctionAnalysisInfo,
24
25
  } from '@finos/legend-graph';
25
26
  import { prettyCONSTName, uuid } from '@finos/legend-shared';
26
27
  import type { DataSpaceSupportInfo } from '../../../graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js';
@@ -221,6 +222,9 @@ export class DataSpaceAnalysisResult {
221
222
  MappingModelCoverageAnalysisResult
222
223
  >;
223
224
 
225
+ functionInfos?: Map<string, FunctionAnalysisInfo>;
226
+ dependencyFunctionInfos?: Map<string, FunctionAnalysisInfo>;
227
+
224
228
  get displayName(): string {
225
229
  return this.title ?? prettyCONSTName(this.name);
226
230
  }
@@ -14,13 +14,31 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { getExpectedArtifactGenerationExtensionOutputPath } from '@finos/legend-graph';
17
+ import {
18
+ type GraphManagerState,
19
+ ConcreteFunctionDefinition,
20
+ getExpectedArtifactGenerationExtensionOutputPath,
21
+ Service,
22
+ } from '@finos/legend-graph';
18
23
  import type {
19
24
  DepotServerClient,
20
25
  StoreProjectData,
21
26
  } from '@finos/legend-server-depot';
22
- import type { PlainObject } from '@finos/legend-shared';
23
- import type { DataSpaceAnalysisResult } from './DataSpaceAnalysis.js';
27
+ import { isNonNullable, type PlainObject } from '@finos/legend-shared';
28
+ import {
29
+ type DataSpaceAnalysisResult,
30
+ DataSpaceExecutableAnalysisResult,
31
+ DataSpaceFunctionPointerExecutableInfo,
32
+ DataSpaceServiceExecutableInfo,
33
+ DataSpaceTemplateExecutableInfo,
34
+ } from './DataSpaceAnalysis.js';
35
+ import {
36
+ type DataSpaceExecutable,
37
+ type DataSpace,
38
+ DataSpaceExecutableTemplate,
39
+ DataSpacePackageableElementExecutable,
40
+ } from '../../../graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js';
41
+ import { getQueryFromDataspaceExecutable } from '../../DSL_DataSpace_GraphManagerHelper.js';
24
42
 
25
43
  const DATASPACE_ANALYTICS_FILE_NAME = 'AnalyticsResult.json';
26
44
  const V1_DATASPACE_ANALYTICS_ARTIFACT_EXTENSION_KEY = 'dataSpace-analytics';
@@ -42,3 +60,52 @@ export const retrieveAnalyticsResultCache = async (
42
60
  ),
43
61
  ),
44
62
  );
63
+
64
+ export const buildDataSpaceExecutableAnalysisResultFromExecutable = async (
65
+ dataspace: DataSpace,
66
+ executables: DataSpaceExecutable[],
67
+ graphManagerState: GraphManagerState,
68
+ ): Promise<DataSpaceExecutableAnalysisResult[]> =>
69
+ (
70
+ await Promise.all(
71
+ executables.map(async (executable) => {
72
+ const result = new DataSpaceExecutableAnalysisResult();
73
+ result.title = executable.title;
74
+ result.description = executable.description;
75
+ let info;
76
+ const query = getQueryFromDataspaceExecutable(
77
+ executable,
78
+ graphManagerState,
79
+ );
80
+ if (executable instanceof DataSpaceExecutableTemplate) {
81
+ info = new DataSpaceTemplateExecutableInfo();
82
+ if (executable.id) {
83
+ info.id = executable.id;
84
+ }
85
+ } else if (
86
+ executable instanceof DataSpacePackageableElementExecutable
87
+ ) {
88
+ if (executable.executable.value instanceof Service) {
89
+ info = new DataSpaceServiceExecutableInfo();
90
+ info.id = executable.id ?? executable.executable.value.path;
91
+ } else if (
92
+ executable.executable.value instanceof ConcreteFunctionDefinition
93
+ ) {
94
+ info = new DataSpaceFunctionPointerExecutableInfo();
95
+ info.id = executable.id ?? executable.executable.value.path;
96
+ }
97
+ }
98
+ if (info) {
99
+ info.executionContextKey =
100
+ executable.executionContextKey ??
101
+ dataspace.defaultExecutionContext.name;
102
+ if (query) {
103
+ info.query =
104
+ await graphManagerState.graphManager.lambdaToPureCode(query);
105
+ }
106
+ }
107
+ result.info = info;
108
+ return result;
109
+ }),
110
+ )
111
+ ).filter(isNonNullable);
@@ -21,6 +21,8 @@ export * from '../graph/DSL_DataSpace_MetaModelConst.js';
21
21
 
22
22
  export * from './DSL_DataSpace_GraphManagerPreset.js';
23
23
 
24
+ export { V1_DataSpaceAnalysisResult } from './protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.js';
25
+
24
26
  export {
25
27
  DATA_SPACE_ELEMENT_CLASSIFIER_PATH,
26
28
  DATA_SPACE_ELEMENT_POINTER,
@@ -16,6 +16,7 @@
16
16
 
17
17
  import {
18
18
  type AbstractPureGraphManager,
19
+ type PureProtocolProcessorPlugin,
19
20
  AbstractPureGraphManagerExtension,
20
21
  type QueryInfo,
21
22
  } from '@finos/legend-graph';
@@ -26,6 +27,7 @@ import {
26
27
  type PlainObject,
27
28
  } from '@finos/legend-shared';
28
29
  import type { DataSpaceAnalysisResult } from '../../action/analytics/DataSpaceAnalysis.js';
30
+ import type { V1_DataSpaceAnalysisResult } from './v1/engine/analytics/V1_DataSpaceAnalysis.js';
29
31
 
30
32
  export abstract class DSL_DataSpace_PureGraphManagerExtension extends AbstractPureGraphManagerExtension {
31
33
  abstract analyzeDataSpace(
@@ -51,6 +53,11 @@ export abstract class DSL_DataSpace_PureGraphManagerExtension extends AbstractPu
51
53
  ): Promise<Entity>;
52
54
 
53
55
  abstract IsTemplateQueryIdValid(dataSpaceEntity: Entity, id: string): boolean;
56
+
57
+ abstract buildDataSpaceAnalytics(
58
+ json: PlainObject<V1_DataSpaceAnalysisResult>,
59
+ plugins: PureProtocolProcessorPlugin[],
60
+ ): Promise<DataSpaceAnalysisResult>;
54
61
  }
55
62
 
56
63
  export const DSL_DataSpace_getGraphManagerExtension = (
@@ -255,7 +255,7 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
255
255
  return cacheResult;
256
256
  }
257
257
 
258
- private async buildDataSpaceAnalytics(
258
+ async buildDataSpaceAnalytics(
259
259
  json: PlainObject<V1_DataSpaceAnalysisResult>,
260
260
  plugins: PureProtocolProcessorPlugin[],
261
261
  ): Promise<DataSpaceAnalysisResult> {
@@ -21,19 +21,20 @@ import {
21
21
  type QueryBuilderWorkflowState,
22
22
  type QueryBuilderActionConfig,
23
23
  QueryBuilderState,
24
+ type QueryBuilderExtraFunctionAnalysisInfo,
24
25
  } from '@finos/legend-query-builder';
25
26
  import {
26
27
  type Class,
27
28
  type GraphManagerState,
28
- getMappingCompatibleClasses,
29
- RuntimePointer,
30
29
  type QueryExecutionContext,
31
30
  type Runtime,
32
31
  type Mapping,
32
+ type FunctionAnalysisInfo,
33
+ getMappingCompatibleClasses,
33
34
  Package,
34
35
  QueryDataSpaceExecutionContext,
35
- Service,
36
36
  elementBelongsToPackage,
37
+ RuntimePointer,
37
38
  } from '@finos/legend-graph';
38
39
  import {
39
40
  type DepotServerClient,
@@ -45,27 +46,30 @@ import {
45
46
  type GeneratorFn,
46
47
  ActionState,
47
48
  assertErrorThrown,
48
- getNullableFirstEntry,
49
49
  filterByType,
50
+ getNullableFirstEntry,
50
51
  } from '@finos/legend-shared';
51
52
  import { action, flow, makeObservable, observable } from 'mobx';
52
53
  import { renderDataSpaceQueryBuilderSetupPanelContent } from '../../components/query-builder/DataSpaceQueryBuilder.js';
53
54
  import {
55
+ type DataSpaceElement,
54
56
  type DataSpaceExecutionContext,
55
- type DataSpaceExecutable,
56
57
  DataSpace,
57
- DataSpacePackageableElementExecutable,
58
- type DataSpaceElement,
59
58
  } from '../../graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js';
60
59
  import { DATA_SPACE_ELEMENT_CLASSIFIER_PATH } from '../../graph-manager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.js';
61
60
  import { DataSpaceAdvancedSearchState } from '../query/DataSpaceAdvancedSearchState.js';
62
- import type { DataSpaceAnalysisResult } from '../../graph-manager/action/analytics/DataSpaceAnalysis.js';
61
+ import {
62
+ type DataSpaceAnalysisResult,
63
+ type DataSpaceExecutableAnalysisResult,
64
+ DataSpaceServiceExecutableInfo,
65
+ } from '../../graph-manager/action/analytics/DataSpaceAnalysis.js';
63
66
  import {
64
67
  type DataSpaceInfo,
65
68
  extractDataSpaceInfo,
66
69
  } from '../shared/DataSpaceInfo.js';
67
70
  import type { ProjectGAVCoordinates } from '@finos/legend-storage';
68
71
  import { generateDataSpaceTemplateQueryCreatorRoute } from '../../__lib__/to-delete/DSL_DataSpace_LegendQueryNavigation_to_delete.js';
72
+ import { buildDataSpaceExecutableAnalysisResultFromExecutable } from '../../graph-manager/action/analytics/DataSpaceAnalysisHelper.js';
69
73
 
70
74
  const matchesDataElement = (
71
75
  _class: Class,
@@ -106,6 +110,7 @@ export const resolveUsableDataSpaceClasses = (
106
110
  }
107
111
  return compatibleClasses;
108
112
  };
113
+
109
114
  export interface DataSpaceQuerySDLC extends QuerySDLC {
110
115
  groupId: string;
111
116
  artifactId: string;
@@ -142,7 +147,7 @@ export abstract class DataSpacesBuilderRepoistory {
142
147
  abstract loadDataSpaces(): GeneratorFn<void>;
143
148
  abstract visitTemplateQuery(
144
149
  dataSpace: DataSpace,
145
- template: DataSpaceExecutable,
150
+ template: DataSpaceExecutableAnalysisResult,
146
151
  ): void;
147
152
 
148
153
  configureDataSpaceOptions(val: DataSpaceInfo[]): void {
@@ -183,7 +188,7 @@ export class DataSpacesGraphRepoistory extends DataSpacesBuilderRepoistory {
183
188
 
184
189
  override visitTemplateQuery(
185
190
  dataSpace: DataSpace,
186
- template: DataSpaceExecutable,
191
+ template: DataSpaceExecutableAnalysisResult,
187
192
  ): void {
188
193
  throw new Error('Method not implemented.');
189
194
  }
@@ -249,24 +254,21 @@ export class DataSpacesDepotRepository extends DataSpacesBuilderRepoistory {
249
254
 
250
255
  override visitTemplateQuery(
251
256
  dataSpace: DataSpace,
252
- template: DataSpaceExecutable,
257
+ template: DataSpaceExecutableAnalysisResult,
253
258
  ): void {
254
- if (template.id) {
255
- this.applicationStore.navigationService.navigator.visitAddress(
256
- this.applicationStore.navigationService.navigator.generateAddress(
257
- generateDataSpaceTemplateQueryCreatorRoute(
258
- this.project.groupId,
259
- this.project.artifactId,
260
- this.project.versionId,
261
- dataSpace.path,
262
- template.id,
263
- ),
264
- ),
259
+ let templateId;
260
+ if (template.info) {
261
+ if (template.info.id) {
262
+ templateId = template.info.id;
263
+ } else if (template.info instanceof DataSpaceServiceExecutableInfo) {
264
+ templateId = template.executable ?? template.info.pattern;
265
+ }
266
+ }
267
+ if (!templateId) {
268
+ this.applicationStore.notificationService.notifyWarning(
269
+ `Can't visit tempalte query without a Id`,
265
270
  );
266
- } else if (
267
- template instanceof DataSpacePackageableElementExecutable &&
268
- template.executable.value instanceof Service
269
- ) {
271
+ } else {
270
272
  this.applicationStore.navigationService.navigator.visitAddress(
271
273
  this.applicationStore.navigationService.navigator.generateAddress(
272
274
  generateDataSpaceTemplateQueryCreatorRoute(
@@ -274,14 +276,10 @@ export class DataSpacesDepotRepository extends DataSpacesBuilderRepoistory {
274
276
  this.project.artifactId,
275
277
  this.project.versionId,
276
278
  dataSpace.path,
277
- template.executable.value.path,
279
+ templateId,
278
280
  ),
279
281
  ),
280
282
  );
281
- } else {
282
- this.applicationStore.notificationService.notifyWarning(
283
- `Can't visit tempalte query without a Id`,
284
- );
285
283
  }
286
284
  }
287
285
 
@@ -353,6 +351,7 @@ export class DataSpaceQueryBuilderState extends QueryBuilderState {
353
351
  executionContext!: DataSpaceExecutionContext;
354
352
  showRuntimeSelector = false;
355
353
  isTemplateQueryDialogOpen = false;
354
+ displayedTemplateQueries: DataSpaceExecutableAnalysisResult[] | undefined;
356
355
 
357
356
  constructor(
358
357
  applicationStore: GenericLegendApplicationStore,
@@ -378,9 +377,11 @@ export class DataSpaceQueryBuilderState extends QueryBuilderState {
378
377
  executionContext: observable,
379
378
  showRuntimeSelector: observable,
380
379
  isTemplateQueryDialogOpen: observable,
380
+ displayedTemplateQueries: observable,
381
381
  setExecutionContext: action,
382
382
  setShowRuntimeSelector: action,
383
383
  setTemplateQueryDialogOpen: action,
384
+ intialize: flow,
384
385
  });
385
386
 
386
387
  this.dataSpace = dataSpace;
@@ -460,4 +461,43 @@ export class DataSpaceQueryBuilderState extends QueryBuilderState {
460
461
  }
461
462
  }
462
463
  }
464
+
465
+ override buildFunctionAnalysisInfo():
466
+ | QueryBuilderExtraFunctionAnalysisInfo
467
+ | undefined {
468
+ let functionInfoMap: Map<string, FunctionAnalysisInfo> = new Map<
469
+ string,
470
+ FunctionAnalysisInfo
471
+ >();
472
+ let dependencyFunctionInfoMap: Map<string, FunctionAnalysisInfo> = new Map<
473
+ string,
474
+ FunctionAnalysisInfo
475
+ >();
476
+ const functionInfos = this.dataSpaceAnalysisResult?.functionInfos;
477
+ if (functionInfos) {
478
+ functionInfoMap = functionInfos;
479
+ }
480
+ const dependencyFunctionInfos =
481
+ this.dataSpaceAnalysisResult?.dependencyFunctionInfos;
482
+ if (dependencyFunctionInfos) {
483
+ dependencyFunctionInfoMap = dependencyFunctionInfos;
484
+ }
485
+ return {
486
+ functionInfoMap,
487
+ dependencyFunctionInfoMap,
488
+ };
489
+ }
490
+
491
+ *intialize(): GeneratorFn<void> {
492
+ this.displayedTemplateQueries =
493
+ this.dataSpace.executables && this.dataSpace.executables.length > 0
494
+ ? ((yield buildDataSpaceExecutableAnalysisResultFromExecutable(
495
+ this.dataSpace,
496
+ this.dataSpace.executables,
497
+ this.graphManagerState,
498
+ )) as DataSpaceExecutableAnalysisResult[])
499
+ : this.dataSpaceAnalysisResult?.executables.filter(
500
+ (ex) => ex.info !== undefined,
501
+ );
502
+ }
463
503
  }