@finos/legend-application-studio 26.1.9 → 26.1.11

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 (153) hide show
  1. package/lib/application/LegendStudioApplicationConfig.d.ts +4 -0
  2. package/lib/application/LegendStudioApplicationConfig.d.ts.map +1 -1
  3. package/lib/application/LegendStudioApplicationConfig.js +4 -0
  4. package/lib/application/LegendStudioApplicationConfig.js.map +1 -1
  5. package/lib/components/editor/QuickInput.d.ts.map +1 -1
  6. package/lib/components/editor/QuickInput.js +4 -2
  7. package/lib/components/editor/QuickInput.js.map +1 -1
  8. package/lib/components/editor/StatusBar.d.ts.map +1 -1
  9. package/lib/components/editor/StatusBar.js +1 -4
  10. package/lib/components/editor/StatusBar.js.map +1 -1
  11. package/lib/components/editor/editor-group/{FileGenerationViewer.d.ts → ArtifactGenerationViewer.d.ts} +2 -2
  12. package/lib/components/editor/editor-group/ArtifactGenerationViewer.d.ts.map +1 -0
  13. package/lib/components/editor/editor-group/ArtifactGenerationViewer.js +32 -0
  14. package/lib/components/editor/editor-group/ArtifactGenerationViewer.js.map +1 -0
  15. package/lib/components/editor/editor-group/EditorGroup.js +6 -6
  16. package/lib/components/editor/editor-group/EditorGroup.js.map +1 -1
  17. package/lib/components/editor/editor-group/FunctionEditor.d.ts.map +1 -1
  18. package/lib/components/editor/editor-group/FunctionEditor.js +13 -6
  19. package/lib/components/editor/editor-group/FunctionEditor.js.map +1 -1
  20. package/lib/components/editor/editor-group/data-editor/DataElementEditor.d.ts.map +1 -1
  21. package/lib/components/editor/editor-group/data-editor/DataElementEditor.js +1 -1
  22. package/lib/components/editor/editor-group/data-editor/DataElementEditor.js.map +1 -1
  23. package/lib/components/editor/editor-group/data-editor/EmbeddedDataEditor.d.ts.map +1 -1
  24. package/lib/components/editor/editor-group/data-editor/EmbeddedDataEditor.js +1 -1
  25. package/lib/components/editor/editor-group/data-editor/EmbeddedDataEditor.js.map +1 -1
  26. package/lib/components/editor/editor-group/data-editor/RelationalCSVDataEditor.d.ts.map +1 -1
  27. package/lib/components/editor/editor-group/data-editor/RelationalCSVDataEditor.js +1 -1
  28. package/lib/components/editor/editor-group/data-editor/RelationalCSVDataEditor.js.map +1 -1
  29. package/lib/components/editor/editor-group/element-generation-editor/FileGenerationEditor.js +1 -1
  30. package/lib/components/editor/editor-group/element-generation-editor/FileGenerationEditor.js.map +1 -1
  31. package/lib/components/editor/editor-group/element-generation-editor/FileSystemViewer.d.ts.map +1 -1
  32. package/lib/components/editor/editor-group/element-generation-editor/FileSystemViewer.js +1 -1
  33. package/lib/components/editor/editor-group/element-generation-editor/FileSystemViewer.js.map +1 -1
  34. package/lib/components/editor/editor-group/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.js +1 -1
  35. package/lib/components/editor/editor-group/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.js.map +1 -1
  36. package/lib/components/editor/editor-group/mapping-editor/DEPRECATED__MappingTestEditor.d.ts.map +1 -1
  37. package/lib/components/editor/editor-group/mapping-editor/DEPRECATED__MappingTestEditor.js +6 -10
  38. package/lib/components/editor/editor-group/mapping-editor/DEPRECATED__MappingTestEditor.js.map +1 -1
  39. package/lib/components/editor/editor-group/mapping-editor/InstanceSetImplementationEditor.js +1 -1
  40. package/lib/components/editor/editor-group/mapping-editor/InstanceSetImplementationEditor.js.map +1 -1
  41. package/lib/components/editor/editor-group/mapping-editor/MappingExecutionBuilder.d.ts.map +1 -1
  42. package/lib/components/editor/editor-group/mapping-editor/MappingExecutionBuilder.js +13 -12
  43. package/lib/components/editor/editor-group/mapping-editor/MappingExecutionBuilder.js.map +1 -1
  44. package/lib/components/editor/editor-group/mapping-editor/MappingExplorer.js +2 -2
  45. package/lib/components/editor/editor-group/mapping-editor/MappingExplorer.js.map +1 -1
  46. package/lib/components/editor/editor-group/mapping-editor/MappingTestableEditor.d.ts.map +1 -1
  47. package/lib/components/editor/editor-group/mapping-editor/MappingTestableEditor.js +3 -7
  48. package/lib/components/editor/editor-group/mapping-editor/MappingTestableEditor.js.map +1 -1
  49. package/lib/components/editor/editor-group/service-editor/ServiceExecutionQueryEditor.d.ts.map +1 -1
  50. package/lib/components/editor/editor-group/service-editor/ServiceExecutionQueryEditor.js +10 -14
  51. package/lib/components/editor/editor-group/service-editor/ServiceExecutionQueryEditor.js.map +1 -1
  52. package/lib/components/editor/panel-group/DevToolPanel.d.ts.map +1 -1
  53. package/lib/components/editor/panel-group/DevToolPanel.js +4 -1
  54. package/lib/components/editor/panel-group/DevToolPanel.js.map +1 -1
  55. package/lib/components/editor/panel-group/SQLPlaygroundPanel.d.ts.map +1 -1
  56. package/lib/components/editor/panel-group/SQLPlaygroundPanel.js +1 -1
  57. package/lib/components/editor/panel-group/SQLPlaygroundPanel.js.map +1 -1
  58. package/lib/components/editor/side-bar/CreateNewElementModal.d.ts.map +1 -1
  59. package/lib/components/editor/side-bar/CreateNewElementModal.js +1 -1
  60. package/lib/components/editor/side-bar/CreateNewElementModal.js.map +1 -1
  61. package/lib/components/editor/side-bar/Explorer.d.ts.map +1 -1
  62. package/lib/components/editor/side-bar/Explorer.js +37 -5
  63. package/lib/components/editor/side-bar/Explorer.js.map +1 -1
  64. package/lib/index.css +2 -2
  65. package/lib/index.css.map +1 -1
  66. package/lib/package.json +4 -4
  67. package/lib/stores/editor/EditorGraphState.d.ts.map +1 -1
  68. package/lib/stores/editor/EditorGraphState.js +7 -6
  69. package/lib/stores/editor/EditorGraphState.js.map +1 -1
  70. package/lib/stores/editor/EditorStore.d.ts.map +1 -1
  71. package/lib/stores/editor/EditorStore.js +4 -2
  72. package/lib/stores/editor/EditorStore.js.map +1 -1
  73. package/lib/stores/editor/ExplorerTreeState.d.ts +3 -3
  74. package/lib/stores/editor/ExplorerTreeState.d.ts.map +1 -1
  75. package/lib/stores/editor/ExplorerTreeState.js +10 -10
  76. package/lib/stores/editor/ExplorerTreeState.js.map +1 -1
  77. package/lib/stores/editor/NewElementState.d.ts +3 -3
  78. package/lib/stores/editor/NewElementState.d.ts.map +1 -1
  79. package/lib/stores/editor/NewElementState.js +2 -2
  80. package/lib/stores/editor/NewElementState.js.map +1 -1
  81. package/lib/stores/editor/QuickInputState.d.ts +3 -0
  82. package/lib/stores/editor/QuickInputState.d.ts.map +1 -1
  83. package/lib/stores/editor/editor-state/{FileGenerationViewerState.d.ts → ArtifactGenerationViewerState.d.ts} +4 -4
  84. package/lib/stores/editor/editor-state/ArtifactGenerationViewerState.d.ts.map +1 -0
  85. package/lib/stores/editor/editor-state/{FileGenerationViewerState.js → ArtifactGenerationViewerState.js} +10 -9
  86. package/lib/stores/editor/editor-state/ArtifactGenerationViewerState.js.map +1 -0
  87. package/lib/stores/editor/editor-state/FileGenerationState.js +1 -1
  88. package/lib/stores/editor/editor-state/FileGenerationState.js.map +1 -1
  89. package/lib/stores/editor/editor-state/GraphGenerationState.d.ts +32 -19
  90. package/lib/stores/editor/editor-state/GraphGenerationState.d.ts.map +1 -1
  91. package/lib/stores/editor/editor-state/GraphGenerationState.js +173 -113
  92. package/lib/stores/editor/editor-state/GraphGenerationState.js.map +1 -1
  93. package/lib/stores/editor/editor-state/element-editor-state/ElementEditorState.js +1 -1
  94. package/lib/stores/editor/editor-state/element-editor-state/ElementEditorState.js.map +1 -1
  95. package/lib/stores/editor/editor-state/element-editor-state/FunctionEditorState.d.ts +1 -0
  96. package/lib/stores/editor/editor-state/element-editor-state/FunctionEditorState.d.ts.map +1 -1
  97. package/lib/stores/editor/editor-state/element-editor-state/FunctionEditorState.js +14 -7
  98. package/lib/stores/editor/editor-state/element-editor-state/FunctionEditorState.js.map +1 -1
  99. package/lib/stores/editor/editor-state/element-editor-state/mapping/DEPRECATED__MappingTestState.d.ts +2 -2
  100. package/lib/stores/editor/editor-state/element-editor-state/mapping/DEPRECATED__MappingTestState.d.ts.map +1 -1
  101. package/lib/stores/editor/editor-state/element-editor-state/mapping/DEPRECATED__MappingTestState.js +48 -48
  102. package/lib/stores/editor/editor-state/element-editor-state/mapping/DEPRECATED__MappingTestState.js.map +1 -1
  103. package/lib/stores/editor/editor-state/element-editor-state/mapping/MappingExecutionState.d.ts +4 -1
  104. package/lib/stores/editor/editor-state/element-editor-state/mapping/MappingExecutionState.d.ts.map +1 -1
  105. package/lib/stores/editor/editor-state/element-editor-state/mapping/MappingExecutionState.js +37 -12
  106. package/lib/stores/editor/editor-state/element-editor-state/mapping/MappingExecutionState.js.map +1 -1
  107. package/lib/stores/editor/editor-state/element-editor-state/service/ServiceExecutionState.js +2 -2
  108. package/lib/stores/editor/editor-state/element-editor-state/service/ServiceExecutionState.js.map +1 -1
  109. package/lib/stores/project-view/ProjectViewerStore.js +1 -1
  110. package/lib/stores/project-view/ProjectViewerStore.js.map +1 -1
  111. package/package.json +14 -14
  112. package/src/application/LegendStudioApplicationConfig.ts +5 -0
  113. package/src/components/editor/QuickInput.tsx +5 -1
  114. package/src/components/editor/StatusBar.tsx +1 -4
  115. package/src/components/editor/editor-group/{FileGenerationViewer.tsx → ArtifactGenerationViewer.tsx} +28 -25
  116. package/src/components/editor/editor-group/EditorGroup.tsx +6 -6
  117. package/src/components/editor/editor-group/FunctionEditor.tsx +67 -55
  118. package/src/components/editor/editor-group/data-editor/DataElementEditor.tsx +1 -1
  119. package/src/components/editor/editor-group/data-editor/EmbeddedDataEditor.tsx +1 -1
  120. package/src/components/editor/editor-group/data-editor/RelationalCSVDataEditor.tsx +1 -0
  121. package/src/components/editor/editor-group/element-generation-editor/FileGenerationEditor.tsx +1 -1
  122. package/src/components/editor/editor-group/element-generation-editor/FileSystemViewer.tsx +4 -4
  123. package/src/components/editor/editor-group/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.tsx +1 -1
  124. package/src/components/editor/editor-group/mapping-editor/DEPRECATED__MappingTestEditor.tsx +63 -69
  125. package/src/components/editor/editor-group/mapping-editor/InstanceSetImplementationEditor.tsx +1 -1
  126. package/src/components/editor/editor-group/mapping-editor/MappingExecutionBuilder.tsx +69 -48
  127. package/src/components/editor/editor-group/mapping-editor/MappingExplorer.tsx +2 -2
  128. package/src/components/editor/editor-group/mapping-editor/MappingTestableEditor.tsx +8 -12
  129. package/src/components/editor/editor-group/service-editor/ServiceExecutionQueryEditor.tsx +91 -99
  130. package/src/components/editor/panel-group/DevToolPanel.tsx +14 -0
  131. package/src/components/editor/panel-group/SQLPlaygroundPanel.tsx +3 -0
  132. package/src/components/editor/side-bar/CreateNewElementModal.tsx +3 -5
  133. package/src/components/editor/side-bar/Explorer.tsx +84 -2
  134. package/src/stores/editor/EditorGraphState.ts +7 -6
  135. package/src/stores/editor/EditorStore.ts +5 -2
  136. package/src/stores/editor/ExplorerTreeState.ts +10 -10
  137. package/src/stores/editor/NewElementState.ts +5 -5
  138. package/src/stores/editor/QuickInputState.ts +3 -0
  139. package/src/stores/editor/editor-state/{FileGenerationViewerState.ts → ArtifactGenerationViewerState.ts} +12 -9
  140. package/src/stores/editor/editor-state/FileGenerationState.ts +1 -1
  141. package/src/stores/editor/editor-state/GraphGenerationState.ts +258 -170
  142. package/src/stores/editor/editor-state/element-editor-state/ElementEditorState.ts +1 -1
  143. package/src/stores/editor/editor-state/element-editor-state/FunctionEditorState.ts +18 -8
  144. package/src/stores/editor/editor-state/element-editor-state/mapping/DEPRECATED__MappingTestState.ts +70 -69
  145. package/src/stores/editor/editor-state/element-editor-state/mapping/MappingExecutionState.ts +62 -36
  146. package/src/stores/editor/editor-state/element-editor-state/service/ServiceExecutionState.ts +5 -5
  147. package/src/stores/project-view/ProjectViewerStore.ts +1 -1
  148. package/tsconfig.json +2 -2
  149. package/lib/components/editor/editor-group/FileGenerationViewer.d.ts.map +0 -1
  150. package/lib/components/editor/editor-group/FileGenerationViewer.js +0 -32
  151. package/lib/components/editor/editor-group/FileGenerationViewer.js.map +0 -1
  152. package/lib/stores/editor/editor-state/FileGenerationViewerState.d.ts.map +0 -1
  153. package/lib/stores/editor/editor-state/FileGenerationViewerState.js.map +0 -1
