@finos/legend-application-query 13.6.9 → 13.7.0
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/application/LegendQueryApplicationConfig.d.ts +1 -0
- package/lib/application/LegendQueryApplicationConfig.d.ts.map +1 -1
- package/lib/application/LegendQueryApplicationConfig.js +2 -0
- package/lib/application/LegendQueryApplicationConfig.js.map +1 -1
- package/lib/components/Core_LegendQueryApplicationPlugin.d.ts +3 -2
- package/lib/components/Core_LegendQueryApplicationPlugin.d.ts.map +1 -1
- package/lib/components/Core_LegendQueryApplicationPlugin.js +157 -4
- package/lib/components/Core_LegendQueryApplicationPlugin.js.map +1 -1
- package/lib/components/QueryEditor.d.ts.map +1 -1
- package/lib/components/QueryEditor.js +9 -2
- package/lib/components/QueryEditor.js.map +1 -1
- package/lib/components/__test-utils__/QueryEditorComponentTestUtils.d.ts +2 -2
- package/lib/components/__test-utils__/QueryEditorComponentTestUtils.d.ts.map +1 -1
- package/lib/components/__test-utils__/QueryEditorComponentTestUtils.js +38 -10
- package/lib/components/__test-utils__/QueryEditorComponentTestUtils.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/LegendQueryApplicationPlugin.d.ts +4 -3
- package/lib/stores/LegendQueryApplicationPlugin.d.ts.map +1 -1
- package/lib/stores/LegendQueryApplicationPlugin.js +0 -1
- package/lib/stores/LegendQueryApplicationPlugin.js.map +1 -1
- package/lib/stores/QueryEditorStore.d.ts +13 -2
- package/lib/stores/QueryEditorStore.d.ts.map +1 -1
- package/lib/stores/QueryEditorStore.js +135 -30
- package/lib/stores/QueryEditorStore.js.map +1 -1
- package/lib/stores/data-space/DataSpaceQueryCreatorStore.d.ts +2 -1
- package/lib/stores/data-space/DataSpaceQueryCreatorStore.d.ts.map +1 -1
- package/lib/stores/data-space/DataSpaceQueryCreatorStore.js +8 -12
- package/lib/stores/data-space/DataSpaceQueryCreatorStore.js.map +1 -1
- package/lib/stores/data-space/DataSpaceQuerySetupState.d.ts +1 -0
- package/lib/stores/data-space/DataSpaceQuerySetupState.d.ts.map +1 -1
- package/lib/stores/data-space/DataSpaceQuerySetupState.js +1 -0
- package/lib/stores/data-space/DataSpaceQuerySetupState.js.map +1 -1
- package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.d.ts +3 -1
- package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.d.ts.map +1 -1
- package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.js +41 -24
- package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.js.map +1 -1
- package/package.json +8 -8
- package/src/application/LegendQueryApplicationConfig.ts +3 -0
- package/src/components/Core_LegendQueryApplicationPlugin.tsx +281 -7
- package/src/components/QueryEditor.tsx +25 -1
- package/src/components/__test-utils__/QueryEditorComponentTestUtils.tsx +62 -24
- package/src/stores/LegendQueryApplicationPlugin.tsx +6 -5
- package/src/stores/QueryEditorStore.ts +254 -53
- package/src/stores/data-space/DataSpaceQueryCreatorStore.ts +17 -28
- package/src/stores/data-space/DataSpaceQuerySetupState.ts +1 -0
- package/src/stores/data-space/DataSpaceTemplateQueryCreatorStore.ts +73 -51
@@ -49,6 +49,7 @@ import {
|
|
49
49
|
type ValueSpecification,
|
50
50
|
type GraphInitializationReport,
|
51
51
|
type PackageableRuntime,
|
52
|
+
type QueryInfo,
|
52
53
|
GraphManagerState,
|
53
54
|
Query,
|
54
55
|
PureExecution,
|
@@ -65,12 +66,15 @@ import {
|
|
65
66
|
reportGraphAnalytics,
|
66
67
|
cloneQueryStereotype,
|
67
68
|
cloneQueryTaggedValue,
|
68
|
-
QueryDataSpaceExecutionContext,
|
69
|
-
QueryExplicitExecutionContext,
|
70
69
|
QueryProjectCoordinates,
|
71
70
|
buildLambdaVariableExpressions,
|
72
71
|
VariableExpression,
|
73
72
|
PrimitiveType,
|
73
|
+
CORE_PURE_PATH,
|
74
|
+
isValidFullPath,
|
75
|
+
QUERY_PROFILE_PATH,
|
76
|
+
QueryDataSpaceExecutionContextInfo,
|
77
|
+
QueryExplicitExecutionContextInfo,
|
74
78
|
} from '@finos/legend-graph';
|
75
79
|
import {
|
76
80
|
generateExistingQueryEditorRoute,
|
@@ -90,6 +94,8 @@ import {
|
|
90
94
|
StoreProjectData,
|
91
95
|
LATEST_VERSION_ALIAS,
|
92
96
|
VersionedProjectData,
|
97
|
+
retrieveProjectEntitiesWithDependencies,
|
98
|
+
retrieveProjectEntitiesWithClassifier,
|
93
99
|
} from '@finos/legend-server-depot';
|
94
100
|
import {
|
95
101
|
ActionAlertActionType,
|
@@ -119,10 +125,12 @@ import {
|
|
119
125
|
type DataSpaceInfo,
|
120
126
|
} from '@finos/legend-extension-dsl-data-space/application';
|
121
127
|
import {
|
122
|
-
DSL_DataSpace_getGraphManagerExtension,
|
123
128
|
type DataSpace,
|
124
129
|
type DataSpaceExecutionContext,
|
130
|
+
type DataSpaceAnalysisResult,
|
131
|
+
DSL_DataSpace_getGraphManagerExtension,
|
125
132
|
getOwnDataSpace,
|
133
|
+
QUERY_PROFILE_TAG_DATA_SPACE,
|
126
134
|
retrieveAnalyticsResultCache,
|
127
135
|
} from '@finos/legend-extension-dsl-data-space/graph';
|
128
136
|
import { generateDataSpaceQueryCreatorRoute } from '../__lib__/DSL_DataSpace_LegendQueryNavigation.js';
|
@@ -269,6 +277,7 @@ export abstract class QueryEditorStore {
|
|
269
277
|
showRegisterServiceModal = false;
|
270
278
|
showAppInfo = false;
|
271
279
|
showDataspaceInfo = false;
|
280
|
+
enableMinialGraphForDataSpaceLoadingPerformance = true;
|
272
281
|
|
273
282
|
constructor(
|
274
283
|
applicationStore: LegendQueryApplicationStore,
|
@@ -282,13 +291,16 @@ export abstract class QueryEditorStore {
|
|
282
291
|
showAppInfo: observable,
|
283
292
|
showDataspaceInfo: observable,
|
284
293
|
queryBuilderState: observable,
|
294
|
+
enableMinialGraphForDataSpaceLoadingPerformance: observable,
|
285
295
|
isPerformingBlockingAction: computed,
|
286
296
|
setExistingQueryName: action,
|
287
297
|
setShowRegisterServiceModal: action,
|
288
298
|
setShowAppInfo: action,
|
289
299
|
setShowDataspaceInfo: action,
|
300
|
+
setEnableMinialGraphForDataSpaceLoadingPerformance: action,
|
290
301
|
initialize: flow,
|
291
302
|
buildGraph: flow,
|
303
|
+
buildFullGraph: flow,
|
292
304
|
searchExistingQueryName: flow,
|
293
305
|
});
|
294
306
|
|
@@ -390,6 +402,10 @@ export abstract class QueryEditorStore {
|
|
390
402
|
this.showRegisterServiceModal = val;
|
391
403
|
}
|
392
404
|
|
405
|
+
setEnableMinialGraphForDataSpaceLoadingPerformance(val: boolean): void {
|
406
|
+
this.enableMinialGraphForDataSpaceLoadingPerformance = val;
|
407
|
+
}
|
408
|
+
|
393
409
|
get isPerformingBlockingAction(): boolean {
|
394
410
|
return this.queryCreatorState.createQueryState.isInProgress;
|
395
411
|
}
|
@@ -480,7 +496,10 @@ export abstract class QueryEditorStore {
|
|
480
496
|
): QueryPersistConfiguration | undefined;
|
481
497
|
|
482
498
|
*initialize(): GeneratorFn<void> {
|
483
|
-
if (
|
499
|
+
if (
|
500
|
+
!this.initState.isInInitialState &&
|
501
|
+
this.enableMinialGraphForDataSpaceLoadingPerformance
|
502
|
+
) {
|
484
503
|
return;
|
485
504
|
}
|
486
505
|
|
@@ -563,7 +582,7 @@ export abstract class QueryEditorStore {
|
|
563
582
|
);
|
564
583
|
}
|
565
584
|
|
566
|
-
*
|
585
|
+
*buildFullGraph(): GeneratorFn<void> {
|
567
586
|
const stopWatch = new StopWatch();
|
568
587
|
|
569
588
|
const projectInfo = this.getProjectInfo();
|
@@ -653,6 +672,7 @@ export abstract class QueryEditorStore {
|
|
653
672
|
dependenciesCount:
|
654
673
|
this.graphManagerState.graph.dependencyManager.numberOfDependencies,
|
655
674
|
graph: graph_buildReport,
|
675
|
+
isLightGraphEnabled: false,
|
656
676
|
};
|
657
677
|
this.logBuildGraphMetrics(graphBuilderReportData);
|
658
678
|
|
@@ -662,6 +682,147 @@ export abstract class QueryEditorStore {
|
|
662
682
|
);
|
663
683
|
}
|
664
684
|
}
|
685
|
+
|
686
|
+
*buildGraph(): GeneratorFn<void> {
|
687
|
+
yield flowResult(this.buildFullGraph());
|
688
|
+
}
|
689
|
+
|
690
|
+
async buildGraphAndDataspaceAnalyticsResult(
|
691
|
+
groupId: string,
|
692
|
+
artifactId: string,
|
693
|
+
versionId: string,
|
694
|
+
executionContext: string | undefined,
|
695
|
+
dataSpacePath: string,
|
696
|
+
templateQueryId?: string | undefined,
|
697
|
+
): Promise<{
|
698
|
+
dataSpaceAnalysisResult: DataSpaceAnalysisResult | undefined;
|
699
|
+
isLightGraphEnabled: boolean;
|
700
|
+
}> {
|
701
|
+
let dataSpaceAnalysisResult;
|
702
|
+
let buildFullGraph = false;
|
703
|
+
let isLightGraphEnabled = true;
|
704
|
+
const supportBuildMinimalGraph =
|
705
|
+
this.applicationStore.config.options.TEMPORARY__enableMinimalGraph;
|
706
|
+
if (
|
707
|
+
this.enableMinialGraphForDataSpaceLoadingPerformance &&
|
708
|
+
supportBuildMinimalGraph
|
709
|
+
) {
|
710
|
+
try {
|
711
|
+
this.initState.setMessage('Fetching dataspace analysis result...');
|
712
|
+
const project = StoreProjectData.serialization.fromJson(
|
713
|
+
await this.depotServerClient.getProject(groupId, artifactId),
|
714
|
+
);
|
715
|
+
const graph_buildReport = createGraphBuilderReport();
|
716
|
+
const stopWatch = new StopWatch();
|
717
|
+
// initialize system
|
718
|
+
stopWatch.record();
|
719
|
+
await this.graphManagerState.initializeSystem();
|
720
|
+
stopWatch.record(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH_SYSTEM__SUCCESS);
|
721
|
+
const dependency_buildReport = createGraphBuilderReport();
|
722
|
+
dataSpaceAnalysisResult = await DSL_DataSpace_getGraphManagerExtension(
|
723
|
+
this.graphManagerState.graphManager,
|
724
|
+
).analyzeDataSpaceCoverage(
|
725
|
+
dataSpacePath,
|
726
|
+
() =>
|
727
|
+
retrieveProjectEntitiesWithDependencies(
|
728
|
+
project,
|
729
|
+
versionId,
|
730
|
+
this.depotServerClient,
|
731
|
+
),
|
732
|
+
() =>
|
733
|
+
retrieveProjectEntitiesWithClassifier(
|
734
|
+
project,
|
735
|
+
versionId,
|
736
|
+
CORE_PURE_PATH.FUNCTION,
|
737
|
+
this.depotServerClient,
|
738
|
+
),
|
739
|
+
() =>
|
740
|
+
retrieveAnalyticsResultCache(
|
741
|
+
project,
|
742
|
+
versionId,
|
743
|
+
dataSpacePath,
|
744
|
+
this.depotServerClient,
|
745
|
+
),
|
746
|
+
undefined,
|
747
|
+
graph_buildReport,
|
748
|
+
this.graphManagerState.graph,
|
749
|
+
executionContext,
|
750
|
+
undefined,
|
751
|
+
this.getProjectInfo(),
|
752
|
+
templateQueryId,
|
753
|
+
);
|
754
|
+
const mappingPath = executionContext
|
755
|
+
? dataSpaceAnalysisResult.executionContextsIndex.get(executionContext)
|
756
|
+
?.mapping.path
|
757
|
+
: undefined;
|
758
|
+
if (mappingPath) {
|
759
|
+
const pmcd =
|
760
|
+
dataSpaceAnalysisResult.mappingToMappingCoverageResult?.get(
|
761
|
+
mappingPath,
|
762
|
+
)?.entities;
|
763
|
+
if (pmcd) {
|
764
|
+
// report
|
765
|
+
stopWatch.record(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS);
|
766
|
+
const graphBuilderReportData = {
|
767
|
+
timings:
|
768
|
+
this.applicationStore.timeService.finalizeTimingsRecord(
|
769
|
+
stopWatch,
|
770
|
+
),
|
771
|
+
dependencies: dependency_buildReport,
|
772
|
+
dependenciesCount:
|
773
|
+
this.graphManagerState.graph.dependencyManager
|
774
|
+
.numberOfDependencies,
|
775
|
+
graph: graph_buildReport,
|
776
|
+
isLightGraphEnabled: true,
|
777
|
+
};
|
778
|
+
this.logBuildGraphMetrics(graphBuilderReportData);
|
779
|
+
this.applicationStore.logService.info(
|
780
|
+
LogEvent.create(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS),
|
781
|
+
graphBuilderReportData,
|
782
|
+
);
|
783
|
+
} else {
|
784
|
+
buildFullGraph = true;
|
785
|
+
}
|
786
|
+
}
|
787
|
+
} catch (error) {
|
788
|
+
buildFullGraph = true;
|
789
|
+
this.applicationStore.logService.error(
|
790
|
+
LogEvent.create(LEGEND_QUERY_APP_EVENT.GENERIC_FAILURE),
|
791
|
+
error,
|
792
|
+
);
|
793
|
+
}
|
794
|
+
}
|
795
|
+
if (
|
796
|
+
!this.enableMinialGraphForDataSpaceLoadingPerformance ||
|
797
|
+
buildFullGraph ||
|
798
|
+
!supportBuildMinimalGraph
|
799
|
+
) {
|
800
|
+
this.graphManagerState.graph = this.graphManagerState.createNewGraph();
|
801
|
+
await flowResult(this.buildFullGraph());
|
802
|
+
try {
|
803
|
+
const project = StoreProjectData.serialization.fromJson(
|
804
|
+
await this.depotServerClient.getProject(groupId, artifactId),
|
805
|
+
);
|
806
|
+
dataSpaceAnalysisResult = await DSL_DataSpace_getGraphManagerExtension(
|
807
|
+
this.graphManagerState.graphManager,
|
808
|
+
).retrieveDataSpaceAnalysisFromCache(() =>
|
809
|
+
retrieveAnalyticsResultCache(
|
810
|
+
project,
|
811
|
+
versionId,
|
812
|
+
dataSpacePath,
|
813
|
+
this.depotServerClient,
|
814
|
+
),
|
815
|
+
);
|
816
|
+
} catch {
|
817
|
+
// do nothing
|
818
|
+
}
|
819
|
+
isLightGraphEnabled = false;
|
820
|
+
}
|
821
|
+
return {
|
822
|
+
dataSpaceAnalysisResult,
|
823
|
+
isLightGraphEnabled,
|
824
|
+
};
|
825
|
+
}
|
665
826
|
}
|
666
827
|
|
667
828
|
export class QueryBuilderActionConfig_QueryApplication extends QueryBuilderActionConfig {
|
@@ -1182,6 +1343,7 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1182
1343
|
private queryId: string;
|
1183
1344
|
private _lightQuery?: LightQuery | undefined;
|
1184
1345
|
query: Query | undefined;
|
1346
|
+
queryInfo: QueryInfo | undefined;
|
1185
1347
|
urlQueryParamValues: Record<string, string> | undefined;
|
1186
1348
|
updateState: ExistingQueryUpdateState;
|
1187
1349
|
|
@@ -1195,11 +1357,13 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1195
1357
|
|
1196
1358
|
makeObservable<ExistingQueryEditorStore, '_lightQuery'>(this, {
|
1197
1359
|
query: observable,
|
1360
|
+
queryInfo: observable,
|
1198
1361
|
updateState: observable,
|
1199
1362
|
_lightQuery: observable,
|
1200
1363
|
lightQuery: computed,
|
1201
1364
|
setLightQuery: action,
|
1202
1365
|
setQuery: action,
|
1366
|
+
setQueryInfo: action,
|
1203
1367
|
isPerformingBlockingAction: override,
|
1204
1368
|
});
|
1205
1369
|
|
@@ -1246,6 +1410,10 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1246
1410
|
this.query = val;
|
1247
1411
|
}
|
1248
1412
|
|
1413
|
+
setQueryInfo(val: QueryInfo): void {
|
1414
|
+
this.queryInfo = val;
|
1415
|
+
}
|
1416
|
+
|
1249
1417
|
getProjectInfo(): ProjectGAVCoordinates {
|
1250
1418
|
return {
|
1251
1419
|
groupId: this.lightQuery.groupId,
|
@@ -1254,52 +1422,73 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1254
1422
|
};
|
1255
1423
|
}
|
1256
1424
|
|
1425
|
+
override *buildGraph(): GeneratorFn<void> {
|
1426
|
+
const queryInfo = this.queryInfo;
|
1427
|
+
const dataSpaceTaggedValue = queryInfo?.taggedValues?.find(
|
1428
|
+
(taggedValue) =>
|
1429
|
+
taggedValue.profile === QUERY_PROFILE_PATH &&
|
1430
|
+
taggedValue.tag === QUERY_PROFILE_TAG_DATA_SPACE &&
|
1431
|
+
isValidFullPath(taggedValue.value),
|
1432
|
+
);
|
1433
|
+
if (
|
1434
|
+
!(
|
1435
|
+
dataSpaceTaggedValue ||
|
1436
|
+
queryInfo?.executionContext instanceof
|
1437
|
+
QueryDataSpaceExecutionContextInfo
|
1438
|
+
)
|
1439
|
+
) {
|
1440
|
+
yield flowResult(this.buildFullGraph());
|
1441
|
+
}
|
1442
|
+
}
|
1443
|
+
|
1257
1444
|
override async setUpEditorState(): Promise<void> {
|
1445
|
+
const queryInfo = await this.graphManagerState.graphManager.getQueryInfo(
|
1446
|
+
this.queryId,
|
1447
|
+
);
|
1258
1448
|
this.setLightQuery(
|
1259
1449
|
await this.graphManagerState.graphManager.getLightQuery(this.queryId),
|
1260
1450
|
);
|
1451
|
+
this.setQueryInfo(queryInfo);
|
1452
|
+
LegendQueryUserDataHelper.addRecentlyViewedQuery(
|
1453
|
+
this.applicationStore.userDataService,
|
1454
|
+
queryInfo.id,
|
1455
|
+
);
|
1261
1456
|
}
|
1262
1457
|
|
1263
|
-
async initQueryBuildStateFromQuery(
|
1264
|
-
|
1265
|
-
|
1458
|
+
async initQueryBuildStateFromQuery(
|
1459
|
+
queryInfo: QueryInfo,
|
1460
|
+
): Promise<QueryBuilderState> {
|
1461
|
+
const exec = queryInfo.executionContext;
|
1462
|
+
if (exec instanceof QueryDataSpaceExecutionContextInfo) {
|
1463
|
+
const { dataSpaceAnalysisResult, isLightGraphEnabled } =
|
1464
|
+
await this.buildGraphAndDataspaceAnalyticsResult(
|
1465
|
+
queryInfo.groupId,
|
1466
|
+
queryInfo.artifactId,
|
1467
|
+
queryInfo.versionId,
|
1468
|
+
exec.executionKey,
|
1469
|
+
exec.dataSpacePath,
|
1470
|
+
);
|
1266
1471
|
const dataSpace = getOwnDataSpace(
|
1267
1472
|
exec.dataSpacePath,
|
1268
1473
|
this.graphManagerState.graph,
|
1269
1474
|
);
|
1475
|
+
const mapping = queryInfo.mapping
|
1476
|
+
? this.graphManagerState.graph.getMapping(queryInfo.mapping)
|
1477
|
+
: undefined;
|
1478
|
+
const runtime = queryInfo.runtime
|
1479
|
+
? this.graphManagerState.graph.getRuntime(queryInfo.runtime)
|
1480
|
+
: undefined;
|
1270
1481
|
const matchingExecutionContext = resolveExecutionContext(
|
1271
1482
|
dataSpace,
|
1272
1483
|
exec.executionKey,
|
1273
|
-
|
1274
|
-
|
1484
|
+
mapping,
|
1485
|
+
runtime,
|
1275
1486
|
);
|
1276
1487
|
if (matchingExecutionContext) {
|
1277
|
-
let dataSpaceAnalysisResult;
|
1278
|
-
try {
|
1279
|
-
const project = StoreProjectData.serialization.fromJson(
|
1280
|
-
await this.depotServerClient.getProject(
|
1281
|
-
query.groupId,
|
1282
|
-
query.artifactId,
|
1283
|
-
),
|
1284
|
-
);
|
1285
|
-
dataSpaceAnalysisResult =
|
1286
|
-
await DSL_DataSpace_getGraphManagerExtension(
|
1287
|
-
this.graphManagerState.graphManager,
|
1288
|
-
).retrieveDataSpaceAnalysisFromCache(() =>
|
1289
|
-
retrieveAnalyticsResultCache(
|
1290
|
-
project,
|
1291
|
-
query.versionId,
|
1292
|
-
dataSpace.path,
|
1293
|
-
this.depotServerClient,
|
1294
|
-
),
|
1295
|
-
);
|
1296
|
-
} catch {
|
1297
|
-
// do nothing
|
1298
|
-
}
|
1299
1488
|
const sourceInfo = {
|
1300
|
-
groupId:
|
1301
|
-
artifactId:
|
1302
|
-
versionId:
|
1489
|
+
groupId: queryInfo.groupId,
|
1490
|
+
artifactId: queryInfo.artifactId,
|
1491
|
+
versionId: queryInfo.versionId,
|
1303
1492
|
dataSpace: dataSpace.path,
|
1304
1493
|
};
|
1305
1494
|
const visitedDataSpaces =
|
@@ -1313,15 +1502,16 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1313
1502
|
new QueryBuilderActionConfig_QueryApplication(this),
|
1314
1503
|
dataSpace,
|
1315
1504
|
matchingExecutionContext,
|
1505
|
+
isLightGraphEnabled,
|
1316
1506
|
createDataSpaceDepoRepo(
|
1317
1507
|
this,
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1508
|
+
queryInfo.groupId,
|
1509
|
+
queryInfo.artifactId,
|
1510
|
+
queryInfo.versionId,
|
1321
1511
|
(dataSpaceInfo: DataSpaceInfo) =>
|
1322
1512
|
hasDataSpaceInfoBeenVisited(dataSpaceInfo, visitedDataSpaces),
|
1323
1513
|
),
|
1324
|
-
(dataSpaceInfo: DataSpaceInfo) => {
|
1514
|
+
async (dataSpaceInfo: DataSpaceInfo) => {
|
1325
1515
|
if (dataSpaceInfo.defaultExecutionContext) {
|
1326
1516
|
const proceed = (): void =>
|
1327
1517
|
this.applicationStore.navigationService.navigator.goToLocation(
|
@@ -1351,7 +1541,7 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1351
1541
|
}
|
1352
1542
|
};
|
1353
1543
|
if (
|
1354
|
-
!
|
1544
|
+
!queryInfo.isCurrentUserQuery ||
|
1355
1545
|
!this.queryBuilderState?.changeDetectionState.hasChanged
|
1356
1546
|
) {
|
1357
1547
|
proceed();
|
@@ -1415,7 +1605,7 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1415
1605
|
`Unsupported execution context ${exec.executionKey}`,
|
1416
1606
|
);
|
1417
1607
|
}
|
1418
|
-
} else if (exec instanceof
|
1608
|
+
} else if (exec instanceof QueryExplicitExecutionContextInfo) {
|
1419
1609
|
const projectInfo = this.getProjectInfo();
|
1420
1610
|
const sourceInfo = {
|
1421
1611
|
groupId: projectInfo.groupId,
|
@@ -1433,12 +1623,18 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1433
1623
|
new QueryBuilderActionConfig_QueryApplication(this),
|
1434
1624
|
);
|
1435
1625
|
classQueryBuilderState.executionContextState.setMapping(
|
1436
|
-
exec.mapping
|
1626
|
+
exec.mapping
|
1627
|
+
? this.graphManagerState.graph.getMapping(exec.mapping)
|
1628
|
+
: undefined,
|
1437
1629
|
);
|
1438
1630
|
classQueryBuilderState.executionContextState.setRuntimeValue(
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1631
|
+
exec.runtime
|
1632
|
+
? new RuntimePointer(
|
1633
|
+
PackageableElementExplicitReference.create(
|
1634
|
+
this.graphManagerState.graph.getRuntime(exec.runtime),
|
1635
|
+
),
|
1636
|
+
)
|
1637
|
+
: undefined,
|
1442
1638
|
);
|
1443
1639
|
return classQueryBuilderState;
|
1444
1640
|
}
|
@@ -1448,6 +1644,19 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1448
1644
|
async initializeQueryBuilderState(
|
1449
1645
|
stopWatch: StopWatch,
|
1450
1646
|
): Promise<QueryBuilderState> {
|
1647
|
+
// if no extension found, fall back to basic `class -> mapping -> runtime` mode
|
1648
|
+
let queryInfo = this.queryInfo;
|
1649
|
+
if (!queryInfo) {
|
1650
|
+
queryInfo = await this.graphManagerState.graphManager.getQueryInfo(
|
1651
|
+
this.queryId,
|
1652
|
+
);
|
1653
|
+
}
|
1654
|
+
const queryBuilderState =
|
1655
|
+
await this.initQueryBuildStateFromQuery(queryInfo);
|
1656
|
+
const initailizeQueryStateStopWatch = new StopWatch();
|
1657
|
+
const initailizeQueryStateReport = reportGraphAnalytics(
|
1658
|
+
this.graphManagerState.graph,
|
1659
|
+
);
|
1451
1660
|
const query = await this.graphManagerState.graphManager.getQuery(
|
1452
1661
|
this.queryId,
|
1453
1662
|
this.graphManagerState.graph,
|
@@ -1457,14 +1666,6 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1457
1666
|
this.applicationStore.userDataService,
|
1458
1667
|
query.id,
|
1459
1668
|
);
|
1460
|
-
|
1461
|
-
// if no extension found, fall back to basic `class -> mapping -> runtime` mode
|
1462
|
-
const queryBuilderState = await this.initQueryBuildStateFromQuery(query);
|
1463
|
-
|
1464
|
-
const initailizeQueryStateStopWatch = new StopWatch();
|
1465
|
-
const initailizeQueryStateReport = reportGraphAnalytics(
|
1466
|
-
this.graphManagerState.graph,
|
1467
|
-
);
|
1468
1669
|
const existingQueryLambda =
|
1469
1670
|
await this.graphManagerState.graphManager.pureCodeToLambda(query.content);
|
1470
1671
|
|
@@ -25,7 +25,6 @@ import {
|
|
25
25
|
} from '@finos/legend-graph';
|
26
26
|
import {
|
27
27
|
type DepotServerClient,
|
28
|
-
StoreProjectData,
|
29
28
|
LATEST_VERSION_ALIAS,
|
30
29
|
} from '@finos/legend-server-depot';
|
31
30
|
import {
|
@@ -48,9 +47,7 @@ import {
|
|
48
47
|
} from '@finos/legend-storage';
|
49
48
|
import {
|
50
49
|
type DataSpaceExecutionContext,
|
51
|
-
DSL_DataSpace_getGraphManagerExtension,
|
52
50
|
getDataSpace,
|
53
|
-
retrieveAnalyticsResultCache,
|
54
51
|
} from '@finos/legend-extension-dsl-data-space/graph';
|
55
52
|
import {
|
56
53
|
QueryBuilderActionConfig_QueryApplication,
|
@@ -59,17 +56,17 @@ import {
|
|
59
56
|
} from '../QueryEditorStore.js';
|
60
57
|
import type { LegendQueryApplicationStore } from '../LegendQueryBaseStore.js';
|
61
58
|
import {
|
59
|
+
type DataSpaceInfo,
|
62
60
|
DataSpaceQueryBuilderState,
|
63
61
|
createQueryClassTaggedValue,
|
64
62
|
createQueryDataSpaceTaggedValue,
|
65
|
-
type DataSpaceInfo,
|
66
63
|
} from '@finos/legend-extension-dsl-data-space/application';
|
67
64
|
import { LegendQueryUserDataHelper } from '../../__lib__/LegendQueryUserDataHelper.js';
|
68
65
|
import {
|
66
|
+
type VisitedDataspace,
|
69
67
|
createVisitedDataSpaceId,
|
70
68
|
hasDataSpaceInfoBeenVisited,
|
71
69
|
createSimpleVisitedDataspace,
|
72
|
-
type VisitedDataspace,
|
73
70
|
} from '../../__lib__/LegendQueryUserDataSpaceHelper.js';
|
74
71
|
import { LEGEND_QUERY_APP_EVENT } from '../../__lib__/LegendQueryEvent.js';
|
75
72
|
import {
|
@@ -277,6 +274,14 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore {
|
|
277
274
|
async initializeQueryBuilderStateWithQueryableDataSpace(
|
278
275
|
queryableDataSpace: QueryableDataSpace,
|
279
276
|
): Promise<QueryBuilderState> {
|
277
|
+
const { dataSpaceAnalysisResult, isLightGraphEnabled } =
|
278
|
+
await this.buildGraphAndDataspaceAnalyticsResult(
|
279
|
+
queryableDataSpace.groupId,
|
280
|
+
queryableDataSpace.artifactId,
|
281
|
+
queryableDataSpace.versionId,
|
282
|
+
queryableDataSpace.executionContext,
|
283
|
+
queryableDataSpace.dataSpacePath,
|
284
|
+
);
|
280
285
|
const dataSpace = getDataSpace(
|
281
286
|
queryableDataSpace.dataSpacePath,
|
282
287
|
this.graphManagerState.graph,
|
@@ -287,27 +292,6 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore {
|
|
287
292
|
),
|
288
293
|
`Can't find execution context '${queryableDataSpace.executionContext}'`,
|
289
294
|
);
|
290
|
-
let dataSpaceAnalysisResult;
|
291
|
-
try {
|
292
|
-
const project = StoreProjectData.serialization.fromJson(
|
293
|
-
await this.depotServerClient.getProject(
|
294
|
-
queryableDataSpace.groupId,
|
295
|
-
queryableDataSpace.artifactId,
|
296
|
-
),
|
297
|
-
);
|
298
|
-
dataSpaceAnalysisResult = await DSL_DataSpace_getGraphManagerExtension(
|
299
|
-
this.graphManagerState.graphManager,
|
300
|
-
).retrieveDataSpaceAnalysisFromCache(() =>
|
301
|
-
retrieveAnalyticsResultCache(
|
302
|
-
project,
|
303
|
-
queryableDataSpace.versionId,
|
304
|
-
dataSpace.path,
|
305
|
-
this.depotServerClient,
|
306
|
-
),
|
307
|
-
);
|
308
|
-
} catch {
|
309
|
-
// do nothing
|
310
|
-
}
|
311
295
|
const sourceInfo = {
|
312
296
|
groupId: queryableDataSpace.groupId,
|
313
297
|
artifactId: queryableDataSpace.artifactId,
|
@@ -325,6 +309,7 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore {
|
|
325
309
|
new QueryBuilderActionConfig_QueryApplication(this),
|
326
310
|
dataSpace,
|
327
311
|
executionContext,
|
312
|
+
isLightGraphEnabled,
|
328
313
|
createDataSpaceDepoRepo(
|
329
314
|
this,
|
330
315
|
queryableDataSpace.groupId,
|
@@ -333,7 +318,7 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore {
|
|
333
318
|
(dataSpaceInfo: DataSpaceInfo) =>
|
334
319
|
hasDataSpaceInfoBeenVisited(dataSpaceInfo, visitedDataSpaces),
|
335
320
|
),
|
336
|
-
(dataSpaceInfo: DataSpaceInfo) => {
|
321
|
+
async (dataSpaceInfo: DataSpaceInfo) => {
|
337
322
|
flowResult(this.changeDataSpace(dataSpaceInfo)).catch(
|
338
323
|
this.applicationStore.alertUnhandledError,
|
339
324
|
);
|
@@ -361,7 +346,7 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore {
|
|
361
346
|
);
|
362
347
|
}
|
363
348
|
queryBuilderState.setExecutionContext(executionContext);
|
364
|
-
queryBuilderState.propagateExecutionContextChange(
|
349
|
+
await queryBuilderState.propagateExecutionContextChange(true);
|
365
350
|
|
366
351
|
// set runtime if already chosen
|
367
352
|
if (queryableDataSpace.runtimePath) {
|
@@ -417,6 +402,10 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore {
|
|
417
402
|
}
|
418
403
|
}
|
419
404
|
|
405
|
+
override *buildGraph(): GeneratorFn<void> {
|
406
|
+
// do nothing
|
407
|
+
}
|
408
|
+
|
420
409
|
addVisitedDataSpace(queryableDataSpace: QueryableDataSpace): void {
|
421
410
|
try {
|
422
411
|
LegendQueryUserDataHelper.addVisitedDatspace(
|
@@ -67,6 +67,7 @@ export class DataSpaceQuerySetupState extends QueryBuilderState {
|
|
67
67
|
dataSpaces: DataSpaceInfo[] = [];
|
68
68
|
showRuntimeSelector = false;
|
69
69
|
advancedSearchState?: DataSpaceAdvancedSearchState | undefined;
|
70
|
+
isLightGraphEnabled!: boolean;
|
70
71
|
|
71
72
|
constructor(
|
72
73
|
editorStore: QueryEditorStore,
|