@finos/legend-application-studio 28.18.145 → 28.18.147

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 (46) hide show
  1. package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.d.ts.map +1 -1
  2. package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.js +31 -7
  3. package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.js.map +1 -1
  4. package/lib/components/editor/editor-group/function-activator/FunctionEditor.d.ts.map +1 -1
  5. package/lib/components/editor/editor-group/function-activator/FunctionEditor.js +7 -4
  6. package/lib/components/editor/editor-group/function-activator/FunctionEditor.js.map +1 -1
  7. package/lib/components/editor/editor-group/ingest-editor/IngestDefinitionEditor.d.ts.map +1 -1
  8. package/lib/components/editor/editor-group/ingest-editor/IngestDefinitionEditor.js +21 -16
  9. package/lib/components/editor/editor-group/ingest-editor/IngestDefinitionEditor.js.map +1 -1
  10. package/lib/components/editor/ingest-definition-editor.css +1 -0
  11. package/lib/components/editor/ingest-definition-editor.css.map +1 -0
  12. package/lib/index.css +2 -2
  13. package/lib/index.css.map +1 -1
  14. package/lib/package.json +1 -1
  15. package/lib/stores/editor/GraphEditFormModeState.d.ts.map +1 -1
  16. package/lib/stores/editor/GraphEditFormModeState.js +1 -0
  17. package/lib/stores/editor/GraphEditFormModeState.js.map +1 -1
  18. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.d.ts.map +1 -1
  19. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.js +7 -33
  20. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.js.map +1 -1
  21. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts +1 -0
  22. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts.map +1 -1
  23. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js +3 -0
  24. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js.map +1 -1
  25. package/lib/stores/ingestion/IngestDeploymentServerClient.d.ts +2 -0
  26. package/lib/stores/ingestion/IngestDeploymentServerClient.d.ts.map +1 -1
  27. package/lib/stores/ingestion/IngestDeploymentServerClient.js +7 -3
  28. package/lib/stores/ingestion/IngestDeploymentServerClient.js.map +1 -1
  29. package/lib/stores/ingestion/IngestionDeploymentResponse.d.ts +1 -0
  30. package/lib/stores/ingestion/IngestionDeploymentResponse.d.ts.map +1 -1
  31. package/lib/stores/ingestion/IngestionDeploymentResponse.js +1 -0
  32. package/lib/stores/ingestion/IngestionDeploymentResponse.js.map +1 -1
  33. package/lib/stores/ingestion/IngestionManager.d.ts +1 -0
  34. package/lib/stores/ingestion/IngestionManager.d.ts.map +1 -1
  35. package/lib/stores/ingestion/IngestionManager.js +11 -1
  36. package/lib/stores/ingestion/IngestionManager.js.map +1 -1
  37. package/package.json +3 -3
  38. package/src/components/editor/editor-group/dataProduct/DataPoductEditor.tsx +111 -29
  39. package/src/components/editor/editor-group/function-activator/FunctionEditor.tsx +12 -5
  40. package/src/components/editor/editor-group/ingest-editor/IngestDefinitionEditor.tsx +82 -53
  41. package/src/stores/editor/GraphEditFormModeState.ts +1 -0
  42. package/src/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.ts +9 -41
  43. package/src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts +6 -0
  44. package/src/stores/ingestion/IngestDeploymentServerClient.ts +14 -3
  45. package/src/stores/ingestion/IngestionDeploymentResponse.ts +1 -0
  46. package/src/stores/ingestion/IngestionManager.ts +18 -1
