@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.
- 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 +3 -3
- package/lib/components/__test-utils__/QueryEditorComponentTestUtils.d.ts.map +1 -1
- package/lib/components/__test-utils__/QueryEditorComponentTestUtils.js +39 -10
- package/lib/components/__test-utils__/QueryEditorComponentTestUtils.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +3 -3
- 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 +15 -15
- 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 +72 -25
- package/src/stores/LegendQueryApplicationPlugin.tsx +6 -5
- package/src/stores/QueryEditorStore.ts +247 -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,7 @@ import {
|
|
90
94
|
StoreProjectData,
|
91
95
|
LATEST_VERSION_ALIAS,
|
92
96
|
VersionedProjectData,
|
97
|
+
retrieveProjectEntitiesWithClassifier,
|
93
98
|
} from '@finos/legend-server-depot';
|
94
99
|
import {
|
95
100
|
ActionAlertActionType,
|
@@ -119,11 +124,14 @@ import {
|
|
119
124
|
type DataSpaceInfo,
|
120
125
|
} from '@finos/legend-extension-dsl-data-space/application';
|
121
126
|
import {
|
122
|
-
DSL_DataSpace_getGraphManagerExtension,
|
123
127
|
type DataSpace,
|
124
128
|
type DataSpaceExecutionContext,
|
129
|
+
type DataSpaceAnalysisResult,
|
130
|
+
DSL_DataSpace_getGraphManagerExtension,
|
125
131
|
getOwnDataSpace,
|
132
|
+
QUERY_PROFILE_TAG_DATA_SPACE,
|
126
133
|
retrieveAnalyticsResultCache,
|
134
|
+
retrieveDataspaceArtifactsCache,
|
127
135
|
} from '@finos/legend-extension-dsl-data-space/graph';
|
128
136
|
import { generateDataSpaceQueryCreatorRoute } from '../__lib__/DSL_DataSpace_LegendQueryNavigation.js';
|
129
137
|
import { hasDataSpaceInfoBeenVisited } from '../__lib__/LegendQueryUserDataSpaceHelper.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,140 @@ 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
|
+
retrieveProjectEntitiesWithClassifier(
|
728
|
+
project,
|
729
|
+
versionId,
|
730
|
+
CORE_PURE_PATH.FUNCTION,
|
731
|
+
this.depotServerClient,
|
732
|
+
),
|
733
|
+
() =>
|
734
|
+
retrieveDataspaceArtifactsCache(
|
735
|
+
project,
|
736
|
+
versionId,
|
737
|
+
this.depotServerClient,
|
738
|
+
),
|
739
|
+
undefined,
|
740
|
+
graph_buildReport,
|
741
|
+
this.graphManagerState.graph,
|
742
|
+
executionContext,
|
743
|
+
undefined,
|
744
|
+
this.getProjectInfo(),
|
745
|
+
templateQueryId,
|
746
|
+
);
|
747
|
+
const mappingPath = executionContext
|
748
|
+
? dataSpaceAnalysisResult.executionContextsIndex.get(executionContext)
|
749
|
+
?.mapping.path
|
750
|
+
: undefined;
|
751
|
+
if (mappingPath) {
|
752
|
+
const pmcd =
|
753
|
+
dataSpaceAnalysisResult.mappingToMappingCoverageResult?.get(
|
754
|
+
mappingPath,
|
755
|
+
)?.entities;
|
756
|
+
if (pmcd) {
|
757
|
+
// report
|
758
|
+
stopWatch.record(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS);
|
759
|
+
const graphBuilderReportData = {
|
760
|
+
timings:
|
761
|
+
this.applicationStore.timeService.finalizeTimingsRecord(
|
762
|
+
stopWatch,
|
763
|
+
),
|
764
|
+
dependencies: dependency_buildReport,
|
765
|
+
dependenciesCount:
|
766
|
+
this.graphManagerState.graph.dependencyManager
|
767
|
+
.numberOfDependencies,
|
768
|
+
graph: graph_buildReport,
|
769
|
+
isLightGraphEnabled: true,
|
770
|
+
};
|
771
|
+
this.logBuildGraphMetrics(graphBuilderReportData);
|
772
|
+
this.applicationStore.logService.info(
|
773
|
+
LogEvent.create(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS),
|
774
|
+
graphBuilderReportData,
|
775
|
+
);
|
776
|
+
} else {
|
777
|
+
buildFullGraph = true;
|
778
|
+
}
|
779
|
+
}
|
780
|
+
} catch (error) {
|
781
|
+
buildFullGraph = true;
|
782
|
+
this.applicationStore.logService.error(
|
783
|
+
LogEvent.create(LEGEND_QUERY_APP_EVENT.GENERIC_FAILURE),
|
784
|
+
error,
|
785
|
+
);
|
786
|
+
}
|
787
|
+
}
|
788
|
+
if (
|
789
|
+
!this.enableMinialGraphForDataSpaceLoadingPerformance ||
|
790
|
+
buildFullGraph ||
|
791
|
+
!supportBuildMinimalGraph
|
792
|
+
) {
|
793
|
+
this.graphManagerState.graph = this.graphManagerState.createNewGraph();
|
794
|
+
await flowResult(this.buildFullGraph());
|
795
|
+
try {
|
796
|
+
const project = StoreProjectData.serialization.fromJson(
|
797
|
+
await this.depotServerClient.getProject(groupId, artifactId),
|
798
|
+
);
|
799
|
+
dataSpaceAnalysisResult = await DSL_DataSpace_getGraphManagerExtension(
|
800
|
+
this.graphManagerState.graphManager,
|
801
|
+
).retrieveDataSpaceAnalysisFromCache(() =>
|
802
|
+
retrieveAnalyticsResultCache(
|
803
|
+
project,
|
804
|
+
versionId,
|
805
|
+
dataSpacePath,
|
806
|
+
this.depotServerClient,
|
807
|
+
),
|
808
|
+
);
|
809
|
+
} catch {
|
810
|
+
// do nothing
|
811
|
+
}
|
812
|
+
isLightGraphEnabled = false;
|
813
|
+
}
|
814
|
+
return {
|
815
|
+
dataSpaceAnalysisResult,
|
816
|
+
isLightGraphEnabled,
|
817
|
+
};
|
818
|
+
}
|
665
819
|
}
|
666
820
|
|
667
821
|
export class QueryBuilderActionConfig_QueryApplication extends QueryBuilderActionConfig {
|
@@ -1182,6 +1336,7 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1182
1336
|
private queryId: string;
|
1183
1337
|
private _lightQuery?: LightQuery | undefined;
|
1184
1338
|
query: Query | undefined;
|
1339
|
+
queryInfo: QueryInfo | undefined;
|
1185
1340
|
urlQueryParamValues: Record<string, string> | undefined;
|
1186
1341
|
updateState: ExistingQueryUpdateState;
|
1187
1342
|
|
@@ -1195,11 +1350,13 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1195
1350
|
|
1196
1351
|
makeObservable<ExistingQueryEditorStore, '_lightQuery'>(this, {
|
1197
1352
|
query: observable,
|
1353
|
+
queryInfo: observable,
|
1198
1354
|
updateState: observable,
|
1199
1355
|
_lightQuery: observable,
|
1200
1356
|
lightQuery: computed,
|
1201
1357
|
setLightQuery: action,
|
1202
1358
|
setQuery: action,
|
1359
|
+
setQueryInfo: action,
|
1203
1360
|
isPerformingBlockingAction: override,
|
1204
1361
|
});
|
1205
1362
|
|
@@ -1246,6 +1403,10 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1246
1403
|
this.query = val;
|
1247
1404
|
}
|
1248
1405
|
|
1406
|
+
setQueryInfo(val: QueryInfo): void {
|
1407
|
+
this.queryInfo = val;
|
1408
|
+
}
|
1409
|
+
|
1249
1410
|
getProjectInfo(): ProjectGAVCoordinates {
|
1250
1411
|
return {
|
1251
1412
|
groupId: this.lightQuery.groupId,
|
@@ -1254,52 +1415,73 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1254
1415
|
};
|
1255
1416
|
}
|
1256
1417
|
|
1418
|
+
override *buildGraph(): GeneratorFn<void> {
|
1419
|
+
const queryInfo = this.queryInfo;
|
1420
|
+
const dataSpaceTaggedValue = queryInfo?.taggedValues?.find(
|
1421
|
+
(taggedValue) =>
|
1422
|
+
taggedValue.profile === QUERY_PROFILE_PATH &&
|
1423
|
+
taggedValue.tag === QUERY_PROFILE_TAG_DATA_SPACE &&
|
1424
|
+
isValidFullPath(taggedValue.value),
|
1425
|
+
);
|
1426
|
+
if (
|
1427
|
+
!(
|
1428
|
+
dataSpaceTaggedValue !== undefined ||
|
1429
|
+
queryInfo?.executionContext instanceof
|
1430
|
+
QueryDataSpaceExecutionContextInfo
|
1431
|
+
)
|
1432
|
+
) {
|
1433
|
+
yield flowResult(this.buildFullGraph());
|
1434
|
+
}
|
1435
|
+
}
|
1436
|
+
|
1257
1437
|
override async setUpEditorState(): Promise<void> {
|
1438
|
+
const queryInfo = await this.graphManagerState.graphManager.getQueryInfo(
|
1439
|
+
this.queryId,
|
1440
|
+
);
|
1258
1441
|
this.setLightQuery(
|
1259
1442
|
await this.graphManagerState.graphManager.getLightQuery(this.queryId),
|
1260
1443
|
);
|
1444
|
+
this.setQueryInfo(queryInfo);
|
1445
|
+
LegendQueryUserDataHelper.addRecentlyViewedQuery(
|
1446
|
+
this.applicationStore.userDataService,
|
1447
|
+
queryInfo.id,
|
1448
|
+
);
|
1261
1449
|
}
|
1262
1450
|
|
1263
|
-
async initQueryBuildStateFromQuery(
|
1264
|
-
|
1265
|
-
|
1451
|
+
async initQueryBuildStateFromQuery(
|
1452
|
+
queryInfo: QueryInfo,
|
1453
|
+
): Promise<QueryBuilderState> {
|
1454
|
+
const exec = queryInfo.executionContext;
|
1455
|
+
if (exec instanceof QueryDataSpaceExecutionContextInfo) {
|
1456
|
+
const { dataSpaceAnalysisResult, isLightGraphEnabled } =
|
1457
|
+
await this.buildGraphAndDataspaceAnalyticsResult(
|
1458
|
+
queryInfo.groupId,
|
1459
|
+
queryInfo.artifactId,
|
1460
|
+
queryInfo.versionId,
|
1461
|
+
exec.executionKey,
|
1462
|
+
exec.dataSpacePath,
|
1463
|
+
);
|
1266
1464
|
const dataSpace = getOwnDataSpace(
|
1267
1465
|
exec.dataSpacePath,
|
1268
1466
|
this.graphManagerState.graph,
|
1269
1467
|
);
|
1468
|
+
const mapping = queryInfo.mapping
|
1469
|
+
? this.graphManagerState.graph.getMapping(queryInfo.mapping)
|
1470
|
+
: undefined;
|
1471
|
+
const runtime = queryInfo.runtime
|
1472
|
+
? this.graphManagerState.graph.getRuntime(queryInfo.runtime)
|
1473
|
+
: undefined;
|
1270
1474
|
const matchingExecutionContext = resolveExecutionContext(
|
1271
1475
|
dataSpace,
|
1272
1476
|
exec.executionKey,
|
1273
|
-
|
1274
|
-
|
1477
|
+
mapping,
|
1478
|
+
runtime,
|
1275
1479
|
);
|
1276
1480
|
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
1481
|
const sourceInfo = {
|
1300
|
-
groupId:
|
1301
|
-
artifactId:
|
1302
|
-
versionId:
|
1482
|
+
groupId: queryInfo.groupId,
|
1483
|
+
artifactId: queryInfo.artifactId,
|
1484
|
+
versionId: queryInfo.versionId,
|
1303
1485
|
dataSpace: dataSpace.path,
|
1304
1486
|
};
|
1305
1487
|
const visitedDataSpaces =
|
@@ -1313,15 +1495,16 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1313
1495
|
new QueryBuilderActionConfig_QueryApplication(this),
|
1314
1496
|
dataSpace,
|
1315
1497
|
matchingExecutionContext,
|
1498
|
+
isLightGraphEnabled,
|
1316
1499
|
createDataSpaceDepoRepo(
|
1317
1500
|
this,
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1501
|
+
queryInfo.groupId,
|
1502
|
+
queryInfo.artifactId,
|
1503
|
+
queryInfo.versionId,
|
1321
1504
|
(dataSpaceInfo: DataSpaceInfo) =>
|
1322
1505
|
hasDataSpaceInfoBeenVisited(dataSpaceInfo, visitedDataSpaces),
|
1323
1506
|
),
|
1324
|
-
(dataSpaceInfo: DataSpaceInfo) => {
|
1507
|
+
async (dataSpaceInfo: DataSpaceInfo) => {
|
1325
1508
|
if (dataSpaceInfo.defaultExecutionContext) {
|
1326
1509
|
const proceed = (): void =>
|
1327
1510
|
this.applicationStore.navigationService.navigator.goToLocation(
|
@@ -1351,7 +1534,7 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1351
1534
|
}
|
1352
1535
|
};
|
1353
1536
|
if (
|
1354
|
-
!
|
1537
|
+
!queryInfo.isCurrentUserQuery ||
|
1355
1538
|
!this.queryBuilderState?.changeDetectionState.hasChanged
|
1356
1539
|
) {
|
1357
1540
|
proceed();
|
@@ -1415,7 +1598,7 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1415
1598
|
`Unsupported execution context ${exec.executionKey}`,
|
1416
1599
|
);
|
1417
1600
|
}
|
1418
|
-
} else if (exec instanceof
|
1601
|
+
} else if (exec instanceof QueryExplicitExecutionContextInfo) {
|
1419
1602
|
const projectInfo = this.getProjectInfo();
|
1420
1603
|
const sourceInfo = {
|
1421
1604
|
groupId: projectInfo.groupId,
|
@@ -1433,12 +1616,18 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1433
1616
|
new QueryBuilderActionConfig_QueryApplication(this),
|
1434
1617
|
);
|
1435
1618
|
classQueryBuilderState.executionContextState.setMapping(
|
1436
|
-
exec.mapping
|
1619
|
+
exec.mapping
|
1620
|
+
? this.graphManagerState.graph.getMapping(exec.mapping)
|
1621
|
+
: undefined,
|
1437
1622
|
);
|
1438
1623
|
classQueryBuilderState.executionContextState.setRuntimeValue(
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1624
|
+
exec.runtime
|
1625
|
+
? new RuntimePointer(
|
1626
|
+
PackageableElementExplicitReference.create(
|
1627
|
+
this.graphManagerState.graph.getRuntime(exec.runtime),
|
1628
|
+
),
|
1629
|
+
)
|
1630
|
+
: undefined,
|
1442
1631
|
);
|
1443
1632
|
return classQueryBuilderState;
|
1444
1633
|
}
|
@@ -1448,6 +1637,19 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1448
1637
|
async initializeQueryBuilderState(
|
1449
1638
|
stopWatch: StopWatch,
|
1450
1639
|
): Promise<QueryBuilderState> {
|
1640
|
+
// if no extension found, fall back to basic `class -> mapping -> runtime` mode
|
1641
|
+
let queryInfo = this.queryInfo;
|
1642
|
+
if (!queryInfo) {
|
1643
|
+
queryInfo = await this.graphManagerState.graphManager.getQueryInfo(
|
1644
|
+
this.queryId,
|
1645
|
+
);
|
1646
|
+
}
|
1647
|
+
const queryBuilderState =
|
1648
|
+
await this.initQueryBuildStateFromQuery(queryInfo);
|
1649
|
+
const initailizeQueryStateStopWatch = new StopWatch();
|
1650
|
+
const initailizeQueryStateReport = reportGraphAnalytics(
|
1651
|
+
this.graphManagerState.graph,
|
1652
|
+
);
|
1451
1653
|
const query = await this.graphManagerState.graphManager.getQuery(
|
1452
1654
|
this.queryId,
|
1453
1655
|
this.graphManagerState.graph,
|
@@ -1457,14 +1659,6 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
|
|
1457
1659
|
this.applicationStore.userDataService,
|
1458
1660
|
query.id,
|
1459
1661
|
);
|
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
1662
|
const existingQueryLambda =
|
1469
1663
|
await this.graphManagerState.graphManager.pureCodeToLambda(query.content);
|
1470
1664
|
|
@@ -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,
|