@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
@@ -967,7 +967,7 @@ export const FileGenerationConfigurationEditor = observer(
967
967
  const applicationStore = useApplicationStore();
968
968
  const fileGeneration = fileGenerationState.fileGeneration;
969
969
  const fileGenerationConfiguration =
970
- editorStore.graphState.graphGenerationState.getFileGenerationConfiguration(
970
+ editorStore.graphState.graphGenerationState.globalFileGenerationState.getFileGenerationConfiguration(
971
971
  fileGeneration.type,
972
972
  ).properties;
973
973
  const debouncedRegenerate = useMemo(
@@ -17,10 +17,6 @@
17
17
  import { Fragment } from 'react';
18
18
  import { observer } from 'mobx-react-lite';
19
19
  import { flowResult } from 'mobx';
20
- import {
21
- getTextContent,
22
- getEditorLanguageForFormat,
23
- } from '../../../../stores/editor/editor-state/FileGenerationViewerState.js';
24
20
  import { guaranteeNonNullable } from '@finos/legend-shared';
25
21
  import {
26
22
  type TreeNodeContainerProps,
@@ -56,6 +52,10 @@ import {
56
52
  import { useApplicationStore } from '@finos/legend-application';
57
53
  import type { DSL_Generation_LegendStudioApplicationPlugin_Extension } from '../../../../stores/extensions/DSL_Generation_LegendStudioApplicationPlugin_Extension.js';
58
54
  import { CodeEditor } from '@finos/legend-lego/code-editor';
55
+ import {
56
+ getEditorLanguageForFormat,
57
+ getTextContent,
58
+ } from '../../../../stores/editor/editor-state/ArtifactGenerationViewerState.js';
59
59
 
60
60
  export const FileSystemTreeNodeContainer: React.FC<
61
61
  TreeNodeContainerProps<
@@ -44,7 +44,6 @@ import {
44
44
  type InnerSchemaSetEditorState,
45
45
  SCHEMA_SET_TAB_TYPE,
46
46
  } from '../../../../stores/editor/editor-state/element-editor-state/external-format/DSL_ExternalFormat_SchemaSetEditorState.js';
47
- import { getEditorLanguageForFormat } from '../../../../stores/editor/editor-state/FileGenerationViewerState.js';
48
47
  import { guaranteeNonNullable, prettyCONSTName } from '@finos/legend-shared';
49
48
  import { useEditorStore } from '../../EditorStoreProvider.js';
50
49
  import {
@@ -59,6 +58,7 @@ import {
59
58
  CODE_EDITOR_LANGUAGE,
60
59
  CodeEditor,
61
60
  } from '@finos/legend-lego/code-editor';
61
+ import { getEditorLanguageForFormat } from '../../../../stores/editor/editor-state/ArtifactGenerationViewerState.js';
62
62
 
63
63
  const SchemaLoader = observer(
64
64
  (props: {
@@ -260,30 +260,30 @@ const MappingTestQueryEditor = observer(
260
260
  <div className="panel__header__title__label">query</div>
261
261
  </div>
262
262
  <div className="panel__header__actions">
263
- <div className="mapping-test-editor__action-btn">
263
+ <div className="btn__dropdown-combo">
264
264
  <button
265
- className="mapping-test-editor__action-btn__label"
265
+ className="btn__dropdown-combo__label"
266
266
  onClick={editWithQueryBuilder()}
267
267
  title="Edit Query"
268
268
  tabIndex={-1}
269
269
  >
270
- <PencilIcon className="mapping-test-editor__action-btn__label__icon" />
271
- <div className="mapping-test-editor__action-btn__label__title">
270
+ <PencilIcon className="btn__dropdown-combo__label__icon" />
271
+ <div className="btn__dropdown-combo__label__title">
272
272
  Edit Query
273
273
  </div>
274
274
  </button>
275
275
  <DropdownMenu
276
- className="mapping-test-editor__action-btn__dropdown-btn"
276
+ className="btn__dropdown-combo__dropdown-btn"
277
277
  content={
278
278
  <MenuContent>
279
279
  <MenuContentItem
280
- className="mapping-test-editor__action-btn__option"
280
+ className="btn__dropdown-combo__option"
281
281
  onClick={editWithQueryBuilder(true)}
282
282
  >
283
283
  Text Mode
284
284
  </MenuContentItem>
285
285
  <MenuContentItem
286
- className="mapping-test-editor__action-btn__option"
286
+ className="btn__dropdown-combo__option"
287
287
  onClick={clearQuery}
288
288
  >
289
289
  Clear Query
@@ -302,15 +302,7 @@ const MappingTestQueryEditor = observer(
302
302
  </div>
303
303
  {!isStubbed_RawLambda(queryState.query) && (
304
304
  <PanelContent>
305
- <div
306
- className="mapping-test-editor__query-panel__query"
307
- title="Double click to edit in query builder"
308
- onDoubleClick={(event) => {
309
- event.preventDefault();
310
- event.stopPropagation();
311
- editWithQueryBuilder()();
312
- }}
313
- >
305
+ <div className="mapping-test-editor__query-panel__query">
314
306
  <CodeEditor
315
307
  inputValue={queryState.lambdaString}
316
308
  isReadOnly={true}
@@ -791,64 +783,66 @@ export const DEPRECATED__MappingTestEditor = observer(
791
783
  ))}
792
784
  </div>
793
785
  <div className="panel__header__actions mapping-test-editor__header__actions">
794
- {testState.isRunningTest ? (
795
- <button
796
- className="mapping-test-editor__stop-btn"
797
- onClick={cancelTest}
798
- tabIndex={-1}
799
- >
800
- <div className="btn--dark btn--caution mapping-test-editor__stop-btn__label">
801
- <PauseCircleIcon className="mapping-test-editor__stop-btn__label__icon" />
802
- <div className="mapping-test-editor__stop-btn__label__title">
803
- Stop
804
- </div>
805
- </div>
806
- </button>
807
- ) : (
808
- <div className="mapping-test-editor__action-btn">
786
+ <div className="mapping-test-editor__action-btn btn__dropdown-combo btn__dropdown-combo--primary">
787
+ {testState.isRunningTest ? (
809
788
  <button
810
- className="mapping-test-editor__action-btn__label"
811
- onClick={runTest}
812
- disabled={
813
- testState.isExecutingTest || testState.isGeneratingPlan
814
- }
789
+ className="btn__dropdown-combo__canceler"
790
+ onClick={cancelTest}
815
791
  tabIndex={-1}
816
792
  >
817
- <PlayIcon className="mapping-test-editor__action-btn__label__icon" />
818
- <div className="mapping-test-editor__action-btn__label__title">
819
- Run Test
793
+ <div className="btn--dark btn--caution btn__dropdown-combo__canceler__label">
794
+ <PauseCircleIcon className="btn__dropdown-combo__canceler__label__icon" />
795
+ <div className="btn__dropdown-combo__canceler__label__title">
796
+ Stop
797
+ </div>
820
798
  </div>
821
799
  </button>
822
- <DropdownMenu
823
- className="mapping-test-editor__action-btn__dropdown-btn"
824
- disabled={
825
- testState.isExecutingTest || testState.isGeneratingPlan
826
- }
827
- content={
828
- <MenuContent>
829
- <MenuContentItem
830
- className="mapping-test-editor__action-btn__option"
831
- onClick={generatePlan}
832
- >
833
- Generate Plan
834
- </MenuContentItem>
835
- <MenuContentItem
836
- className="mapping-test-editor__action-btn__option"
837
- onClick={debugPlanGeneration}
838
- >
839
- Debug
840
- </MenuContentItem>
841
- </MenuContent>
842
- }
843
- menuProps={{
844
- anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
845
- transformOrigin: { vertical: 'top', horizontal: 'right' },
846
- }}
847
- >
848
- <CaretDownIcon />
849
- </DropdownMenu>
850
- </div>
851
- )}
800
+ ) : (
801
+ <>
802
+ <button
803
+ className="btn__dropdown-combo__label"
804
+ onClick={runTest}
805
+ disabled={
806
+ testState.isExecutingTest || testState.isGeneratingPlan
807
+ }
808
+ tabIndex={-1}
809
+ >
810
+ <PlayIcon className="btn__dropdown-combo__label__icon" />
811
+ <div className="btn__dropdown-combo__label__title">
812
+ Run Test
813
+ </div>
814
+ </button>
815
+ <DropdownMenu
816
+ className="btn__dropdown-combo__dropdown-btn"
817
+ disabled={
818
+ testState.isExecutingTest || testState.isGeneratingPlan
819
+ }
820
+ content={
821
+ <MenuContent>
822
+ <MenuContentItem
823
+ className="btn__dropdown-combo__option"
824
+ onClick={generatePlan}
825
+ >
826
+ Generate Plan
827
+ </MenuContentItem>
828
+ <MenuContentItem
829
+ className="btn__dropdown-combo__option"
830
+ onClick={debugPlanGeneration}
831
+ >
832
+ Debug
833
+ </MenuContentItem>
834
+ </MenuContent>
835
+ }
836
+ menuProps={{
837
+ anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
838
+ transformOrigin: { vertical: 'top', horizontal: 'right' },
839
+ }}
840
+ >
841
+ <CaretDownIcon />
842
+ </DropdownMenu>
843
+ </>
844
+ )}
845
+ </div>
852
846
  </div>
853
847
  </div>
854
848
  <div className="mapping-test-editor__content">
@@ -419,7 +419,7 @@ const MappingFilterEditor = observer(
419
419
  isReadOnly ||
420
420
  instanceSetImplementationState.isConvertingTransformLambdaObjects
421
421
  }
422
- forceBackdrop={!!filterState.parserError}
422
+ forceBackdrop={Boolean(filterState.parserError)}
423
423
  lambdaEditorState={filterState}
424
424
  expectedType={PrimitiveType.BOOLEAN}
425
425
  />
@@ -47,6 +47,7 @@ import {
47
47
  PanelHeader,
48
48
  PanelHeaderActions,
49
49
  Panel,
50
+ PauseCircleIcon,
50
51
  } from '@finos/legend-art';
51
52
  import { observer } from 'mobx-react-lite';
52
53
  import {
@@ -721,6 +722,9 @@ export const MappingExecutionBuilder = observer(
721
722
  const applicationStore = useApplicationStore();
722
723
  const { queryState, inputDataState } = executionState;
723
724
  // execute
725
+ const cancelExecution = applicationStore.guardUnhandledError(() =>
726
+ flowResult(executionState.cancelExecution()),
727
+ );
724
728
  const generatePlan = applicationStore.guardUnhandledError(() =>
725
729
  flowResult(executionState.generatePlan(false)),
726
730
  );
@@ -780,54 +784,71 @@ export const MappingExecutionBuilder = observer(
780
784
  <FlaskIcon />
781
785
  </button>
782
786
  )}
783
- <div className="mapping-execution-builder__action-btn">
784
- <button
785
- className="mapping-execution-builder__action-btn__label"
786
- onClick={execute}
787
- disabled={
788
- isStubbed_RawLambda(queryState.query) ||
789
- !inputDataState.isValid ||
790
- executionState.isGeneratingPlan ||
791
- executionState.isExecuting
792
- }
793
- tabIndex={-1}
794
- >
795
- <PlayIcon className="mapping-execution-builder__action-btn__label__icon" />
796
- <div className="mapping-execution-builder__action-btn__label__title">
797
- Run Query
798
- </div>
799
- </button>
800
- <DropdownMenu
801
- className="mapping-execution-builder__action-btn__dropdown-btn"
802
- disabled={
803
- isStubbed_RawLambda(queryState.query) ||
804
- !inputDataState.isValid ||
805
- executionState.isGeneratingPlan ||
806
- executionState.isExecuting
807
- }
808
- content={
809
- <MenuContent>
810
- <MenuContentItem
811
- className="mapping-execution-builder__action-btn__option"
812
- onClick={generatePlan}
813
- >
814
- Generate Plan
815
- </MenuContentItem>
816
- <MenuContentItem
817
- className="mapping-execution-builder__action-btn__option"
818
- onClick={debugPlanGeneration}
819
- >
820
- Debug
821
- </MenuContentItem>
822
- </MenuContent>
823
- }
824
- menuProps={{
825
- anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
826
- transformOrigin: { vertical: 'top', horizontal: 'right' },
827
- }}
828
- >
829
- <CaretDownIcon />
830
- </DropdownMenu>
787
+ <div className="mapping-execution-builder__action-btn btn__dropdown-combo btn__dropdown-combo--primary">
788
+ {executionState.isExecuting ? (
789
+ <button
790
+ className="btn__dropdown-combo__canceler"
791
+ onClick={cancelExecution}
792
+ tabIndex={-1}
793
+ >
794
+ <div className="btn--dark btn--caution btn__dropdown-combo__canceler__label">
795
+ <PauseCircleIcon className="btn__dropdown-combo__canceler__label__icon" />
796
+ <div className="btn__dropdown-combo__canceler__label__title">
797
+ Stop
798
+ </div>
799
+ </div>
800
+ </button>
801
+ ) : (
802
+ <>
803
+ <button
804
+ className="btn__dropdown-combo__label"
805
+ onClick={execute}
806
+ disabled={
807
+ isStubbed_RawLambda(queryState.query) ||
808
+ !inputDataState.isValid ||
809
+ executionState.isGeneratingPlan ||
810
+ executionState.isExecuting
811
+ }
812
+ tabIndex={-1}
813
+ >
814
+ <PlayIcon className="btn__dropdown-combo__label__icon" />
815
+ <div className="btn__dropdown-combo__label__title">
816
+ Run Query
817
+ </div>
818
+ </button>
819
+ <DropdownMenu
820
+ className="btn__dropdown-combo__dropdown-btn"
821
+ disabled={
822
+ isStubbed_RawLambda(queryState.query) ||
823
+ !inputDataState.isValid ||
824
+ executionState.isGeneratingPlan ||
825
+ executionState.isExecuting
826
+ }
827
+ content={
828
+ <MenuContent>
829
+ <MenuContentItem
830
+ className="btn__dropdown-combo__option"
831
+ onClick={generatePlan}
832
+ >
833
+ Generate Plan
834
+ </MenuContentItem>
835
+ <MenuContentItem
836
+ className="btn__dropdown-combo__option"
837
+ onClick={debugPlanGeneration}
838
+ >
839
+ Debug
840
+ </MenuContentItem>
841
+ </MenuContent>
842
+ }
843
+ menuProps={{
844
+ anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
845
+ transformOrigin: { vertical: 'top', horizontal: 'right' },
846
+ }}
847
+ >
848
+ <CaretDownIcon />
849
+ </DropdownMenu>
850
+ </>
851
+ )}
831
852
  </div>
832
853
  </div>
833
854
  </div>
@@ -168,7 +168,7 @@ export const MappingExplorerContextMenu = observer(
168
168
 
169
169
  const allowRemoveFilter =
170
170
  mappingElement instanceof PureInstanceSetImplementation &&
171
- !!mappingElement.filter;
171
+ Boolean(mappingElement.filter);
172
172
 
173
173
  return (
174
174
  <MenuContent ref={ref}>
@@ -390,7 +390,7 @@ const MappingElementTreeNodeContainer = observer(
390
390
  {getMappingElementLabel(mappingElement, editorStore).value}
391
391
  </div>
392
392
  {mappingElement instanceof PureInstanceSetImplementation &&
393
- !!mappingElement.filter && (
393
+ Boolean(mappingElement.filter) && (
394
394
  <div className="mapping-explorer__item__label__filter-icon">
395
395
  <FilterIcon />
396
396
  </div>
@@ -62,6 +62,7 @@ import {
62
62
  PanelLoadingIndicator,
63
63
  ContextMenu,
64
64
  ModalHeader,
65
+ PanelFormSection,
65
66
  } from '@finos/legend-art';
66
67
  import {
67
68
  assertErrorThrown,
@@ -225,12 +226,15 @@ const CreateTestSuiteModal = observer(
225
226
  </ModalHeader>
226
227
  <ModalBody>
227
228
  <PanelLoadingIndicator
229
+ className="panel-loading-indicator--in__modal"
228
230
  isLoading={creatorState.isCreatingSuiteState.isInProgress}
229
231
  />
230
232
  {creatorState.isCreatingSuiteState.message && (
231
- <div className="service-registration-editor__progress-msg">
232
- {`${creatorState.isCreatingSuiteState.message}...`}
233
- </div>
233
+ <PanelFormSection>
234
+ <div className="service-registration-editor__progress-msg">
235
+ {`${creatorState.isCreatingSuiteState.message}...`}
236
+ </div>
237
+ </PanelFormSection>
234
238
  )}
235
239
  <PanelFormTextField
236
240
  ref={inputRef}
@@ -746,15 +750,7 @@ const MappingTestableQueryEditor = observer(
746
750
  </div>
747
751
  {!isStubbed_RawLambda(queryState.query) && (
748
752
  <PanelContent>
749
- <div
750
- className="mapping-test-editor__query-panel__query"
751
- title="Double click to edit in query builder"
752
- onDoubleClick={(event) => {
753
- event.preventDefault();
754
- event.stopPropagation();
755
- editWithQueryBuilder()();
756
- }}
757
- >
753
+ <div className="mapping-test-editor__query-panel__query">
758
754
  <CodeEditor
759
755
  inputValue={queryState.lambdaString}
760
756
  isReadOnly={true}