@finos/legend-query-builder 4.15.25 → 4.15.26
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/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +2 -2
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/data-cube/QueryBuilderDataCube.d.ts +7 -3
- package/lib/components/data-cube/QueryBuilderDataCube.d.ts.map +1 -1
- package/lib/components/data-cube/QueryBuilderDataCube.js +11 -15
- package/lib/components/data-cube/QueryBuilderDataCube.js.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.js +2 -2
- package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/QueryBuilderState.d.ts +4 -2
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +16 -5
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.d.ts +3 -3
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.d.ts.map +1 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.js +7 -4
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.js.map +1 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngineHelper.d.ts +2 -2
- package/lib/stores/data-cube/QueryBuilderDataCubeEngineHelper.d.ts.map +1 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngineHelper.js +0 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngineHelper.js.map +1 -1
- package/package.json +1 -1
- package/src/components/QueryBuilder.tsx +6 -3
- package/src/components/data-cube/QueryBuilderDataCube.tsx +31 -27
- package/src/components/result/QueryBuilderResultPanel.tsx +2 -2
- package/src/index.ts +1 -0
- package/src/stores/QueryBuilderState.ts +19 -5
- package/src/stores/data-cube/QueryBuilderDataCubeEngine.ts +14 -11
- package/src/stores/data-cube/QueryBuilderDataCubeEngineHelper.ts +1 -2
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { DataCube } from '@finos/legend-data-cube';
|
|
18
|
-
import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
|
|
19
18
|
import { observer } from 'mobx-react-lite';
|
|
20
19
|
import {
|
|
21
20
|
clsx,
|
|
@@ -25,56 +24,61 @@ import {
|
|
|
25
24
|
ModalFooterButton,
|
|
26
25
|
TimesIcon,
|
|
27
26
|
} from '@finos/legend-art';
|
|
28
|
-
import {
|
|
27
|
+
import type { QueryBuilderDataCubeEngine } from '../../stores/data-cube/QueryBuilderDataCubeEngine.js';
|
|
29
28
|
|
|
30
|
-
const
|
|
31
|
-
(props: {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
},
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
export const QueryBuilderDataCubeDialog = observer(
|
|
43
|
-
(props: { queryBuilderState: QueryBuilderState }) => {
|
|
44
|
-
const { queryBuilderState } = props;
|
|
45
|
-
const closeModal = () => queryBuilderState.setIsCubeEnabled(false);
|
|
29
|
+
export const QueryDataCubeViewer = observer(
|
|
30
|
+
(props: {
|
|
31
|
+
engine: QueryBuilderDataCubeEngine;
|
|
32
|
+
close: () => void;
|
|
33
|
+
options?: {
|
|
34
|
+
fullScreen: boolean;
|
|
35
|
+
};
|
|
36
|
+
}) => {
|
|
37
|
+
const { engine, close, options } = props;
|
|
46
38
|
return (
|
|
47
39
|
<Dialog
|
|
48
40
|
open={true}
|
|
49
|
-
onClose={
|
|
41
|
+
onClose={close}
|
|
50
42
|
classes={{
|
|
51
43
|
root: 'editor-modal__root-container',
|
|
52
44
|
container: 'editor-modal__container',
|
|
53
|
-
paper: 'editor-modal__content',
|
|
45
|
+
paper: clsx('editor-modal__content', {
|
|
46
|
+
'query-builder-data-cube__dialog__container__content':
|
|
47
|
+
options?.fullScreen,
|
|
48
|
+
}),
|
|
54
49
|
}}
|
|
55
50
|
>
|
|
56
51
|
<Modal
|
|
57
52
|
darkMode={false}
|
|
58
|
-
className={clsx('editor-modal query-builder-data-cube__dialog'
|
|
53
|
+
className={clsx('editor-modal query-builder-data-cube__dialog', {
|
|
54
|
+
'query-builder-data-cube__dialog--expanded': options?.fullScreen,
|
|
55
|
+
})}
|
|
59
56
|
>
|
|
60
57
|
<div className="query-builder-data-cube__dialog__header">
|
|
61
58
|
<div className="query-builder-data-cube__dialog__header__actions">
|
|
62
59
|
<button
|
|
63
60
|
className="query-builder-data-cube__dialog__header__action"
|
|
64
61
|
tabIndex={-1}
|
|
65
|
-
onClick={
|
|
62
|
+
onClick={close}
|
|
66
63
|
title="Close"
|
|
67
64
|
>
|
|
68
65
|
<TimesIcon />
|
|
69
66
|
</button>
|
|
70
67
|
</div>
|
|
71
68
|
</div>
|
|
72
|
-
<div
|
|
73
|
-
|
|
69
|
+
<div
|
|
70
|
+
className={clsx('query-builder-data-cube__dialog__content', {
|
|
71
|
+
'query-builder-data-cube__dialog__content-full':
|
|
72
|
+
options?.fullScreen,
|
|
73
|
+
})}
|
|
74
|
+
>
|
|
75
|
+
<DataCube engine={engine} />
|
|
74
76
|
</div>
|
|
75
|
-
|
|
76
|
-
<
|
|
77
|
-
|
|
77
|
+
{!options?.fullScreen && (
|
|
78
|
+
<ModalFooter>
|
|
79
|
+
<ModalFooterButton onClick={close}>Close</ModalFooterButton>
|
|
80
|
+
</ModalFooter>
|
|
81
|
+
)}
|
|
78
82
|
</Modal>
|
|
79
83
|
</Dialog>
|
|
80
84
|
);
|
|
@@ -421,13 +421,13 @@ export const QueryBuilderResultPanel = observer(
|
|
|
421
421
|
) {
|
|
422
422
|
queryParametersState.parameterValuesEditorState.open(
|
|
423
423
|
(): Promise<void> => {
|
|
424
|
-
queryBuilderState.
|
|
424
|
+
queryBuilderState.openDataCubeEngine();
|
|
425
425
|
return Promise.resolve();
|
|
426
426
|
},
|
|
427
427
|
PARAMETER_SUBMIT_ACTION.DATA_CUBE,
|
|
428
428
|
);
|
|
429
429
|
} else {
|
|
430
|
-
queryBuilderState.
|
|
430
|
+
queryBuilderState.openDataCubeEngine();
|
|
431
431
|
}
|
|
432
432
|
};
|
|
433
433
|
const cancelQuery = applicationStore.guardUnhandledError(() =>
|
package/src/index.ts
CHANGED
|
@@ -30,6 +30,7 @@ export {
|
|
|
30
30
|
QueryBuilder_LegendApplicationPlugin,
|
|
31
31
|
} from './components/QueryBuilder_LegendApplicationPlugin.js';
|
|
32
32
|
export { QueryBuilderNavigationBlocker } from './components/QueryBuilderNavigationBlocker.js';
|
|
33
|
+
export { QueryDataCubeViewer } from './components/data-cube/QueryBuilderDataCube.js';
|
|
33
34
|
export { QueryBuilder } from './components/QueryBuilder.js';
|
|
34
35
|
export { QUERY_BUILDER_COMPONENT_ELEMENT_ID } from './components/QueryBuilderComponentElement.js';
|
|
35
36
|
export {
|
|
@@ -110,6 +110,8 @@ import { QueryBuilderChangeHistoryState } from './QueryBuilderChangeHistoryState
|
|
|
110
110
|
import { type QueryBuilderWorkflowState } from './query-workflow/QueryBuilderWorkFlowState.js';
|
|
111
111
|
import { type QueryChatState } from './QueryChatState.js';
|
|
112
112
|
import type { QueryBuilder_LegendApplicationPlugin_Extension } from './QueryBuilder_LegendApplicationPlugin_Extension.js';
|
|
113
|
+
import type { QueryBuilderDataCubeEngine } from './data-cube/QueryBuilderDataCubeEngine.js';
|
|
114
|
+
import { createDataCubeEngineFromQueryBuilder } from './data-cube/QueryBuilderDataCubeEngineHelper.js';
|
|
113
115
|
|
|
114
116
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
115
117
|
export interface QueryableSourceInfo {}
|
|
@@ -162,7 +164,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
|
162
164
|
isCheckingEntitlments = false;
|
|
163
165
|
isCalendarEnabled = false;
|
|
164
166
|
isLocalModeEnabled = false;
|
|
165
|
-
|
|
167
|
+
dataCubeEngine: QueryBuilderDataCubeEngine | undefined;
|
|
166
168
|
INTERNAL__enableInitializingDefaultSimpleExpressionValue = false;
|
|
167
169
|
|
|
168
170
|
lambdaWriteMode = QUERY_BUILDER_LAMBDA_WRITER_MODE.STANDARD;
|
|
@@ -215,7 +217,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
|
215
217
|
queryChatState: observable,
|
|
216
218
|
isQueryChatOpened: observable,
|
|
217
219
|
isLocalModeEnabled: observable,
|
|
218
|
-
|
|
220
|
+
dataCubeEngine: observable,
|
|
219
221
|
getAllFunction: observable,
|
|
220
222
|
lambdaWriteMode: observable,
|
|
221
223
|
INTERNAL__enableInitializingDefaultSimpleExpressionValue: observable,
|
|
@@ -229,7 +231,8 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
|
229
231
|
setShowParametersPanel: action,
|
|
230
232
|
setIsEditingWatermark: action,
|
|
231
233
|
setIsCalendarEnabled: action,
|
|
232
|
-
|
|
234
|
+
setDataCubeEngine: action,
|
|
235
|
+
openDataCubeEngine: action,
|
|
233
236
|
setIsCheckingEntitlments: action,
|
|
234
237
|
setClass: action,
|
|
235
238
|
setIsQueryChatOpened: action,
|
|
@@ -412,8 +415,8 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
|
412
415
|
this.isLocalModeEnabled = val;
|
|
413
416
|
}
|
|
414
417
|
|
|
415
|
-
|
|
416
|
-
this.
|
|
418
|
+
setDataCubeEngine(val: QueryBuilderDataCubeEngine | undefined): void {
|
|
419
|
+
this.dataCubeEngine = val;
|
|
417
420
|
}
|
|
418
421
|
|
|
419
422
|
setInternalize(val: QueryBuilderInternalizeState | undefined): void {
|
|
@@ -466,6 +469,17 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
|
466
469
|
return !this.unsupportedQueryState.rawLambda;
|
|
467
470
|
}
|
|
468
471
|
|
|
472
|
+
openDataCubeEngine(): void {
|
|
473
|
+
try {
|
|
474
|
+
this.setDataCubeEngine(createDataCubeEngineFromQueryBuilder(this));
|
|
475
|
+
} catch (error) {
|
|
476
|
+
assertErrorThrown(error);
|
|
477
|
+
this.applicationStore.notificationService.notifyError(
|
|
478
|
+
`Unable to open data cube in query builder`,
|
|
479
|
+
);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
|
|
469
483
|
registerCommands(): void {
|
|
470
484
|
this.applicationStore.commandService.registerCommand({
|
|
471
485
|
key: QUERY_BUILDER_COMMAND_KEY.COMPILE,
|
|
@@ -46,7 +46,7 @@ import { guaranteeType, isNonNullable, LogService } from '@finos/legend-shared';
|
|
|
46
46
|
|
|
47
47
|
class QueryBuilderDataCubeSource extends DataCubeSource {
|
|
48
48
|
mapping?: string | undefined;
|
|
49
|
-
runtime
|
|
49
|
+
runtime: string | undefined;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
@@ -55,14 +55,14 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
55
55
|
readonly selectInitialQuery: RawLambda;
|
|
56
56
|
readonly mappingPath: string | undefined;
|
|
57
57
|
readonly parameterValues: ParameterValue[] | undefined;
|
|
58
|
-
readonly runtimePath: string;
|
|
58
|
+
readonly runtimePath: string | undefined;
|
|
59
59
|
_parameters: object | undefined;
|
|
60
60
|
|
|
61
61
|
constructor(
|
|
62
62
|
selectQuery: RawLambda,
|
|
63
63
|
parameterValues: ParameterValue[] | undefined,
|
|
64
64
|
mappingPath: string | undefined,
|
|
65
|
-
runtimePath: string,
|
|
65
|
+
runtimePath: string | undefined,
|
|
66
66
|
graphManagerState: GraphManagerState,
|
|
67
67
|
) {
|
|
68
68
|
super();
|
|
@@ -177,7 +177,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
177
177
|
);
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
async getRelationalType(query: RawLambda): Promise<RelationType> {
|
|
181
181
|
const relationType =
|
|
182
182
|
await this.graphState.graphManager.getLambdaRelationType(
|
|
183
183
|
query,
|
|
@@ -242,13 +242,16 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
242
242
|
source: DataCubeSource,
|
|
243
243
|
): V1_AppliedFunction | undefined {
|
|
244
244
|
if (source instanceof QueryBuilderDataCubeSource) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
245
|
+
const appendFromFunc = Boolean(source.mapping ?? source.runtime);
|
|
246
|
+
return appendFromFunc
|
|
247
|
+
? _function(
|
|
248
|
+
DataCubeFunction.FROM,
|
|
249
|
+
[
|
|
250
|
+
source.mapping ? _elementPtr(source.mapping) : undefined,
|
|
251
|
+
source.runtime ? _elementPtr(source.runtime) : undefined,
|
|
252
|
+
].filter(isNonNullable),
|
|
253
|
+
)
|
|
254
|
+
: undefined;
|
|
252
255
|
}
|
|
253
256
|
return undefined;
|
|
254
257
|
}
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { type DataCubeEngine } from '@finos/legend-data-cube';
|
|
18
17
|
import {
|
|
19
18
|
QUERY_BUILDER_LAMBDA_WRITER_MODE,
|
|
20
19
|
type QueryBuilderState,
|
|
@@ -25,7 +24,7 @@ import { buildExecutionParameterValues } from '../shared/LambdaParameterState.js
|
|
|
25
24
|
|
|
26
25
|
export const createDataCubeEngineFromQueryBuilder = (
|
|
27
26
|
queryBuilderState: QueryBuilderState,
|
|
28
|
-
):
|
|
27
|
+
): QueryBuilderDataCubeEngine | undefined => {
|
|
29
28
|
const runtime =
|
|
30
29
|
queryBuilderState.executionContextState.runtimeValue instanceof
|
|
31
30
|
RuntimePointer
|