@finos/legend-query-builder 4.15.34 → 4.15.35
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.js +1 -1
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryLoader.d.ts.map +1 -1
- package/lib/components/QueryLoader.js +34 -30
- package/lib/components/QueryLoader.js.map +1 -1
- package/lib/components/data-cube/QueryBuilderDataCube.d.ts +2 -2
- package/lib/components/data-cube/QueryBuilderDataCube.d.ts.map +1 -1
- package/lib/components/data-cube/QueryBuilderDataCube.js +2 -2
- package/lib/components/data-cube/QueryBuilderDataCube.js.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.js +5 -4
- package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +4 -4
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/index.css +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 -4
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +8 -8
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryLoaderState.d.ts +4 -4
- package/lib/stores/QueryLoaderState.d.ts.map +1 -1
- package/lib/stores/QueryLoaderState.js +12 -12
- package/lib/stores/QueryLoaderState.js.map +1 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.d.ts +7 -7
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.d.ts.map +1 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.js +14 -11
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.js.map +1 -1
- package/lib/stores/data-cube/{QueryBuilderDataCubeEngineHelper.d.ts → QueryBuilderDataCubeHelper.d.ts} +3 -3
- package/lib/stores/data-cube/QueryBuilderDataCubeHelper.d.ts.map +1 -0
- package/lib/stores/data-cube/{QueryBuilderDataCubeEngineHelper.js → QueryBuilderDataCubeHelper.js} +10 -6
- package/lib/stores/data-cube/QueryBuilderDataCubeHelper.js.map +1 -0
- package/lib/stores/data-cube/QueryBuilderDataCubeViewerState.d.ts +23 -0
- package/lib/stores/data-cube/QueryBuilderDataCubeViewerState.d.ts.map +1 -0
- package/lib/stores/data-cube/QueryBuilderDataCubeViewerState.js +24 -0
- package/lib/stores/data-cube/QueryBuilderDataCubeViewerState.js.map +1 -0
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.js +4 -4
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.js.map +1 -1
- package/package.json +10 -10
- package/src/components/QueryBuilder.tsx +3 -3
- package/src/components/QueryLoader.tsx +41 -38
- package/src/components/data-cube/QueryBuilderDataCube.tsx +4 -4
- package/src/components/result/QueryBuilderResultPanel.tsx +6 -8
- package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +6 -8
- package/src/index.ts +1 -0
- package/src/stores/QueryBuilderState.ts +13 -9
- package/src/stores/QueryLoaderState.ts +15 -17
- package/src/stores/data-cube/QueryBuilderDataCubeEngine.ts +25 -18
- package/src/stores/data-cube/{QueryBuilderDataCubeEngineHelper.ts → QueryBuilderDataCubeHelper.ts} +13 -9
- package/src/stores/data-cube/QueryBuilderDataCubeViewerState.ts +28 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.ts +6 -9
- package/tsconfig.json +2 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngineHelper.d.ts.map +0 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngineHelper.js.map +0 -1
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
17
|
-
import { DataCubeEngine, DataCubeSource, type
|
|
16
|
+
import { V1_Lambda, RawLambda, TDSExecutionResult, V1_AppliedFunction, type GraphManagerState, type PureModel, type V1_ValueSpecification, type ParameterValue } from '@finos/legend-graph';
|
|
17
|
+
import { DataCubeEngine, DataCubeSource, type CompletionItem, DataCubeQuery } from '@finos/legend-data-cube';
|
|
18
18
|
import { LogService, type PlainObject } from '@finos/legend-shared';
|
|
19
19
|
declare class QueryBuilderDataCubeSource extends DataCubeSource {
|
|
20
20
|
mapping?: string | undefined;
|
|
@@ -27,20 +27,20 @@ export declare class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
27
27
|
readonly mappingPath: string | undefined;
|
|
28
28
|
readonly parameterValues: ParameterValue[] | undefined;
|
|
29
29
|
readonly runtimePath: string | undefined;
|
|
30
|
-
|
|
30
|
+
readonly parameters: object | undefined;
|
|
31
31
|
constructor(selectQuery: RawLambda, parameterValues: ParameterValue[] | undefined, mappingPath: string | undefined, runtimePath: string | undefined, graphManagerState: GraphManagerState);
|
|
32
32
|
get sourceLabel(): string;
|
|
33
33
|
get graph(): PureModel;
|
|
34
34
|
private getSourceFunctionExpression;
|
|
35
|
-
|
|
35
|
+
generateInitialQuery(): Promise<DataCubeQuery>;
|
|
36
36
|
processQuerySource(value: PlainObject): Promise<QueryBuilderDataCubeSource>;
|
|
37
37
|
private buildRawLambdaFromValueSpec;
|
|
38
38
|
getQueryTypeahead(code: string, baseQuery: V1_Lambda, source: DataCubeSource): Promise<CompletionItem[]>;
|
|
39
39
|
parseValueSpecification(code: string, returnSourceInformation?: boolean): Promise<V1_ValueSpecification>;
|
|
40
40
|
getValueSpecificationCode(value: V1_ValueSpecification, pretty?: boolean | undefined): Promise<string>;
|
|
41
|
-
|
|
42
|
-
getQueryRelationType(query: V1_Lambda, source: DataCubeSource): Promise<
|
|
43
|
-
getQueryCodeRelationReturnType(code: string, baseQuery: V1_ValueSpecification, source: DataCubeSource): Promise<
|
|
41
|
+
getRelationType(query: RawLambda): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
|
|
42
|
+
getQueryRelationType(query: V1_Lambda, source: DataCubeSource): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
|
|
43
|
+
getQueryCodeRelationReturnType(code: string, baseQuery: V1_ValueSpecification, source: DataCubeSource): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
|
|
44
44
|
executeQuery(query: V1_Lambda, source: DataCubeSource): Promise<{
|
|
45
45
|
result: TDSExecutionResult;
|
|
46
46
|
executedQuery: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilderDataCubeEngine.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"QueryBuilderDataCubeEngine.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EAET,kBAAkB,EAClB,kBAAkB,EAKlB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,cAAc,EACd,cAAc,EAGd,KAAK,cAAc,EAEnB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,UAAU,EACV,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,cAAM,0BAA2B,SAAQ,cAAc;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,qBAAa,0BAA2B,SAAQ,cAAc;IAC5D,QAAQ,CAAC,UAAU,aAAoB;IACvC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGtC,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,EAC7C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,iBAAiB,EAAE,iBAAiB;IAYtC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,OAAO,CAAC,2BAA2B;IAmB7B,oBAAoB;IAmBpB,kBAAkB,CAAC,KAAK,EAAE,WAAW;IAe3C,OAAO,CAAC,2BAA2B;IAU7B,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,cAAc;IAmBT,uBAAuB,CACpC,IAAI,EAAE,MAAM,EACZ,uBAAuB,CAAC,EAAE,OAAO;IAWpB,yBAAyB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS;IAQxB,eAAe,CAAC,KAAK,EAAE,SAAS;IASvB,oBAAoB,CACjC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,cAAc;IAMT,8BAA8B,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,cAAc;IAYT,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc;;;;;IAgC3D,qBAAqB,CAC5B,MAAM,EAAE,cAAc,GACrB,kBAAkB,GAAG,SAAS;CAelC"}
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
17
|
-
import { _elementPtr,
|
|
16
|
+
import { V1_Lambda, RawLambda, RelationalExecutionActivities, TDSExecutionResult, V1_AppliedFunction, V1_deserializeRawValueSpecification, V1_deserializeValueSpecification, V1_RawLambda, V1_serializeValueSpecification, LAMBDA_PIPE, SUPPORTED_FUNCTIONS, } from '@finos/legend-graph';
|
|
17
|
+
import { _elementPtr, DataCubeEngine, DataCubeSource, _function, DataCubeFunction, _functionName, DataCubeQuery, } from '@finos/legend-data-cube';
|
|
18
18
|
import { guaranteeType, isNonNullable, LogService, } from '@finos/legend-shared';
|
|
19
19
|
class QueryBuilderDataCubeSource extends DataCubeSource {
|
|
20
20
|
mapping;
|
|
@@ -27,7 +27,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
27
27
|
mappingPath;
|
|
28
28
|
parameterValues;
|
|
29
29
|
runtimePath;
|
|
30
|
-
|
|
30
|
+
parameters;
|
|
31
31
|
constructor(selectQuery, parameterValues, mappingPath, runtimePath, graphManagerState) {
|
|
32
32
|
super();
|
|
33
33
|
this.graphState = graphManagerState;
|
|
@@ -35,6 +35,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
35
35
|
this.mappingPath = mappingPath;
|
|
36
36
|
this.runtimePath = runtimePath;
|
|
37
37
|
this.parameterValues = parameterValues;
|
|
38
|
+
this.parameters = selectQuery.parameters;
|
|
38
39
|
}
|
|
39
40
|
get sourceLabel() {
|
|
40
41
|
return `Query Builder Report`;
|
|
@@ -53,9 +54,8 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
53
54
|
}
|
|
54
55
|
return srcFuncExp;
|
|
55
56
|
}
|
|
56
|
-
async
|
|
57
|
+
async generateInitialQuery() {
|
|
57
58
|
const srcFuncExp = this.getSourceFunctionExpression();
|
|
58
|
-
this._parameters = this.selectInitialQuery.parameters;
|
|
59
59
|
const fromFuncExp = new V1_AppliedFunction();
|
|
60
60
|
fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
|
|
61
61
|
fromFuncExp.parameters = [srcFuncExp];
|
|
@@ -65,16 +65,19 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
65
65
|
if (this.runtimePath) {
|
|
66
66
|
fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
|
|
67
67
|
}
|
|
68
|
-
const columns = (await this.
|
|
68
|
+
const columns = (await this.getRelationType(this.selectInitialQuery))
|
|
69
69
|
.columns;
|
|
70
70
|
const query = new DataCubeQuery();
|
|
71
71
|
query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
|
|
72
72
|
return query;
|
|
73
73
|
}
|
|
74
74
|
async processQuerySource(value) {
|
|
75
|
+
// TODO: this is an abnormal usage of this method, this is the place
|
|
76
|
+
// where we can enforce which source this engine supports, instead
|
|
77
|
+
// of hardcoding the logic like this.
|
|
75
78
|
const srcFuncExp = this.getSourceFunctionExpression();
|
|
76
79
|
const source = new QueryBuilderDataCubeSource();
|
|
77
|
-
source.
|
|
80
|
+
source.columns = (await this.getRelationType(this.selectInitialQuery)).columns;
|
|
78
81
|
source.mapping = this.mappingPath;
|
|
79
82
|
source.runtime = this.runtimePath;
|
|
80
83
|
source.query = srcFuncExp;
|
|
@@ -99,22 +102,22 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
|
|
|
99
102
|
async getValueSpecificationCode(value, pretty) {
|
|
100
103
|
return this.graphState.graphManager.valueSpecificationToPureCode(V1_serializeValueSpecification(value, []), pretty);
|
|
101
104
|
}
|
|
102
|
-
async
|
|
105
|
+
async getRelationType(query) {
|
|
103
106
|
const relationType = await this.graphState.graphManager.getLambdaRelationType(query, this.graph);
|
|
104
107
|
return relationType;
|
|
105
108
|
}
|
|
106
109
|
async getQueryRelationType(query, source) {
|
|
107
110
|
const lambda = this.buildRawLambdaFromValueSpec(query);
|
|
108
|
-
return this.
|
|
111
|
+
return this.getRelationType(lambda);
|
|
109
112
|
}
|
|
110
113
|
async getQueryCodeRelationReturnType(code, baseQuery, source) {
|
|
111
114
|
const queryString = await this.graphState.graphManager.valueSpecificationToPureCode(V1_serializeValueSpecification(baseQuery, []));
|
|
112
115
|
const fullQuery = queryString + code;
|
|
113
|
-
return this.
|
|
116
|
+
return this.getRelationType(await this.graphState.graphManager.pureCodeToLambda(fullQuery));
|
|
114
117
|
}
|
|
115
118
|
async executeQuery(query, source) {
|
|
116
119
|
const lambda = this.buildRawLambdaFromValueSpec(query);
|
|
117
|
-
lambda.parameters = this.
|
|
120
|
+
lambda.parameters = this.parameters;
|
|
118
121
|
const [executionWithMetadata, queryString] = await Promise.all([
|
|
119
122
|
this.graphState.graphManager.runQuery(lambda, undefined, undefined, this.graph, {
|
|
120
123
|
parameterValues: this.parameterValues ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilderDataCubeEngine.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"QueryBuilderDataCubeEngine.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { type QueryBuilderState } from '../QueryBuilderState.js';
|
|
17
|
-
import {
|
|
18
|
-
export declare const
|
|
19
|
-
//# sourceMappingURL=
|
|
17
|
+
import { QueryBuilderDataCubeViewerState } from './QueryBuilderDataCubeViewerState.js';
|
|
18
|
+
export declare const createDataCubeViewerStateFromQueryBuilder: (queryBuilderState: QueryBuilderState) => Promise<QueryBuilderDataCubeViewerState | undefined>;
|
|
19
|
+
//# sourceMappingURL=QueryBuilderDataCubeHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryBuilderDataCubeHelper.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,eAAO,MAAM,yCAAyC,sBACjC,iBAAiB,KACnC,OAAO,CAAC,+BAA+B,GAAG,SAAS,CA+BrD,CAAC"}
|
package/lib/stores/data-cube/{QueryBuilderDataCubeEngineHelper.js → QueryBuilderDataCubeHelper.js}
RENAMED
|
@@ -17,21 +17,25 @@ import { QUERY_BUILDER_LAMBDA_WRITER_MODE, } from '../QueryBuilderState.js';
|
|
|
17
17
|
import { RuntimePointer } from '@finos/legend-graph';
|
|
18
18
|
import { QueryBuilderDataCubeEngine } from './QueryBuilderDataCubeEngine.js';
|
|
19
19
|
import { buildExecutionParameterValues } from '../shared/LambdaParameterState.js';
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
import { QueryBuilderDataCubeViewerState } from './QueryBuilderDataCubeViewerState.js';
|
|
21
|
+
export const createDataCubeViewerStateFromQueryBuilder = async (queryBuilderState) => {
|
|
22
|
+
const runtimePath = queryBuilderState.executionContextState.runtimeValue instanceof
|
|
22
23
|
RuntimePointer
|
|
23
24
|
? queryBuilderState.executionContextState.runtimeValue.packageableRuntime
|
|
24
25
|
.value.path
|
|
25
26
|
: undefined;
|
|
26
|
-
if (!
|
|
27
|
+
if (!runtimePath) {
|
|
27
28
|
return undefined;
|
|
28
29
|
}
|
|
30
|
+
const mappingPath = queryBuilderState.executionContextState.mapping?.path;
|
|
29
31
|
const currentLambdaWriterMode = queryBuilderState.lambdaWriteMode;
|
|
30
32
|
// ensure we write in new tds mode
|
|
31
33
|
queryBuilderState.setLambdaWriteMode(QUERY_BUILDER_LAMBDA_WRITER_MODE.TYPED_FETCH_STRUCTURE);
|
|
32
34
|
const parameterValues = buildExecutionParameterValues(queryBuilderState.parametersState.parameterStates, queryBuilderState.graphManagerState);
|
|
33
|
-
const
|
|
35
|
+
const lambda = queryBuilderState.buildQuery();
|
|
36
|
+
const engine = new QueryBuilderDataCubeEngine(lambda, parameterValues, mappingPath, runtimePath, queryBuilderState.graphManagerState);
|
|
34
37
|
queryBuilderState.setLambdaWriteMode(currentLambdaWriterMode);
|
|
35
|
-
|
|
38
|
+
const query = await engine.generateInitialQuery();
|
|
39
|
+
return new QueryBuilderDataCubeViewerState(query, engine);
|
|
36
40
|
};
|
|
37
|
-
//# sourceMappingURL=
|
|
41
|
+
//# sourceMappingURL=QueryBuilderDataCubeHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryBuilderDataCubeHelper.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,gCAAgC,GAEjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,MAAM,CAAC,MAAM,yCAAyC,GAAG,KAAK,EAC5D,iBAAoC,EACkB,EAAE;IACxD,MAAM,WAAW,GACf,iBAAiB,CAAC,qBAAqB,CAAC,YAAY;QACpD,cAAc;QACZ,CAAC,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,YAAY,CAAC,kBAAkB;aACpE,KAAK,CAAC,IAAI;QACf,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1E,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,eAAe,CAAC;IAClE,kCAAkC;IAClC,iBAAiB,CAAC,kBAAkB,CAClC,gCAAgC,CAAC,qBAAqB,CACvD,CAAC;IACF,MAAM,eAAe,GAAG,6BAA6B,CACnD,iBAAiB,CAAC,eAAe,CAAC,eAAe,EACjD,iBAAiB,CAAC,iBAAiB,CACpC,CAAC;IACF,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAC3C,MAAM,EACN,eAAe,EACf,WAAW,EACX,WAAW,EACX,iBAAiB,CAAC,iBAAiB,CACpC,CAAC;IACF,iBAAiB,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,CAAC;IAClD,OAAO,IAAI,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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 { DataCubeQuery } from '@finos/legend-data-cube';
|
|
17
|
+
import type { QueryBuilderDataCubeEngine } from './QueryBuilderDataCubeEngine.js';
|
|
18
|
+
export declare class QueryBuilderDataCubeViewerState {
|
|
19
|
+
query: DataCubeQuery;
|
|
20
|
+
engine: QueryBuilderDataCubeEngine;
|
|
21
|
+
constructor(query: DataCubeQuery, engine: QueryBuilderDataCubeEngine);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=QueryBuilderDataCubeViewerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryBuilderDataCubeViewerState.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeViewerState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAElF,qBAAa,+BAA+B;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,0BAA0B,CAAC;gBAEvB,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,0BAA0B;CAIrE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
+
export class QueryBuilderDataCubeViewerState {
|
|
17
|
+
query;
|
|
18
|
+
engine;
|
|
19
|
+
constructor(query, engine) {
|
|
20
|
+
this.query = query;
|
|
21
|
+
this.engine = engine;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=QueryBuilderDataCubeViewerState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryBuilderDataCubeViewerState.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeViewerState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,OAAO,+BAA+B;IAC1C,KAAK,CAAgB;IACrB,MAAM,CAA6B;IAEnC,YAAY,KAAoB,EAAE,MAAkC;QAClE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilderRelationProjectValueSpecBuidler.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EAEvB,wBAAwB,EAazB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,yDAAyD,CAAC;AAMjE,eAAO,MAAM,uBAAuB,wBACb,kBAAkB,YAC7B,oBAAoB,YACpB,2BAA2B,KACpC,
|
|
1
|
+
{"version":3,"file":"QueryBuilderRelationProjectValueSpecBuidler.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EAEvB,wBAAwB,EAazB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,yDAAyD,CAAC;AAMjE,eAAO,MAAM,uBAAuB,wBACb,kBAAkB,YAC7B,oBAAoB,YACpB,2BAA2B,KACpC,wBA8EF,CAAC"}
|
package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { ColSpecArray, extractElementNameFromPath, SimpleFunctionExpression, ColSpecArrayInstance, Multiplicity, ColSpec, INTERNAL__UnknownValueSpecification, V1_serializeRawValueSpecification, V1_transformRawLambda, V1_GraphTransformerContextBuilder, GenericType, GenericTypeExplicitReference,
|
|
16
|
+
import { ColSpecArray, extractElementNameFromPath, SimpleFunctionExpression, ColSpecArrayInstance, Multiplicity, ColSpec, INTERNAL__UnknownValueSpecification, V1_serializeRawValueSpecification, V1_transformRawLambda, V1_GraphTransformerContextBuilder, GenericType, GenericTypeExplicitReference, Relation, RelationColumn, RelationType, } from '@finos/legend-graph';
|
|
17
17
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graph/QueryBuilderMetaModelConst.js';
|
|
18
18
|
import { QueryBuilderDerivationProjectionColumnState, QueryBuilderSimpleProjectionColumnState, } from './QueryBuilderProjectionColumnState.js';
|
|
19
19
|
import { buildGenericLambdaFunctionInstanceValue } from '../../../QueryBuilderValueSpecificationHelper.js';
|
|
@@ -25,7 +25,7 @@ export const buildRelationProjection = (precedingExpression, tdsState, options)
|
|
|
25
25
|
const instanceVal = new ColSpecArrayInstance(Multiplicity.ONE, undefined);
|
|
26
26
|
const colSepcArray = new ColSpecArray();
|
|
27
27
|
instanceVal.values = [colSepcArray];
|
|
28
|
-
const relationType = new
|
|
28
|
+
const relationType = new RelationType(RelationType.ID);
|
|
29
29
|
tdsState.projectionColumns.forEach((projectionColumnState) => {
|
|
30
30
|
const colSpec = new ColSpec();
|
|
31
31
|
colSepcArray.colSpecs.push(colSpec);
|
|
@@ -50,10 +50,10 @@ export const buildRelationProjection = (precedingExpression, tdsState, options)
|
|
|
50
50
|
}
|
|
51
51
|
colSpec.function1 = columnLambda;
|
|
52
52
|
const returnType = guaranteeNonNullable(projectionColumnState.getColumnType(), `Can't create value spec for projection column ${projectionColumnState.columnName}`);
|
|
53
|
-
relationType.columns.push(new
|
|
53
|
+
relationType.columns.push(new RelationColumn(projectionColumnState.columnName, returnType));
|
|
54
54
|
});
|
|
55
55
|
projectFunction.parametersValues = [precedingExpression, instanceVal];
|
|
56
|
-
const relationGenericType = new GenericType(
|
|
56
|
+
const relationGenericType = new GenericType(Relation.INSTANCE);
|
|
57
57
|
const relationTypeGenericType = new GenericType(relationType);
|
|
58
58
|
relationGenericType.typeArguments = [
|
|
59
59
|
GenericTypeExplicitReference.create(relationTypeGenericType),
|
package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilderRelationProjectValueSpecBuidler.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,YAAY,EAEZ,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,EACZ,OAAO,EACP,mCAAmC,EACnC,iCAAiC,EACjC,qBAAqB,EACrB,iCAAiC,EACjC,WAAW,EACX,4BAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"QueryBuilderRelationProjectValueSpecBuidler.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos/legend-query-builder",
|
|
3
|
-
"version": "4.15.
|
|
3
|
+
"version": "4.15.35",
|
|
4
4
|
"description": "Legend query builder core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"legend",
|
|
@@ -42,15 +42,15 @@
|
|
|
42
42
|
"test:watch": "jest --watch"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@finos/legend-application": "16.0.
|
|
46
|
-
"@finos/legend-art": "7.1.
|
|
47
|
-
"@finos/legend-code-editor": "2.0.
|
|
48
|
-
"@finos/legend-data-cube": "0.0.
|
|
49
|
-
"@finos/legend-graph": "
|
|
50
|
-
"@finos/legend-lego": "2.0.
|
|
51
|
-
"@finos/legend-server-depot": "6.0.
|
|
52
|
-
"@finos/legend-shared": "10.0.
|
|
53
|
-
"@finos/legend-storage": "3.0.
|
|
45
|
+
"@finos/legend-application": "16.0.16",
|
|
46
|
+
"@finos/legend-art": "7.1.73",
|
|
47
|
+
"@finos/legend-code-editor": "2.0.32",
|
|
48
|
+
"@finos/legend-data-cube": "0.0.37",
|
|
49
|
+
"@finos/legend-graph": "32.0.0",
|
|
50
|
+
"@finos/legend-lego": "2.0.34",
|
|
51
|
+
"@finos/legend-server-depot": "6.0.74",
|
|
52
|
+
"@finos/legend-shared": "10.0.65",
|
|
53
|
+
"@finos/legend-storage": "3.0.116",
|
|
54
54
|
"@testing-library/dom": "10.4.0",
|
|
55
55
|
"@testing-library/react": "16.1.0",
|
|
56
56
|
"@types/react": "19.0.2",
|
|
@@ -1138,10 +1138,10 @@ export const QueryBuilder = observer(
|
|
|
1138
1138
|
</Modal>
|
|
1139
1139
|
</Dialog>
|
|
1140
1140
|
)}
|
|
1141
|
-
{queryBuilderState.
|
|
1141
|
+
{queryBuilderState.dataCubeViewerState && (
|
|
1142
1142
|
<QueryDataCubeViewer
|
|
1143
|
-
|
|
1144
|
-
close={() => queryBuilderState.
|
|
1143
|
+
state={queryBuilderState.dataCubeViewerState}
|
|
1144
|
+
close={() => queryBuilderState.setDataCubeViewerState(undefined)}
|
|
1145
1145
|
/>
|
|
1146
1146
|
)}
|
|
1147
1147
|
</div>
|
|
@@ -111,14 +111,11 @@ export const QueryLoader = observer(
|
|
|
111
111
|
const { queryLoaderState, loadActionLabel } = props;
|
|
112
112
|
const applicationStore = useApplicationStore();
|
|
113
113
|
const searchInputRef = useRef<HTMLInputElement>(null);
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
value: op,
|
|
118
|
-
}));
|
|
119
|
-
const results = queryLoaderState.queries;
|
|
114
|
+
const searchResults = queryLoaderState.queries;
|
|
115
|
+
|
|
116
|
+
// curated template queries
|
|
120
117
|
const curatedTemplateQueries = [
|
|
121
|
-
...queryLoaderState.
|
|
118
|
+
...queryLoaderState.curatedTemplateQuerySpecifications
|
|
122
119
|
.map((s) =>
|
|
123
120
|
queryLoaderState.queryBuilderState
|
|
124
121
|
? s.getCuratedTemplateQueries(queryLoaderState.queryBuilderState)
|
|
@@ -126,36 +123,22 @@ export const QueryLoader = observer(
|
|
|
126
123
|
)
|
|
127
124
|
.flat(),
|
|
128
125
|
].sort((a, b) => a.title.localeCompare(b.title));
|
|
129
|
-
|
|
130
126
|
const loadCuratedTemplateQuery =
|
|
131
|
-
queryLoaderState.
|
|
127
|
+
queryLoaderState.curatedTemplateQuerySpecifications
|
|
132
128
|
// already using an arrow function suggested by @typescript-eslint/unbound-method
|
|
133
129
|
// eslint-disable-next-line
|
|
134
130
|
.map((s) => () => s.loadCuratedTemplateQuery)
|
|
135
131
|
.filter(isNonNullable)[0];
|
|
136
132
|
|
|
133
|
+
// search filters
|
|
134
|
+
const sortOptions = Object.values(SORT_BY_OPTIONS).map((op) => ({
|
|
135
|
+
label: op,
|
|
136
|
+
value: op,
|
|
137
|
+
}));
|
|
137
138
|
const [isMineOnly, setIsMineOnly] = useState(false);
|
|
138
139
|
const [showQueryNameEditInput, setShowQueryNameEditInput] = useState<
|
|
139
140
|
number | undefined
|
|
140
141
|
>();
|
|
141
|
-
useEffect(() => {
|
|
142
|
-
queryRenameInputRef.current?.focus();
|
|
143
|
-
queryRenameInputRef.current?.select();
|
|
144
|
-
}, [showQueryNameEditInput]);
|
|
145
|
-
const [queryNameInputValue, setQueryNameInputValue] = useState<string>('');
|
|
146
|
-
const showEditQueryNameInput =
|
|
147
|
-
(value: string, idx: number): (() => void) =>
|
|
148
|
-
(): void => {
|
|
149
|
-
setQueryNameInputValue(value);
|
|
150
|
-
setShowQueryNameEditInput(idx);
|
|
151
|
-
};
|
|
152
|
-
const hideEditQueryNameInput = (): void => {
|
|
153
|
-
setShowQueryNameEditInput(undefined);
|
|
154
|
-
setQueryNameInputValue('');
|
|
155
|
-
};
|
|
156
|
-
const changeQueryNameInputValue: React.ChangeEventHandler<
|
|
157
|
-
HTMLInputElement
|
|
158
|
-
> = (event) => setQueryNameInputValue(event.target.value);
|
|
159
142
|
|
|
160
143
|
// search text
|
|
161
144
|
const debouncedLoadQueries = useMemo(
|
|
@@ -176,7 +159,7 @@ export const QueryLoader = observer(
|
|
|
176
159
|
debouncedLoadQueries(event.target.value);
|
|
177
160
|
}
|
|
178
161
|
};
|
|
179
|
-
const
|
|
162
|
+
const clearSearchResults = (): void => {
|
|
180
163
|
queryLoaderState.setSearchText('');
|
|
181
164
|
debouncedLoadQueries.cancel();
|
|
182
165
|
debouncedLoadQueries('');
|
|
@@ -189,7 +172,7 @@ export const QueryLoader = observer(
|
|
|
189
172
|
debouncedLoadQueries.cancel();
|
|
190
173
|
debouncedLoadQueries(queryLoaderState.searchText);
|
|
191
174
|
};
|
|
192
|
-
const
|
|
175
|
+
const applySort = (option: SortByOption): void => {
|
|
193
176
|
queryLoaderState.setSortBy(option.value);
|
|
194
177
|
debouncedLoadQueries.cancel();
|
|
195
178
|
debouncedLoadQueries(queryLoaderState.searchText);
|
|
@@ -231,7 +214,26 @@ export const QueryLoader = observer(
|
|
|
231
214
|
searchInputRef.current?.focus();
|
|
232
215
|
}, [queryLoaderState]);
|
|
233
216
|
|
|
234
|
-
//
|
|
217
|
+
// query rename
|
|
218
|
+
const queryRenameInputRef = useRef<HTMLInputElement>(null);
|
|
219
|
+
useEffect(() => {
|
|
220
|
+
queryRenameInputRef.current?.focus();
|
|
221
|
+
queryRenameInputRef.current?.select();
|
|
222
|
+
}, [showQueryNameEditInput]);
|
|
223
|
+
const [queryNameInputValue, setQueryNameInputValue] = useState<string>('');
|
|
224
|
+
const showEditQueryNameInput =
|
|
225
|
+
(value: string, idx: number): (() => void) =>
|
|
226
|
+
(): void => {
|
|
227
|
+
setQueryNameInputValue(value);
|
|
228
|
+
setShowQueryNameEditInput(idx);
|
|
229
|
+
};
|
|
230
|
+
const hideEditQueryNameInput = (): void => {
|
|
231
|
+
setShowQueryNameEditInput(undefined);
|
|
232
|
+
setQueryNameInputValue('');
|
|
233
|
+
};
|
|
234
|
+
const changeQueryNameInputValue: React.ChangeEventHandler<
|
|
235
|
+
HTMLInputElement
|
|
236
|
+
> = (event) => setQueryNameInputValue(event.target.value);
|
|
235
237
|
const renameQuery =
|
|
236
238
|
(query: LightQuery): (() => void) =>
|
|
237
239
|
(): void => {
|
|
@@ -244,6 +246,7 @@ export const QueryLoader = observer(
|
|
|
244
246
|
}
|
|
245
247
|
};
|
|
246
248
|
|
|
249
|
+
// other actions
|
|
247
250
|
const deleteQuery =
|
|
248
251
|
(query: LightQuery): (() => void) =>
|
|
249
252
|
(): void => {
|
|
@@ -253,7 +256,6 @@ export const QueryLoader = observer(
|
|
|
253
256
|
);
|
|
254
257
|
}
|
|
255
258
|
};
|
|
256
|
-
|
|
257
259
|
const showPreview = (
|
|
258
260
|
queryId: string | undefined,
|
|
259
261
|
template?: {
|
|
@@ -291,7 +293,7 @@ export const QueryLoader = observer(
|
|
|
291
293
|
<button
|
|
292
294
|
className="query-loader__search__input__clear-btn"
|
|
293
295
|
tabIndex={-1}
|
|
294
|
-
onClick={
|
|
296
|
+
onClick={clearSearchResults}
|
|
295
297
|
title="Clear"
|
|
296
298
|
>
|
|
297
299
|
<TimesIcon />
|
|
@@ -374,10 +376,11 @@ export const QueryLoader = observer(
|
|
|
374
376
|
<div className="query-loader__results__summary">
|
|
375
377
|
{queryLoaderState.showingDefaultQueries ? (
|
|
376
378
|
(queryLoaderState.generateDefaultQueriesSummaryText?.(
|
|
377
|
-
|
|
379
|
+
searchResults,
|
|
378
380
|
) ?? 'Refine your search to get better matches')
|
|
379
381
|
) : !queryLoaderState.isCuratedTemplateToggled ? (
|
|
380
|
-
|
|
382
|
+
searchResults.length >=
|
|
383
|
+
QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT ? (
|
|
381
384
|
<>
|
|
382
385
|
{`Found ${QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT}+ matches`}{' '}
|
|
383
386
|
<InfoCircleIcon
|
|
@@ -386,7 +389,7 @@ export const QueryLoader = observer(
|
|
|
386
389
|
/>
|
|
387
390
|
</>
|
|
388
391
|
) : (
|
|
389
|
-
`Found ${quantifyList(
|
|
392
|
+
`Found ${quantifyList(searchResults, 'match', 'matches')}`
|
|
390
393
|
)
|
|
391
394
|
) : curatedTemplateQueries.length >=
|
|
392
395
|
QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT ? (
|
|
@@ -414,9 +417,9 @@ export const QueryLoader = observer(
|
|
|
414
417
|
</div>
|
|
415
418
|
<CustomSelectorInput
|
|
416
419
|
className="query-loader__results__sort-by__selector"
|
|
417
|
-
options={
|
|
420
|
+
options={sortOptions}
|
|
418
421
|
onChange={(option: SortByOption) => {
|
|
419
|
-
|
|
422
|
+
applySort(option);
|
|
420
423
|
}}
|
|
421
424
|
value={{
|
|
422
425
|
label: queryLoaderState.sortBy,
|
|
@@ -431,7 +434,7 @@ export const QueryLoader = observer(
|
|
|
431
434
|
)}
|
|
432
435
|
</div>
|
|
433
436
|
{!queryLoaderState.isCuratedTemplateToggled &&
|
|
434
|
-
|
|
437
|
+
searchResults
|
|
435
438
|
.slice(0, QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT)
|
|
436
439
|
.map((query, idx) => (
|
|
437
440
|
<div
|
|
@@ -24,17 +24,17 @@ import {
|
|
|
24
24
|
ModalFooterButton,
|
|
25
25
|
TimesIcon,
|
|
26
26
|
} from '@finos/legend-art';
|
|
27
|
-
import type {
|
|
27
|
+
import type { QueryBuilderDataCubeViewerState } from '../../stores/data-cube/QueryBuilderDataCubeViewerState.js';
|
|
28
28
|
|
|
29
29
|
export const QueryDataCubeViewer = observer(
|
|
30
30
|
(props: {
|
|
31
|
-
|
|
31
|
+
state: QueryBuilderDataCubeViewerState;
|
|
32
32
|
close: () => void;
|
|
33
33
|
options?: {
|
|
34
34
|
fullScreen: boolean;
|
|
35
35
|
};
|
|
36
36
|
}) => {
|
|
37
|
-
const {
|
|
37
|
+
const { state, close, options } = props;
|
|
38
38
|
return (
|
|
39
39
|
<Dialog
|
|
40
40
|
open={true}
|
|
@@ -72,7 +72,7 @@ export const QueryDataCubeViewer = observer(
|
|
|
72
72
|
options?.fullScreen,
|
|
73
73
|
})}
|
|
74
74
|
>
|
|
75
|
-
<DataCube engine={engine} />
|
|
75
|
+
<DataCube query={state.query} engine={state.engine} />
|
|
76
76
|
</div>
|
|
77
77
|
{!options?.fullScreen && (
|
|
78
78
|
<ModalFooter>
|
|
@@ -419,15 +419,13 @@ export const QueryBuilderResultPanel = observer(
|
|
|
419
419
|
),
|
|
420
420
|
)
|
|
421
421
|
) {
|
|
422
|
-
queryParametersState.parameterValuesEditorState.open(
|
|
423
|
-
()
|
|
424
|
-
|
|
425
|
-
return Promise.resolve();
|
|
426
|
-
},
|
|
427
|
-
PARAMETER_SUBMIT_ACTION.DATA_CUBE,
|
|
428
|
-
);
|
|
422
|
+
queryParametersState.parameterValuesEditorState.open(async () => {
|
|
423
|
+
await queryBuilderState.openDataCubeEngine();
|
|
424
|
+
}, PARAMETER_SUBMIT_ACTION.DATA_CUBE);
|
|
429
425
|
} else {
|
|
430
|
-
queryBuilderState
|
|
426
|
+
queryBuilderState
|
|
427
|
+
.openDataCubeEngine()
|
|
428
|
+
.catch(applicationStore.alertUnhandledError);
|
|
431
429
|
}
|
|
432
430
|
};
|
|
433
431
|
const cancelQuery = applicationStore.guardUnhandledError(() =>
|