@finos/legend-application-studio 22.2.1 → 22.3.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.
Files changed (200) hide show
  1. package/lib/components/editor/StatusBar.js +1 -1
  2. package/lib/components/editor/StatusBar.js.map +1 -1
  3. package/lib/components/editor/command-center/ProjectSearchCommand.d.ts.map +1 -1
  4. package/lib/components/editor/command-center/ProjectSearchCommand.js +1 -0
  5. package/lib/components/editor/command-center/ProjectSearchCommand.js.map +1 -1
  6. package/lib/components/editor/edit-panel/EditPanel.d.ts.map +1 -1
  7. package/lib/components/editor/edit-panel/EditPanel.js +24 -11
  8. package/lib/components/editor/edit-panel/EditPanel.js.map +1 -1
  9. package/lib/components/editor/edit-panel/GenerationSpecificationEditor.d.ts.map +1 -1
  10. package/lib/components/editor/edit-panel/GenerationSpecificationEditor.js +2 -1
  11. package/lib/components/editor/edit-panel/GenerationSpecificationEditor.js.map +1 -1
  12. package/lib/components/editor/edit-panel/connection-editor/ConnectionEditor.d.ts.map +1 -1
  13. package/lib/components/editor/edit-panel/connection-editor/ConnectionEditor.js +1 -0
  14. package/lib/components/editor/edit-panel/connection-editor/ConnectionEditor.js.map +1 -1
  15. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.d.ts.map +1 -1
  16. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.js +4 -3
  17. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.js.map +1 -1
  18. package/lib/components/editor/edit-panel/element-generation-editor/ElementXTGenerationEditor.d.ts +32 -0
  19. package/lib/components/editor/edit-panel/element-generation-editor/ElementXTGenerationEditor.d.ts.map +1 -0
  20. package/lib/components/editor/edit-panel/element-generation-editor/ElementXTGenerationEditor.js +66 -0
  21. package/lib/components/editor/edit-panel/element-generation-editor/ElementXTGenerationEditor.js.map +1 -0
  22. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.d.ts +0 -23
  23. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.d.ts.map +1 -1
  24. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.js +6 -58
  25. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.js.map +1 -1
  26. package/lib/components/editor/edit-panel/element-generation-editor/FileSystemViewer.d.ts +41 -0
  27. package/lib/components/editor/edit-panel/element-generation-editor/FileSystemViewer.d.ts.map +1 -0
  28. package/lib/components/editor/edit-panel/element-generation-editor/FileSystemViewer.js +77 -0
  29. package/lib/components/editor/edit-panel/element-generation-editor/FileSystemViewer.js.map +1 -0
  30. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_BindingElementEditor.d.ts +7 -0
  31. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_BindingElementEditor.d.ts.map +1 -1
  32. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_BindingElementEditor.js +19 -14
  33. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_BindingElementEditor.js.map +1 -1
  34. package/lib/components/editor/edit-panel/mapping-editor/EnumerationMappingEditor.d.ts.map +1 -1
  35. package/lib/components/editor/edit-panel/mapping-editor/EnumerationMappingEditor.js +3 -1
  36. package/lib/components/editor/edit-panel/mapping-editor/EnumerationMappingEditor.js.map +1 -1
  37. package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationSourceSelectorModal.js +3 -1
  38. package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationSourceSelectorModal.js.map +1 -1
  39. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionQueryBuilder.d.ts.map +1 -1
  40. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionQueryBuilder.js +3 -0
  41. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionQueryBuilder.js.map +1 -1
  42. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.d.ts.map +1 -1
  43. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.js +3 -1
  44. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.js.map +1 -1
  45. package/lib/components/editor/edit-panel/service-editor/ServiceEditor.d.ts.map +1 -1
  46. package/lib/components/editor/edit-panel/service-editor/ServiceEditor.js +51 -13
  47. package/lib/components/editor/edit-panel/service-editor/ServiceEditor.js.map +1 -1
  48. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.d.ts.map +1 -1
  49. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.js +18 -10
  50. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.js.map +1 -1
  51. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.d.ts +1 -3
  52. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.d.ts.map +1 -1
  53. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.js +2 -20
  54. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.js.map +1 -1
  55. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.d.ts.map +1 -1
  56. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.js +9 -3
  57. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.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 -0
  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 +29 -8
  63. package/lib/components/editor/side-bar/Explorer.js.map +1 -1
  64. package/lib/components/editor/side-bar/testable/GlobalTestRunner.d.ts.map +1 -1
  65. package/lib/components/editor/side-bar/testable/GlobalTestRunner.js +17 -3
  66. package/lib/components/editor/side-bar/testable/GlobalTestRunner.js.map +1 -1
  67. package/lib/index.css +2 -2
  68. package/lib/index.css.map +1 -1
  69. package/lib/index.d.ts +2 -2
  70. package/lib/index.d.ts.map +1 -1
  71. package/lib/index.js +2 -2
  72. package/lib/index.js.map +1 -1
  73. package/lib/package.json +3 -3
  74. package/lib/stores/DSL_Generation_LegendStudioApplicationPlugin_Extension.d.ts +2 -2
  75. package/lib/stores/DSL_Generation_LegendStudioApplicationPlugin_Extension.d.ts.map +1 -1
  76. package/lib/stores/DependencyProjectViewerHelper.d.ts +19 -0
  77. package/lib/stores/DependencyProjectViewerHelper.d.ts.map +1 -0
  78. package/lib/stores/DependencyProjectViewerHelper.js +23 -0
  79. package/lib/stores/DependencyProjectViewerHelper.js.map +1 -0
  80. package/lib/stores/EditorGraphState.d.ts +9 -2
  81. package/lib/stores/EditorGraphState.d.ts.map +1 -1
  82. package/lib/stores/EditorGraphState.js +35 -97
  83. package/lib/stores/EditorGraphState.js.map +1 -1
  84. package/lib/stores/EditorStore.d.ts.map +1 -1
  85. package/lib/stores/EditorStore.js +7 -1
  86. package/lib/stores/EditorStore.js.map +1 -1
  87. package/lib/stores/EditorTabManagerState.d.ts +1 -1
  88. package/lib/stores/EditorTabManagerState.d.ts.map +1 -1
  89. package/lib/stores/EditorTabManagerState.js +11 -13
  90. package/lib/stores/EditorTabManagerState.js.map +1 -1
  91. package/lib/stores/ExplorerTreeState.d.ts +4 -4
  92. package/lib/stores/ExplorerTreeState.d.ts.map +1 -1
  93. package/lib/stores/ExplorerTreeState.js +12 -13
  94. package/lib/stores/ExplorerTreeState.js.map +1 -1
  95. package/lib/stores/editor/NewElementState.d.ts.map +1 -1
  96. package/lib/stores/editor/NewElementState.js +0 -3
  97. package/lib/stores/editor/NewElementState.js.map +1 -1
  98. package/lib/stores/editor-state/ExternalFormatState.d.ts +2 -0
  99. package/lib/stores/editor-state/ExternalFormatState.d.ts.map +1 -1
  100. package/lib/stores/editor-state/ExternalFormatState.js +6 -0
  101. package/lib/stores/editor-state/ExternalFormatState.js.map +1 -1
  102. package/lib/stores/editor-state/FileGenerationState.d.ts +18 -18
  103. package/lib/stores/editor-state/FileGenerationState.d.ts.map +1 -1
  104. package/lib/stores/editor-state/FileGenerationState.js +86 -133
  105. package/lib/stores/editor-state/FileGenerationState.js.map +1 -1
  106. package/lib/stores/editor-state/FileGenerationViewerState.d.ts +3 -3
  107. package/lib/stores/editor-state/FileGenerationViewerState.d.ts.map +1 -1
  108. package/lib/stores/editor-state/FileGenerationViewerState.js.map +1 -1
  109. package/lib/stores/editor-state/FileSystemState.d.ts +30 -0
  110. package/lib/stores/editor-state/FileSystemState.d.ts.map +1 -0
  111. package/lib/stores/editor-state/FileSystemState.js +82 -0
  112. package/lib/stores/editor-state/FileSystemState.js.map +1 -0
  113. package/lib/stores/editor-state/GraphGenerationState.d.ts +9 -9
  114. package/lib/stores/editor-state/GraphGenerationState.d.ts.map +1 -1
  115. package/lib/stores/editor-state/GraphGenerationState.js +14 -15
  116. package/lib/stores/editor-state/GraphGenerationState.js.map +1 -1
  117. package/lib/stores/editor-state/element-editor-state/ElementEditorState.d.ts +25 -2
  118. package/lib/stores/editor-state/element-editor-state/ElementEditorState.d.ts.map +1 -1
  119. package/lib/stores/editor-state/element-editor-state/ElementEditorState.js +50 -7
  120. package/lib/stores/editor-state/element-editor-state/ElementEditorState.js.map +1 -1
  121. package/lib/stores/editor-state/element-editor-state/ElementExternalFormatGenerationState.d.ts +44 -0
  122. package/lib/stores/editor-state/element-editor-state/ElementExternalFormatGenerationState.d.ts.map +1 -0
  123. package/lib/stores/editor-state/element-editor-state/ElementExternalFormatGenerationState.js +172 -0
  124. package/lib/stores/editor-state/element-editor-state/ElementExternalFormatGenerationState.js.map +1 -0
  125. package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.js +1 -1
  126. package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.js.map +1 -1
  127. package/lib/stores/editor-state/element-editor-state/mapping/MappingTestState.js +2 -2
  128. package/lib/stores/editor-state/element-editor-state/mapping/MappingTestState.js.map +1 -1
  129. package/lib/stores/editor-state/element-editor-state/service/ServiceEditorState.d.ts +3 -0
  130. package/lib/stores/editor-state/element-editor-state/service/ServiceEditorState.d.ts.map +1 -1
  131. package/lib/stores/editor-state/element-editor-state/service/ServiceEditorState.js +14 -2
  132. package/lib/stores/editor-state/element-editor-state/service/ServiceEditorState.js.map +1 -1
  133. package/lib/stores/editor-state/element-editor-state/service/ServiceExecutionState.d.ts +9 -6
  134. package/lib/stores/editor-state/element-editor-state/service/ServiceExecutionState.d.ts.map +1 -1
  135. package/lib/stores/editor-state/element-editor-state/service/ServiceExecutionState.js +38 -28
  136. package/lib/stores/editor-state/element-editor-state/service/ServiceExecutionState.js.map +1 -1
  137. package/lib/stores/editor-state/element-editor-state/service/testable/ServiceTestEditorState.d.ts.map +1 -1
  138. package/lib/stores/editor-state/element-editor-state/service/testable/ServiceTestEditorState.js +6 -3
  139. package/lib/stores/editor-state/element-editor-state/service/testable/ServiceTestEditorState.js.map +1 -1
  140. package/lib/stores/shared/FileSystemTreeUtils.d.ts +56 -0
  141. package/lib/stores/shared/FileSystemTreeUtils.d.ts.map +1 -0
  142. package/lib/stores/shared/{FileGenerationTreeUtils.js → FileSystemTreeUtils.js} +31 -32
  143. package/lib/stores/shared/FileSystemTreeUtils.js.map +1 -0
  144. package/lib/stores/shared/PackageTreeUtils.d.ts +6 -4
  145. package/lib/stores/shared/PackageTreeUtils.d.ts.map +1 -1
  146. package/lib/stores/shared/PackageTreeUtils.js +90 -11
  147. package/lib/stores/shared/PackageTreeUtils.js.map +1 -1
  148. package/lib/stores/sidebar-state/testable/GlobalTestRunnerState.d.ts +3 -3
  149. package/lib/stores/sidebar-state/testable/GlobalTestRunnerState.d.ts.map +1 -1
  150. package/lib/stores/sidebar-state/testable/GlobalTestRunnerState.js +37 -1
  151. package/lib/stores/sidebar-state/testable/GlobalTestRunnerState.js.map +1 -1
  152. package/package.json +12 -12
  153. package/src/components/editor/StatusBar.tsx +1 -1
  154. package/src/components/editor/command-center/ProjectSearchCommand.tsx +1 -0
  155. package/src/components/editor/edit-panel/EditPanel.tsx +79 -25
  156. package/src/components/editor/edit-panel/GenerationSpecificationEditor.tsx +2 -1
  157. package/src/components/editor/edit-panel/connection-editor/ConnectionEditor.tsx +1 -0
  158. package/src/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.tsx +5 -7
  159. package/src/components/editor/edit-panel/element-generation-editor/ElementXTGenerationEditor.tsx +194 -0
  160. package/src/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.tsx +6 -270
  161. package/src/components/editor/edit-panel/element-generation-editor/FileSystemViewer.tsx +296 -0
  162. package/src/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_BindingElementEditor.tsx +177 -155
  163. package/src/components/editor/edit-panel/mapping-editor/EnumerationMappingEditor.tsx +3 -1
  164. package/src/components/editor/edit-panel/mapping-editor/InstanceSetImplementationSourceSelectorModal.tsx +3 -3
  165. package/src/components/editor/edit-panel/mapping-editor/MappingExecutionQueryBuilder.tsx +3 -0
  166. package/src/components/editor/edit-panel/mapping-editor/NewMappingElementModal.tsx +3 -1
  167. package/src/components/editor/edit-panel/service-editor/ServiceEditor.tsx +243 -184
  168. package/src/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.tsx +42 -15
  169. package/src/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.tsx +2 -65
  170. package/src/components/editor/edit-panel/uml-editor/ClassEditor.tsx +9 -3
  171. package/src/components/editor/side-bar/CreateNewElementModal.tsx +1 -0
  172. package/src/components/editor/side-bar/Explorer.tsx +82 -13
  173. package/src/components/editor/side-bar/testable/GlobalTestRunner.tsx +31 -9
  174. package/src/index.ts +5 -2
  175. package/src/stores/DSL_Generation_LegendStudioApplicationPlugin_Extension.ts +2 -2
  176. package/src/stores/DependencyProjectViewerHelper.ts +39 -0
  177. package/src/stores/EditorGraphState.ts +56 -155
  178. package/src/stores/EditorStore.ts +15 -5
  179. package/src/stores/EditorTabManagerState.ts +17 -20
  180. package/src/stores/ExplorerTreeState.ts +26 -18
  181. package/src/stores/editor/NewElementState.ts +0 -2
  182. package/src/stores/editor-state/ExternalFormatState.ts +9 -0
  183. package/src/stores/editor-state/FileGenerationState.ts +129 -180
  184. package/src/stores/editor-state/FileGenerationViewerState.ts +3 -3
  185. package/src/stores/editor-state/FileSystemState.ts +111 -0
  186. package/src/stores/editor-state/GraphGenerationState.ts +35 -31
  187. package/src/stores/editor-state/element-editor-state/ElementEditorState.ts +91 -6
  188. package/src/stores/editor-state/element-editor-state/ElementExternalFormatGenerationState.ts +266 -0
  189. package/src/stores/editor-state/element-editor-state/mapping/MappingExecutionState.ts +1 -1
  190. package/src/stores/editor-state/element-editor-state/mapping/MappingTestState.ts +2 -2
  191. package/src/stores/editor-state/element-editor-state/service/ServiceEditorState.ts +23 -2
  192. package/src/stores/editor-state/element-editor-state/service/ServiceExecutionState.ts +60 -55
  193. package/src/stores/editor-state/element-editor-state/service/testable/ServiceTestEditorState.ts +6 -2
  194. package/src/stores/shared/{FileGenerationTreeUtils.ts → FileSystemTreeUtils.ts} +77 -76
  195. package/src/stores/shared/PackageTreeUtils.ts +144 -10
  196. package/src/stores/sidebar-state/testable/GlobalTestRunnerState.ts +42 -3
  197. package/tsconfig.json +6 -1
  198. package/lib/stores/shared/FileGenerationTreeUtils.d.ts +0 -56
  199. package/lib/stores/shared/FileGenerationTreeUtils.d.ts.map +0 -1
  200. package/lib/stores/shared/FileGenerationTreeUtils.js.map +0 -1
