@finos/legend-extension-dsl-data-space 10.4.250 → 10.4.252
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/components/DataSpaceDataAccess.d.ts.map +1 -1
- package/lib/components/DataSpaceDataAccess.js +2 -1
- package/lib/components/DataSpaceDataAccess.js.map +1 -1
- package/lib/components/DataSpaceExecutionContextViewer.d.ts +8 -1
- package/lib/components/DataSpaceExecutionContextViewer.d.ts.map +1 -1
- package/lib/components/DataSpaceExecutionContextViewer.js +72 -11
- package/lib/components/DataSpaceExecutionContextViewer.js.map +1 -1
- package/lib/components/DataSpaceLegendAIIntegration.d.ts.map +1 -1
- package/lib/components/DataSpaceLegendAIIntegration.js +14 -8
- package/lib/components/DataSpaceLegendAIIntegration.js.map +1 -1
- package/lib/components/DataSpaceLegendAISchema.d.ts +1 -1
- package/lib/components/DataSpaceLegendAISchema.d.ts.map +1 -1
- package/lib/components/DataSpaceLegendAISchema.js +5 -3
- package/lib/components/DataSpaceLegendAISchema.js.map +1 -1
- package/lib/components/DataSpaceQuickStart.d.ts.map +1 -1
- package/lib/components/DataSpaceQuickStart.js +64 -34
- package/lib/components/DataSpaceQuickStart.js.map +1 -1
- package/lib/components/DataSpaceViewer.d.ts.map +1 -1
- package/lib/components/DataSpaceViewer.js +6 -4
- package/lib/components/DataSpaceViewer.js.map +1 -1
- package/lib/components/DataSpaceViewerActivityBar.d.ts.map +1 -1
- package/lib/components/DataSpaceViewerActivityBar.js +10 -5
- package/lib/components/DataSpaceViewerActivityBar.js.map +1 -1
- package/lib/components/__test-utils__/DataSpaceViewerTestUtils.d.ts +37 -0
- package/lib/components/__test-utils__/DataSpaceViewerTestUtils.d.ts.map +1 -0
- package/lib/components/__test-utils__/DataSpaceViewerTestUtils.js +103 -0
- package/lib/components/__test-utils__/DataSpaceViewerTestUtils.js.map +1 -0
- package/lib/components/query-builder/DataSpaceQueryBuilder.d.ts +1 -0
- package/lib/components/query-builder/DataSpaceQueryBuilder.d.ts.map +1 -1
- package/lib/components/query-builder/DataSpaceQueryBuilder.js +2 -1
- package/lib/components/query-builder/DataSpaceQueryBuilder.js.map +1 -1
- package/lib/components/query-builder/index.d.ts +1 -1
- package/lib/components/query-builder/index.d.ts.map +1 -1
- package/lib/components/query-builder/index.js +1 -1
- package/lib/components/query-builder/index.js.map +1 -1
- package/lib/graph-manager/action/analytics/DataSpaceAnalysis.d.ts +14 -4
- package/lib/graph-manager/action/analytics/DataSpaceAnalysis.d.ts.map +1 -1
- package/lib/graph-manager/action/analytics/DataSpaceAnalysis.js +10 -0
- package/lib/graph-manager/action/analytics/DataSpaceAnalysis.js.map +1 -1
- package/lib/graph-manager/index.d.ts +1 -1
- package/lib/graph-manager/index.d.ts.map +1 -1
- package/lib/graph-manager/index.js +1 -1
- package/lib/graph-manager/index.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.js +45 -4
- package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_SystemModels.json +2 -2
- package/lib/graph-manager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.d.ts +14 -3
- package/lib/graph-manager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.js +25 -5
- package/lib/graph-manager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +6 -1
- package/lib/stores/DataSpaceMappingProviderAccessState.d.ts +62 -0
- package/lib/stores/DataSpaceMappingProviderAccessState.d.ts.map +1 -0
- package/lib/stores/DataSpaceMappingProviderAccessState.js +105 -0
- package/lib/stores/DataSpaceMappingProviderAccessState.js.map +1 -0
- package/lib/stores/DataSpaceViewerExecutableState.d.ts +13 -2
- package/lib/stores/DataSpaceViewerExecutableState.d.ts.map +1 -1
- package/lib/stores/DataSpaceViewerExecutableState.js +36 -4
- package/lib/stores/DataSpaceViewerExecutableState.js.map +1 -1
- package/lib/stores/DataSpaceViewerState.d.ts +30 -3
- package/lib/stores/DataSpaceViewerState.d.ts.map +1 -1
- package/lib/stores/DataSpaceViewerState.js +86 -17
- package/lib/stores/DataSpaceViewerState.js.map +1 -1
- package/lib/stores/query/DataSpaceAdvancedSearchState.d.ts.map +1 -1
- package/lib/stores/query/DataSpaceAdvancedSearchState.js +8 -3
- package/lib/stores/query/DataSpaceAdvancedSearchState.js.map +1 -1
- package/lib/stores/query-builder/DataSpaceQueryBuilderState.d.ts +6 -1
- package/lib/stores/query-builder/DataSpaceQueryBuilderState.d.ts.map +1 -1
- package/lib/stores/query-builder/DataSpaceQueryBuilderState.js +33 -1
- package/lib/stores/query-builder/DataSpaceQueryBuilderState.js.map +1 -1
- package/package.json +11 -6
- package/src/components/DataSpaceDataAccess.tsx +8 -3
- package/src/components/DataSpaceExecutionContextViewer.tsx +231 -34
- package/src/components/DataSpaceLegendAIIntegration.tsx +18 -13
- package/src/components/DataSpaceLegendAISchema.ts +9 -7
- package/src/components/DataSpaceQuickStart.tsx +113 -72
- package/src/components/DataSpaceViewer.tsx +71 -59
- package/src/components/DataSpaceViewerActivityBar.tsx +10 -5
- package/src/components/__test-utils__/DataSpaceViewerTestUtils.ts +188 -0
- package/src/components/query-builder/DataSpaceQueryBuilder.tsx +11 -0
- package/src/components/query-builder/index.ts +1 -0
- package/src/graph-manager/action/analytics/DataSpaceAnalysis.ts +15 -4
- package/src/graph-manager/index.ts +1 -0
- package/src/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.ts +61 -1
- package/src/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_SystemModels.json +2 -2
- package/src/graph-manager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.ts +41 -7
- package/src/stores/DataSpaceMappingProviderAccessState.ts +200 -0
- package/src/stores/DataSpaceViewerExecutableState.ts +54 -5
- package/src/stores/DataSpaceViewerState.ts +131 -23
- package/src/stores/query/DataSpaceAdvancedSearchState.ts +10 -4
- package/src/stores/query-builder/DataSpaceQueryBuilderState.ts +51 -0
- package/tsconfig.json +2 -0
|
@@ -54,12 +54,13 @@ import {
|
|
|
54
54
|
} from '../stores/DataSpaceViewerNavigation.js';
|
|
55
55
|
import { DataAccessOverview } from '@finos/legend-query-builder';
|
|
56
56
|
import {
|
|
57
|
+
DataSpaceExecutableRelationResultState,
|
|
57
58
|
DataSpaceExecutableTDSResultState,
|
|
58
59
|
type DataSpaceViewerExecutableState,
|
|
59
60
|
type ResultColumnData,
|
|
60
61
|
} from '../stores/DataSpaceViewerExecutableState.js';
|
|
61
62
|
|
|
62
|
-
enum
|
|
63
|
+
enum EXECUTABLE_ACTION_TAB {
|
|
63
64
|
COLUMN_SPECS = 'COLUMN_SPECS',
|
|
64
65
|
QUERY = 'QUERY',
|
|
65
66
|
|
|
@@ -102,26 +103,46 @@ const TDSColumnSampleValuesCellRenderer = (
|
|
|
102
103
|
);
|
|
103
104
|
};
|
|
104
105
|
|
|
105
|
-
const
|
|
106
|
+
const TDSColumnTypeCellRenderer = (
|
|
107
|
+
params: DataGridCellRendererParams<ResultColumnData>,
|
|
108
|
+
): React.ReactNode => {
|
|
109
|
+
const data = params.data;
|
|
110
|
+
if (!data) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
return data.type?.trim() ? (
|
|
114
|
+
data.type
|
|
115
|
+
) : (
|
|
116
|
+
<div className="data-space__viewer__grid__empty-cell">No type provided</div>
|
|
117
|
+
);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
const DataSpaceExecutableResultView = observer(
|
|
106
121
|
(props: {
|
|
107
122
|
executableState: DataSpaceViewerExecutableState;
|
|
108
|
-
resultState:
|
|
123
|
+
resultState:
|
|
124
|
+
| DataSpaceExecutableTDSResultState
|
|
125
|
+
| DataSpaceExecutableRelationResultState;
|
|
109
126
|
}) => {
|
|
110
127
|
const { executableState, resultState } = props;
|
|
111
128
|
const executableAnalysisResult = executableState.value;
|
|
112
129
|
const dataSpaceViewerState = executableState.viewerState;
|
|
113
130
|
const applicationStore = useApplicationStore();
|
|
114
131
|
const [selectedTab, setSelectedTab] = useState<string>(
|
|
115
|
-
|
|
132
|
+
EXECUTABLE_ACTION_TAB.COLUMN_SPECS,
|
|
116
133
|
);
|
|
117
134
|
const queryText = executableAnalysisResult.info?.query;
|
|
118
135
|
const dataAccessState =
|
|
119
136
|
dataSpaceViewerState.quickStartState.dataAccessStateIndex.get(
|
|
120
137
|
executableAnalysisResult,
|
|
121
138
|
);
|
|
139
|
+
const isTDSResult =
|
|
140
|
+
resultState instanceof DataSpaceExecutableTDSResultState;
|
|
122
141
|
|
|
123
142
|
useEffect(() => {
|
|
124
|
-
resultState
|
|
143
|
+
if (resultState instanceof DataSpaceExecutableTDSResultState) {
|
|
144
|
+
resultState.buildSampleValues();
|
|
145
|
+
}
|
|
125
146
|
}, [resultState]);
|
|
126
147
|
|
|
127
148
|
const openServiceQuery = (): void => {
|
|
@@ -139,22 +160,23 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
139
160
|
}
|
|
140
161
|
};
|
|
141
162
|
const columnSpecifications = resultState.gridData;
|
|
142
|
-
const extractTDSExecutableActionConfigurations =
|
|
143
|
-
applicationStore.pluginManager
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
163
|
+
const extractTDSExecutableActionConfigurations = isTDSResult
|
|
164
|
+
? applicationStore.pluginManager
|
|
165
|
+
.getApplicationPlugins()
|
|
166
|
+
.flatMap(
|
|
167
|
+
(plugin) =>
|
|
168
|
+
(
|
|
169
|
+
plugin as DSL_DataSpace_LegendApplicationPlugin_Extension
|
|
170
|
+
).getExtraDataSpaceTDSExecutableActionConfigurations?.() ?? [],
|
|
171
|
+
)
|
|
172
|
+
.filter((configuration) =>
|
|
173
|
+
configuration.isSupported(
|
|
174
|
+
dataSpaceViewerState,
|
|
175
|
+
executableAnalysisResult,
|
|
176
|
+
resultState.value,
|
|
177
|
+
),
|
|
178
|
+
)
|
|
179
|
+
: [];
|
|
158
180
|
const currentTabExtensionConfig =
|
|
159
181
|
extractTDSExecutableActionConfigurations.find(
|
|
160
182
|
(config) => config.key === selectedTab,
|
|
@@ -171,13 +193,11 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
171
193
|
'data-space__viewer__quickstart__item__content__tab',
|
|
172
194
|
{
|
|
173
195
|
'data-space__viewer__quickstart__item__content__tab--active':
|
|
174
|
-
selectedTab ===
|
|
196
|
+
selectedTab === EXECUTABLE_ACTION_TAB.COLUMN_SPECS,
|
|
175
197
|
},
|
|
176
198
|
)}
|
|
177
199
|
tabIndex={-1}
|
|
178
|
-
onClick={() =>
|
|
179
|
-
setSelectedTab(TDS_EXECUTABLE_ACTION_TAB.COLUMN_SPECS)
|
|
180
|
-
}
|
|
200
|
+
onClick={() => setSelectedTab(EXECUTABLE_ACTION_TAB.COLUMN_SPECS)}
|
|
181
201
|
>
|
|
182
202
|
<div className="data-space__viewer__quickstart__item__content__tab__label">
|
|
183
203
|
Column Specifications
|
|
@@ -188,11 +208,11 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
188
208
|
'data-space__viewer__quickstart__item__content__tab',
|
|
189
209
|
{
|
|
190
210
|
'data-space__viewer__quickstart__item__content__tab--active':
|
|
191
|
-
selectedTab ===
|
|
211
|
+
selectedTab === EXECUTABLE_ACTION_TAB.QUERY,
|
|
192
212
|
},
|
|
193
213
|
)}
|
|
194
214
|
tabIndex={-1}
|
|
195
|
-
onClick={() => setSelectedTab(
|
|
215
|
+
onClick={() => setSelectedTab(EXECUTABLE_ACTION_TAB.QUERY)}
|
|
196
216
|
>
|
|
197
217
|
<div className="data-space__viewer__quickstart__item__content__tab__icon">
|
|
198
218
|
<LegendLogo className="data-space__viewer__quickstart__item__content__tab__icon--query" />
|
|
@@ -201,6 +221,26 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
201
221
|
Query
|
|
202
222
|
</div>
|
|
203
223
|
</button>
|
|
224
|
+
{queryText !== undefined && (
|
|
225
|
+
<button
|
|
226
|
+
className={clsx(
|
|
227
|
+
'data-space__viewer__quickstart__item__content__tab',
|
|
228
|
+
{
|
|
229
|
+
'data-space__viewer__quickstart__item__content__tab--active':
|
|
230
|
+
selectedTab === EXECUTABLE_ACTION_TAB.QUERY_TEXT,
|
|
231
|
+
},
|
|
232
|
+
)}
|
|
233
|
+
tabIndex={-1}
|
|
234
|
+
onClick={() => setSelectedTab(EXECUTABLE_ACTION_TAB.QUERY_TEXT)}
|
|
235
|
+
>
|
|
236
|
+
<div className="data-space__viewer__quickstart__item__content__tab__icon">
|
|
237
|
+
<CodeIcon className="data-space__viewer__quickstart__item__content__tab__icon--query" />
|
|
238
|
+
</div>
|
|
239
|
+
<div className="data-space__viewer__quickstart__item__content__tab__label">
|
|
240
|
+
Grammar
|
|
241
|
+
</div>
|
|
242
|
+
</button>
|
|
243
|
+
)}
|
|
204
244
|
{extractTDSExecutableActionConfigurations.map((config) => (
|
|
205
245
|
<button
|
|
206
246
|
key={config.key}
|
|
@@ -237,14 +277,12 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
237
277
|
'data-space__viewer__quickstart__item__content__tab',
|
|
238
278
|
{
|
|
239
279
|
'data-space__viewer__quickstart__item__content__tab--active':
|
|
240
|
-
selectedTab ===
|
|
280
|
+
selectedTab === EXECUTABLE_ACTION_TAB.DATA_ACCESS,
|
|
241
281
|
},
|
|
242
282
|
)}
|
|
243
283
|
tabIndex={-1}
|
|
244
284
|
title="Data Access"
|
|
245
|
-
onClick={() =>
|
|
246
|
-
setSelectedTab(TDS_EXECUTABLE_ACTION_TAB.DATA_ACCESS)
|
|
247
|
-
}
|
|
285
|
+
onClick={() => setSelectedTab(EXECUTABLE_ACTION_TAB.DATA_ACCESS)}
|
|
248
286
|
>
|
|
249
287
|
<div className="data-space__viewer__quickstart__item__content__tab__icon">
|
|
250
288
|
<DataAccessIcon />
|
|
@@ -258,43 +296,21 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
258
296
|
'data-space__viewer__quickstart__item__content__tab',
|
|
259
297
|
{
|
|
260
298
|
'data-space__viewer__quickstart__item__content__tab--active':
|
|
261
|
-
selectedTab ===
|
|
299
|
+
selectedTab === EXECUTABLE_ACTION_TAB.USAGE_STATS,
|
|
262
300
|
},
|
|
263
301
|
)}
|
|
264
302
|
tabIndex={-1}
|
|
265
303
|
title="Usage Statistics"
|
|
266
|
-
onClick={() =>
|
|
267
|
-
setSelectedTab(TDS_EXECUTABLE_ACTION_TAB.USAGE_STATS)
|
|
268
|
-
}
|
|
304
|
+
onClick={() => setSelectedTab(EXECUTABLE_ACTION_TAB.USAGE_STATS)}
|
|
269
305
|
>
|
|
270
306
|
<div className="data-space__viewer__quickstart__item__content__tab__icon">
|
|
271
307
|
<StatisticsIcon />
|
|
272
308
|
</div>
|
|
273
309
|
</button>
|
|
274
|
-
{queryText !== undefined && (
|
|
275
|
-
<button
|
|
276
|
-
className={clsx(
|
|
277
|
-
'data-space__viewer__quickstart__item__content__tab',
|
|
278
|
-
{
|
|
279
|
-
'data-space__viewer__quickstart__item__content__tab--active':
|
|
280
|
-
selectedTab === TDS_EXECUTABLE_ACTION_TAB.QUERY_TEXT,
|
|
281
|
-
},
|
|
282
|
-
)}
|
|
283
|
-
tabIndex={-1}
|
|
284
|
-
title="Pure Query"
|
|
285
|
-
onClick={() =>
|
|
286
|
-
setSelectedTab(TDS_EXECUTABLE_ACTION_TAB.QUERY_TEXT)
|
|
287
|
-
}
|
|
288
|
-
>
|
|
289
|
-
<div className="data-space__viewer__quickstart__item__content__tab__icon">
|
|
290
|
-
<CodeIcon className="data-space__viewer__quickstart__item__content__tab__icon--query" />
|
|
291
|
-
</div>
|
|
292
|
-
</button>
|
|
293
|
-
)}
|
|
294
310
|
</div>
|
|
295
311
|
</div>
|
|
296
312
|
<div className="data-space__viewer__quickstart__item__content__tab__content">
|
|
297
|
-
{selectedTab ===
|
|
313
|
+
{selectedTab === EXECUTABLE_ACTION_TAB.COLUMN_SPECS && (
|
|
298
314
|
<div
|
|
299
315
|
className={clsx(
|
|
300
316
|
'data-space__viewer__quickstart__tds__column-specs',
|
|
@@ -326,6 +342,14 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
326
342
|
}`,
|
|
327
343
|
flex: 1,
|
|
328
344
|
},
|
|
345
|
+
{
|
|
346
|
+
minWidth: 50,
|
|
347
|
+
sortable: false,
|
|
348
|
+
resizable: true,
|
|
349
|
+
cellRenderer: TDSColumnTypeCellRenderer,
|
|
350
|
+
headerName: 'Type',
|
|
351
|
+
flex: 1,
|
|
352
|
+
},
|
|
329
353
|
{
|
|
330
354
|
minWidth: 50,
|
|
331
355
|
sortable: false,
|
|
@@ -352,7 +376,7 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
352
376
|
/>
|
|
353
377
|
</div>
|
|
354
378
|
)}
|
|
355
|
-
{selectedTab ===
|
|
379
|
+
{selectedTab === EXECUTABLE_ACTION_TAB.QUERY && (
|
|
356
380
|
<div className="data-space__viewer__quickstart__tds__query">
|
|
357
381
|
<div className="data-space__viewer__quickstart__tds__query__actions">
|
|
358
382
|
<button
|
|
@@ -372,7 +396,7 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
372
396
|
</div>
|
|
373
397
|
</div>
|
|
374
398
|
)}
|
|
375
|
-
{selectedTab ===
|
|
399
|
+
{selectedTab === EXECUTABLE_ACTION_TAB.DATA_ACCESS &&
|
|
376
400
|
(dataAccessState ? (
|
|
377
401
|
<DataAccessOverview
|
|
378
402
|
dataAccessState={dataAccessState}
|
|
@@ -385,14 +409,14 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
385
409
|
</BlankPanelContent>
|
|
386
410
|
</div>
|
|
387
411
|
))}
|
|
388
|
-
{selectedTab ===
|
|
412
|
+
{selectedTab === EXECUTABLE_ACTION_TAB.USAGE_STATS && (
|
|
389
413
|
<div className="data-space__viewer__quickstart__tds__placeholder-panel">
|
|
390
414
|
<BlankPanelContent>
|
|
391
415
|
Usage Statistics (Work in Progress)
|
|
392
416
|
</BlankPanelContent>
|
|
393
417
|
</div>
|
|
394
418
|
)}
|
|
395
|
-
{selectedTab ===
|
|
419
|
+
{selectedTab === EXECUTABLE_ACTION_TAB.QUERY_TEXT &&
|
|
396
420
|
queryText !== undefined && (
|
|
397
421
|
<div className="data-space__viewer__quickstart__tds__query-text">
|
|
398
422
|
<div className="data-space__viewer__quickstart__tds__query-text__content">
|
|
@@ -427,11 +451,12 @@ const DataSpaceExecutableTDSResultView = observer(
|
|
|
427
451
|
</div>
|
|
428
452
|
</div>
|
|
429
453
|
)}
|
|
430
|
-
{
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
454
|
+
{resultState instanceof DataSpaceExecutableTDSResultState &&
|
|
455
|
+
currentTabExtensionConfig?.renderer(
|
|
456
|
+
dataSpaceViewerState,
|
|
457
|
+
executableAnalysisResult,
|
|
458
|
+
resultState.value,
|
|
459
|
+
)}
|
|
435
460
|
</div>
|
|
436
461
|
</div>
|
|
437
462
|
);
|
|
@@ -456,6 +481,23 @@ const DataSpaceExecutableAnalysisResultView = observer(
|
|
|
456
481
|
return () => dataSpaceViewerState.layoutState.unsetWikiPageAnchor(anchor);
|
|
457
482
|
}, [dataSpaceViewerState, anchor]);
|
|
458
483
|
|
|
484
|
+
const executableTypeLabel = ((): string => {
|
|
485
|
+
if (
|
|
486
|
+
executableState.resultState instanceof
|
|
487
|
+
DataSpaceExecutableRelationResultState
|
|
488
|
+
) {
|
|
489
|
+
return 'Relation';
|
|
490
|
+
}
|
|
491
|
+
if (
|
|
492
|
+
executableAnalysisResult.result instanceof DataSpaceExecutableTDSResult
|
|
493
|
+
) {
|
|
494
|
+
return 'TDS';
|
|
495
|
+
}
|
|
496
|
+
return (
|
|
497
|
+
executableAnalysisResult.executableReturnType?.rawType.name ?? 'UNKNOWN'
|
|
498
|
+
);
|
|
499
|
+
})();
|
|
500
|
+
|
|
459
501
|
return (
|
|
460
502
|
<div ref={quickStartRef} className="data-space__viewer__quickstart__item">
|
|
461
503
|
<div className="data-space__viewer__quickstart__item__header">
|
|
@@ -463,10 +505,7 @@ const DataSpaceExecutableAnalysisResultView = observer(
|
|
|
463
505
|
{executableAnalysisResult.title}
|
|
464
506
|
</div>
|
|
465
507
|
<div className="data-space__viewer__quickstart__item__header__type">
|
|
466
|
-
{
|
|
467
|
-
DataSpaceExecutableTDSResult
|
|
468
|
-
? 'TDS'
|
|
469
|
-
: 'UNKNOWN'}
|
|
508
|
+
{executableTypeLabel}
|
|
470
509
|
</div>
|
|
471
510
|
<button
|
|
472
511
|
className="data-space__viewer__quickstart__item__header__anchor"
|
|
@@ -483,9 +522,11 @@ const DataSpaceExecutableAnalysisResultView = observer(
|
|
|
483
522
|
/>
|
|
484
523
|
</div>
|
|
485
524
|
)}
|
|
486
|
-
{executableState.resultState instanceof
|
|
487
|
-
DataSpaceExecutableTDSResultState
|
|
488
|
-
|
|
525
|
+
{(executableState.resultState instanceof
|
|
526
|
+
DataSpaceExecutableTDSResultState ||
|
|
527
|
+
executableState.resultState instanceof
|
|
528
|
+
DataSpaceExecutableRelationResultState) && (
|
|
529
|
+
<DataSpaceExecutableResultView
|
|
489
530
|
executableState={executableState}
|
|
490
531
|
resultState={executableState.resultState}
|
|
491
532
|
/>
|
|
@@ -44,6 +44,7 @@ import { DataSpacePlaceholderPanel } from './DataSpacePlaceholder.js';
|
|
|
44
44
|
import { useApplicationStore } from '@finos/legend-application';
|
|
45
45
|
import { DataSpaceLegendAIIntegration } from './DataSpaceLegendAIIntegration.js';
|
|
46
46
|
import { DSL_DATASPACE_EVENT } from '../__lib__/DSL_DataSpace_Event.js';
|
|
47
|
+
import { guaranteeNonNullable } from '@finos/legend-shared';
|
|
47
48
|
|
|
48
49
|
const DataSpaceHeader = observer(
|
|
49
50
|
(props: {
|
|
@@ -91,51 +92,55 @@ const DataSpaceHeader = observer(
|
|
|
91
92
|
)}
|
|
92
93
|
</div>
|
|
93
94
|
<div className="data-space__viewer__header__actions">
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
context
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
95
|
+
{dataSpaceViewerState.currentExecutionContext && (
|
|
96
|
+
<ControlledDropdownMenu
|
|
97
|
+
className="data-space__viewer__header__execution-context-selector"
|
|
98
|
+
menuProps={{
|
|
99
|
+
anchorOrigin: { vertical: 'bottom', horizontal: 'center' },
|
|
100
|
+
transformOrigin: { vertical: 'top', horizontal: 'center' },
|
|
101
|
+
elevation: 7,
|
|
102
|
+
}}
|
|
103
|
+
title={`Current Execution Context: ${dataSpaceViewerState.currentExecutionContext.name}\nClick to switch`}
|
|
104
|
+
content={
|
|
105
|
+
<MenuContent>
|
|
106
|
+
{Array.from(
|
|
107
|
+
dataSpaceViewerState.dataSpaceAnalysisResult.executionContextsIndex.values(),
|
|
108
|
+
).map((context) => (
|
|
109
|
+
<MenuContentItem
|
|
110
|
+
key={context.name}
|
|
111
|
+
className={clsx(
|
|
112
|
+
'data-space__viewer__header__execution-context-selector__option',
|
|
113
|
+
{
|
|
114
|
+
'data-space__viewer__header__execution-context-selector__option--active':
|
|
115
|
+
context ===
|
|
116
|
+
dataSpaceViewerState.currentExecutionContext,
|
|
117
|
+
},
|
|
118
|
+
)}
|
|
119
|
+
onClick={() =>
|
|
120
|
+
dataSpaceViewerState.setCurrentExecutionContext(
|
|
121
|
+
context,
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
>
|
|
125
|
+
{context.name}
|
|
126
|
+
</MenuContentItem>
|
|
127
|
+
))}
|
|
128
|
+
</MenuContent>
|
|
129
|
+
}
|
|
130
|
+
>
|
|
131
|
+
<div className="data-space__viewer__header__execution-context-selector__trigger">
|
|
132
|
+
<div className="data-space__viewer__header__execution-context-selector__trigger__icon">
|
|
133
|
+
<PlayIcon />
|
|
134
|
+
</div>
|
|
135
|
+
<div className="data-space__viewer__header__execution-context-selector__trigger__label">
|
|
136
|
+
{dataSpaceViewerState.currentExecutionContext.name}
|
|
137
|
+
</div>
|
|
138
|
+
<div className="data-space__viewer__header__execution-context-selector__trigger__dropdown-icon">
|
|
139
|
+
<CaretDownIcon />
|
|
140
|
+
</div>
|
|
136
141
|
</div>
|
|
137
|
-
</
|
|
138
|
-
|
|
142
|
+
</ControlledDropdownMenu>
|
|
143
|
+
)}
|
|
139
144
|
<ControlledDropdownMenu
|
|
140
145
|
className="data-space__viewer__header__actions-selector"
|
|
141
146
|
menuProps={{
|
|
@@ -146,16 +151,22 @@ const DataSpaceHeader = observer(
|
|
|
146
151
|
title="More Actions..."
|
|
147
152
|
content={
|
|
148
153
|
<MenuContent>
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
154
|
+
{dataSpaceViewerState.currentExecutionContext && (
|
|
155
|
+
<>
|
|
156
|
+
<MenuContentItem
|
|
157
|
+
onClick={() =>
|
|
158
|
+
dataSpaceViewerState.queryDataSpace(
|
|
159
|
+
guaranteeNonNullable(
|
|
160
|
+
dataSpaceViewerState.currentExecutionContext,
|
|
161
|
+
).name,
|
|
162
|
+
)
|
|
163
|
+
}
|
|
164
|
+
>
|
|
165
|
+
Query Data Product
|
|
166
|
+
</MenuContentItem>
|
|
167
|
+
<MenuContentDivider />
|
|
168
|
+
</>
|
|
169
|
+
)}
|
|
159
170
|
<MenuContentItem
|
|
160
171
|
onClick={() =>
|
|
161
172
|
dataSpaceViewerState.viewProject(analysisResult.path)
|
|
@@ -348,11 +359,12 @@ export const DataSpaceViewer = observer(
|
|
|
348
359
|
<DataSpaceWiki dataSpaceViewerState={dataSpaceViewerState} />
|
|
349
360
|
)}
|
|
350
361
|
{dataSpaceViewerState.currentActivity ===
|
|
351
|
-
DATA_SPACE_VIEWER_ACTIVITY_MODE.EXECUTION_CONTEXT &&
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
362
|
+
DATA_SPACE_VIEWER_ACTIVITY_MODE.EXECUTION_CONTEXT &&
|
|
363
|
+
dataSpaceViewerState.currentExecutionContext && (
|
|
364
|
+
<DataSpaceExecutionContextViewer
|
|
365
|
+
dataSpaceViewerState={dataSpaceViewerState}
|
|
366
|
+
/>
|
|
367
|
+
)}
|
|
356
368
|
{dataSpaceViewerState.currentActivity ===
|
|
357
369
|
DATA_SPACE_VIEWER_ACTIVITY_MODE.DATA_STORES && (
|
|
358
370
|
<DataSpacePlaceholderPanel
|
|
@@ -136,11 +136,16 @@ export const DataSpaceViewerActivityBar = observer(
|
|
|
136
136
|
];
|
|
137
137
|
|
|
138
138
|
const activities: ActivityBarItemConfig[] = [
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
...(dataSpaceViewerState.dataSpaceAnalysisResult.executionContextsIndex
|
|
140
|
+
.size > 0
|
|
141
|
+
? [
|
|
142
|
+
{
|
|
143
|
+
mode: DATA_SPACE_VIEWER_ACTIVITY_MODE.EXECUTION_CONTEXT,
|
|
144
|
+
title: 'Execution Context',
|
|
145
|
+
icon: <PlayIcon />,
|
|
146
|
+
},
|
|
147
|
+
]
|
|
148
|
+
: []),
|
|
144
149
|
{
|
|
145
150
|
mode: DATA_SPACE_VIEWER_ACTIVITY_MODE.DATA_STORES,
|
|
146
151
|
title: 'Data Stores (Work In Progress)',
|