@finos/legend-application-repl 1.0.34 → 1.0.36
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/__lib__/LegendREPLSetting.d.ts +2 -5
- package/lib/__lib__/LegendREPLSetting.d.ts.map +1 -1
- package/lib/__lib__/LegendREPLSetting.js +4 -7
- package/lib/__lib__/LegendREPLSetting.js.map +1 -1
- package/lib/application/LegendREPL.js +1 -1
- package/lib/application/LegendREPL.js.map +1 -1
- package/lib/application/LegendREPLNavigation.d.ts +1 -1
- package/lib/application/LegendREPLNavigation.js +1 -1
- package/lib/components/LegendREPLDataCubeHeader.d.ts +2 -4
- package/lib/components/LegendREPLDataCubeHeader.d.ts.map +1 -1
- package/lib/components/LegendREPLDataCubeHeader.js +25 -9
- package/lib/components/LegendREPLDataCubeHeader.js.map +1 -1
- package/lib/components/LegendREPLFramworkProvider.d.ts.map +1 -1
- package/lib/components/LegendREPLFramworkProvider.js +2 -2
- package/lib/components/LegendREPLFramworkProvider.js.map +1 -1
- package/lib/components/LegendREPLPublishDataCubeAlert.js +1 -1
- package/lib/components/LegendREPLPublishDataCubeAlert.js.map +1 -1
- package/lib/components/{LegendREPLApplication.d.ts → LegendREPLWebApplication.d.ts} +1 -1
- package/lib/components/LegendREPLWebApplication.d.ts.map +1 -0
- package/lib/components/LegendREPLWebApplication.js +84 -0
- package/lib/components/LegendREPLWebApplication.js.map +1 -0
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/LegendREPLBaseStore.d.ts +15 -6
- package/lib/stores/LegendREPLBaseStore.d.ts.map +1 -1
- package/lib/stores/LegendREPLBaseStore.js +75 -33
- package/lib/stores/LegendREPLBaseStore.js.map +1 -1
- package/lib/stores/LegendREPLDataCubeEngine.d.ts +16 -22
- package/lib/stores/LegendREPLDataCubeEngine.d.ts.map +1 -1
- package/lib/stores/LegendREPLDataCubeEngine.js +89 -88
- package/lib/stores/LegendREPLDataCubeEngine.js.map +1 -1
- package/lib/stores/LegendREPLDataCubeSource.d.ts +14 -2
- package/lib/stores/LegendREPLDataCubeSource.d.ts.map +1 -1
- package/lib/stores/LegendREPLDataCubeSource.js +24 -0
- package/lib/stores/LegendREPLDataCubeSource.js.map +1 -1
- package/lib/stores/LegendREPLServerClient.d.ts +5 -17
- package/lib/stores/LegendREPLServerClient.d.ts.map +1 -1
- package/lib/stores/LegendREPLServerClient.js +1 -26
- package/lib/stores/LegendREPLServerClient.js.map +1 -1
- package/package.json +6 -6
- package/src/__lib__/LegendREPLSetting.ts +2 -5
- package/src/application/LegendREPL.tsx +1 -1
- package/src/application/LegendREPLNavigation.ts +1 -1
- package/src/components/LegendREPLDataCubeHeader.tsx +15 -12
- package/src/components/LegendREPLFramworkProvider.tsx +2 -4
- package/src/components/LegendREPLPublishDataCubeAlert.tsx +1 -1
- package/src/components/LegendREPLWebApplication.tsx +157 -0
- package/src/stores/LegendREPLBaseStore.tsx +104 -40
- package/src/stores/LegendREPLDataCubeEngine.ts +135 -139
- package/src/stores/LegendREPLDataCubeSource.ts +35 -2
- package/src/stores/LegendREPLServerClient.ts +3 -39
- package/tsconfig.json +1 -1
- package/lib/components/LegendREPLApplication.d.ts.map +0 -1
- package/lib/components/LegendREPLApplication.js +0 -67
- package/lib/components/LegendREPLApplication.js.map +0 -1
- package/src/components/LegendREPLApplication.tsx +0 -125
|
@@ -13,10 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
export declare enum
|
|
17
|
-
|
|
18
|
-
GRID_CLIENT_ROW_BUFFER = "legend-repl.engine.grid-client.rowBuffer",
|
|
19
|
-
GRID_CLIENT_PURGE_CLOSED_ROW_NODES = "legend-repl.engine.grid-client.purgeClosedRowNodes",
|
|
20
|
-
GRID_CLIENT_SUPPRESS_LARGE_DATASET_WARNING = "legend-repl.engine.grid-client.suppressLargeDatasetWarning"
|
|
16
|
+
export declare enum LegendREPLSettingStorageKey {
|
|
17
|
+
DATA_CUBE = "data-cube"
|
|
21
18
|
}
|
|
22
19
|
//# sourceMappingURL=LegendREPLSetting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLSetting.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendREPLSetting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,oBAAY,
|
|
1
|
+
{"version":3,"file":"LegendREPLSetting.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendREPLSetting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,oBAAY,2BAA2B;IACrC,SAAS,cAAc;CACxB"}
|
|
@@ -13,11 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
export var
|
|
17
|
-
(function (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
LEGEND_REPL_SETTING_KEY["GRID_CLIENT_PURGE_CLOSED_ROW_NODES"] = "legend-repl.engine.grid-client.purgeClosedRowNodes";
|
|
21
|
-
LEGEND_REPL_SETTING_KEY["GRID_CLIENT_SUPPRESS_LARGE_DATASET_WARNING"] = "legend-repl.engine.grid-client.suppressLargeDatasetWarning";
|
|
22
|
-
})(LEGEND_REPL_SETTING_KEY || (LEGEND_REPL_SETTING_KEY = {}));
|
|
16
|
+
export var LegendREPLSettingStorageKey;
|
|
17
|
+
(function (LegendREPLSettingStorageKey) {
|
|
18
|
+
LegendREPLSettingStorageKey["DATA_CUBE"] = "data-cube";
|
|
19
|
+
})(LegendREPLSettingStorageKey || (LegendREPLSettingStorageKey = {}));
|
|
23
20
|
//# sourceMappingURL=LegendREPLSetting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLSetting.js","sourceRoot":"","sources":["../../src/__lib__/LegendREPLSetting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"LegendREPLSetting.js","sourceRoot":"","sources":["../../src/__lib__/LegendREPLSetting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAN,IAAY,2BAEX;AAFD,WAAY,2BAA2B;IACrC,sDAAuB,CAAA;AACzB,CAAC,EAFW,2BAA2B,KAA3B,2BAA2B,QAEtC"}
|
|
@@ -17,7 +17,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
17
17
|
import { createRoot } from 'react-dom/client';
|
|
18
18
|
import { LegendApplication, ApplicationStoreProvider, getApplicationRootElement, LegendApplicationPluginManager, Core_LegendApplicationPlugin, } from '@finos/legend-application';
|
|
19
19
|
import { LegendREPLApplicationConfig, } from './LegendREPLApplicationConfig.js';
|
|
20
|
-
import { LegendREPLWebApplication } from '../components/
|
|
20
|
+
import { LegendREPLWebApplication } from '../components/LegendREPLWebApplication.js';
|
|
21
21
|
export class LegendREPL extends LegendApplication {
|
|
22
22
|
static create() {
|
|
23
23
|
const application = new LegendREPL(new LegendApplicationPluginManager());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPL.js","sourceRoot":"","sources":["../../src/application/LegendREPL.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAE9B,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,2BAA2B,GAE5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"LegendREPL.js","sourceRoot":"","sources":["../../src/application/LegendREPL.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAE9B,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,2BAA2B,GAE5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAGrF,MAAM,OAAO,UAAW,SAAQ,iBAAiB;IAI/C,MAAM,CAAC,MAAM;QACX,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,8BAA8B,EAAE,CAAC,CAAC;QACzE,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,4BAA4B,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,KAA2E;QAE3E,OAAO,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAuC;QAC3D,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC,MAAM,CAC5C,KAAC,wBAAwB,IAAC,KAAK,EAAE,WAAW,YAC1C,KAAC,wBAAwB,IAAC,OAAO,EAAE,IAAI,CAAC,WAAW,GAAI,GAC9B,CAC5B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
/**
|
|
17
|
-
* @external_application_navigation This depends on Legend
|
|
17
|
+
* @external_application_navigation This depends on Legend DataCube routing and is hardcoded so it's potentially brittle
|
|
18
18
|
*/
|
|
19
19
|
export declare const EXTERNAL_APPLICATION_NAVIGATION__generateDataCubeViewUrl: (hostedApplicationBaseUrl: string, id: string) => string;
|
|
20
20
|
//# sourceMappingURL=LegendREPLNavigation.d.ts.map
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
/**
|
|
17
|
-
* @external_application_navigation This depends on Legend
|
|
17
|
+
* @external_application_navigation This depends on Legend DataCube routing and is hardcoded so it's potentially brittle
|
|
18
18
|
*/
|
|
19
19
|
export const EXTERNAL_APPLICATION_NAVIGATION__generateDataCubeViewUrl = (hostedApplicationBaseUrl, id) => `${hostedApplicationBaseUrl}/${id}`;
|
|
20
20
|
//# sourceMappingURL=LegendREPLNavigation.js.map
|
|
@@ -13,10 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import type
|
|
17
|
-
export declare const LegendREPLDataCubeHeader: ((props: {
|
|
18
|
-
dataCube: DataCubeState;
|
|
19
|
-
}) => import("react/jsx-runtime").JSX.Element | null) & {
|
|
16
|
+
import { type DataCubeInnerHeaderComponentParams } from '@finos/legend-data-cube';
|
|
17
|
+
export declare const LegendREPLDataCubeHeader: ((props: DataCubeInnerHeaderComponentParams) => import("react/jsx-runtime").JSX.Element | null) & {
|
|
20
18
|
displayName: string;
|
|
21
19
|
};
|
|
22
20
|
//# sourceMappingURL=LegendREPLDataCubeHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLDataCubeHeader.d.ts","sourceRoot":"","sources":["../../src/components/LegendREPLDataCubeHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"LegendREPLDataCubeHeader.d.ts","sourceRoot":"","sources":["../../src/components/LegendREPLDataCubeHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,kCAAkC,EACxC,MAAM,yBAAyB,CAAC;AAKjC,eAAO,MAAM,wBAAwB,WAC3B,kCAAkC;;CA8B3C,CAAC"}
|
|
@@ -1,21 +1,37 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { FormButton, } from '@finos/legend-data-cube';
|
|
2
18
|
import { observer } from 'mobx-react-lite';
|
|
3
19
|
import { LegendREPLDataCubeSource } from '../stores/LegendREPLDataCubeSource.js';
|
|
4
20
|
import { useLegendREPLBaseStore } from './LegendREPLFramworkProvider.js';
|
|
5
21
|
export const LegendREPLDataCubeHeader = observer((props) => {
|
|
6
|
-
const {
|
|
22
|
+
const { api } = props;
|
|
7
23
|
const store = useLegendREPLBaseStore();
|
|
8
|
-
if (!
|
|
24
|
+
if (!store.source || !store.queryServerBaseUrl) {
|
|
9
25
|
return null;
|
|
10
26
|
}
|
|
11
|
-
const isPublishAllowed =
|
|
12
|
-
|
|
27
|
+
const isPublishAllowed = store.source instanceof LegendREPLDataCubeSource &&
|
|
28
|
+
store.source.isPersistenceSupported &&
|
|
13
29
|
// eslint-disable-next-line no-process-env
|
|
14
|
-
(process.env.NODE_ENV === 'development' || !
|
|
15
|
-
return (_jsx("div", { className: "flex h-full items-center", children: _jsx(
|
|
30
|
+
(process.env.NODE_ENV === 'development' || !store.source.isLocal);
|
|
31
|
+
return (_jsx("div", { className: "flex h-full items-center", children: _jsx(FormButton, { compact: true, disabled: !isPublishAllowed || store.publishState.isInProgress, onClick: () => {
|
|
16
32
|
store
|
|
17
|
-
.publishDataCube(
|
|
18
|
-
.catch((error) =>
|
|
19
|
-
},
|
|
33
|
+
.publishDataCube(api)
|
|
34
|
+
.catch((error) => store.alertService.alertUnhandledError(error));
|
|
35
|
+
}, children: "Publish" }) }));
|
|
20
36
|
});
|
|
21
37
|
//# sourceMappingURL=LegendREPLDataCubeHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLDataCubeHeader.js","sourceRoot":"","sources":["../../src/components/LegendREPLDataCubeHeader.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"LegendREPLDataCubeHeader.js","sourceRoot":"","sources":["../../src/components/LegendREPLDataCubeHeader.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,UAAU,GAEX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAC9C,CAAC,KAAyC,EAAE,EAAE;IAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;IAEvC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GACpB,KAAK,CAAC,MAAM,YAAY,wBAAwB;QAChD,KAAK,CAAC,MAAM,CAAC,sBAAsB;QACnC,0CAA0C;QAC1C,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEpE,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACvC,KAAC,UAAU,IACT,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,YAAY,CAAC,YAAY,EAC9D,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK;qBACF,eAAe,CAAC,GAAG,CAAC;qBACpB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,CAAC,wBAGU,GACT,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLFramworkProvider.d.ts","sourceRoot":"","sources":["../../src/components/LegendREPLFramworkProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"LegendREPLFramworkProvider.d.ts","sourceRoot":"","sources":["../../src/components/LegendREPLFramworkProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AA6BvE,eAAO,MAAM,sBAAsB,QAAO,mBAIvC,CAAC;AAEJ,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC;IACjD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAIA,CAAC"}
|
|
@@ -22,8 +22,8 @@ import {} from '../application/LegendREPLApplicationConfig.js';
|
|
|
22
22
|
import { useApplicationStore, ApplicationFrameworkProvider, } from '@finos/legend-application';
|
|
23
23
|
const LegendREPLBaseStoreContext = createContext(undefined);
|
|
24
24
|
const LegendREPLBaseStoreProvider = ({ children }) => {
|
|
25
|
-
const
|
|
26
|
-
const store = useLocalObservable(() => new LegendREPLBaseStore(
|
|
25
|
+
const application = useApplicationStore();
|
|
26
|
+
const store = useLocalObservable(() => new LegendREPLBaseStore(application));
|
|
27
27
|
return (_jsx(LegendREPLBaseStoreContext.Provider, { value: store, children: children }));
|
|
28
28
|
};
|
|
29
29
|
export const useLegendREPLBaseStore = () => guaranteeNonNullable(useContext(LegendREPLBaseStoreContext), `Can't find Legend Query base store in context`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLFramworkProvider.js","sourceRoot":"","sources":["../../src/components/LegendREPLFramworkProvider.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAoC,MAAM,+CAA+C,CAAC;AACjG,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAG7B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,0BAA0B,GAAG,aAAa,CAE9C,SAAS,CAAC,CAAC;AAEb,MAAM,2BAA2B,GAE5B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"LegendREPLFramworkProvider.js","sourceRoot":"","sources":["../../src/components/LegendREPLFramworkProvider.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAoC,MAAM,+CAA+C,CAAC;AACjG,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAG7B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,0BAA0B,GAAG,aAAa,CAE9C,SAAS,CAAC,CAAC;AAEb,MAAM,2BAA2B,GAE5B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpB,MAAM,WAAW,GAAG,mBAAmB,EAGpC,CAAC;IACJ,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7E,OAAO,CACL,KAAC,0BAA0B,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAC9C,QAAQ,GAC2B,CACvC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAwB,EAAE,CAC9D,oBAAoB,CAClB,UAAU,CAAC,0BAA0B,CAAC,EACtC,+CAA+C,CAChD,CAAC;AAEJ,MAAM,CAAC,MAAM,2BAA2B,GAEnC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACrB,KAAC,4BAA4B,IAAC,MAAM,EAAE,IAAI,YACxC,KAAC,2BAA2B,cAAE,QAAQ,GAA+B,GACxC,CAChC,CAAC"}
|
|
@@ -23,7 +23,7 @@ export const LegendREPLPublishDataCubeAlert = (props) => {
|
|
|
23
23
|
const link = store.hostedApplicationBaseUrl
|
|
24
24
|
? EXTERNAL_APPLICATION_NAVIGATION__generateDataCubeViewUrl(store.hostedApplicationBaseUrl, query.id)
|
|
25
25
|
: undefined;
|
|
26
|
-
return (_jsxs("div", { className: "h-full w-full p-6", children: [_jsxs("div", { className: "flex w-full overflow-auto", children: [_jsx("div", { className: "mr-3", children: _jsx(DataCubeIcon.
|
|
26
|
+
return (_jsxs("div", { className: "h-full w-full p-6", children: [_jsxs("div", { className: "flex w-full overflow-auto", children: [_jsx("div", { className: "mr-3", children: _jsx(DataCubeIcon.AlertSuccess, { className: "flex-shrink-0 stroke-[0.5px] text-[40px] text-green-500" }) }), _jsxs("div", { children: [_jsx("div", { className: "whitespace-break-spaces text-lg", children: "Published query successfully!" }), link && (_jsx("div", { className: "mt-1 whitespace-break-spaces text-neutral-500", children: "To view or share the published query, use the link below." })), !link && (_jsx("div", { className: "mt-1 whitespace-break-spaces text-neutral-500", children: "See the published query ID below." }))] })] }), link && (_jsxs("div", { className: "mt-3 flex h-6 w-full", children: [_jsx("div", { className: "flex h-full w-[calc(100%_-_20px)] items-center border border-r-0 border-neutral-400 bg-neutral-200 px-1.5", children: _jsx("a", { href: link, target: "_blank", rel: "noopener noreferrer", className: "overflow-hidden overflow-ellipsis whitespace-nowrap", children: link }) }), _jsx("button", { className: "flex aspect-square h-full w-6 items-center justify-center border border-neutral-400 bg-neutral-300 hover:brightness-95", onClick: () => {
|
|
27
27
|
store.application.clipboardService
|
|
28
28
|
.copyTextToClipboard(link)
|
|
29
29
|
.catch(store.application.alertUnhandledError);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLPublishDataCubeAlert.js","sourceRoot":"","sources":["../../src/components/LegendREPLPublishDataCubeAlert.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,wDAAwD,EAAE,MAAM,wCAAwC,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAE9C,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,wBAAwB;QACzC,CAAC,CAAC,wDAAwD,CACtD,KAAK,CAAC,wBAAwB,EAC9B,KAAK,CAAC,EAAE,CACT;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAChC,eAAK,SAAS,EAAC,2BAA2B,aACxC,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"LegendREPLPublishDataCubeAlert.js","sourceRoot":"","sources":["../../src/components/LegendREPLPublishDataCubeAlert.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,wDAAwD,EAAE,MAAM,wCAAwC,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAE9C,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,wBAAwB;QACzC,CAAC,CAAC,wDAAwD,CACtD,KAAK,CAAC,wBAAwB,EAC9B,KAAK,CAAC,EAAE,CACT;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAChC,eAAK,SAAS,EAAC,2BAA2B,aACxC,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,YAAY,CAAC,YAAY,IAAC,SAAS,EAAC,yDAAyD,GAAG,GAC7F,EACN,0BACE,cAAK,SAAS,EAAC,iCAAiC,8CAE1C,EACL,IAAI,IAAI,CACP,cAAK,SAAS,EAAC,+CAA+C,0EAExD,CACP,EACA,CAAC,IAAI,IAAI,CACR,cAAK,SAAS,EAAC,+CAA+C,kDAExD,CACP,IACG,IACF,EACL,IAAI,IAAI,CACP,eAAK,SAAS,EAAC,sBAAsB,aACnC,cAAK,SAAS,EAAC,2GAA2G,YACxH,YACE,IAAI,EAAE,IAAI,EACV,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,qDAAqD,YAE9D,IAAI,GACH,GACA,EACN,iBACE,SAAS,EAAC,wHAAwH,EAClI,OAAO,EAAE,GAAG,EAAE;4BACZ,KAAK,CAAC,WAAW,CAAC,gBAAgB;iCAC/B,mBAAmB,CAAC,IAAI,CAAC;iCACzB,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;wBAClD,CAAC,EACD,KAAK,EAAC,WAAW,YAEjB,KAAC,YAAY,CAAC,SAAS,KAAG,GACnB,IACL,CACP,EACA,CAAC,IAAI,IAAI,CACR,eAAK,SAAS,EAAC,sBAAsB,aACnC,cAAK,SAAS,EAAC,2GAA2G,YACxH,cAAK,SAAS,EAAC,qDAAqD,YACjE,KAAK,CAAC,EAAE,GACL,GACF,EACN,iBACE,SAAS,EAAC,wHAAwH,EAClI,OAAO,EAAE,GAAG,EAAE;4BACZ,KAAK,CAAC,WAAW,CAAC,gBAAgB;iCAC/B,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;iCAC7B,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;wBAClD,CAAC,EACD,KAAK,EAAC,SAAS,YAEf,KAAC,YAAY,CAAC,SAAS,KAAG,GACnB,IACL,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -22,4 +22,4 @@ export declare const LegendREPLRouter: (() => import("react/jsx-runtime").JSX.El
|
|
|
22
22
|
export declare const LegendREPLWebApplication: (props: {
|
|
23
23
|
baseUrl: string;
|
|
24
24
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
25
|
-
//# sourceMappingURL=
|
|
25
|
+
//# sourceMappingURL=LegendREPLWebApplication.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegendREPLWebApplication.d.ts","sourceRoot":"","sources":["../../src/components/LegendREPLWebApplication.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0FH,eAAO,MAAM,qCAAqC;;EAEhD,CAAC;AAEH,eAAO,MAAM,gBAAgB;;CAoC3B,CAAC;AAEH,eAAO,MAAM,wBAAwB,UAAW;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,4CAUlE,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { BrowserEnvironmentProvider, Route, Routes, } from '@finos/legend-application/browser';
|
|
18
|
+
import { observer } from 'mobx-react-lite';
|
|
19
|
+
import { useEffect } from 'react';
|
|
20
|
+
import { formatDate, LogEvent } from '@finos/legend-shared';
|
|
21
|
+
import { DataCube, DataCubePlaceholder, DataCubePlaceholderErrorDisplay, DEFAULT_REPORT_NAME, } from '@finos/legend-data-cube';
|
|
22
|
+
import { APPLICATION_EVENT } from '@finos/legend-application';
|
|
23
|
+
import { LegendREPLDataCubeSource } from '../stores/LegendREPLDataCubeSource.js';
|
|
24
|
+
import { LegendREPLDataCubeHeader } from './LegendREPLDataCubeHeader.js';
|
|
25
|
+
import { LegendREPLFrameworkProvider, useLegendREPLBaseStore, } from './LegendREPLFramworkProvider.js';
|
|
26
|
+
import { LegendREPLSettingStorageKey } from '../__lib__/LegendREPLSetting.js';
|
|
27
|
+
const LegendREPLDataCube = observer((props) => {
|
|
28
|
+
const { query } = props;
|
|
29
|
+
const store = useLegendREPLBaseStore();
|
|
30
|
+
const application = store.application;
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
application.navigationService.navigator.blockNavigation(
|
|
33
|
+
// Only block navigation in production
|
|
34
|
+
// eslint-disable-next-line no-process-env
|
|
35
|
+
[() => process.env.NODE_ENV === 'production'], undefined, () => {
|
|
36
|
+
application.logService.warn(LogEvent.create(APPLICATION_EVENT.NAVIGATION_BLOCKED), `Navigation from the application is blocked`);
|
|
37
|
+
});
|
|
38
|
+
return () => {
|
|
39
|
+
application.navigationService.navigator.unblockNavigation();
|
|
40
|
+
};
|
|
41
|
+
}, [application]);
|
|
42
|
+
return (_jsx(DataCube, { query: query, engine: store.engine, options: {
|
|
43
|
+
gridClientLicense: store.gridClientLicense,
|
|
44
|
+
layoutManager: store.layoutService.manager,
|
|
45
|
+
taskManager: store.taskService.manager,
|
|
46
|
+
onNameChanged(event) {
|
|
47
|
+
const timestamp = event.source instanceof LegendREPLDataCubeSource
|
|
48
|
+
? event.source.timestamp
|
|
49
|
+
: undefined;
|
|
50
|
+
application.layoutService.setWindowTitle(`\u229E ${name}${timestamp ? ` - ${formatDate(new Date(timestamp), 'HH:mm:ss EEE MMM dd yyyy')}` : ''}`);
|
|
51
|
+
},
|
|
52
|
+
onViewInitialized(event) {
|
|
53
|
+
store.setSource(event.source);
|
|
54
|
+
},
|
|
55
|
+
innerHeaderRenderer: (params) => (_jsx(LegendREPLDataCubeHeader, { api: params.api })),
|
|
56
|
+
settingsData: {
|
|
57
|
+
values: application.settingService.getObjectValue(LegendREPLSettingStorageKey.DATA_CUBE),
|
|
58
|
+
},
|
|
59
|
+
onSettingsChanged(values) {
|
|
60
|
+
application.settingService.persistValue(LegendREPLSettingStorageKey.DATA_CUBE, values);
|
|
61
|
+
},
|
|
62
|
+
documentationUrl: application.documentationService.url,
|
|
63
|
+
} }));
|
|
64
|
+
});
|
|
65
|
+
export const LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN = Object.freeze({
|
|
66
|
+
DATA_CUBE: `/dataCube`,
|
|
67
|
+
});
|
|
68
|
+
export const LegendREPLRouter = observer(() => {
|
|
69
|
+
const store = useLegendREPLBaseStore();
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
store
|
|
72
|
+
.initialize()
|
|
73
|
+
.catch((error) => store.application.alertUnhandledError(error));
|
|
74
|
+
}, [store]);
|
|
75
|
+
if (!store.initializeState.hasSucceeded) {
|
|
76
|
+
return (_jsx(DataCubePlaceholder, { title: DEFAULT_REPORT_NAME, layoutManager: store.layoutService.manager, children: store.initializeState.hasFailed && (_jsx(DataCubePlaceholderErrorDisplay, { message: "Initialization Failure", prompt: "Resolve the issue and reload." })) }));
|
|
77
|
+
}
|
|
78
|
+
return (_jsx("div", { className: "h-full", children: store.query && (_jsx(Routes, { children: _jsx(Route, { path: LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN.DATA_CUBE, element: _jsx(LegendREPLDataCube, { query: store.query }) }) })) }));
|
|
79
|
+
});
|
|
80
|
+
export const LegendREPLWebApplication = (props) => {
|
|
81
|
+
const { baseUrl } = props;
|
|
82
|
+
return (_jsx(BrowserEnvironmentProvider, { baseUrl: baseUrl, children: _jsx(LegendREPLFrameworkProvider, { children: _jsx(LegendREPLRouter, {}) }) }));
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=LegendREPLWebApplication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegendREPLWebApplication.js","sourceRoot":"","sources":["../../src/components/LegendREPLWebApplication.tsx"],"names":[],"mappings":"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"}
|
package/lib/index.css
CHANGED
package/lib/package.json
CHANGED
|
@@ -15,17 +15,26 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { ActionState } from '@finos/legend-shared';
|
|
17
17
|
import type { LegendREPLApplicationStore } from '../application/LegendREPLApplicationStore.js';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
18
|
+
import { DataCubeQuery, type DataCubeSource, type DataCubeAPI, DataCubeLayoutService, DataCubeAlertService, DataCubeTaskService } from '@finos/legend-data-cube';
|
|
19
|
+
import { LegendREPLDataCubeEngine } from './LegendREPLDataCubeEngine.js';
|
|
20
20
|
export declare class LegendREPLBaseStore {
|
|
21
|
+
private readonly _client;
|
|
21
22
|
readonly application: LegendREPLApplicationStore;
|
|
22
|
-
readonly
|
|
23
|
+
readonly engine: LegendREPLDataCubeEngine;
|
|
24
|
+
readonly taskService: DataCubeTaskService;
|
|
25
|
+
readonly layoutService: DataCubeLayoutService;
|
|
26
|
+
readonly alertService: DataCubeAlertService;
|
|
27
|
+
readonly initializeState: ActionState;
|
|
23
28
|
readonly publishState: ActionState;
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
source?: DataCubeSource | undefined;
|
|
30
|
+
gridClientLicense?: string | undefined;
|
|
26
31
|
queryServerBaseUrl?: string | undefined;
|
|
27
32
|
hostedApplicationBaseUrl?: string | undefined;
|
|
33
|
+
query?: DataCubeQuery | undefined;
|
|
28
34
|
constructor(application: LegendREPLApplicationStore);
|
|
29
|
-
|
|
35
|
+
setQuery(query: DataCubeQuery | undefined): void;
|
|
36
|
+
setSource(source: DataCubeSource | undefined): void;
|
|
37
|
+
initialize(): Promise<void>;
|
|
38
|
+
publishDataCube(api: DataCubeAPI): Promise<void>;
|
|
30
39
|
}
|
|
31
40
|
//# sourceMappingURL=LegendREPLBaseStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLBaseStore.d.ts","sourceRoot":"","sources":["../../src/stores/LegendREPLBaseStore.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"LegendREPLBaseStore.d.ts","sourceRoot":"","sources":["../../src/stores/LegendREPLBaseStore.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,WAAW,EAMZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAE/F,OAAO,EACL,aAAa,EACb,KAAK,cAAc,EAInB,KAAK,WAAW,EAEhB,qBAAqB,EACrB,oBAAoB,EAEpB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AASjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAE5C,QAAQ,CAAC,eAAe,cAAwB;IAChD,QAAQ,CAAC,YAAY,cAAwB;IAE7C,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,wBAAwB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;gBAEtB,WAAW,EAAE,0BAA0B;IA6BnD,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS;IAIzC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS;IAItC,UAAU;IAgCV,eAAe,CAAC,GAAG,EAAE,WAAW;CA+DvC"}
|
|
@@ -14,60 +14,102 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import { ActionState, NetworkClient, assertErrorThrown, guaranteeNonNullable, uuid, } from '@finos/legend-shared';
|
|
17
|
+
import { ActionState, LogEvent, NetworkClient, assertErrorThrown, guaranteeNonNullable, uuid, } from '@finos/legend-shared';
|
|
18
18
|
import { LegendREPLServerClient } from './LegendREPLServerClient.js';
|
|
19
|
-
import {
|
|
20
|
-
import { LegendREPLDataCubeSource } from './LegendREPLDataCubeSource.js';
|
|
19
|
+
import { DataCubeQuery, LayoutConfiguration, RawAdhocQueryDataCubeSource, WindowState, DEFAULT_REPORT_NAME, DataCubeLayoutService, DataCubeAlertService, DataCubeLogService, DataCubeTaskService, } from '@finos/legend-data-cube';
|
|
20
|
+
import { LegendREPLDataCubeSource, RawLegendREPLDataCubeSource, } from './LegendREPLDataCubeSource.js';
|
|
21
21
|
import { PersistentDataCubeQuery } from '@finos/legend-graph';
|
|
22
22
|
import { LegendREPLPublishDataCubeAlert } from '../components/LegendREPLPublishDataCubeAlert.js';
|
|
23
|
+
import { APPLICATION_EVENT } from '@finos/legend-application';
|
|
24
|
+
import { action, makeObservable, observable } from 'mobx';
|
|
25
|
+
import { LegendREPLDataCubeEngine } from './LegendREPLDataCubeEngine.js';
|
|
23
26
|
export class LegendREPLBaseStore {
|
|
27
|
+
_client;
|
|
24
28
|
application;
|
|
25
|
-
|
|
29
|
+
engine;
|
|
30
|
+
taskService;
|
|
31
|
+
layoutService;
|
|
32
|
+
alertService;
|
|
33
|
+
initializeState = ActionState.create();
|
|
26
34
|
publishState = ActionState.create();
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
source;
|
|
36
|
+
gridClientLicense;
|
|
29
37
|
queryServerBaseUrl;
|
|
30
38
|
hostedApplicationBaseUrl;
|
|
39
|
+
query;
|
|
31
40
|
constructor(application) {
|
|
41
|
+
makeObservable(this, {
|
|
42
|
+
query: observable,
|
|
43
|
+
setQuery: action,
|
|
44
|
+
source: observable,
|
|
45
|
+
setSource: action,
|
|
46
|
+
});
|
|
32
47
|
this.application = application;
|
|
33
|
-
this.
|
|
48
|
+
this._client = new LegendREPLServerClient(new NetworkClient({
|
|
34
49
|
baseUrl: application.config.useDynamicREPLServer
|
|
35
50
|
? window.location.origin +
|
|
36
51
|
guaranteeNonNullable(application.config.baseAddress).replace('/repl/', '')
|
|
37
52
|
: application.config.replUrl,
|
|
38
53
|
}));
|
|
54
|
+
this.engine = new LegendREPLDataCubeEngine(this.application, this._client);
|
|
55
|
+
this.taskService = new DataCubeTaskService();
|
|
56
|
+
this.layoutService = new DataCubeLayoutService();
|
|
57
|
+
this.alertService = new DataCubeAlertService(new DataCubeLogService(this.engine), this.layoutService);
|
|
39
58
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
59
|
+
setQuery(query) {
|
|
60
|
+
this.query = query;
|
|
61
|
+
}
|
|
62
|
+
setSource(source) {
|
|
63
|
+
this.source = source;
|
|
64
|
+
}
|
|
65
|
+
async initialize() {
|
|
66
|
+
this.initializeState.inProgress();
|
|
67
|
+
try {
|
|
68
|
+
const info = await this._client.getInfrastructureInfo();
|
|
69
|
+
if (info.currentUser) {
|
|
70
|
+
this.application.identityService.setCurrentUser(info.currentUser);
|
|
71
|
+
}
|
|
72
|
+
this.application.telemetryService.setup();
|
|
73
|
+
this.queryServerBaseUrl = info.queryServerBaseUrl;
|
|
74
|
+
this.hostedApplicationBaseUrl = info.hostedApplicationBaseUrl;
|
|
75
|
+
this.gridClientLicense = info.gridClientLicense;
|
|
76
|
+
this.setQuery(DataCubeQuery.serialization.fromJson(await this._client.getBaseQuery()));
|
|
77
|
+
this.initializeState.pass();
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
assertErrorThrown(error);
|
|
81
|
+
this.application.logService.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__FAILURE), `Can't initialize REPL`, error);
|
|
82
|
+
this.alertService.alertError(error, {
|
|
83
|
+
message: `Initialization Failure: ${error.message}`,
|
|
84
|
+
text: `Resolve the issue and reload the engine.`,
|
|
85
|
+
});
|
|
86
|
+
this.initializeState.fail();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async publishDataCube(api) {
|
|
90
|
+
if (!this.queryServerBaseUrl ||
|
|
91
|
+
!(this.source instanceof LegendREPLDataCubeSource) ||
|
|
92
|
+
!this.source.isPersistenceSupported ||
|
|
93
|
+
!this.source.model ||
|
|
43
94
|
// eslint-disable-next-line no-process-env
|
|
44
|
-
(process.env.NODE_ENV === 'development' || !
|
|
45
|
-
if (!this.sourceQuery ||
|
|
46
|
-
!dataCube.view.isSourceProcessed ||
|
|
47
|
-
!this.queryServerBaseUrl ||
|
|
48
|
-
!isPublishAllowed) {
|
|
95
|
+
!(process.env.NODE_ENV === 'development' || !this.source.isLocal)) {
|
|
49
96
|
return;
|
|
50
97
|
}
|
|
51
98
|
this.publishState.inProgress();
|
|
52
|
-
const task =
|
|
99
|
+
const task = this.taskService.newTask('Publish query');
|
|
53
100
|
try {
|
|
54
|
-
const query =
|
|
55
|
-
|
|
56
|
-
query
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
query: this.sourceQuery,
|
|
61
|
-
runtime: dataCube.view.source.runtime,
|
|
62
|
-
columns: dataCube.view.source.sourceColumns,
|
|
63
|
-
model: dataCube.view.source.model,
|
|
64
|
-
};
|
|
101
|
+
const query = await api.generateDataCubeQuery();
|
|
102
|
+
const source = new RawAdhocQueryDataCubeSource();
|
|
103
|
+
source.query = RawLegendREPLDataCubeSource.serialization.fromJson(query.source).query;
|
|
104
|
+
source.runtime = this.source.runtime;
|
|
105
|
+
source.model = this.source.model;
|
|
106
|
+
query.source = RawAdhocQueryDataCubeSource.serialization.toJson(source);
|
|
65
107
|
const newQuery = new PersistentDataCubeQuery();
|
|
66
108
|
newQuery.id = uuid();
|
|
67
|
-
newQuery.name =
|
|
109
|
+
newQuery.name = query.configuration?.name ?? DEFAULT_REPORT_NAME;
|
|
68
110
|
newQuery.content = DataCubeQuery.serialization.toJson(query);
|
|
69
|
-
newQuery.owner = this.currentUser;
|
|
70
|
-
const publishedQuery = PersistentDataCubeQuery.serialization.fromJson(await this.
|
|
111
|
+
newQuery.owner = this.application.identityService.currentUser;
|
|
112
|
+
const publishedQuery = PersistentDataCubeQuery.serialization.fromJson(await this._client.publishQuery(PersistentDataCubeQuery.serialization.toJson(newQuery), this.queryServerBaseUrl));
|
|
71
113
|
const window = new WindowState(new LayoutConfiguration('Publish Query', () => (_jsx(LegendREPLPublishDataCubeAlert, { query: publishedQuery }))));
|
|
72
114
|
window.configuration.window = {
|
|
73
115
|
width: 420,
|
|
@@ -76,17 +118,17 @@ export class LegendREPLBaseStore {
|
|
|
76
118
|
minHeight: 100,
|
|
77
119
|
center: true,
|
|
78
120
|
};
|
|
79
|
-
|
|
121
|
+
this.layoutService.newWindow(window);
|
|
80
122
|
}
|
|
81
123
|
catch (error) {
|
|
82
124
|
assertErrorThrown(error);
|
|
83
|
-
|
|
125
|
+
this.alertService.alertError(error, {
|
|
84
126
|
message: `Persistence Failure: Can't publish query.`,
|
|
85
127
|
text: `Error: ${error.message}`,
|
|
86
128
|
});
|
|
87
129
|
}
|
|
88
130
|
finally {
|
|
89
|
-
|
|
131
|
+
this.taskService.endTask(task);
|
|
90
132
|
this.publishState.complete();
|
|
91
133
|
}
|
|
92
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendREPLBaseStore.js","sourceRoot":"","sources":["../../src/stores/LegendREPLBaseStore.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,IAAI,GACL,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"LegendREPLBaseStore.js","sourceRoot":"","sources":["../../src/stores/LegendREPLBaseStore.tsx"],"names":[],"mappings":"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"}
|