@@ -31,7 +31,6 @@ import {
31
31
  ModalBody,
32
32
  ModalFooter,
33
33
  ModalHeader,
34
- MoreVerticalIcon,
35
34
  } from '@finos/legend-art';
36
35
  import { assertErrorThrown } from '@finos/legend-shared';
37
36
  import { flowResult } from 'mobx';
@@ -287,24 +286,24 @@ export const ServiceExecutionQueryEditor = observer(
287
286
  </div>
288
287
  </div>
289
288
  <div className="panel__header__actions">
290
- <div className="service-editor__execution__action-btn">
289
+ <div className="btn__dropdown-combo btn__dropdown-combo--primary">
291
290
  <button
292
- className="service-editor__execution__action-btn__label service-editor__execution__action-btn__label--primary"
291
+ className="btn__dropdown-combo__label"
293
292
  onClick={editWithQueryBuilder()}
294
293
  title="Edit Query"
295
294
  tabIndex={-1}
296
295
  >
297
- <PencilIcon className="service-editor__execution__action-btn__label__icon" />
298
- <div className="service-editor__execution__action-btn__label__title">
296
+ <PencilIcon className="btn__dropdown-combo__label__icon" />
297
+ <div className="btn__dropdown-combo__label__title">
299
298
  Edit Query
300
299
  </div>
301
300
  </button>
302
301
  <DropdownMenu
303
- className="service-editor__execution__action-btn__dropdown-btn service-editor__execution__action-btn__dropdown-btn--primary"
302
+ className="btn__dropdown-combo__dropdown-btn"
304
303
  content={
305
304
  <MenuContent>
306
305
  <MenuContentItem
307
- className="service-editor__execution__action-btn__option"
306
+ className="btn__dropdown-combo__option"
308
307
  onClick={editWithQueryBuilder(true)}
309
308
  >
310
309
  Text Mode
@@ -319,96 +318,97 @@ export const ServiceExecutionQueryEditor = observer(
319
318
  <CaretDownIcon />
320
319
  </DropdownMenu>
321
320
  </div>
322
- {executionState.isRunningQuery ? (
323
- <button
324
- className="service-editor__execution__stop-btn"
325
- onClick={cancelQuery}
326
- tabIndex={-1}
327
- >
328
- <div className="btn--dark btn--caution service-editor__execution__stop-btn__label">
329
- <PauseCircleIcon className="service-editor__execution__stop-btn__label__icon" />
330
- <div className="service-editor__execution__stop-btn__label__title">
331
- Stop
332
- </div>
333
- </div>
334
- </button>
335
- ) : (
336
- <div className="service-editor__execution__action-btn">
321
+ <div className="btn__dropdown-combo btn__dropdown-combo--primary">
322
+ {executionState.isRunningQuery ? (
337
323
  <button
338
- className="service-editor__execution__action-btn__label"
339
- onClick={runQuery}
340
- title="Run Query"
341
- disabled={executionIsRunning}
324
+ className="btn__dropdown-combo__canceler"
325
+ onClick={cancelQuery}
342
326
  tabIndex={-1}
343
327
  >
344
- <PlayIcon className="service-editor__execution__action-btn__label__icon" />
345
- <div className="service-editor__execution__action-btn__label__title">
346
- Run Query
328
+ <div className="btn--dark btn--caution btn__dropdown-combo__canceler__label">
329
+ <PauseCircleIcon className="btn__dropdown-combo__canceler__label__icon" />
330
+ <div className="btn__dropdown-combo__canceler__label__title">
331
+ Stop
332
+ </div>
347
333
  </div>
348
334
  </button>
349
- <DropdownMenu
350
- className="service-editor__execution__action-btn__dropdown-btn"
351
- disabled={executionIsRunning}
352
- content={
353
- <MenuContent>
354
- <MenuContentItem
355
- className="service-editor__execution__action-btn__option"
356
- onClick={generatePlan}
357
- >
358
- Generate Plan
359
- </MenuContentItem>
360
- <MenuContentItem
361
- className="service-editor__execution__action-btn__option"
362
- onClick={debugPlanGeneration}
363
- >
364
- Debug
365
- </MenuContentItem>
366
- </MenuContent>
367
- }
368
- menuProps={{
369
- anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
370
- transformOrigin: { vertical: 'top', horizontal: 'right' },
371
- }}
372
- >
373
- <CaretDownIcon />
374
- </DropdownMenu>
375
- </div>
376
- )}
377
- <div>
378
- <DropdownMenu
379
- className="service-editor__execution__advanced-btn"
380
- disabled={executionIsRunning}
381
- content={
382
- <MenuContent>
383
- <MenuContentItem
384
- className="service-editor__execution__advanced-btn__option"
385
- onClick={importQuery}
386
- >
387
- Import Query
388
- </MenuContentItem>
389
- <MenuContentItem
390
- className="service-editor__execution__advanced-btn__option"
391
- onClick={openQueryInLegendQuery}
392
- disabled={!applicationStore.config.queryApplicationUrl}
393
- >
394
- Create an Ad-hoc Query
395
- </MenuContentItem>
396
- </MenuContent>
397
- }
398
- menuProps={{
399
- anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
400
- transformOrigin: { vertical: 'top', horizontal: 'right' },
401
- }}
402
- >
403
- <div className="service-editor__execution__advanced-btn__label">
404
- <MoreVerticalIcon className="service-editor__execution__advanced-btn__label__icon" />
335
+ ) : (
336
+ <>
337
+ <button
338
+ className="btn__dropdown-combo__label"
339
+ onClick={runQuery}
340
+ title="Run Query"
341
+ disabled={executionIsRunning}
342
+ tabIndex={-1}
343
+ >
344
+ <PlayIcon className="btn__dropdown-combo__label__icon" />
345
+ <div className="btn__dropdown-combo__label__title">
346
+ Run Query
347
+ </div>
348
+ </button>
349
+ <DropdownMenu
350
+ className="btn__dropdown-combo__dropdown-btn"
351
+ disabled={executionIsRunning}
352
+ content={
353
+ <MenuContent>
354
+ <MenuContentItem
355
+ className="btn__dropdown-combo__option"
356
+ onClick={generatePlan}
357
+ >
358
+ Generate Plan
359
+ </MenuContentItem>
360
+ <MenuContentItem
361
+ className="btn__dropdown-combo__option"
362
+ onClick={debugPlanGeneration}
363
+ >
364
+ Debug
365
+ </MenuContentItem>
366
+ </MenuContent>
367
+ }
368
+ menuProps={{
369
+ anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
370
+ transformOrigin: { vertical: 'top', horizontal: 'right' },
371
+ }}
372
+ >
373
+ <CaretDownIcon />
374
+ </DropdownMenu>
375
+ </>
376
+ )}
377
+ </div>
378
+ <DropdownMenu
379
+ className="btn__dropdown-combo"
380
+ disabled={executionIsRunning}
381
+ content={
382
+ <MenuContent>
383
+ <MenuContentItem
384
+ className="btn__dropdown-combo__option"
385
+ onClick={importQuery}
386
+ >
387
+ Import Query
388
+ </MenuContentItem>
389
+ <MenuContentItem
390
+ className="btn__dropdown-combo__option"
391
+ onClick={openQueryInLegendQuery}
392
+ disabled={!applicationStore.config.queryApplicationUrl}
393
+ >
394
+ Create an Ad-hoc Query
395
+ </MenuContentItem>
396
+ </MenuContent>
397
+ }
398
+ menuProps={{
399
+ anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
400
+ transformOrigin: { vertical: 'top', horizontal: 'right' },
401
+ }}
402
+ >
403
+ <div className="btn__dropdown-combo__label">
404
+ <div className="btn__dropdown-combo__label__title">
405
405
  Advanced
406
406
  </div>
407
- <div className="service-editor__execution__advanced-btn__icon">
408
- <CaretDownIcon />
409
- </div>
410
- </DropdownMenu>
411
- </div>
407
+ </div>
408
+ <div className="btn__dropdown-combo__dropdown-btn">
409
+ <CaretDownIcon />
410
+ </div>
411
+ </DropdownMenu>
412
412
  </div>
413
413
  </div>
414
414
  <div className="panel__content property-mapping-editor__entry__container">
@@ -417,15 +417,7 @@ export const ServiceExecutionQueryEditor = observer(
417
417
  executionState.isOpeningQueryEditor || executionIsRunning
418
418
  }
419
419
  />
420
- <div
421
- className="service-execution-query-editor__content"
422
- title="Double click to edit in query builder"
423
- onDoubleClick={(event) => {
424
- event.preventDefault();
425
- event.stopPropagation();
426
- editWithQueryBuilder()();
427
- }}
428
- >
420
+ <div className="service-execution-query-editor__content">
429
421
  <CodeEditor
430
422
  inputValue={queryState.lambdaString}
431
423
  isReadOnly={true}
@@ -52,6 +52,11 @@ export const DevToolPanel = observer(() => {
52
52
  editorStore.graphState.enableStrictMode,
53
53
  );
54
54
  };
55
+ const toggleArtifactGeneration = (): void => {
56
+ editorStore.graphState.graphGenerationState.setEnableArtifactGeneration(
57
+ !editorStore.graphState.graphGenerationState.enableArtifactGeneration,
58
+ );
59
+ };
55
60
 
56
61
  return (
57
62
  <Panel>
@@ -116,6 +121,15 @@ export const DevToolPanel = observer(() => {
116
121
  isReadOnly={false}
117
122
  update={toggleStrictMode}
118
123
  />
124
+ <PanelFormBooleanField
125
+ name="Generate Artifact Generations"
126
+ prompt="Include generation of artifacet extensions during generation action (F10)"
127
+ value={
128
+ editorStore.graphState.graphGenerationState.enableArtifactGeneration
129
+ }
130
+ isReadOnly={false}
131
+ update={toggleArtifactGeneration}
132
+ />
119
133
  </PanelForm>
120
134
  </Panel>
121
135
  );
@@ -248,6 +248,9 @@ const buildRelationalDatabaseConnectionOption = (
248
248
  <div className="sql-playground__config__connection-selector__option__type">
249
249
  {connectionValue.type}
250
250
  </div>
251
+ <div className="sql-playground__config__connection-selector__option__path">
252
+ {connection.path}
253
+ </div>
251
254
  </div>
252
255
  ),
253
256
  };
@@ -38,7 +38,6 @@ import {
38
38
  type Class,
39
39
  ELEMENT_PATH_DELIMITER,
40
40
  } from '@finos/legend-graph';
41
- import type { FileGenerationTypeOption } from '../../../stores/editor/editor-state/GraphGenerationState.js';
42
41
  import { flowResult } from 'mobx';
43
42
  import { useApplicationStore } from '@finos/legend-application';
44
43
  import {
@@ -51,6 +50,7 @@ import type { DSL_Data_LegendStudioApplicationPlugin_Extension } from '../../../
51
50
  import { PACKAGEABLE_ELEMENT_TYPE } from '../../../stores/editor/utils/ModelClassifierUtils.js';
52
51
  import { EmbeddedDataType } from '../../../stores/editor/editor-state/ExternalFormatState.js';
53
52
  import type { DSL_Mapping_LegendStudioApplicationPlugin_Extension } from '../../../stores/extensions/DSL_Mapping_LegendStudioApplicationPlugin_Extension.js';
53
+ import type { GenerationTypeOption } from '../../../stores/editor/editor-state/GraphGenerationState.js';
54
54
 
55
55
  export const getElementTypeLabel = (
56
56
  editorStore: EditorStore,
@@ -379,11 +379,9 @@ const NewFileGenerationDriverEditor = observer(() => {
379
379
  NewFileGenerationDriver,
380
380
  );
381
381
  const options =
382
- editorStore.graphState.graphGenerationState
382
+ editorStore.graphState.graphGenerationState.globalFileGenerationState
383
383
  .fileGenerationConfigurationOptions;
384
- const onTypeSelectionChange = (
385
- val: FileGenerationTypeOption | null,
386
- ): void => {
384
+ const onTypeSelectionChange = (val: GenerationTypeOption | null): void => {
387
385
  if (!val) {
388
386
  newConnectionDriver.setTypeOption(undefined);
389
387
  } else {
@@ -14,7 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { Fragment, useRef, useEffect, useState, forwardRef } from 'react';
17
+ import React, {
18
+ Fragment,
19
+ useRef,
20
+ useEffect,
21
+ useState,
22
+ forwardRef,
23
+ } from 'react';
18
24
  import { observer } from 'mobx-react-lite';
19
25
  import {
20
26
  type TreeNodeContainerProps,
@@ -61,6 +67,7 @@ import { LEGEND_STUDIO_TEST_ID } from '../../../__lib__/LegendStudioTesting.js';
61
67
  import {
62
68
  ACTIVITY_MODE,
63
69
  GRAPH_EDITOR_MODE,
70
+ PANEL_MODE,
64
71
  } from '../../../stores/editor/EditorConfig.js';
65
72
  import { getTreeChildNodes } from '../../../stores/editor/utils/PackageTreeUtils.js';
66
73
  import type { PackageTreeNodeData } from '../../../stores/editor/utils/TreeUtils.js';
@@ -76,6 +83,7 @@ import {
76
83
  import {
77
84
  guaranteeNonEmptyString,
78
85
  guaranteeNonNullable,
86
+ guaranteeType,
79
87
  isNonNullable,
80
88
  toTitleCase,
81
89
  } from '@finos/legend-shared';
@@ -102,6 +110,7 @@ import {
102
110
  RelationalDatabaseConnection,
103
111
  guaranteeRelationalDatabaseConnection,
104
112
  extractDependencyGACoordinateFromRootPackageName,
113
+ type FunctionActivatorConfiguration,
105
114
  } from '@finos/legend-graph';
106
115
  import { useApplicationStore } from '@finos/legend-application';
107
116
  import {
@@ -125,6 +134,7 @@ import {
125
134
  CodeEditor,
126
135
  } from '@finos/legend-lego/code-editor';
127
136
  import { DatabaseBuilder } from '../editor-group/connection-editor/DatabaseBuilder.js';
137
+ import { FunctionEditorState } from '../../../stores/editor/editor-state/element-editor-state/FunctionEditorState.js';
128
138
 
129
139
  const ElementRenamer = observer(() => {
130
140
  const editorStore = useEditorStore();
@@ -513,6 +523,15 @@ const ExplorerContextMenu = observer(
513
523
  }
514
524
  },
515
525
  );
526
+ const openSQLPlayground = (): void => {
527
+ if (isRelationalDatabaseConnection(node?.packageableElement)) {
528
+ editorStore.panelGroupDisplayState.open();
529
+ editorStore.setActivePanelMode(PANEL_MODE.SQL_PLAYGROUND);
530
+ editorStore.sqlPlaygroundState.setConnection(
531
+ guaranteeType(node?.packageableElement, PackageableConnection),
532
+ );
533
+ }
534
+ };
516
535
  const removeElement = (): void => {
517
536
  if (node) {
518
537
  flowResult(
@@ -663,6 +682,50 @@ const ExplorerContextMenu = observer(
663
682
  ).catch(applicationStore.alertUnhandledError);
664
683
  }
665
684
  };
685
+ const activateFunction = (): void => {
686
+ if (node?.packageableElement instanceof ConcreteFunctionDefinition) {
687
+ editorStore.setQuickInputState({
688
+ title: 'Activate function',
689
+ placeholder: 'Select an activation...',
690
+ options: editorStore.graphState.functionActivatorConfigurations.map(
691
+ (config) => ({
692
+ value: config,
693
+ label: (
694
+ <div
695
+ className="function-editor__activator__selector__option"
696
+ title={config.description}
697
+ >
698
+ <div className="function-editor__activator__selector__option__name">
699
+ {config.name}
700
+ </div>
701
+ <div className="function-editor__activator__selector__option__description">
702
+ {config.description}
703
+ </div>
704
+ </div>
705
+ ),
706
+ }),
707
+ ),
708
+ getSearchValue: (option: {
709
+ value: FunctionActivatorConfiguration;
710
+ label: React.ReactNode;
711
+ }): string => option.value.name,
712
+ onSelect: (option: {
713
+ value: FunctionActivatorConfiguration;
714
+ label: React.ReactNode;
715
+ }) => {
716
+ editorStore.graphEditorMode.openElement(node.packageableElement);
717
+ editorStore.tabManagerState
718
+ .getCurrentEditorState(FunctionEditorState)
719
+ .activatorBuilderState.setCurrentActivatorConfiguration(
720
+ option.value,
721
+ );
722
+ },
723
+ customization: {
724
+ rowHeight: 70,
725
+ },
726
+ });
727
+ }
728
+ };
666
729
 
667
730
  if (isDependencyProjectRoot()) {
668
731
  return (
@@ -722,8 +785,27 @@ const ExplorerContextMenu = observer(
722
785
  <MenuContentDivider />
723
786
  </>
724
787
  )}
788
+ {node.packageableElement instanceof ConcreteFunctionDefinition && (
789
+ <>
790
+ {editorStore.applicationStore.config.options
791
+ .TEMPORARY__enableFunctionActivatorSupport && (
792
+ <>
793
+ <MenuContentItem onClick={activateFunction}>
794
+ Activate...
795
+ </MenuContentItem>
796
+ <MenuContentDivider />
797
+ </>
798
+ )}
799
+ </>
800
+ )}
725
801
  {isRelationalDatabaseConnection(node.packageableElement) && (
726
802
  <>
803
+ {editorStore.applicationStore.config.options
804
+ .TEMPORARY__enableRawSQLExecutor && (
805
+ <MenuContentItem onClick={openSQLPlayground}>
806
+ Execute SQL...
807
+ </MenuContentItem>
808
+ )}
727
809
  <MenuContentItem onClick={buildDatabase}>
728
810
  Build Database...
729
811
  </MenuContentItem>
@@ -977,7 +1059,7 @@ const ExplorerTrees = observer(() => {
977
1059
 
978
1060
  // Generated Files Tree
979
1061
  const generationFileTreeData =
980
- editorStore.explorerTreeState.getFileGenerationTreeData();
1062
+ editorStore.explorerTreeState.getArtifactsGenerationTreeData();
981
1063
  const onGenerationFileTreeNodeSelect = (node: FileSystemTreeNodeData): void =>
982
1064
  editorStore.graphState.graphGenerationState.onTreeNodeSelect(
983
1065
  node,
@@ -98,6 +98,7 @@ import { LEGEND_STUDIO_APP_EVENT } from '../../__lib__/LegendStudioEvent.js';
98
98
  import { LEGEND_STUDIO_SETTING_KEY } from '../../__lib__/LegendStudioSetting.js';
99
99
  import type { TabState } from '@finos/legend-lego/application';
100
100
  import { LegendStudioTelemetryHelper } from '../../__lib__/LegendStudioTelemetryHelper.js';
101
+ import { ArtifactGenerationViewerState } from './editor-state/ArtifactGenerationViewerState.js';
101
102
 
102
103
  export enum GraphBuilderStatus {
103
104
  SUCCEEDED = 'SUCCEEDED',
@@ -583,15 +584,15 @@ export class EditorGraphState {
583
584
  openedTabEditorPaths.push(state.elementPath);
584
585
  }
585
586
  });
587
+ const currentTab = this.editorStore.tabManagerState.currentTab;
586
588
  const currentTabState =
587
- this.editorStore.tabManagerState.currentTab instanceof
588
- ElementEditorState
589
+ currentTab instanceof ElementEditorState ||
590
+ currentTab instanceof ArtifactGenerationViewerState
589
591
  ? undefined
590
- : this.editorStore.tabManagerState.currentTab;
592
+ : currentTab;
591
593
  const currentTabElementPath =
592
- this.editorStore.tabManagerState.currentTab instanceof
593
- ElementEditorState
594
- ? this.editorStore.tabManagerState.currentTab.elementPath
594
+ currentTab instanceof ElementEditorState
595
+ ? currentTab.elementPath
595
596
  : undefined;
596
597
  this.editorStore.tabManagerState.closeAllTabs();
597
598
 
@@ -671,6 +671,9 @@ export class EditorStore implements CommandRegistrar {
671
671
  },
672
672
  {
673
673
  tracerService: this.applicationStore.tracerService,
674
+ TEMPORARY__enableNewServiceRegistrationInputCollectorMechanism:
675
+ this.applicationStore.config.options
676
+ .TEMPORARY__enableNewServiceRegistrationInputCollectorMechanism,
674
677
  },
675
678
  ),
676
679
  ]);
@@ -716,7 +719,7 @@ export class EditorStore implements CommandRegistrar {
716
719
  this.workspaceReviewState.fetchCurrentWorkspaceReview(),
717
720
  this.workspaceUpdaterState.fetchLatestCommittedReviews(),
718
721
  this.projectConfigurationEditorState.fetchLatestProjectStructureVersion(),
719
- this.graphState.graphGenerationState.fetchAvailableFileGenerationDescriptions(),
722
+ this.graphState.graphGenerationState.globalFileGenerationState.fetchAvailableFileGenerationDescriptions(),
720
723
  this.graphState.graphGenerationState.externalFormatState.fetchExternalFormatDescriptions(),
721
724
  this.graphState.fetchAvailableFunctionActivatorConfigurations(),
722
725
  this.sdlcState.fetchProjectVersions(),
@@ -757,7 +760,7 @@ export class EditorStore implements CommandRegistrar {
757
760
  this.conflictResolutionState.initialize(),
758
761
  this.sdlcState.checkIfWorkspaceIsOutdated(),
759
762
  this.projectConfigurationEditorState.fetchLatestProjectStructureVersion(),
760
- this.graphState.graphGenerationState.fetchAvailableFileGenerationDescriptions(),
763
+ this.graphState.graphGenerationState.globalFileGenerationState.fetchAvailableFileGenerationDescriptions(),
761
764
  this.graphState.graphGenerationState.externalFormatState.fetchExternalFormatDescriptions(),
762
765
  this.graphState.fetchAvailableFunctionActivatorConfigurations(),
763
766
  this.sdlcState.fetchProjectVersions(),
@@ -71,7 +71,7 @@ export class ExplorerTreeState {
71
71
  legalTreeData?: TreeData<PackageTreeNodeData> | undefined;
72
72
  dependencyTreeData?: TreeData<PackageTreeNodeData> | undefined;
73
73
  selectedNode?: PackageTreeNodeData | undefined;
74
- fileGenerationTreeData?: TreeData<FileSystemTreeNodeData> | undefined;
74
+ artifactsGenerationTreeData?: TreeData<FileSystemTreeNodeData> | undefined;
75
75
 
76
76
  elementToRename?: PackageableElement | undefined;
77
77
  classToGenerateSampleData?: Class | undefined;
@@ -84,7 +84,7 @@ export class ExplorerTreeState {
84
84
  systemTreeData: observable.ref,
85
85
  legalTreeData: observable.ref,
86
86
  dependencyTreeData: observable.ref,
87
- fileGenerationTreeData: observable.ref,
87
+ artifactsGenerationTreeData: observable.ref,
88
88
  selectedNode: observable.ref,
89
89
  elementToRename: observable,
90
90
  classToGenerateSampleData: observable,
@@ -94,7 +94,7 @@ export class ExplorerTreeState {
94
94
  setSystemTreeData: action,
95
95
  setLegalTreeData: action,
96
96
  setDependencyTreeData: action,
97
- setFileGenerationTreeData: action,
97
+ setArtifactsGenerationTreeData: action,
98
98
  setSelectedNode: action,
99
99
  setElementToRename: action,
100
100
  setClassToGenerateSampleData: action,
@@ -166,8 +166,8 @@ export class ExplorerTreeState {
166
166
  setDependencyTreeData(data: TreeData<PackageTreeNodeData>): void {
167
167
  this.dependencyTreeData = data;
168
168
  }
169
- setFileGenerationTreeData(data: TreeData<FileSystemTreeNodeData>): void {
170
- this.fileGenerationTreeData = data;
169
+ setArtifactsGenerationTreeData(data: TreeData<FileSystemTreeNodeData>): void {
170
+ this.artifactsGenerationTreeData = data;
171
171
  }
172
172
  setElementToRename(val: PackageableElement | undefined): void {
173
173
  this.elementToRename = val;
@@ -214,7 +214,7 @@ export class ExplorerTreeState {
214
214
  this.editorStore.graphManagerState.graph.generationModel.root,
215
215
  ExplorerTreeRootPackageLabel.MODEL_GENERATION,
216
216
  );
217
- this.fileGenerationTreeData = getFileSystemTreeData(
217
+ this.artifactsGenerationTreeData = getFileSystemTreeData(
218
218
  this.editorStore.graphState.graphGenerationState.rootFileDirectory,
219
219
  ExplorerTreeRootPackageLabel.FILE_GENERATION,
220
220
  );
@@ -248,7 +248,7 @@ export class ExplorerTreeState {
248
248
  this.editorStore.graphManagerState.graph.generationModel.root,
249
249
  ExplorerTreeRootPackageLabel.MODEL_GENERATION,
250
250
  );
251
- this.fileGenerationTreeData = getFileSystemTreeData(
251
+ this.artifactsGenerationTreeData = getFileSystemTreeData(
252
252
  this.editorStore.graphState.graphGenerationState.rootFileDirectory,
253
253
  ExplorerTreeRootPackageLabel.FILE_GENERATION,
254
254
  );
@@ -438,7 +438,7 @@ export class ExplorerTreeState {
438
438
  }
439
439
  // File generation tree
440
440
  // TODO: fix this so it does proper reprocessing, right now it just rebuilds
441
- this.fileGenerationTreeData = getFileSystemTreeData(
441
+ this.artifactsGenerationTreeData = getFileSystemTreeData(
442
442
  this.editorStore.graphState.graphGenerationState.rootFileDirectory,
443
443
  ExplorerTreeRootPackageLabel.FILE_GENERATION,
444
444
  );
@@ -558,9 +558,9 @@ export class ExplorerTreeState {
558
558
  }
559
559
  }
560
560
 
561
- getFileGenerationTreeData(): TreeData<FileSystemTreeNodeData> {
561
+ getArtifactsGenerationTreeData(): TreeData<FileSystemTreeNodeData> {
562
562
  return guaranteeNonNullable(
563
- this.fileGenerationTreeData,
563
+ this.artifactsGenerationTreeData,
564
564
  'File generation tree data has not been initialized',
565
565
  );
566
566
  }
@@ -34,7 +34,7 @@ import {
34
34
  import { decorateRuntimeWithNewMapping } from './editor-state/element-editor-state/RuntimeEditorState.js';
35
35
  import type { DSL_LegendStudioApplicationPlugin_Extension } from '../LegendStudioApplicationPlugin.js';
36
36
  import {
37
- type FileGenerationTypeOption,
37
+ type GenerationTypeOption,
38
38
  DEFAULT_GENERATION_SPECIFICATION_NAME,
39
39
  } from './editor-state/GraphGenerationState.js';
40
40
  import {
@@ -523,7 +523,7 @@ export class NewServiceDriver extends NewElementDriver<Service> {
523
523
  }
524
524
 
525
525
  export class NewFileGenerationDriver extends NewElementDriver<FileGenerationSpecification> {
526
- typeOption?: FileGenerationTypeOption | undefined;
526
+ typeOption?: GenerationTypeOption | undefined;
527
527
 
528
528
  constructor(editorStore: EditorStore) {
529
529
  super(editorStore);
@@ -534,13 +534,13 @@ export class NewFileGenerationDriver extends NewElementDriver<FileGenerationSpec
534
534
  });
535
535
 
536
536
  this.typeOption = editorStore.graphState.graphGenerationState
537
- .fileGenerationConfigurationOptions.length
538
- ? editorStore.graphState.graphGenerationState
537
+ .globalFileGenerationState.fileGenerationConfigurationOptions.length
538
+ ? editorStore.graphState.graphGenerationState.globalFileGenerationState
539
539
  .fileGenerationConfigurationOptions[0]
540
540
  : undefined;
541
541
  }
542
542
 
543
- setTypeOption(typeOption: FileGenerationTypeOption | undefined): void {
543
+ setTypeOption(typeOption: GenerationTypeOption | undefined): void {
544
544
  this.typeOption = typeOption;
545
545
  }
546
546
 
@@ -21,4 +21,7 @@ export type QuickInputState<T> = {
21
21
  options: QuickInputOption<T>[];
22
22
  getSearchValue: (option: QuickInputOption<T>) => string;
23
23
  onSelect: (option: QuickInputOption<T>) => void;
24
+ customization?: {
25
+ rowHeight?: number | undefined;
26
+ };
24
27
  };