@@ -24,19 +24,12 @@ import {
24
24
  ContextMenu,
25
25
  Dialog,
26
26
  BlankPanelPlaceholder,
27
- Panel,
28
- LockIcon,
29
27
  ModalTitle,
30
28
  MenuContent,
31
29
  MenuContentItem,
32
30
  } from '@finos/legend-art';
33
31
  import { observer } from 'mobx-react-lite';
34
- import {
35
- PureMultiExecution,
36
- PureSingleExecution,
37
- type ServiceExecution,
38
- type ServiceTestSuite,
39
- } from '@finos/legend-graph';
32
+ import type { ServiceTestSuite } from '@finos/legend-graph';
40
33
  import { ServiceTestDataEditor } from './ServiceTestDataEditor.js';
41
34
  import { ServiceTestsEditor } from './ServiceTestsEditor.js';
42
35
  import { forwardRef, useState } from 'react';
@@ -48,7 +41,6 @@ import type {
48
41
  } from '../../../../../stores/editor-state/element-editor-state/service/testable/ServiceTestableState.js';
49
42
  import { useApplicationNavigationContext } from '@finos/legend-application';
50
43
  import { LEGEND_STUDIO_APPLICATION_NAVIGATION_CONTEXT_KEY } from '../../../../../stores/LegendStudioApplicationNavigationContext.js';