@@ -1 +1 @@
1
- {"version":3,"file":"IngestionDeploymentResponse.d.ts","sourceRoot":"","sources":["../../../src/stores/ingestion/IngestionDeploymentResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAG9E,oBAAY,wCAAwC;IAClD,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,qBAAa,gCAAgC;IAC3C,MAAM,EAAG,wCAAwC,CAAC;CACnD;AAED,qBAAa,kCAAkC;IAC7C,MAAM,EAAG,wCAAwC,CAAC;IAClD,OAAO,EAAG,WAAW,CAAC;IAEtB,MAAM,CAAC,QAAQ,CAAC,aAAa,2DAI3B;CACH;AAED,eAAO,MAAM,wCAAwC,GACnD,MAAM,WAAW,CAAC,kCAAkC,CAAC,KACpD,kCAOF,CAAC;AAEF,qBAAa,kCAAkC;IAC7C,mBAAmB,EAAG,MAAM,CAAC;IAE7B,MAAM,CAAC,QAAQ,CAAC,aAAa,2DAI3B;CACH;AAED,qBAAa,6BAA6B;IACxC,kBAAkB,EAAE,kCAAkC,CAAC;IACvD,kBAAkB,EAAE,kCAAkC,GAAG,SAAS,CAAC;gBAGjE,kBAAkB,EAAE,kCAAkC,EACtD,kBAAkB,EAAE,kCAAkC,GAAG,SAAS;CAKrE"}
1
+ {"version":3,"file":"IngestionDeploymentResponse.d.ts","sourceRoot":"","sources":["../../../src/stores/ingestion/IngestionDeploymentResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAG9E,oBAAY,wCAAwC;IAClD,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,qBAAa,gCAAgC;IAC3C,MAAM,EAAG,wCAAwC,CAAC;CACnD;AAED,qBAAa,kCAAkC;IAC7C,MAAM,EAAG,wCAAwC,CAAC;IAClD,OAAO,EAAG,WAAW,CAAC;IAEtB,MAAM,CAAC,QAAQ,CAAC,aAAa,2DAI3B;CACH;AAED,eAAO,MAAM,wCAAwC,GACnD,MAAM,WAAW,CAAC,kCAAkC,CAAC,KACpD,kCAOF,CAAC;AAEF,qBAAa,kCAAkC;IAC7C,mBAAmB,EAAG,MAAM,CAAC;IAC7B,cAAc,EAAE,WAAW,GAAG,SAAS,CAAC;IAExC,MAAM,CAAC,QAAQ,CAAC,aAAa,2DAI3B;CACH;AAED,qBAAa,6BAA6B;IACxC,kBAAkB,EAAE,kCAAkC,CAAC;IACvD,kBAAkB,EAAE,kCAAkC,GAAG,SAAS,CAAC;gBAGjE,kBAAkB,EAAE,kCAAkC,EACtD,kBAAkB,EAAE,kCAAkC,GAAG,SAAS;CAKrE"}
@@ -40,6 +40,7 @@ export const createIngestDefinitionValidationResponse = (json) => {
40
40
  };
41
41
  export class IngestDefinitionDeploymentResponse {
42
42
  ingestDefinitionUrn;
43
+ write_location;
43
44
  static serialization = new SerializationFactory(createModelSchema(IngestDefinitionDeploymentResponse, {
44
45
  ingestDefinitionUrn: primitive(),
45
46
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"IngestionDeploymentResponse.js","sourceRoot":"","sources":["../../../src/stores/ingestion/IngestionDeploymentResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAoB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEzD,MAAM,CAAN,IAAY,wCAIX;AAJD,WAAY,wCAAwC;IAClD,uEAA2B,CAAA;IAC3B,+DAAmB,CAAA;IACnB,+DAAmB,CAAA;AACrB,CAAC,EAJW,wCAAwC,KAAxC,wCAAwC,QAInD;AAED,MAAM,OAAO,gCAAgC;IAC3C,MAAM,CAA4C;CACnD;AAED,MAAM,OAAO,kCAAkC;IAC7C,MAAM,CAA4C;IAClD,OAAO,CAAe;IAEtB,MAAM,CAAU,aAAa,GAAG,IAAI,oBAAoB,CACtD,iBAAiB,CAAC,kCAAkC,EAAE;QACpD,MAAM,EAAE,SAAS,EAAE;KACpB,CAAC,CACH,CAAC;;AAGJ,MAAM,CAAC,MAAM,wCAAwC,GAAG,CACtD,IAAqD,EACjB,EAAE;IACtC,MAAM,kCAAkC,GACtC,IAAI,kCAAkC,EAAE,CAAC;IAC3C,kCAAkC,CAAC,MAAM;QACvC,IAAI,CAAC,MAAkD,CAAC;IAC1D,kCAAkC,CAAC,OAAO,GAAG,IAAI,CAAC;IAClD,OAAO,kCAAkC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,OAAO,kCAAkC;IAC7C,mBAAmB,CAAU;IAE7B,MAAM,CAAU,aAAa,GAAG,IAAI,oBAAoB,CACtD,iBAAiB,CAAC,kCAAkC,EAAE;QACpD,mBAAmB,EAAE,SAAS,EAAE;KACjC,CAAC,CACH,CAAC;;AAGJ,MAAM,OAAO,6BAA6B;IACxC,kBAAkB,CAAqC;IACvD,kBAAkB,CAAiD;IAEnE,YACE,kBAAsD,EACtD,kBAAkE;QAElE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"IngestionDeploymentResponse.js","sourceRoot":"","sources":["../../../src/stores/ingestion/IngestionDeploymentResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAoB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEzD,MAAM,CAAN,IAAY,wCAIX;AAJD,WAAY,wCAAwC;IAClD,uEAA2B,CAAA;IAC3B,+DAAmB,CAAA;IACnB,+DAAmB,CAAA;AACrB,CAAC,EAJW,wCAAwC,KAAxC,wCAAwC,QAInD;AAED,MAAM,OAAO,gCAAgC;IAC3C,MAAM,CAA4C;CACnD;AAED,MAAM,OAAO,kCAAkC;IAC7C,MAAM,CAA4C;IAClD,OAAO,CAAe;IAEtB,MAAM,CAAU,aAAa,GAAG,IAAI,oBAAoB,CACtD,iBAAiB,CAAC,kCAAkC,EAAE;QACpD,MAAM,EAAE,SAAS,EAAE;KACpB,CAAC,CACH,CAAC;;AAGJ,MAAM,CAAC,MAAM,wCAAwC,GAAG,CACtD,IAAqD,EACjB,EAAE;IACtC,MAAM,kCAAkC,GACtC,IAAI,kCAAkC,EAAE,CAAC;IAC3C,kCAAkC,CAAC,MAAM;QACvC,IAAI,CAAC,MAAkD,CAAC;IAC1D,kCAAkC,CAAC,OAAO,GAAG,IAAI,CAAC;IAClD,OAAO,kCAAkC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,OAAO,kCAAkC;IAC7C,mBAAmB,CAAU;IAC7B,cAAc,CAA0B;IAExC,MAAM,CAAU,aAAa,GAAG,IAAI,oBAAoB,CACtD,iBAAiB,CAAC,kCAAkC,EAAE;QACpD,mBAAmB,EAAE,SAAS,EAAE;KACjC,CAAC,CACH,CAAC;;AAGJ,MAAM,OAAO,6BAA6B;IACxC,kBAAkB,CAAqC;IACvD,kBAAkB,CAAiD;IAEnE,YACE,kBAAsD,EACtD,kBAAkE;QAElE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;CACF"}
@@ -32,6 +32,7 @@ export declare class IngestionManager {
32
32
  deployDataProduct(grammarText: string, appDirNode: AppDirNode, messageCallBack: (message: string) => void, token: string | undefined): Promise<AdhocDataProductDeployResponse>;
33
33
  private _validate;
34
34
  private _deploy;
35
+ private _fetchDeployLocations;
35
36
  private identifyIngestDeploymentServer;
36
37
  }
37
38
  //# sourceMappingURL=IngestionManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IngestionManager.d.ts","sourceRoot":"","sources":["../../../src/stores/ingestion/IngestionManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAM/E,OAAO,EAIL,6BAA6B,EAE9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,qCAAqC,CAAC;AAE7C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,2BAA2B,CAA8B;IACjE,OAAO,CAAC,4BAA4B,CAA+B;IACnE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,gBAAgB,CAAS;gBAG/B,MAAM,EAAE,4BAA4B,EACpC,gBAAgB,EAAE,6BAA6B;IAkBjD,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAOpD,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAK5C,MAAM,CACV,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,6BAA6B,CAAC;IAmCnC,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,8BAA8B,CAAC;YAgB5B,SAAS;YAyBT,OAAO;YAgBP,8BAA8B;CAkB7C"}
1
+ {"version":3,"file":"IngestionManager.d.ts","sourceRoot":"","sources":["../../../src/stores/ingestion/IngestionManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAM/E,OAAO,EAIL,6BAA6B,EAE9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,qCAAqC,CAAC;AAE7C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,2BAA2B,CAA8B;IACjE,OAAO,CAAC,4BAA4B,CAA+B;IACnE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,gBAAgB,CAAS;gBAG/B,MAAM,EAAE,4BAA4B,EACpC,gBAAgB,EAAE,6BAA6B;IAkBjD,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAOpD,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAK5C,MAAM,CACV,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,6BAA6B,CAAC;IAyCnC,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,8BAA8B,CAAC;YAgB5B,SAAS;YAyBT,OAAO;YAgBP,qBAAqB;YAWrB,8BAA8B;CAkB7C"}
@@ -54,7 +54,13 @@ export class IngestionManager {
54
54
  }
55
55
  messageCallBack(`Validation Success. Deploying ingest with server ${this.ingestDeploymentServerClient.baseUrl ?? ''} for realm ${this.ingestDeploymentServerClient.environmentClassification}...`);
56
56
  const deployResponse = await this._deploy(ingestDefinition, undefined, token);
57
- fullResponse.deploymentResponse = deployResponse;
57
+ try {
58
+ messageCallBack(`Deployment Success. Fetching write location...`);
59
+ await this._fetchDeployLocations(deployResponse, token);
60
+ }
61
+ catch (error) {
62
+ assertErrorThrown(error);
63
+ }
58
64
  return fullResponse;
59
65
  }
60
66
  async deployDataProduct(grammarText, appDirNode, messageCallBack, token) {
@@ -88,6 +94,10 @@ export class IngestionManager {
88
94
  const response = (await this.ingestDeploymentServerClient.deploy(ingestDefinition, token));
89
95
  return IngestDefinitionDeploymentResponse.serialization.fromJson(response);
90
96
  }
97
+ async _fetchDeployLocations(depploymentResponse, token) {
98
+ const response = (await this.ingestDeploymentServerClient.write_location(depploymentResponse.ingestDefinitionUrn, token));
99
+ depploymentResponse.write_location = response;
100
+ }
91
101
  async identifyIngestDeploymentServer(appDirNode, token) {
92
102
  // we do not change if current appDirNode is the same as the one we are trying to set
93
103
  if (this.useDefaultServer || this.isCurrentAppDirNode(appDirNode)) {
@@ -1 +1 @@
1
- {"version":3,"file":"IngestionManager.js","sourceRoot":"","sources":["../../../src/stores/ingestion/IngestionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IngestionManager.js","sourceRoot":"","sources":["../../../src/stores/ingestion/IngestionManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-application-studio",
3
- "version": "28.18.145",
3
+ "version": "28.18.147",
4
4
  "description": "Legend Studio application core",
5
5
  "keywords": [
6
6
  "legend",
@@ -48,10 +48,10 @@
48
48
  "@finos/legend-application": "16.0.49",
49
49
  "@finos/legend-art": "7.1.103",
50
50
  "@finos/legend-code-editor": "2.0.83",
51
- "@finos/legend-data-cube": "0.2.16",
51
+ "@finos/legend-data-cube": "0.2.17",
52
52
  "@finos/legend-graph": "32.1.41",
53
53
  "@finos/legend-lego": "2.0.89",
54
- "@finos/legend-query-builder": "4.16.52",
54
+ "@finos/legend-query-builder": "4.16.53",
55
55
  "@finos/legend-server-depot": "6.0.92",
56
56
  "@finos/legend-server-sdlc": "5.3.58",
57
57
  "@finos/legend-server-showcase": "0.2.54",
@@ -17,6 +17,7 @@
17
17
  import { observer } from 'mobx-react-lite';
18
18
  import { useEditorStore } from '../../EditorStoreProvider.js';
19
19
  import {
20
+ type AccessPointGroupState,
20
21
  DataProductEditorState,
21
22
  generateUrlToDeployOnOpen,
22
23
  LakehouseAccessPointState,
@@ -48,6 +49,7 @@ import {
48
49
  MenuContent,
49
50
  MenuContentItem,
50
51
  CaretDownIcon,
52
+ WarningIcon,
51
53
  } from '@finos/legend-art';
52
54
  import React, { useRef, useState, useEffect } from 'react';
53
55
  import { filterByType } from '@finos/legend-shared';
@@ -57,10 +59,12 @@ import { useAuth } from 'react-oidc-context';
57
59
  import { CODE_EDITOR_LANGUAGE } from '@finos/legend-code-editor';
58
60
  import { CodeEditor } from '@finos/legend-lego/code-editor';
59
61
  import {
62
+ type AccessPointGroup,
60
63
  LakehouseTargetEnv,
61
64
  type LakehouseAccessPoint,
62
65
  } from '@finos/legend-graph';
63
66
  import {
67
+ accessPointGroup_setDescription,
64
68
  dataProduct_setDescription,
65
69
  dataProduct_setTitle,
66
70
  } from '../../../../stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js';
@@ -178,18 +182,24 @@ const NewAccessPointAccessPOint = observer(
178
182
  );
179
183
 
180
184
  interface DescriptionTextAreaProps {
181
- accessPoint: LakehouseAccessPoint;
185
+ accessPoint: LakehouseAccessPoint | AccessPointGroup;
182
186
  handleMouseOver: (event: React.MouseEvent<HTMLDivElement>) => void;
183
187
  handleMouseOut: (event: React.MouseEvent<HTMLDivElement>) => void;
188
+ className?: string;
184
189
  }
185
190
 
186
191
  const DescriptionTextArea: React.FC<DescriptionTextAreaProps> = ({
187
192
  accessPoint,
188
193
  handleMouseOver,
189
194
  handleMouseOut,
195
+ className,
190
196
  }) => {
191
197
  return (
192
- <div onMouseOver={handleMouseOver} onMouseOut={handleMouseOut}>
198
+ <div
199
+ onMouseOver={handleMouseOver}
200
+ onMouseOut={handleMouseOut}
201
+ className={clsx(className)}
202
+ >
193
203
  {accessPoint.description}
194
204
  </div>
195
205
  );
@@ -444,6 +454,91 @@ const DataProductDeploymentResponseModal = observer(
444
454
  },
445
455
  );
446
456
 
457
+ const AccessPointGroupSection = observer(
458
+ (props: { groupState: AccessPointGroupState; isReadOnly: boolean }) => {
459
+ const { groupState, isReadOnly } = props;
460
+ const [editingDescription, setEditingDescription] = useState(false);
461
+ const [isHovering, setIsHovering] = useState(false);
462
+
463
+ const handleEdit = () => setEditingDescription(true);
464
+ const handleBlur = () => {
465
+ setEditingDescription(false);
466
+ setIsHovering(false);
467
+ };
468
+ const handleMouseOver: React.MouseEventHandler<HTMLDivElement> = () => {
469
+ setIsHovering(true);
470
+ };
471
+ const handleMouseOut: React.MouseEventHandler<HTMLDivElement> = () => {
472
+ setIsHovering(false);
473
+ };
474
+
475
+ const updateGroupDescription = (val: string): void => {
476
+ accessPointGroup_setDescription(groupState.value, val);
477
+ };
478
+ return (
479
+ <div
480
+ key={groupState.value.id}
481
+ className="access-point-editor__group-container"
482
+ >
483
+ <div className="access-point-editor__group-container__title">
484
+ {groupState.value.id}
485
+ </div>
486
+ <div className="access-point-editor__group-container__description-editor">
487
+ {editingDescription ? (
488
+ <textarea
489
+ className="panel__content__form__section__input"
490
+ spellCheck={false}
491
+ value={groupState.value.description ?? ''}
492
+ onChange={(event) => updateGroupDescription(event.target.value)}
493
+ placeholder="Provide a description for this Access Point Group"
494
+ onBlur={handleBlur}
495
+ style={{
496
+ overflow: 'hidden',
497
+ resize: 'none',
498
+ padding: '0.25rem',
499
+ }}
500
+ />
501
+ ) : (
502
+ <div
503
+ onClick={handleEdit}
504
+ title="Click to edit description"
505
+ className="access-point-editor__description-container"
506
+ >
507
+ {groupState.value.description ? (
508
+ <DescriptionTextArea
509
+ accessPoint={groupState.value}
510
+ handleMouseOver={handleMouseOver}
511
+ handleMouseOut={handleMouseOut}
512
+ className="access-point-editor__group-container__description"
513
+ />
514
+ ) : (
515
+ <div
516
+ className="access-point-editor__group-container__description--warning"
517
+ onMouseOver={handleMouseOver}
518
+ onMouseOut={handleMouseOut}
519
+ >
520
+ <WarningIcon />
521
+ No description provided
522
+ </div>
523
+ )}
524
+ {isHovering && hoverIcon()}
525
+ </div>
526
+ )}
527
+ </div>
528
+ {groupState.accessPointStates
529
+ .filter(filterByType(LakehouseAccessPointState))
530
+ .map((apState) => (
531
+ <LakehouseDataProductAcccessPointEditor
532
+ key={apState.accessPoint.id}
533
+ isReadOnly={isReadOnly}
534
+ accessPointState={apState}
535
+ />
536
+ ))}
537
+ </div>
538
+ );
539
+ },
540
+ );
541
+
447
542
  export const DataProductEditor = observer(() => {
448
543
  const editorStore = useEditorStore();
449
544
  const dataProductEditorState =
@@ -565,38 +660,25 @@ export const DataProductEditor = observer(() => {
565
660
  </PanelHeaderActionItem>
566
661
  </PanelHeaderActions>
567
662
  </PanelHeader>
568
- <div style={{ overflow: 'auto' }}>
569
- <PanelContent>
663
+ <PanelContent>
664
+ <div style={{ overflow: 'auto' }}>
570
665
  {dataProductEditorState.accessPointGroupStates.map(
571
666
  (groupState) => (
572
- <div
667
+ <AccessPointGroupSection
573
668
  key={groupState.value.id}
574
- className="access-point-editor__group-container"
575
- >
576
- <div className="access-point-editor__group-container__title">
577
- <div className="panel__header__title__content">
578
- {groupState.value.id}
579
- </div>
580
- </div>
581
- {groupState.accessPointStates
582
- .filter(filterByType(LakehouseAccessPointState))
583
- .map((apState) => (
584
- <LakehouseDataProductAcccessPointEditor
585
- key={apState.accessPoint.id}
586
- isReadOnly={isReadOnly}
587
- accessPointState={apState}
588
- />
589
- ))}
590
- </div>
669
+ groupState={groupState}
670
+ isReadOnly={isReadOnly}
671
+ />
591
672
  ),
592
673
  )}
593
- {!accessPointStates.length && (
594
- <DataProductEditorSplashScreen
595
- dataProductEditorState={dataProductEditorState}
596
- />
597
- )}
598
- </PanelContent>
599
- </div>
674
+ </div>
675
+ {!accessPointStates.length && (
676
+ <DataProductEditorSplashScreen
677
+ dataProductEditorState={dataProductEditorState}
678
+ />
679
+ )}
680
+ </PanelContent>
681
+
600
682
  {dataProductEditorState.accessPointModal && (
601
683
  <NewAccessPointAccessPOint
602
684
  dataProductEditorState={dataProductEditorState}
@@ -1046,7 +1046,6 @@ const FunctionDefinitionEditor = observer(
1046
1046
  }
1047
1047
  return <BlankPanelContent>Function Did Not Run</BlankPanelContent>;
1048
1048
  };
1049
-
1050
1049
  return (
1051
1050
  <>
1052
1051
  <PanelLoadingIndicator
@@ -1056,7 +1055,7 @@ const FunctionDefinitionEditor = observer(
1056
1055
  }
1057
1056
  />
1058
1057
  <div className="function-editor__definition">
1059
- <div className="function-editor__definition__item">
1058
+ <div className="function-editor__definition__item function-editor__definition__item-params">
1060
1059
  <div className="function-editor__definition__item__header">
1061
1060
  <div className="function-editor__definition__item__header__title">
1062
1061
  PARAMETERS
@@ -1100,7 +1099,7 @@ const FunctionDefinitionEditor = observer(
1100
1099
  )}
1101
1100
  </div>
1102
1101
  </div>
1103
- <div className="function-editor__definition__item">
1102
+ <div className="function-editor__definition__item function-editor__definition__item-lambda">
1104
1103
  <div className="function-editor__definition__item__header">
1105
1104
  <div className="function-editor__definition__item__header-wrapper">
1106
1105
  <div className="function-editor__definition__item__header__title">
@@ -1154,7 +1153,15 @@ const FunctionDefinitionEditor = observer(
1154
1153
  })}
1155
1154
  >
1156
1155
  <LambdaEditor
1157
- className="function-editor__definition__lambda-editor lambda-editor--dark"
1156
+ className={clsx(
1157
+ 'function-editor__definition__lambda-editor lambda-editor--dark',
1158
+ {
1159
+ 'function-editor__definition__lambda-editor-error': Boolean(
1160
+ lambdaEditorState.parserError ??
1161
+ lambdaEditorState.compilationError,
1162
+ ),
1163
+ },
1164
+ )}
1158
1165
  disabled={
1159
1166
  lambdaEditorState.isConvertingFunctionBodyToString ||
1160
1167
  isReadOnly
@@ -1165,7 +1172,7 @@ const FunctionDefinitionEditor = observer(
1165
1172
  />
1166
1173
  </div>
1167
1174
  </div>
1168
- <div className="function-editor__definition__item">
1175
+ <div className="function-editor__definition__item function-editor__definition__item-result function-editor__definition__result">
1169
1176
  <div className="function-editor__definition__item__header">
1170
1177
  <div className="function-editor__definition__item__header__title">
1171
1178
  RESULT
@@ -41,7 +41,7 @@ import { CODE_EDITOR_LANGUAGE } from '@finos/legend-code-editor';
41
41
  import { flowResult } from 'mobx';
42
42
  import { useAuth } from 'react-oidc-context';
43
43
  import {
44
- type IngestDefinitionDeploymentResponse,
44
+ IngestDefinitionDeploymentResponse,
45
45
  IngestDefinitionValidationResponse,
46
46
  } from '../../../../stores/ingestion/IngestionDeploymentResponse.js';
47
47
 
@@ -95,75 +95,81 @@ const IngestValidationError = observer(
95
95
  },
96
96
  );
97
97
 
98
- // TODO: show full report i.e write envs etc
99
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
100
98
  const IngestDeploymentResponseModal = observer(
101
99
  (props: {
102
- state: IngestDefinitionEditorState;
100
+ closeModal: () => void;
103
101
  deploymentResponse: IngestDefinitionDeploymentResponse;
102
+ copyHandler: (text: string, successMessage: string) => void;
104
103
  }) => {
105
- const { state, deploymentResponse } = props;
106
- const applicationStore = state.editorStore.applicationStore;
107
- const closeModal = (): void =>
108
- state.setValidateAndDeployResponse(undefined);
104
+ const { closeModal, deploymentResponse, copyHandler } = props;
109
105
  const copyURN = (text: string): void => {
110
- state.editorStore.applicationStore.clipboardService
111
- .copyTextToClipboard(text)
112
- .then(() =>
113
- state.editorStore.applicationStore.notificationService.notifySuccess(
114
- 'Ingest URN copied to clipboard',
115
- undefined,
116
- 2500,
117
- ),
118
- )
119
- .catch(state.editorStore.applicationStore.alertUnhandledError);
106
+ copyHandler(text, 'Ingest URN copied to clipboard');
120
107
  };
121
108
  return (
122
109
  <Dialog
123
110
  open={true}
124
111
  classes={{
125
- root: 'editor-modal__root-container',
126
- container: 'editor-modal__container',
127
- paper: 'editor-modal__content',
112
+ root: 'ingestion-modal__root-container',
113
+ container: 'ingestion-modal__container',
114
+ paper: 'ingestion-modal__content',
128
115
  }}
129
- onClose={closeModal}
130
116
  >
131
- <Modal
132
- darkMode={
133
- !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled
134
- }
135
- className="editor-modal"
136
- >
117
+ <Modal darkMode={true} className="ingestion-modal">
137
118
  <ModalHeader>
138
119
  <ModalTitle
139
- icon={<CheckCircleIcon />}
140
- title="Deployment URN"
120
+ icon={<CheckCircleIcon className="ingestion-modal--success" />}
121
+ title="Deployment Response"
141
122
  ></ModalTitle>
142
123
  </ModalHeader>
143
124
  <ModalBody>
144
- <PanelContent>
145
- <div>
146
- <div>Ingestion URN</div>
147
- <div>{deploymentResponse.ingestDefinitionUrn}</div>
148
-
149
- <div className="data-space__viewer__quickstart__tds__query-text__actions">
150
- <button
151
- className="data-space__viewer__quickstart__tds__query-text__action"
152
- tabIndex={-1}
153
- title="Copy"
154
- onClick={() => {
155
- copyURN(deploymentResponse.ingestDefinitionUrn);
156
- }}
157
- >
158
- <CopyIcon />
159
- </button>
160
- <button
161
- className="data-space__viewer__quickstart__tds__query-text__action"
162
- tabIndex={-1}
163
- ></button>
125
+ <div className="ingestion-modal__urn">
126
+ <div className="ingestion-modal__urn__info">
127
+ <div className="panel__content__form__section__header__label">
128
+ Deployment URN
129
+ </div>
130
+ <div className="ingestion-modal__urn__value">
131
+ {deploymentResponse.ingestDefinitionUrn}
164
132
  </div>
165
133
  </div>
166
- </PanelContent>
134
+ <div className="ingestion-modal__urn__copy">
135
+ <button
136
+ className="ingestion-modal__urn__copy--btn"
137
+ tabIndex={-1}
138
+ title="Copy"
139
+ onClick={() => {
140
+ copyURN(deploymentResponse.ingestDefinitionUrn);
141
+ }}
142
+ >
143
+ <CopyIcon />
144
+ </button>
145
+ </div>
146
+ </div>
147
+ <div className="ingestion-modal__write">
148
+ <div className="ingestion-modal__write__label">
149
+ Write Location
150
+ </div>
151
+ <div className="ingestion-modal__write--value">
152
+ {deploymentResponse.write_location ? (
153
+ <CodeEditor
154
+ inputValue={JSON.stringify(
155
+ deploymentResponse.write_location,
156
+ null,
157
+ 2,
158
+ )}
159
+ isReadOnly={true}
160
+ language={CODE_EDITOR_LANGUAGE.JSON}
161
+ extraEditorOptions={{
162
+ wordWrap: 'on',
163
+ }}
164
+ hideActionBar={true}
165
+ />
166
+ ) : (
167
+ <div className="ingestion-modal__write--no-value">
168
+ No write location provided
169
+ </div>
170
+ )}
171
+ </div>
172
+ </div>
167
173
  </ModalBody>
168
174
  <ModalFooter>
169
175
  <ModalFooterButton
@@ -186,7 +192,6 @@ export const IngestDefinitionEditor = observer(() => {
186
192
  );
187
193
  const ingestDef = ingestDefinitionEditorState.ingest;
188
194
  const auth = useAuth();
189
-
190
195
  const deployIngest = (): void => {
191
196
  // Trigger OAuth flow if not authenticated
192
197
  if (!auth.isAuthenticated) {
@@ -220,8 +225,32 @@ export const IngestDefinitionEditor = observer(() => {
220
225
  validateResponse={response}
221
226
  />
222
227
  );
228
+ } else if (response instanceof IngestDefinitionDeploymentResponse) {
229
+ const copyHanlder = (text: string, successMessage: string): void => {
230
+ ingestDefinitionEditorState.editorStore.applicationStore.clipboardService
231
+ .copyTextToClipboard(text)
232
+ .then(() =>
233
+ ingestDefinitionEditorState.editorStore.applicationStore.notificationService.notifySuccess(
234
+ successMessage,
235
+ undefined,
236
+ 2500,
237
+ ),
238
+ )
239
+ .catch(
240
+ ingestDefinitionEditorState.editorStore.applicationStore
241
+ .alertUnhandledError,
242
+ );
243
+ };
244
+ return (
245
+ <IngestDeploymentResponseModal
246
+ closeModal={() =>
247
+ ingestDefinitionEditorState.setValidateAndDeployResponse(undefined)
248
+ }
249
+ deploymentResponse={response}
250
+ copyHandler={copyHanlder}
251
+ />
252
+ );
223
253
  }
224
-
225
254
  return null;
226
255
  };
227
256
 
@@ -557,6 +557,7 @@ export class GraphEditFormModeState extends GraphEditorMode {
557
557
  *onLeave(): GeneratorFn<void> {
558
558
  this.editorStore.sqlPlaygroundState.setConnection(undefined);
559
559
  this.editorStore.tabManagerState.cacheAndClose();
560
+ this.editorStore.applicationStore.layoutService.setShowBackdrop(false);
560
561
  }
561
562
 
562
563
  *cleanupBeforeEntering(fallbackOptions?: {
@@ -47,10 +47,6 @@ import {
47
47
  } from '../ElementEditorInitialConfiguration.js';
48
48
  import type { AuthContextProps } from 'react-oidc-context';
49
49
  import { EXTERNAL_APPLICATION_NAVIGATION__generateUrlWithEditorConfig } from '../../../../../__lib__/LegendStudioNavigation.js';
50
- import {
51
- ActionAlertActionType,
52
- ActionAlertType,
53
- } from '@finos/legend-application';
54
50
  import { LEGEND_STUDIO_APP_EVENT } from '../../../../../__lib__/LegendStudioEvent.js';
55
51
 
56
52
  const createEditorInitialConfiguration = (): EditorInitialConfiguration => {
@@ -98,9 +94,12 @@ export class IngestDefinitionEditorState extends ElementEditorState {
98
94
  init_with_deploy: flow,
99
95
  deploy: flow,
100
96
  });
101
- const elementConfig = config?.elementEditorConfiguration;
102
- if (elementConfig instanceof IngestElementEditorInitialConfiguration) {
103
- this.deployOnOpen = elementConfig.deployOnOpen ?? false;
97
+ if (
98
+ config?.elementEditorConfiguration instanceof
99
+ IngestElementEditorInitialConfiguration
100
+ ) {
101
+ this.deployOnOpen =
102
+ config.elementEditorConfiguration.deployOnOpen ?? false;
104
103
  }
105
104
  }
106
105
 
@@ -170,44 +169,13 @@ export class IngestDefinitionEditorState extends ElementEditorState {
170
169
  this.editorStore.applicationStore.alertService.setBlockingAlert(
171
170
  undefined,
172
171
  );
173
- const deploymentResponse = response.deploymentResponse;
174
- if (deploymentResponse) {
172
+ if (response.deploymentResponse) {
175
173
  this.editorStore.applicationStore.logService.info(
176
174
  LogEvent.create(LEGEND_STUDIO_APP_EVENT.INGESTION_DEPLOY_SUCCESS_URN),
177
- deploymentResponse.ingestDefinitionUrn,
175
+ response.deploymentResponse.ingestDefinitionUrn,
178
176
  );
179
- this.editorStore.applicationStore.alertService.setActionAlertInfo({
180
- title: `Ingest Definition Deployment`,
181
- message: `Ingest definition deployed successfully. You may use URN for ingestion of Data`,
182
- prompt: `${deploymentResponse.ingestDefinitionUrn}`,
183
- type: ActionAlertType.STANDARD,
184
- actions: [
185
- {
186
- label: 'Copy URN',
187
- type: ActionAlertActionType.PROCEED,
188
- handler: (): void => {
189
- this.editorStore.applicationStore.clipboardService
190
- .copyTextToClipboard(deploymentResponse.ingestDefinitionUrn)
191
- .then(() =>
192
- this.editorStore.applicationStore.notificationService.notifySuccess(
193
- 'Ingest URN copied to clipboard',
194
- undefined,
195
- 2500,
196
- ),
197
- )
198
- .catch(this.editorStore.applicationStore.alertUnhandledError);
199
- },
200
- default: true,
201
- },
202
- {
203
- label: 'Close',
204
- type: ActionAlertActionType.PROCEED_WITH_CAUTION,
205
- },
206
- ],
207
- });
208
- } else {
209
- this.setValidateAndDeployResponse(response);
210
177
  }
178
+ this.setValidateAndDeployResponse(response);
211
179
  } catch (error) {
212
180
  this.editorStore.applicationStore.alertService.setBlockingAlert(
213
181
  undefined,
@@ -37,6 +37,12 @@ export const dataProduct_addAccessPoint = action(
37
37
  },
38
38
  );
39
39
 
40
+ export const accessPointGroup_setDescription = action(
41
+ (product: AccessPointGroup, description: string) => {
42
+ product.description = description;
43
+ },
44
+ );
45
+
40
46
  export const dataProduct_addAccessPointGroup = action(
41
47
  (product: DataProduct, accessPointGroup: AccessPointGroup) => {
42
48
  addUniqueEntry(