@finos/legend-application-studio 28.18.113 → 28.18.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/ElementIconUtils.d.ts.map +1 -1
- package/lib/components/ElementIconUtils.js +3 -1
- package/lib/components/ElementIconUtils.js.map +1 -1
- package/lib/components/editor/editor-group/EditorGroup.d.ts.map +1 -1
- package/lib/components/editor/editor-group/EditorGroup.js +5 -0
- package/lib/components/editor/editor-group/EditorGroup.js.map +1 -1
- package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.d.ts +26 -0
- package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.d.ts.map +1 -0
- package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.js +117 -0
- package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.js.map +1 -0
- package/lib/components/editor/side-bar/CreateNewElementModal.d.ts.map +1 -1
- package/lib/components/editor/side-bar/CreateNewElementModal.js +2 -0
- package/lib/components/editor/side-bar/CreateNewElementModal.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/editor/EditorGraphState.d.ts.map +1 -1
- package/lib/stores/editor/EditorGraphState.js +4 -1
- package/lib/stores/editor/EditorGraphState.js.map +1 -1
- package/lib/stores/editor/EditorStore.d.ts.map +1 -1
- package/lib/stores/editor/EditorStore.js +1 -0
- package/lib/stores/editor/EditorStore.js.map +1 -1
- package/lib/stores/editor/EditorTabManagerState.d.ts.map +1 -1
- package/lib/stores/editor/EditorTabManagerState.js +5 -1
- package/lib/stores/editor/EditorTabManagerState.js.map +1 -1
- package/lib/stores/editor/NewElementState.d.ts.map +1 -1
- package/lib/stores/editor/NewElementState.js +4 -1
- package/lib/stores/editor/NewElementState.js.map +1 -1
- package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts +56 -0
- package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts.map +1 -0
- package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js +175 -0
- package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js.map +1 -0
- package/lib/stores/editor/utils/ModelClassifierUtils.d.ts +1 -0
- package/lib/stores/editor/utils/ModelClassifierUtils.d.ts.map +1 -1
- package/lib/stores/editor/utils/ModelClassifierUtils.js +2 -0
- package/lib/stores/editor/utils/ModelClassifierUtils.js.map +1 -1
- package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts +19 -0
- package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts.map +1 -0
- package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js +25 -0
- package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js.map +1 -0
- package/package.json +13 -13
- package/src/components/ElementIconUtils.tsx +3 -0
- package/src/components/editor/editor-group/EditorGroup.tsx +4 -0
- package/src/components/editor/editor-group/dataProduct/DataPoductEditor.tsx +307 -0
- package/src/components/editor/side-bar/CreateNewElementModal.tsx +2 -0
- package/src/stores/editor/EditorGraphState.ts +3 -0
- package/src/stores/editor/EditorStore.ts +1 -0
- package/src/stores/editor/EditorTabManagerState.ts +4 -0
- package/src/stores/editor/NewElementState.ts +4 -0
- package/src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts +260 -0
- package/src/stores/editor/utils/ModelClassifierUtils.ts +2 -0
- package/src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts +36 -0
- package/tsconfig.json +3 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DataProductEditorState.js","sourceRoot":"","sources":["../../../../../../src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts"],"names":[],"mappings":"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"}
|
@@ -46,6 +46,7 @@ export declare enum PACKAGEABLE_ELEMENT_TYPE {
|
|
46
46
|
DATA = "DATA",
|
47
47
|
SNOWFLAKE_APP = "SNOWFLAKE_APP",
|
48
48
|
HOSTED_SERVICE = "HOSTED_SERVICE",
|
49
|
+
_DATA_PRODUCT = "BETA_DATA_PRODUCT",
|
49
50
|
TEMPORARY__LOCAL_CONNECTION = "LOCAL_CONNECTION",
|
50
51
|
INTERNAL__UnknownElement = "UNKNOWN"
|
51
52
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ModelClassifierUtils.d.ts","sourceRoot":"","sources":["../../../../src/stores/editor/utils/ModelClassifierUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,IAAI,EAMV,MAAM,qBAAqB,CAAC;AAG7B,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,IAAI,KAAG,mBAajD,CAAC;AAEF,oBAAY,wBAAwB;IAClC,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,eAAe,oBAAoB;IACnC,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,qBAAqB,0BAA0B;IAC/C,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,eAAe,oBAAoB;IACnC,wBAAwB,6BAA6B;IACrD,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IAEjC,2BAA2B,qBAAqB;IAChD,wBAAwB,YAAY;CACrC;AAED,oBAAY,qCAAqC;IAC/C,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IACf,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,KAAK,UAAU;CAChB"}
|
1
|
+
{"version":3,"file":"ModelClassifierUtils.d.ts","sourceRoot":"","sources":["../../../../src/stores/editor/utils/ModelClassifierUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,IAAI,EAMV,MAAM,qBAAqB,CAAC;AAG7B,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,IAAI,KAAG,mBAajD,CAAC;AAEF,oBAAY,wBAAwB;IAClC,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,eAAe,oBAAoB;IACnC,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,qBAAqB,0BAA0B;IAC/C,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,eAAe,oBAAoB;IACnC,wBAAwB,6BAA6B;IACrD,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IAEjC,aAAa,sBAAsB;IAEnC,2BAA2B,qBAAqB;IAChD,wBAAwB,YAAY;CACrC;AAED,oBAAY,qCAAqC;IAC/C,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IACf,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,KAAK,UAAU;CAChB"}
|
@@ -66,6 +66,8 @@ export var PACKAGEABLE_ELEMENT_TYPE;
|
|
66
66
|
PACKAGEABLE_ELEMENT_TYPE["DATA"] = "DATA";
|
67
67
|
PACKAGEABLE_ELEMENT_TYPE["SNOWFLAKE_APP"] = "SNOWFLAKE_APP";
|
68
68
|
PACKAGEABLE_ELEMENT_TYPE["HOSTED_SERVICE"] = "HOSTED_SERVICE";
|
69
|
+
// New Strategical Data Product
|
70
|
+
PACKAGEABLE_ELEMENT_TYPE["_DATA_PRODUCT"] = "BETA_DATA_PRODUCT";
|
69
71
|
PACKAGEABLE_ELEMENT_TYPE["TEMPORARY__LOCAL_CONNECTION"] = "LOCAL_CONNECTION";
|
70
72
|
PACKAGEABLE_ELEMENT_TYPE["INTERNAL__UnknownElement"] = "UNKNOWN";
|
71
73
|
})(PACKAGEABLE_ELEMENT_TYPE || (PACKAGEABLE_ELEMENT_TYPE = {}));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ModelClassifierUtils.js","sourceRoot":"","sources":["../../../../src/stores/editor/utils/ModelClassifierUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,EACL,WAAW,EACX,OAAO,EACP,aAAa,EACb,IAAI,GACL,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,kDAA2B,CAAA;IAC3B,0CAAmB,CAAA;IACnB,oCAAa,CAAA;IACb,8CAAuB,CAAA;AACzB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAuB,EAAE;IACtE,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;QAClC,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACvC,CAAC;SAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QACvC,OAAO,mBAAmB,CAAC,WAAW,CAAC;IACzC,CAAC;SAAM,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;QACjC,OAAO,mBAAmB,CAAC,KAAK,CAAC;IACnC,CAAC;SAAM,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QAChC,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAClC,CAAC;SAAM,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;QACnC,OAAO,mBAAmB,CAAC,OAAO,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,yBAAyB,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAN,IAAY,
|
1
|
+
{"version":3,"file":"ModelClassifierUtils.js","sourceRoot":"","sources":["../../../../src/stores/editor/utils/ModelClassifierUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,EACL,WAAW,EACX,OAAO,EACP,aAAa,EACb,IAAI,GACL,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,kDAA2B,CAAA;IAC3B,0CAAmB,CAAA;IACnB,oCAAa,CAAA;IACb,8CAAuB,CAAA;AACzB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAuB,EAAE;IACtE,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;QAClC,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACvC,CAAC;SAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QACvC,OAAO,mBAAmB,CAAC,WAAW,CAAC;IACzC,CAAC;SAAM,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;QACjC,OAAO,mBAAmB,CAAC,KAAK,CAAC;IACnC,CAAC;SAAM,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QAChC,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAClC,CAAC;SAAM,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;QACnC,OAAO,mBAAmB,CAAC,OAAO,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,yBAAyB,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAN,IAAY,wBA6BX;AA7BD,WAAY,wBAAwB;IAClC,mDAAuB,CAAA;IACvB,+CAAmB,CAAA;IACnB,+CAAmB,CAAA;IACnB,uDAA2B,CAAA;IAC3B,2CAAe,CAAA;IACf,uDAA2B,CAAA;IAC3B,iDAAqB,CAAA;IACrB,+CAAmB,CAAA;IACnB,yCAAa,CAAA;IACb,+DAAmC,CAAA;IACnC,iDAAqB,CAAA;IACrB,2DAA+B,CAAA;IAC/B,+CAAmB,CAAA;IACnB,+CAAmB,CAAA;IACnB,2EAA+C,CAAA;IAC/C,qDAAyB,CAAA;IACzB,+CAAmB,CAAA;IACnB,+DAAmC,CAAA;IACnC,iFAAqD,CAAA;IACrD,2DAA+B,CAAA;IAC/B,yCAAa,CAAA;IACb,2DAA+B,CAAA;IAC/B,6DAAiC,CAAA;IACjC,+BAA+B;IAC/B,+DAAmC,CAAA;IAEnC,4EAAgD,CAAA;IAChD,gEAAoC,CAAA;AACtC,CAAC,EA7BW,wBAAwB,KAAxB,wBAAwB,QA6BnC;AAED,MAAM,CAAN,IAAY,qCAOX;AAPD,WAAY,qCAAqC;IAC/C,wDAAe,CAAA;IACf,wDAAe,CAAA;IACf,wDAAe,CAAA;IACf,4EAAmC,CAAA;IACnC,kEAAyB,CAAA;IACzB,wDAAe,CAAA;AACjB,CAAC,EAPW,qCAAqC,KAArC,qCAAqC,QAOhD"}
|
@@ -0,0 +1,19 @@
|
|
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
|
+
import { type AccessPoint, type DataProduct } from '@finos/legend-graph';
|
17
|
+
export declare const dataProduct_deleteAccessPoint: (product: DataProduct, accessPoint: AccessPoint) => void;
|
18
|
+
export declare const dataProduct_addAccessPoint: (product: DataProduct, accessPoint: AccessPoint) => void;
|
19
|
+
//# sourceMappingURL=DSL_DataProduct_GraphModifierHelper.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DSL_DataProduct_GraphModifierHelper.d.ts","sourceRoot":"","sources":["../../../src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,qBAAqB,CAAC;AAK7B,eAAO,MAAM,6BAA6B,YAC9B,WAAW,eAAe,WAAW,SAGhD,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAC3B,WAAW,eAAe,WAAW,SAGhD,CAAC"}
|
@@ -0,0 +1,25 @@
|
|
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
|
+
import { observe_AccessPoint, } from '@finos/legend-graph';
|
17
|
+
import { addUniqueEntry, deleteEntry } from '@finos/legend-shared';
|
18
|
+
import { action } from 'mobx';
|
19
|
+
export const dataProduct_deleteAccessPoint = action((product, accessPoint) => {
|
20
|
+
deleteEntry(product.accessPoints, accessPoint);
|
21
|
+
});
|
22
|
+
export const dataProduct_addAccessPoint = action((product, accessPoint) => {
|
23
|
+
addUniqueEntry(product.accessPoints, observe_AccessPoint(accessPoint));
|
24
|
+
});
|
25
|
+
//# sourceMappingURL=DSL_DataProduct_GraphModifierHelper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DSL_DataProduct_GraphModifierHelper.js","sourceRoot":"","sources":["../../../src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CACjD,CAAC,OAAoB,EAAE,WAAwB,EAAE,EAAE;IACjD,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAC9C,CAAC,OAAoB,EAAE,WAAwB,EAAE,EAAE;IACjD,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC,CACF,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@finos/legend-application-studio",
|
3
|
-
"version": "28.18.
|
3
|
+
"version": "28.18.115",
|
4
4
|
"description": "Legend Studio application core",
|
5
5
|
"keywords": [
|
6
6
|
"legend",
|
@@ -45,18 +45,18 @@
|
|
45
45
|
"test:watch": "jest --watch"
|
46
46
|
},
|
47
47
|
"dependencies": {
|
48
|
-
"@finos/legend-application": "16.0.
|
49
|
-
"@finos/legend-art": "7.1.
|
50
|
-
"@finos/legend-code-editor": "2.0.
|
51
|
-
"@finos/legend-data-cube": "0.1.
|
52
|
-
"@finos/legend-graph": "32.1.
|
53
|
-
"@finos/legend-lego": "2.0.
|
54
|
-
"@finos/legend-query-builder": "4.16.
|
55
|
-
"@finos/legend-server-depot": "6.0.
|
56
|
-
"@finos/legend-server-sdlc": "5.3.
|
57
|
-
"@finos/legend-server-showcase": "0.2.
|
58
|
-
"@finos/legend-shared": "11.0.
|
59
|
-
"@finos/legend-storage": "3.0.
|
48
|
+
"@finos/legend-application": "16.0.36",
|
49
|
+
"@finos/legend-art": "7.1.93",
|
50
|
+
"@finos/legend-code-editor": "2.0.62",
|
51
|
+
"@finos/legend-data-cube": "0.1.25",
|
52
|
+
"@finos/legend-graph": "32.1.20",
|
53
|
+
"@finos/legend-lego": "2.0.66",
|
54
|
+
"@finos/legend-query-builder": "4.16.26",
|
55
|
+
"@finos/legend-server-depot": "6.0.88",
|
56
|
+
"@finos/legend-server-sdlc": "5.3.56",
|
57
|
+
"@finos/legend-server-showcase": "0.2.52",
|
58
|
+
"@finos/legend-shared": "11.0.11",
|
59
|
+
"@finos/legend-storage": "3.0.130",
|
60
60
|
"@testing-library/dom": "10.4.0",
|
61
61
|
"@testing-library/react": "16.2.0",
|
62
62
|
"@types/react": "19.0.10",
|
@@ -44,6 +44,7 @@ import {
|
|
44
44
|
PURE_SnowflakeAppIcon,
|
45
45
|
LaunchIcon,
|
46
46
|
LinkIcon,
|
47
|
+
PURE_DataProductIcon,
|
47
48
|
} from '@finos/legend-art';
|
48
49
|
import { PACKAGEABLE_ELEMENT_TYPE } from '../stores/editor/utils/ModelClassifierUtils.js';
|
49
50
|
|
@@ -90,6 +91,8 @@ export const getElementTypeIcon = (
|
|
90
91
|
return <PURE_ServiceIcon />;
|
91
92
|
case PACKAGEABLE_ELEMENT_TYPE.CONNECTION:
|
92
93
|
return <PURE_ConnectionIcon />;
|
94
|
+
case PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT:
|
95
|
+
return <PURE_DataProductIcon />;
|
93
96
|
case PACKAGEABLE_ELEMENT_TYPE.TEMPORARY__LOCAL_CONNECTION:
|
94
97
|
return <LinkIcon />;
|
95
98
|
case PACKAGEABLE_ELEMENT_TYPE.RUNTIME:
|
@@ -88,6 +88,8 @@ import {
|
|
88
88
|
} from '../../workspace-setup/WorkspaceSetup.js';
|
89
89
|
import { HostedServiceFunctionActivatorEditorState } from '../../../stores/editor/editor-state/element-editor-state/function-activator/HostedServiceFunctionActivatorEditorState.js';
|
90
90
|
import { HostedServiceFunctionActivatorEditor } from './function-activator/HostedServiceFunctionActivatorEditor.js';
|
91
|
+
import { DataProductEditorState } from '../../../stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
|
92
|
+
import { DataProductEditor } from './dataProduct/DataPoductEditor.js';
|
91
93
|
|
92
94
|
export const ViewerEditorGroupSplashScreen: React.FC = () => {
|
93
95
|
const commandListWidth = 300;
|
@@ -274,6 +276,8 @@ export const EditorGroup = observer(() => {
|
|
274
276
|
return <MappingEditor key={currentTabState.uuid} />;
|
275
277
|
} else if (currentTabState instanceof ServiceEditorState) {
|
276
278
|
return <ServiceEditor key={currentTabState.uuid} />;
|
279
|
+
} else if (currentTabState instanceof DataProductEditorState) {
|
280
|
+
return <DataProductEditor key={currentTabState.uuid} />;
|
277
281
|
} else if (currentTabState instanceof PackageableRuntimeEditorState) {
|
278
282
|
return <PackageableRuntimeEditor key={currentTabState.uuid} />;
|
279
283
|
} else if (
|
@@ -0,0 +1,307 @@
|
|
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 { observer } from 'mobx-react-lite';
|
18
|
+
import { useEditorStore } from '../../EditorStoreProvider.js';
|
19
|
+
import {
|
20
|
+
DataProductEditorState,
|
21
|
+
LakehouseAccessPointState,
|
22
|
+
} from '../../../../stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
|
23
|
+
import {
|
24
|
+
clsx,
|
25
|
+
LockIcon,
|
26
|
+
PanelContent,
|
27
|
+
PanelHeader,
|
28
|
+
PanelHeaderActions,
|
29
|
+
Dialog,
|
30
|
+
PanelDivider,
|
31
|
+
InputWithInlineValidation,
|
32
|
+
useResizeDetector,
|
33
|
+
AccessPointIcon,
|
34
|
+
TimesIcon,
|
35
|
+
PlusIcon,
|
36
|
+
PanelHeaderActionItem,
|
37
|
+
} from '@finos/legend-art';
|
38
|
+
import { useRef, useState, useEffect } from 'react';
|
39
|
+
import { filterByType } from '@finos/legend-shared';
|
40
|
+
import { InlineLambdaEditor } from '@finos/legend-query-builder';
|
41
|
+
import { flowResult } from 'mobx';
|
42
|
+
|
43
|
+
const NewAccessPointAccessPOint = observer(
|
44
|
+
(props: { dataProductEditorState: DataProductEditorState }) => {
|
45
|
+
const { dataProductEditorState: dataProductEditorState } = props;
|
46
|
+
const accessPointInputRef = useRef<HTMLInputElement>(null);
|
47
|
+
const [id, setId] = useState<string | undefined>(undefined);
|
48
|
+
const handleIdChange: React.ChangeEventHandler<HTMLInputElement> = (
|
49
|
+
event,
|
50
|
+
) => setId(event.target.value);
|
51
|
+
const handleClose = () => {
|
52
|
+
dataProductEditorState.setAccessPointModal(false);
|
53
|
+
};
|
54
|
+
const handleSubmit = () => {
|
55
|
+
if (id) {
|
56
|
+
dataProductEditorState.addAccessPoint(id);
|
57
|
+
handleClose();
|
58
|
+
}
|
59
|
+
};
|
60
|
+
const handleEnter = (): void => {
|
61
|
+
accessPointInputRef.current?.focus();
|
62
|
+
};
|
63
|
+
const disableCreateButton =
|
64
|
+
id === '' ||
|
65
|
+
id === undefined ||
|
66
|
+
dataProductEditorState.accessPointStates
|
67
|
+
.map((e) => e.accessPoint.id)
|
68
|
+
.includes(id);
|
69
|
+
const errors =
|
70
|
+
id === ''
|
71
|
+
? `ID is empty`
|
72
|
+
: dataProductEditorState.accessPointStates
|
73
|
+
.map((e) => e.accessPoint.id)
|
74
|
+
.includes(id ?? '')
|
75
|
+
? `ID already exists`
|
76
|
+
: undefined;
|
77
|
+
return (
|
78
|
+
<Dialog
|
79
|
+
open={true}
|
80
|
+
onClose={handleClose}
|
81
|
+
TransitionProps={{
|
82
|
+
onEnter: handleEnter,
|
83
|
+
}}
|
84
|
+
classes={{
|
85
|
+
container: 'search-modal__container',
|
86
|
+
}}
|
87
|
+
PaperProps={{
|
88
|
+
classes: {
|
89
|
+
root: 'search-modal__inner-container',
|
90
|
+
},
|
91
|
+
}}
|
92
|
+
>
|
93
|
+
<form
|
94
|
+
onSubmit={(event) => {
|
95
|
+
event.preventDefault();
|
96
|
+
handleSubmit();
|
97
|
+
}}
|
98
|
+
className={clsx('modal search-modal', {
|
99
|
+
'modal--dark': true,
|
100
|
+
})}
|
101
|
+
>
|
102
|
+
<div className="modal__title">New Access Point</div>
|
103
|
+
<div>
|
104
|
+
<InputWithInlineValidation
|
105
|
+
className={clsx('input new-access-point-modal__id-input', {
|
106
|
+
'input--dark': true,
|
107
|
+
})}
|
108
|
+
ref={accessPointInputRef}
|
109
|
+
spellCheck={false}
|
110
|
+
value={id}
|
111
|
+
onChange={handleIdChange}
|
112
|
+
placeholder="Access Point ID"
|
113
|
+
error={errors}
|
114
|
+
/>
|
115
|
+
</div>
|
116
|
+
<PanelDivider />
|
117
|
+
<div className="search-modal__actions">
|
118
|
+
<button
|
119
|
+
className={clsx('btn btn--primary', {
|
120
|
+
'btn--dark': true,
|
121
|
+
})}
|
122
|
+
disabled={disableCreateButton}
|
123
|
+
>
|
124
|
+
Create
|
125
|
+
</button>
|
126
|
+
</div>
|
127
|
+
</form>
|
128
|
+
</Dialog>
|
129
|
+
);
|
130
|
+
},
|
131
|
+
);
|
132
|
+
|
133
|
+
export const LakehouseDataProductAcccessPointEditor = observer(
|
134
|
+
(props: {
|
135
|
+
accessPointState: LakehouseAccessPointState;
|
136
|
+
isReadOnly: boolean;
|
137
|
+
}) => {
|
138
|
+
const { accessPointState } = props;
|
139
|
+
const accessPoint = accessPointState.accessPoint;
|
140
|
+
const productEditorState = accessPointState.state;
|
141
|
+
const lambdaEditorState = accessPointState.lambdaState;
|
142
|
+
const propertyHasParserError = productEditorState.accessPointStates
|
143
|
+
.filter(filterByType(LakehouseAccessPointState))
|
144
|
+
.find((pm) => pm.lambdaState.parserError);
|
145
|
+
return (
|
146
|
+
<div
|
147
|
+
className={clsx('access-point-editor', {
|
148
|
+
backdrop__element: propertyHasParserError,
|
149
|
+
})}
|
150
|
+
>
|
151
|
+
<div className="access-point-editor__metadata">
|
152
|
+
<div className={clsx('access-point-editor__name', {})}>
|
153
|
+
<div className="access-point-editor__name__label">
|
154
|
+
{accessPoint.id}
|
155
|
+
</div>
|
156
|
+
</div>
|
157
|
+
<div className="access-point-editor__info">
|
158
|
+
<div
|
159
|
+
className={clsx('access-point-editor__type')}
|
160
|
+
title={accessPoint.targetEnvironment}
|
161
|
+
>
|
162
|
+
<div className="access-point-editor__type__label">
|
163
|
+
{accessPoint.targetEnvironment}
|
164
|
+
</div>
|
165
|
+
</div>
|
166
|
+
</div>
|
167
|
+
</div>
|
168
|
+
<div className="access-point-editor__content">
|
169
|
+
<div className="access-point-editor__generic-entry">
|
170
|
+
<div className="access-point-editor__entry__container">
|
171
|
+
<div className="access-point-editor__entry">
|
172
|
+
<InlineLambdaEditor
|
173
|
+
className={'access-point-editor__lambda-editor'}
|
174
|
+
disabled={
|
175
|
+
lambdaEditorState.val.state
|
176
|
+
.isConvertingTransformLambdaObjects
|
177
|
+
}
|
178
|
+
lambdaEditorState={lambdaEditorState}
|
179
|
+
forceBackdrop={Boolean(lambdaEditorState.parserError)}
|
180
|
+
/>
|
181
|
+
</div>
|
182
|
+
</div>
|
183
|
+
<button
|
184
|
+
className="access-point-editor__generic-entry__remove-btn"
|
185
|
+
onClick={() => {
|
186
|
+
productEditorState.deleteAccessPoint(accessPointState);
|
187
|
+
}}
|
188
|
+
tabIndex={-1}
|
189
|
+
title="Remove"
|
190
|
+
>
|
191
|
+
<TimesIcon />
|
192
|
+
</button>
|
193
|
+
</div>
|
194
|
+
</div>
|
195
|
+
</div>
|
196
|
+
);
|
197
|
+
},
|
198
|
+
);
|
199
|
+
|
200
|
+
const DataProductEditorSplashScreen = observer(
|
201
|
+
(props: { dataProductEditorState: DataProductEditorState }) => {
|
202
|
+
const { dataProductEditorState } = props;
|
203
|
+
const logoWidth = 280;
|
204
|
+
const logoHeight = 270;
|
205
|
+
const [showLogo, setShowLogo] = useState(false);
|
206
|
+
const { ref, height, width } = useResizeDetector<HTMLDivElement>();
|
207
|
+
|
208
|
+
useEffect(() => {
|
209
|
+
setShowLogo((width ?? 0) > logoWidth && (height ?? 0) > logoHeight);
|
210
|
+
}, [height, width]);
|
211
|
+
|
212
|
+
return (
|
213
|
+
<div ref={ref} className="data-product-editor__splash-screen">
|
214
|
+
<div
|
215
|
+
onClick={() => dataProductEditorState.setAccessPointModal(true)}
|
216
|
+
className="data-product-editor__splash-screen__label"
|
217
|
+
>
|
218
|
+
Add Access Point
|
219
|
+
</div>
|
220
|
+
<div className="data-product-editor__splash-screen__spacing"></div>
|
221
|
+
<div
|
222
|
+
onClick={() => dataProductEditorState.setAccessPointModal(true)}
|
223
|
+
title="Add new Access Point"
|
224
|
+
className={clsx('data-product-editor__splash-screen__logo', {
|
225
|
+
'data-product-editor__splash-screen__logo--hidden': !showLogo,
|
226
|
+
})}
|
227
|
+
>
|
228
|
+
<AccessPointIcon />
|
229
|
+
</div>
|
230
|
+
</div>
|
231
|
+
);
|
232
|
+
},
|
233
|
+
);
|
234
|
+
|
235
|
+
export const DataProductEditor = observer(() => {
|
236
|
+
const editorStore = useEditorStore();
|
237
|
+
const dataProductEditorState =
|
238
|
+
editorStore.tabManagerState.getCurrentEditorState(DataProductEditorState);
|
239
|
+
const product = dataProductEditorState.product;
|
240
|
+
const accessPointStates = dataProductEditorState.accessPointStates;
|
241
|
+
const isReadOnly = dataProductEditorState.isReadOnly;
|
242
|
+
const openNewModal = () => {
|
243
|
+
dataProductEditorState.setAccessPointModal(true);
|
244
|
+
};
|
245
|
+
|
246
|
+
useEffect(() => {
|
247
|
+
flowResult(dataProductEditorState.convertAccessPointsFuncObjects()).catch(
|
248
|
+
dataProductEditorState.editorStore.applicationStore.alertUnhandledError,
|
249
|
+
);
|
250
|
+
}, [dataProductEditorState]);
|
251
|
+
|
252
|
+
return (
|
253
|
+
<div className="data-product-editor">
|
254
|
+
<div className="panel">
|
255
|
+
<div className="panel__header">
|
256
|
+
<div className="panel__header__title">
|
257
|
+
{isReadOnly && (
|
258
|
+
<div className="uml-element-editor__header__lock">
|
259
|
+
<LockIcon />
|
260
|
+
</div>
|
261
|
+
)}
|
262
|
+
<div className="panel__header__title__label">data product</div>
|
263
|
+
<div className="panel__header__title__content">{product.name}</div>
|
264
|
+
</div>
|
265
|
+
</div>
|
266
|
+
<div className="panel">
|
267
|
+
<PanelHeader>
|
268
|
+
<div className="panel__header__title">
|
269
|
+
<div className="panel__header__title__content">ACCESS POINTS</div>
|
270
|
+
</div>
|
271
|
+
<PanelHeaderActions>
|
272
|
+
<PanelHeaderActionItem
|
273
|
+
className="panel__header__action"
|
274
|
+
onClick={openNewModal}
|
275
|
+
disabled={isReadOnly}
|
276
|
+
title="Create new access point"
|
277
|
+
>
|
278
|
+
<PlusIcon />
|
279
|
+
</PanelHeaderActionItem>
|
280
|
+
</PanelHeaderActions>
|
281
|
+
</PanelHeader>
|
282
|
+
<PanelContent>
|
283
|
+
{accessPointStates
|
284
|
+
.filter(filterByType(LakehouseAccessPointState))
|
285
|
+
.map((apState) => (
|
286
|
+
<LakehouseDataProductAcccessPointEditor
|
287
|
+
key={apState.accessPoint.id}
|
288
|
+
isReadOnly={isReadOnly}
|
289
|
+
accessPointState={apState}
|
290
|
+
/>
|
291
|
+
))}
|
292
|
+
{!accessPointStates.length && (
|
293
|
+
<DataProductEditorSplashScreen
|
294
|
+
dataProductEditorState={dataProductEditorState}
|
295
|
+
/>
|
296
|
+
)}
|
297
|
+
</PanelContent>
|
298
|
+
{dataProductEditorState.accessPointModal && (
|
299
|
+
<NewAccessPointAccessPOint
|
300
|
+
dataProductEditorState={dataProductEditorState}
|
301
|
+
/>
|
302
|
+
)}
|
303
|
+
</div>
|
304
|
+
</div>
|
305
|
+
</div>
|
306
|
+
);
|
307
|
+
});
|
@@ -88,6 +88,8 @@ export const getElementTypeLabel = (
|
|
88
88
|
return 'data';
|
89
89
|
case PACKAGEABLE_ELEMENT_TYPE.TEMPORARY__LOCAL_CONNECTION:
|
90
90
|
return 'local connection';
|
91
|
+
case PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT:
|
92
|
+
return 'lakehouse data product';
|
91
93
|
default: {
|
92
94
|
if (type) {
|
93
95
|
const extraElementTypeLabelGetters = editorStore.pluginManager
|
@@ -90,6 +90,7 @@ import {
|
|
90
90
|
SnowflakeApp,
|
91
91
|
GraphEntities,
|
92
92
|
HostedService,
|
93
|
+
DataProduct,
|
93
94
|
} from '@finos/legend-graph';
|
94
95
|
import { CONFIGURATION_EDITOR_TAB } from './editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.js';
|
95
96
|
import { PACKAGEABLE_ELEMENT_TYPE } from './utils/ModelClassifierUtils.js';
|
@@ -854,6 +855,8 @@ export class EditorGraphState {
|
|
854
855
|
return PACKAGEABLE_ELEMENT_TYPE.SNOWFLAKE_APP;
|
855
856
|
} else if (element instanceof HostedService) {
|
856
857
|
return PACKAGEABLE_ELEMENT_TYPE.HOSTED_SERVICE;
|
858
|
+
} else if (element instanceof DataProduct) {
|
859
|
+
return PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT;
|
857
860
|
}
|
858
861
|
const extraElementTypeLabelGetters = this.editorStore.pluginManager
|
859
862
|
.getApplicationPlugins()
|
@@ -1161,6 +1161,7 @@ export class EditorStore implements CommandRegistrar {
|
|
1161
1161
|
PACKAGEABLE_ELEMENT_TYPE.RUNTIME,
|
1162
1162
|
PACKAGEABLE_ELEMENT_TYPE.MAPPING,
|
1163
1163
|
PACKAGEABLE_ELEMENT_TYPE.SERVICE,
|
1164
|
+
PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT,
|
1164
1165
|
this.applicationStore.config.options
|
1165
1166
|
.TEMPORARY__enableLocalConnectionBuilder
|
1166
1167
|
? PACKAGEABLE_ELEMENT_TYPE.TEMPORARY__LOCAL_CONNECTION
|
@@ -35,6 +35,7 @@ import {
|
|
35
35
|
INTERNAL__UnknownFunctionActivator,
|
36
36
|
SnowflakeApp,
|
37
37
|
HostedService,
|
38
|
+
DataProduct,
|
38
39
|
} from '@finos/legend-graph';
|
39
40
|
import {
|
40
41
|
type Clazz,
|
@@ -64,6 +65,7 @@ import { INTERNAL__UnknownFunctionActivatorEdtiorState } from './editor-state/el
|
|
64
65
|
import { SnowflakeAppFunctionActivatorEdtiorState } from './editor-state/element-editor-state/function-activator/SnowflakeAppFunctionActivatorEditorState.js';
|
65
66
|
import { HostedServiceFunctionActivatorEditorState } from './editor-state/element-editor-state/function-activator/HostedServiceFunctionActivatorEditorState.js';
|
66
67
|
import { ArtifactGenerationViewerState } from './editor-state/ArtifactGenerationViewerState.js';
|
68
|
+
import { DataProductEditorState } from './editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
|
67
69
|
|
68
70
|
export class EditorTabManagerState extends TabManagerState {
|
69
71
|
readonly editorStore: EditorStore;
|
@@ -173,6 +175,8 @@ export class EditorTabManagerState extends TabManagerState {
|
|
173
175
|
return new MappingEditorState(this.editorStore, element);
|
174
176
|
} else if (element instanceof Service) {
|
175
177
|
return new ServiceEditorState(this.editorStore, element);
|
178
|
+
} else if (element instanceof DataProduct) {
|
179
|
+
return new DataProductEditorState(this.editorStore, element);
|
176
180
|
} else if (element instanceof GenerationSpecification) {
|
177
181
|
return new GenerationSpecificationEditorState(this.editorStore, element);
|
178
182
|
} else if (element instanceof FileGenerationSpecification) {
|
@@ -84,6 +84,7 @@ import {
|
|
84
84
|
RuntimePointer,
|
85
85
|
GenericTypeExplicitReference,
|
86
86
|
GenericType,
|
87
|
+
DataProduct,
|
87
88
|
} from '@finos/legend-graph';
|
88
89
|
import type { DSL_Mapping_LegendStudioApplicationPlugin_Extension } from '../extensions/DSL_Mapping_LegendStudioApplicationPlugin_Extension.js';
|
89
90
|
import {
|
@@ -999,6 +1000,9 @@ export class NewElementState {
|
|
999
1000
|
case PACKAGEABLE_ELEMENT_TYPE.GENERATION_SPECIFICATION:
|
1000
1001
|
element = new GenerationSpecification(name);
|
1001
1002
|
break;
|
1003
|
+
case PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT:
|
1004
|
+
element = new DataProduct(name);
|
1005
|
+
break;
|
1002
1006
|
default: {
|
1003
1007
|
const extraNewElementFromStateCreators = this.editorStore.pluginManager
|
1004
1008
|
.getApplicationPlugins()
|