51
- import { UnsupportedEditorPanel } from '../../UnsupportedElementEditor.js';
52
44
 
53
45
  export const ServiceTestSuiteEditor = observer(
54
46
  (props: { serviceTestSuiteState: ServiceTestSuiteState }) => {
@@ -143,7 +135,7 @@ export const RenameModal = observer(
143
135
  },
144
136
  );
145
137
 
146
- const ServiceTestableEditor = observer(
138
+ export const ServiceTestableEditor = observer(
147
139
  (props: { serviceTestableState: ServiceTestableState }) => {
148
140
  const { serviceTestableState } = props;
149
141
  const serviceEditorState = serviceTestableState.serviceEditorState;
@@ -238,58 +230,3 @@ const ServiceTestableEditor = observer(
238
230
  );
239
231
  },
240
232
  );
241
-
242
- const ServiceTestableUnsupportedEditor = observer(
243
- (props: { serviceTestableState: ServiceTestableState }) => {
244
- const { serviceTestableState } = props;
245
- const serviceEditorState = serviceTestableState.serviceEditorState;
246
- const isReadOnly = serviceEditorState.isReadOnly;
247
- return (
248
- <div className="unsupported-element-editor">
249
- <Panel>
250
- <div className="panel__header">
251
- <div className="panel__header__title">
252
- {isReadOnly && (
253
- <div className="uml-element-editor__header__lock">
254
- <LockIcon />
255
- </div>
256
- )}
257
- <div className="panel__header__title__label">Service Tests</div>
258
- </div>
259
- </div>
260
- <div className="panel__content unsupported-element-editor__content">
261
- <UnsupportedEditorPanel
262
- text="Service Test Editor does not support services with no mapping and runtime. Please edit in text mode."
263
- isReadOnly={isReadOnly}
264
- />
265
- </div>
266
- </Panel>
267
- </div>
268
- );
269
- },
270
- );
271
-
272
- export const ServiceTestableWrapperEditor = observer(
273
- (props: {
274
- serviceTestableState: ServiceTestableState;
275
- serviceExecution: ServiceExecution;
276
- }) => {
277
- if (
278
- (props.serviceExecution instanceof PureSingleExecution &&
279
- props.serviceExecution.runtime) ||
280
- props.serviceExecution instanceof PureMultiExecution
281
- ) {
282
- return (
283
- <ServiceTestableEditor
284
- serviceTestableState={props.serviceTestableState}
285
- />
286
- );
287
- } else {
288
- return (
289
- <ServiceTestableUnsupportedEditor
290
- serviceTestableState={props.serviceTestableState}
291
- />
292
- );
293
- }
294
- },
295
- );
@@ -322,7 +322,9 @@ const PropertyBasicEditor = observer(
322
322
  value={selectedPropertyType}
323
323
  placeholder="Choose a type..."
324
324
  filterOption={filterOption}
325
- formatOptionLabel={getPackageableElementOptionFormatter({})}
325
+ formatOptionLabel={getPackageableElementOptionFormatter({
326
+ pureModel: editorStore.graphManagerState.graph,
327
+ })}
326
328
  />
327
329
  )}
328
330
  {!isIndirectProperty && !isReadOnly && !isEditingType && (
@@ -681,7 +683,9 @@ const DerivedPropertyBasicEditor = observer(
681
683
  value={selectedPropertyType}
682
684
  placeholder="Choose a type..."
683
685
  filterOption={filterOption}
684
- formatOptionLabel={getPackageableElementOptionFormatter({})}
686
+ formatOptionLabel={getPackageableElementOptionFormatter({
687
+ pureModel: editorStore.graphManagerState.graph,
688
+ })}
685
689
  />
686
690
  )}
687
691
  {!isInheritedProperty && !isReadOnly && !isEditingType && (
@@ -1086,7 +1090,9 @@ const SuperTypeEditor = observer(
1086
1090
  value={selectedType}
1087
1091
  placeholder="Choose a class"
1088
1092
  filterOption={filterOption}
1089
- formatOptionLabel={getPackageableElementOptionFormatter({})}
1093
+ formatOptionLabel={getPackageableElementOptionFormatter({
1094
+ pureModel: editorStore.graphManagerState.graph,
1095
+ })}
1090
1096
  />
1091
1097
  <button
1092
1098
  className="uml-element-editor__basic__detail-btn"
@@ -233,6 +233,7 @@ const NewPureModelConnectionDriverEditor = observer(
233
233
  darkMode={true}
234
234
  formatOptionLabel={getPackageableElementOptionFormatter({
235
235
  darkMode: true,
236
+ pureModel: editorStore.graphManagerState.graph,
236
237
  })}
237
238
  />
238
239
  </div>
@@ -61,12 +61,19 @@ import {
61
61
  } from '../../../stores/shared/PackageTreeUtils.js';
62
62
  import type { PackageTreeNodeData } from '../../../stores/shared/TreeUtils.js';
63
63
  import {
64
- type GenerationTreeNodeData,
65
- getFileGenerationChildNodes,
66
- } from '../../../stores/shared/FileGenerationTreeUtils.js';
67
- import { FileGenerationTree } from '../../editor/edit-panel/element-generation-editor/FileGenerationEditor.js';
68
- import { generateViewEntityRoute } from '../../../stores/LegendStudioRouter.js';
69
- import { toTitleCase } from '@finos/legend-shared';
64
+ type FileSystemTreeNodeData,
65
+ getFileSystemChildNodes,
66
+ } from '../../../stores/shared/FileSystemTreeUtils.js';
67
+ import { FileSystemTree } from '../edit-panel/element-generation-editor/FileSystemViewer.js';
68
+ import {
69
+ generateViewEntityRoute,
70
+ generateViewProjectByGAVRoute,
71
+ } from '../../../stores/LegendStudioRouter.js';
72
+ import {
73
+ guaranteeNonEmptyString,
74
+ guaranteeNonNullable,
75
+ toTitleCase,
76
+ } from '@finos/legend-shared';
70
77
  import { flowResult } from 'mobx';
71
78
  import { useEditorStore } from '../EditorStoreProvider.js';
72
79
  import {
@@ -89,6 +96,11 @@ import { useApplicationStore } from '@finos/legend-application';
89
96
  import { PACKAGEABLE_ELEMENT_TYPE } from '../../../stores/shared/ModelClassifierUtils.js';
90
97
  import { useLegendStudioApplicationStore } from '../../LegendStudioBaseStoreProvider.js';
91
98
  import { queryClass } from '../edit-panel/uml-editor/ClassQueryBuilder.js';
99
+ import { createViewSDLCProjectHandler } from '../../../stores/DependencyProjectViewerHelper.js';
100
+ import {
101
+ MASTER_SNAPSHOT_ALIAS,
102
+ SNAPSHOT_VERSION_ALIAS,
103
+ } from '@finos/legend-server-depot';
92
104
 
93
105
  const ElementRenamer = observer(() => {
94
106
  const editorStore = useEditorStore();
@@ -291,6 +303,60 @@ const ExplorerContextMenu = observer(
291
303
  (type: string): (() => void) =>
292
304
  (): void =>
293
305
  editorStore.newElementState.openModal(type, _package);
306
+ const isDependencyProjectRoot = (): boolean =>
307
+ node?.packageableElement instanceof Package &&
308
+ editorStore.graphManagerState.graph.dependencyManager.roots.includes(
309
+ node.packageableElement,
310
+ );
311
+ const viewProject = (): void => {
312
+ const projectDependency =
313
+ editorStore.projectConfigurationEditorState.projectConfiguration?.projectDependencies.find(
314
+ (dep) => dep.projectId === node?.label,
315
+ );
316
+ if (projectDependency && !projectDependency.isLegacyDependency) {
317
+ applicationStore.navigator.visitAddress(
318
+ applicationStore.navigator.generateAddress(
319
+ generateViewProjectByGAVRoute(
320
+ guaranteeNonNullable(projectDependency.groupId),
321
+ guaranteeNonNullable(projectDependency.artifactId),
322
+ projectDependency.versionId === MASTER_SNAPSHOT_ALIAS
323
+ ? SNAPSHOT_VERSION_ALIAS
324
+ : projectDependency.versionId,
325
+ ),
326
+ ),
327
+ );
328
+ }
329
+ };
330
+ const viewSDLCProject = (): void => {
331
+ const dependency =
332
+ editorStore.projectConfigurationEditorState.projectConfiguration?.projectDependencies.find(
333
+ (dep) => dep.projectId === node?.label,
334
+ );
335
+ if (dependency) {
336
+ createViewSDLCProjectHandler(
337
+ applicationStore,
338
+ editorStore.depotServerClient,
339
+ )(
340
+ guaranteeNonEmptyString(dependency.groupId),
341
+ guaranteeNonEmptyString(dependency.artifactId),
342
+ ).catch(applicationStore.alertUnhandledError);
343
+ }
344
+ };
345
+
346
+ if (isDependencyProjectRoot()) {
347
+ return (
348
+ <MenuContent data-testid={LEGEND_STUDIO_TEST_ID.EXPLORER_CONTEXT_MENU}>
349
+ <MenuContentItem onClick={viewProject}>
350
+ <MenuContentItemLabel>View Project</MenuContentItemLabel>
351
+ </MenuContentItem>
352
+ {node && (
353
+ <MenuContentItem onClick={viewSDLCProject}>
354
+ <MenuContentItemLabel>View SDLC Project</MenuContentItemLabel>
355
+ </MenuContentItem>
356
+ )}
357
+ </MenuContent>
358
+ );
359
+ }
294
360
 
295
361
  if (_package && !isReadOnly) {
296
362
  return (
@@ -414,7 +480,10 @@ const PackageTreeNodeContainer = observer(
414
480
  ? 'color--generated'
415
481
  : isSystemElement(node.packageableElement)
416
482
  ? 'color--system'
417
- : isDependencyElement(node.packageableElement)
483
+ : isDependencyElement(
484
+ node.packageableElement,
485
+ editorStore.graphManagerState.graph,
486
+ )
418
487
  ? 'color--dependency'
419
488
  : '';
420
489
 
@@ -562,15 +631,15 @@ const ExplorerTrees = observer(() => {
562
631
  // Generated Files Tree
563
632
  const generationFileTreeData =
564
633
  editorStore.explorerTreeState.getFileGenerationTreeData();
565
- const onGenerationFileTreeNodeSelect = (node: GenerationTreeNodeData): void =>
634
+ const onGenerationFileTreeNodeSelect = (node: FileSystemTreeNodeData): void =>
566
635
  editorStore.graphState.graphGenerationState.onTreeNodeSelect(
567
636
  node,
568
637
  generationFileTreeData,
569
638
  );
570
639
  const getGenerationFileTreeChildNodes = (
571
- node: GenerationTreeNodeData,
572
- ): GenerationTreeNodeData[] =>
573
- getFileGenerationChildNodes(node, generationFileTreeData);
640
+ node: FileSystemTreeNodeData,
641
+ ): FileSystemTreeNodeData[] =>
642
+ getFileSystemChildNodes(node, generationFileTreeData);
574
643
 
575
644
  // System Tree
576
645
  const systemTreeData = editorStore.explorerTreeState.getTreeData(
@@ -600,7 +669,7 @@ const ExplorerTrees = observer(() => {
600
669
  const getDependencyTreeChildNodes = (
601
670
  node: PackageTreeNodeData,
602
671
  ): PackageTreeNodeData[] =>
603
- getTreeChildNodes(editorStore, node, dependencyTreeData);
672
+ getTreeChildNodes(editorStore, node, dependencyTreeData, true);
604
673
  const showPackageTrees =
605
674
  treeData.nodes.size || graph.dependencyManager.hasDependencies;
606
675
 
@@ -684,7 +753,7 @@ const ExplorerTrees = observer(() => {
684
753
  ) && (
685
754
  <>
686
755
  <div className="explorer__content__separator" />
687
- <FileGenerationTree
756
+ <FileSystemTree
688
757
  selectedNode={editorStore.explorerTreeState.selectedNode}
689
758
  directoryTreeData={generationFileTreeData}
690
759
  onNodeSelect={onGenerationFileTreeNodeSelect}
@@ -42,6 +42,7 @@ import {
42
42
  } from '@finos/legend-art';
43
43
  import {
44
44
  AssertFail,
45
+ AssertionStatus,
45
46
  EqualToJsonAssertFail,
46
47
  PackageableElement,
47
48
  TestError,
@@ -122,7 +123,7 @@ export const getTestableResultIcon = (
122
123
  const getOptionalError = (
123
124
  node: TestableExplorerTreeNodeData,
124
125
  testableState: TestableState,
125
- ): TestError | AssertFail | undefined => {
126
+ ): TestError | AssertFail | Map<string, AssertFail> | undefined => {
126
127
  if (node instanceof AtomicTestTreeNodeData) {
127
128
  const result = getAtomicTest_TestResult(
128
129
  node.atomicTest,
@@ -135,6 +136,14 @@ const getOptionalError = (
135
136
  const status = getAssertionStatus(node.assertion, testableState.results);
136
137
  if (status instanceof AssertFail) {
137
138
  return status;
139
+ } else if (status && !(status instanceof AssertionStatus)) {
140
+ const errorState = new Map<string, AssertFail>();
141
+ Array.from(status.entries()).forEach(([key, assertionStatus]) => {
142
+ if (assertionStatus instanceof AssertFail) {
143
+ errorState.set(key, assertionStatus);
144
+ }
145
+ });
146
+ return errorState;
138
147
  }
139
148
  }
140
149
  return undefined;
@@ -215,15 +224,15 @@ const TestableExplorerContextMenu = observer(
215
224
  testableState: TestableState;
216
225
  node: TestableExplorerTreeNodeData;
217
226
  treeData: TreeData<TestableExplorerTreeNodeData>;
218
- error?: TestError | AssertFail | undefined;
227
+ error?: TestError | AssertFail | Map<string, AssertFail> | undefined;
219
228
  }
220
229
  >(function TestableExplorerContextMenu(props, ref) {
221
230
  const { node, error, globalTestRunnerState, testableState } = props;
222
231
  const runTest = (): void => {
223
232
  testableState.run(node);
224
233
  };
225
- const viewError = (): void =>
226
- globalTestRunnerState.setFailureViewing(error);
234
+ const viewError = (err: TestError | AssertFail): void =>
235
+ globalTestRunnerState.setFailureViewing(err);
227
236
  return (
228
237
  <MenuContent data-testid={LEGEND_STUDIO_TEST_ID.EXPLORER_CONTEXT_MENU}>
229
238
  <MenuContentItem
@@ -232,11 +241,24 @@ const TestableExplorerContextMenu = observer(
232
241
  >
233
242
  Run
234
243
  </MenuContentItem>
235
- {error && (
236
- <MenuContentItem onClick={viewError}>
237
- {error instanceof TestError ? 'View Error' : 'View assert fail'}
238
- </MenuContentItem>
239
- )}
244
+ {error &&
245
+ (error instanceof TestError || error instanceof AssertFail) && (
246
+ <MenuContentItem onClick={(): void => viewError(error)}>
247
+ {error instanceof TestError ? 'View Error' : 'View assert fail'}
248
+ </MenuContentItem>
249
+ )}
250
+ {error &&
251
+ !(error instanceof TestError || error instanceof AssertFail) &&
252
+ Array.from(error.entries()).map(([key, testError]) => (
253
+ <MenuContentItem
254
+ key={key}
255
+ onClick={(): void => viewError(testError)}
256
+ >
257
+ {testError instanceof TestError
258
+ ? `View Error for ${key}`
259
+ : `View assert fail for ${key}`}
260
+ </MenuContentItem>
261
+ ))}
240
262
  </MenuContent>
241
263
  );
242
264
  }),
package/src/index.ts CHANGED
@@ -98,8 +98,11 @@ export { MINIMUM_SERVICE_OWNERS } from './stores/editor-state/element-editor-sta
98
98
  export { generateServiceManagementUrl } from './stores/editor-state/element-editor-state/service/ServiceRegistrationState.js';
99
99
  export { ServicePureExecutionState } from './stores/editor-state/element-editor-state/service/ServiceExecutionState.js';
100
100
  export { NewServiceModal } from './components/editor/edit-panel/service-editor/NewServiceModal.js';
101
- export { GenerationFile } from './stores/shared/FileGenerationTreeUtils.js';
102
- export { FileGenerationState } from './stores/editor-state/FileGenerationState.js';
101
+ export { FileSystem_File as GenerationFile } from './stores/shared/FileSystemTreeUtils.js';
102
+ export {
103
+ FileGenerationState,
104
+ GeneratedFileStructureState,
105
+ } from './stores/editor-state/FileGenerationState.js';
103
106
  export { DSL_ExternalFormat_LegendStudioApplicationPlugin } from './components/DSL_ExternalFormat_LegendStudioApplicationPlugin.js';
104
107
  export {
105
108
  externalFormatData_setData,
@@ -15,13 +15,13 @@
15
15
  */
16
16
 
17
17
  import type { PackageableElement } from '@finos/legend-graph';
18
- import type { FileGenerationState } from './editor-state/FileGenerationState.js';
18
+ import type { GeneratedFileStructureState } from './editor-state/FileGenerationState.js';
19
19
  import type { DSL_LegendStudioApplicationPlugin_Extension } from './LegendStudioApplicationPlugin.js';
20
20
 
21
21
  export type FileGenerationResultViewerActionConfiguration = {
22
22
  key: string;
23
23
  renderer: (
24
- fileGenerationState: FileGenerationState,
24
+ fileGenerationState: GeneratedFileStructureState,
25
25
  ) => React.ReactNode | undefined;
26
26
  };
27
27
 
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import {
18
+ type DepotServerClient,
19
+ ProjectData,
20
+ } from '@finos/legend-server-depot';
21
+ import type { LegendStudioApplicationStore } from './LegendStudioBaseStore.js';
22
+ import { generateViewProjectRoute } from './LegendStudioRouter.js';
23
+
24
+ export const createViewSDLCProjectHandler =
25
+ (
26
+ applicationStore: LegendStudioApplicationStore,
27
+ depotServerClient: DepotServerClient,
28
+ ) =>
29
+ async (groupId: string, artifactId: string): Promise<void> => {
30
+ // fetch project data
31
+ const project = ProjectData.serialization.fromJson(
32
+ await depotServerClient.getProject(groupId, artifactId),
33
+ );
34
+ applicationStore.navigator.visitAddress(
35
+ applicationStore.navigator.generateAddress(
36
+ generateViewProjectRoute(project.projectId),
37
+ ),
38
+ );
39
+ };