@cubejs-client/ngx 0.28.51 → 0.30.0
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/CHANGELOG.md +35 -0
- package/dist/bundles/cubejs-client-ngx.umd.js +120 -646
- package/dist/bundles/cubejs-client-ngx.umd.js.map +1 -1
- package/dist/cubejs-client-ngx.metadata.json +1 -1
- package/dist/esm2015/cubejs-client-ngx.js +2 -7
- package/dist/esm2015/index.js +2 -7
- package/dist/esm2015/src/client.js +29 -83
- package/dist/esm2015/src/module.js +2 -10
- package/dist/esm2015/src/public_api.js +8 -13
- package/dist/esm2015/src/query-builder/builder-meta.js +7 -46
- package/dist/esm2015/src/query-builder/chart-type.js +1 -9
- package/dist/esm2015/src/query-builder/common.js +1 -23
- package/dist/esm2015/src/query-builder/pivot-config.js +1 -20
- package/dist/esm2015/src/query-builder/query-builder.service.js +23 -156
- package/dist/esm2015/src/query-builder/query-members.js +29 -275
- package/dist/esm2015/src/query-builder/query.js +11 -68
- package/dist/fesm2015/cubejs-client-ngx.js +99 -692
- package/dist/fesm2015/cubejs-client-ngx.js.map +1 -1
- package/dist/src/client.d.ts +1 -1
- package/dist/src/query-builder/query-members.d.ts +1 -1
- package/package.json +17 -19
- package/dist/CHANGELOG.md +0 -914
- package/dist/bundles/cubejs-client-ngx.umd.min.js +0 -2
- package/dist/bundles/cubejs-client-ngx.umd.min.js.map +0 -1
|
@@ -5,47 +5,28 @@ import cubejs, { moveItemInArray, isQueryPresent, movePivotItem, ResultSet, defa
|
|
|
5
5
|
import { switchMap, catchError } from 'rxjs/operators';
|
|
6
6
|
import equal from 'fast-deep-equal';
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* @fileoverview added by tsickle
|
|
10
|
-
* Generated from: src/client.ts
|
|
11
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
12
|
-
*/
|
|
13
8
|
class CubejsClient {
|
|
14
|
-
/**
|
|
15
|
-
* @param {?} config
|
|
16
|
-
*/
|
|
17
9
|
constructor(config) {
|
|
18
10
|
this.config = config;
|
|
19
11
|
this.ready$ = new BehaviorSubject(false);
|
|
20
12
|
if (this.config instanceof Observable) {
|
|
21
|
-
this.config.subscribe((
|
|
22
|
-
* @return {?}
|
|
23
|
-
*/
|
|
24
|
-
() => {
|
|
13
|
+
this.config.subscribe(() => {
|
|
25
14
|
this.ready$.next(true);
|
|
26
|
-
})
|
|
15
|
+
});
|
|
27
16
|
}
|
|
28
17
|
else {
|
|
29
18
|
this.ready$.next(true);
|
|
30
19
|
}
|
|
31
20
|
}
|
|
32
|
-
|
|
33
|
-
* @private
|
|
34
|
-
* @return {?}
|
|
35
|
-
*/
|
|
36
|
-
apiInstace() {
|
|
21
|
+
apiInstance() {
|
|
37
22
|
if (!this.cubeJsApi) {
|
|
38
23
|
if (this.config instanceof Observable) {
|
|
39
|
-
this.config.subscribe((
|
|
40
|
-
* @param {?} config
|
|
41
|
-
* @return {?}
|
|
42
|
-
*/
|
|
43
|
-
(config) => {
|
|
24
|
+
this.config.subscribe((config) => {
|
|
44
25
|
this.cubeJsApi = cubejs(config.token, config.options);
|
|
45
26
|
if (!this.cubeJsApi) {
|
|
46
27
|
throw new Error('Cannot create CubejsApi instance. Please check that the config is passed correctly and contains all required options.');
|
|
47
28
|
}
|
|
48
|
-
})
|
|
29
|
+
});
|
|
49
30
|
}
|
|
50
31
|
else {
|
|
51
32
|
this.cubeJsApi = cubejs(this.config.token, this.config.options);
|
|
@@ -53,92 +34,48 @@ class CubejsClient {
|
|
|
53
34
|
}
|
|
54
35
|
return this.cubeJsApi;
|
|
55
36
|
}
|
|
56
|
-
/**
|
|
57
|
-
* @param {?} query
|
|
58
|
-
* @param {?=} options
|
|
59
|
-
* @return {?}
|
|
60
|
-
*/
|
|
61
37
|
load(query, options) {
|
|
62
|
-
return from(
|
|
38
|
+
return from(this.apiInstance().load(query, options));
|
|
63
39
|
}
|
|
64
|
-
/**
|
|
65
|
-
* @param {?} query
|
|
66
|
-
* @param {?=} options
|
|
67
|
-
* @return {?}
|
|
68
|
-
*/
|
|
69
40
|
sql(query, options) {
|
|
70
|
-
return from(this.
|
|
41
|
+
return from(this.apiInstance().sql(query, options));
|
|
71
42
|
}
|
|
72
|
-
/**
|
|
73
|
-
* @param {?} query
|
|
74
|
-
* @param {?=} options
|
|
75
|
-
* @return {?}
|
|
76
|
-
*/
|
|
77
43
|
dryRun(query, options) {
|
|
78
|
-
return from(this.
|
|
44
|
+
return from(this.apiInstance().dryRun(query, options));
|
|
79
45
|
}
|
|
80
|
-
/**
|
|
81
|
-
* @param {?=} options
|
|
82
|
-
* @return {?}
|
|
83
|
-
*/
|
|
84
46
|
meta(options) {
|
|
85
|
-
return from(this.
|
|
47
|
+
return from(this.apiInstance().meta(options));
|
|
86
48
|
}
|
|
87
|
-
/**
|
|
88
|
-
* @param {?} query
|
|
89
|
-
* @param {?=} params
|
|
90
|
-
* @return {?}
|
|
91
|
-
*/
|
|
92
49
|
watch(query, params = {}) {
|
|
93
|
-
return new Observable((
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const resultSet = yield this.apiInstace().load(query, params);
|
|
105
|
-
observer.next(resultSet);
|
|
106
|
-
})),
|
|
107
|
-
})));
|
|
50
|
+
return new Observable((observer) => query.subscribe({
|
|
51
|
+
next: (query) => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
try {
|
|
53
|
+
const resultSet = yield this.apiInstance().load(query, params);
|
|
54
|
+
observer.next(resultSet);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
observer.error(err);
|
|
58
|
+
}
|
|
59
|
+
}),
|
|
60
|
+
}));
|
|
108
61
|
}
|
|
109
62
|
}
|
|
63
|
+
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
|
|
110
64
|
CubejsClient.decorators = [
|
|
111
65
|
{ type: Injectable }
|
|
112
66
|
];
|
|
113
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* @type {function(): !Array<(null|{
|
|
69
|
+
* type: ?,
|
|
70
|
+
* decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
|
|
71
|
+
* })>}
|
|
72
|
+
* @nocollapse
|
|
73
|
+
*/
|
|
114
74
|
CubejsClient.ctorParameters = () => [
|
|
115
75
|
{ type: undefined, decorators: [{ type: Inject, args: ['config',] }] }
|
|
116
76
|
];
|
|
117
|
-
if (false) {
|
|
118
|
-
/** @type {?} */
|
|
119
|
-
CubejsClient.prototype.ready$;
|
|
120
|
-
/**
|
|
121
|
-
* @type {?}
|
|
122
|
-
* @private
|
|
123
|
-
*/
|
|
124
|
-
CubejsClient.prototype.cubeJsApi;
|
|
125
|
-
/**
|
|
126
|
-
* @type {?}
|
|
127
|
-
* @private
|
|
128
|
-
*/
|
|
129
|
-
CubejsClient.prototype.config;
|
|
130
|
-
}
|
|
131
77
|
|
|
132
|
-
/**
|
|
133
|
-
* @fileoverview added by tsickle
|
|
134
|
-
* Generated from: src/module.ts
|
|
135
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
136
|
-
*/
|
|
137
78
|
class CubejsClientModule {
|
|
138
|
-
/**
|
|
139
|
-
* @param {?} config
|
|
140
|
-
* @return {?}
|
|
141
|
-
*/
|
|
142
79
|
static forRoot(config) {
|
|
143
80
|
return {
|
|
144
81
|
ngModule: CubejsClientModule,
|
|
@@ -152,189 +89,85 @@ class CubejsClientModule {
|
|
|
152
89
|
};
|
|
153
90
|
}
|
|
154
91
|
}
|
|
92
|
+
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
|
|
155
93
|
CubejsClientModule.decorators = [
|
|
156
94
|
{ type: NgModule, args: [{
|
|
157
95
|
providers: [CubejsClient],
|
|
158
96
|
},] }
|
|
159
97
|
];
|
|
160
98
|
|
|
161
|
-
/**
|
|
162
|
-
* @fileoverview added by tsickle
|
|
163
|
-
* Generated from: src/query-builder/common.ts
|
|
164
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
165
|
-
*/
|
|
166
|
-
/**
|
|
167
|
-
* @template T
|
|
168
|
-
*/
|
|
169
99
|
class StateSubject {
|
|
170
|
-
/**
|
|
171
|
-
* @param {?} value
|
|
172
|
-
*/
|
|
173
100
|
constructor(value) {
|
|
174
101
|
this.subject = new BehaviorSubject(value);
|
|
175
102
|
}
|
|
176
|
-
/**
|
|
177
|
-
* @return {?}
|
|
178
|
-
*/
|
|
179
103
|
get() {
|
|
180
104
|
return this.subject.getValue();
|
|
181
105
|
}
|
|
182
|
-
/**
|
|
183
|
-
* @param {?} value
|
|
184
|
-
* @return {?}
|
|
185
|
-
*/
|
|
186
106
|
set(value) {
|
|
187
107
|
this.subject.next(value);
|
|
188
108
|
}
|
|
189
109
|
}
|
|
190
|
-
if (false) {
|
|
191
|
-
/** @type {?} */
|
|
192
|
-
StateSubject.prototype.subject;
|
|
193
|
-
}
|
|
194
110
|
|
|
195
|
-
/**
|
|
196
|
-
* @fileoverview added by tsickle
|
|
197
|
-
* Generated from: src/query-builder/query-members.ts
|
|
198
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
199
|
-
*/
|
|
200
111
|
class BaseMember {
|
|
201
|
-
/**
|
|
202
|
-
* @param {?} query
|
|
203
|
-
* @param {?} field
|
|
204
|
-
*/
|
|
205
112
|
constructor(query, field) {
|
|
206
113
|
this.query = query;
|
|
207
114
|
this.field = field;
|
|
208
115
|
}
|
|
209
|
-
/**
|
|
210
|
-
* @private
|
|
211
|
-
* @return {?}
|
|
212
|
-
*/
|
|
213
116
|
get members() {
|
|
214
117
|
return this.query.asCubeQuery()[this.field] || [];
|
|
215
118
|
}
|
|
216
|
-
/**
|
|
217
|
-
* @param {?} name
|
|
218
|
-
* @return {?}
|
|
219
|
-
*/
|
|
220
119
|
add(name) {
|
|
221
120
|
this.query.setPartialQuery({
|
|
222
121
|
[this.field]: [...this.members, name],
|
|
223
122
|
});
|
|
224
123
|
}
|
|
225
|
-
/**
|
|
226
|
-
* @param {?} name
|
|
227
|
-
* @param {?} replaceWithName
|
|
228
|
-
* @return {?}
|
|
229
|
-
*/
|
|
230
124
|
replace(name, replaceWithName) {
|
|
231
125
|
this.query.setPartialQuery({
|
|
232
|
-
[this.field]: this.members.map((
|
|
233
|
-
* @param {?} currentName
|
|
234
|
-
* @return {?}
|
|
235
|
-
*/
|
|
236
|
-
(currentName) => currentName === name ? replaceWithName : currentName)),
|
|
126
|
+
[this.field]: this.members.map((currentName) => currentName === name ? replaceWithName : currentName),
|
|
237
127
|
});
|
|
238
128
|
}
|
|
239
|
-
/**
|
|
240
|
-
* @param {?} by
|
|
241
|
-
* @return {?}
|
|
242
|
-
*/
|
|
243
129
|
remove(by) {
|
|
244
130
|
this.query.setPartialQuery({
|
|
245
131
|
[this.field]: this.query
|
|
246
|
-
.asCubeQuery()[this.field].filter((
|
|
247
|
-
* @param {?} currentName
|
|
248
|
-
* @param {?} index
|
|
249
|
-
* @return {?}
|
|
250
|
-
*/
|
|
251
|
-
(currentName, index) => {
|
|
132
|
+
.asCubeQuery()[this.field].filter((currentName, index) => {
|
|
252
133
|
if (typeof by === 'string') {
|
|
253
134
|
return currentName !== by;
|
|
254
135
|
}
|
|
255
136
|
return index !== by;
|
|
256
|
-
})
|
|
137
|
+
}),
|
|
257
138
|
});
|
|
258
139
|
}
|
|
259
|
-
/**
|
|
260
|
-
* @param {?} members
|
|
261
|
-
* @return {?}
|
|
262
|
-
*/
|
|
263
140
|
set(members) {
|
|
264
141
|
this.query.setPartialQuery({
|
|
265
142
|
[this.field]: members,
|
|
266
143
|
});
|
|
267
144
|
}
|
|
268
|
-
/**
|
|
269
|
-
* @return {?}
|
|
270
|
-
*/
|
|
271
145
|
asArray() {
|
|
272
|
-
return (this.query.asCubeQuery()[this.field] || []).map((
|
|
273
|
-
* @param {?} name
|
|
274
|
-
* @return {?}
|
|
275
|
-
*/
|
|
276
|
-
(name) => this.query.meta.resolveMember(name, this.field)));
|
|
146
|
+
return (this.query.asCubeQuery()[this.field] || []).map((name) => this.query.meta.resolveMember(name, this.field));
|
|
277
147
|
}
|
|
278
148
|
}
|
|
279
|
-
if (false) {
|
|
280
|
-
/**
|
|
281
|
-
* @type {?}
|
|
282
|
-
* @private
|
|
283
|
-
*/
|
|
284
|
-
BaseMember.prototype.query;
|
|
285
|
-
/**
|
|
286
|
-
* @type {?}
|
|
287
|
-
* @private
|
|
288
|
-
*/
|
|
289
|
-
BaseMember.prototype.field;
|
|
290
|
-
}
|
|
291
149
|
class TimeDimensionMember {
|
|
292
|
-
/**
|
|
293
|
-
* @param {?} query
|
|
294
|
-
*/
|
|
295
150
|
constructor(query) {
|
|
296
151
|
this.query = query;
|
|
297
152
|
}
|
|
298
|
-
/**
|
|
299
|
-
* @private
|
|
300
|
-
* @return {?}
|
|
301
|
-
*/
|
|
302
153
|
get members() {
|
|
303
154
|
return this.query.asCubeQuery().timeDimensions || [];
|
|
304
155
|
}
|
|
305
|
-
/**
|
|
306
|
-
* @return {?}
|
|
307
|
-
*/
|
|
308
156
|
get granularity() {
|
|
309
157
|
var _a;
|
|
310
158
|
return (_a = this.members[0]) === null || _a === void 0 ? void 0 : _a.granularity;
|
|
311
159
|
}
|
|
312
|
-
/**
|
|
313
|
-
* @param {?} by
|
|
314
|
-
* @param {?} updateWith
|
|
315
|
-
* @return {?}
|
|
316
|
-
*/
|
|
317
160
|
updateTimeDimension(by, updateWith) {
|
|
318
|
-
|
|
319
|
-
const timeDimensions = this.members.map((/**
|
|
320
|
-
* @param {?} td
|
|
321
|
-
* @param {?} index
|
|
322
|
-
* @return {?}
|
|
323
|
-
*/
|
|
324
|
-
(td, index) => {
|
|
161
|
+
const timeDimensions = this.members.map((td, index) => {
|
|
325
162
|
if (td.dimension === by || index === by) {
|
|
326
163
|
return Object.assign(Object.assign({}, td), updateWith);
|
|
327
164
|
}
|
|
328
165
|
return td;
|
|
329
|
-
})
|
|
166
|
+
});
|
|
330
167
|
this.query.setPartialQuery({
|
|
331
168
|
timeDimensions,
|
|
332
169
|
});
|
|
333
170
|
}
|
|
334
|
-
/**
|
|
335
|
-
* @param {?} name
|
|
336
|
-
* @return {?}
|
|
337
|
-
*/
|
|
338
171
|
add(name) {
|
|
339
172
|
this.query.setPartialQuery({
|
|
340
173
|
timeDimensions: [
|
|
@@ -344,337 +177,157 @@ class TimeDimensionMember {
|
|
|
344
177
|
],
|
|
345
178
|
});
|
|
346
179
|
}
|
|
347
|
-
/**
|
|
348
|
-
* @param {?} name
|
|
349
|
-
* @return {?}
|
|
350
|
-
*/
|
|
351
180
|
remove(name) {
|
|
352
181
|
this.query.setPartialQuery({
|
|
353
|
-
timeDimensions: this.members.filter((
|
|
354
|
-
* @param {?} __0
|
|
355
|
-
* @return {?}
|
|
356
|
-
*/
|
|
357
|
-
({ dimension }) => dimension !== name)),
|
|
182
|
+
timeDimensions: this.members.filter(({ dimension }) => dimension !== name),
|
|
358
183
|
});
|
|
359
184
|
}
|
|
360
|
-
/**
|
|
361
|
-
* @param {?} timeDimensions
|
|
362
|
-
* @return {?}
|
|
363
|
-
*/
|
|
364
185
|
set(timeDimensions) {
|
|
365
186
|
this.query.setPartialQuery({
|
|
366
187
|
timeDimensions,
|
|
367
188
|
});
|
|
368
189
|
}
|
|
369
|
-
/**
|
|
370
|
-
* @param {?} by
|
|
371
|
-
* @param {?} dateRange
|
|
372
|
-
* @return {?}
|
|
373
|
-
*/
|
|
374
190
|
setDateRange(by, dateRange) {
|
|
375
191
|
this.updateTimeDimension(by, { dateRange });
|
|
376
192
|
}
|
|
377
|
-
/**
|
|
378
|
-
* @param {?} by
|
|
379
|
-
* @param {?} granularity
|
|
380
|
-
* @return {?}
|
|
381
|
-
*/
|
|
382
193
|
setGranularity(by, granularity) {
|
|
383
194
|
this.updateTimeDimension(by, { granularity });
|
|
384
195
|
}
|
|
385
|
-
/**
|
|
386
|
-
* @return {?}
|
|
387
|
-
*/
|
|
388
196
|
asArray() {
|
|
389
|
-
return (this.query.asCubeQuery().timeDimensions || []).map((
|
|
390
|
-
* @param {?} td
|
|
391
|
-
* @return {?}
|
|
392
|
-
*/
|
|
393
|
-
(td) => {
|
|
197
|
+
return (this.query.asCubeQuery().timeDimensions || []).map((td) => {
|
|
394
198
|
return Object.assign(Object.assign({}, this.query.meta.resolveMember(td.dimension, 'dimensions')), td);
|
|
395
|
-
})
|
|
199
|
+
});
|
|
396
200
|
}
|
|
397
201
|
}
|
|
398
|
-
if (false) {
|
|
399
|
-
/**
|
|
400
|
-
* @type {?}
|
|
401
|
-
* @private
|
|
402
|
-
*/
|
|
403
|
-
TimeDimensionMember.prototype.query;
|
|
404
|
-
}
|
|
405
202
|
class Order {
|
|
406
|
-
/**
|
|
407
|
-
* @param {?} query
|
|
408
|
-
*/
|
|
409
203
|
constructor(query) {
|
|
410
204
|
this.query = query;
|
|
411
205
|
this.orderMembers = new BehaviorSubject([]);
|
|
412
206
|
this.query.subject.subscribe(this.handleQueryChange.bind(this));
|
|
413
207
|
this.orderMembers.subscribe(this.handleOrderMembersChange.bind(this));
|
|
414
208
|
}
|
|
415
|
-
/**
|
|
416
|
-
* @private
|
|
417
|
-
* @param {?} orderMembers
|
|
418
|
-
* @return {?}
|
|
419
|
-
*/
|
|
420
209
|
handleOrderMembersChange(orderMembers) {
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
.
|
|
424
|
-
* @param {?} __0
|
|
425
|
-
* @return {?}
|
|
426
|
-
*/
|
|
427
|
-
({ order }) => order !== 'none'))
|
|
428
|
-
.reduce((/**
|
|
429
|
-
* @param {?} memo
|
|
430
|
-
* @param {?} __1
|
|
431
|
-
* @return {?}
|
|
432
|
-
*/
|
|
433
|
-
(memo, { id, order }) => (Object.assign(Object.assign({}, memo), { [id]: order }))), {})));
|
|
210
|
+
const order = orderMembers
|
|
211
|
+
.filter(({ order }) => order !== 'none')
|
|
212
|
+
.reduce((memo, { id, order }) => (Object.assign(Object.assign({}, memo), { [id]: order })), {});
|
|
434
213
|
if (!equal(order, this.asObject())) {
|
|
435
214
|
this.query.setPartialQuery({ order });
|
|
436
215
|
}
|
|
437
216
|
}
|
|
438
|
-
/**
|
|
439
|
-
* @private
|
|
440
|
-
* @return {?}
|
|
441
|
-
*/
|
|
442
217
|
handleQueryChange() {
|
|
443
218
|
this.orderMembers.next([
|
|
444
219
|
...this.query.measures.asArray(),
|
|
445
220
|
...this.query.dimensions.asArray(),
|
|
446
221
|
...this.query.timeDimensions.asArray(),
|
|
447
|
-
].map((
|
|
448
|
-
* @param {?} __0
|
|
449
|
-
* @return {?}
|
|
450
|
-
*/
|
|
451
|
-
({ name, title }) => {
|
|
222
|
+
].map(({ name, title }) => {
|
|
452
223
|
return {
|
|
453
224
|
id: name,
|
|
454
225
|
order: this.of(name),
|
|
455
226
|
title,
|
|
456
227
|
};
|
|
457
|
-
}))
|
|
228
|
+
}));
|
|
458
229
|
}
|
|
459
|
-
/**
|
|
460
|
-
* @param {?} id
|
|
461
|
-
* @param {?} order
|
|
462
|
-
* @return {?}
|
|
463
|
-
*/
|
|
464
230
|
setMemberOrder(id, order) {
|
|
465
|
-
this.orderMembers.next(this.orderMembers.getValue().map((
|
|
466
|
-
* @param {?} orderMember
|
|
467
|
-
* @return {?}
|
|
468
|
-
*/
|
|
469
|
-
(orderMember) => {
|
|
231
|
+
this.orderMembers.next(this.orderMembers.getValue().map((orderMember) => {
|
|
470
232
|
if (orderMember.id === id) {
|
|
471
233
|
return Object.assign(Object.assign({}, orderMember), { order });
|
|
472
234
|
}
|
|
473
235
|
return orderMember;
|
|
474
|
-
}))
|
|
236
|
+
}));
|
|
475
237
|
}
|
|
476
|
-
/**
|
|
477
|
-
* @param {?} sourceIndex
|
|
478
|
-
* @param {?} destinationIndex
|
|
479
|
-
* @return {?}
|
|
480
|
-
*/
|
|
481
238
|
reorder(sourceIndex, destinationIndex) {
|
|
482
239
|
this.orderMembers.next(moveItemInArray(this.orderMembers.getValue(), sourceIndex, destinationIndex));
|
|
483
240
|
}
|
|
484
|
-
/**
|
|
485
|
-
* @param {?} member
|
|
486
|
-
* @return {?}
|
|
487
|
-
*/
|
|
488
241
|
of(member) {
|
|
489
242
|
return (this.query.asCubeQuery().order || {})[member] || 'none';
|
|
490
243
|
}
|
|
491
|
-
/**
|
|
492
|
-
* @param {?} order
|
|
493
|
-
* @return {?}
|
|
494
|
-
*/
|
|
495
244
|
set(order) {
|
|
496
245
|
this.query.setPartialQuery({ order });
|
|
497
246
|
}
|
|
498
|
-
/**
|
|
499
|
-
* @return {?}
|
|
500
|
-
*/
|
|
501
247
|
asArray() {
|
|
502
248
|
if (Array.isArray(this.query.asCubeQuery().order)) {
|
|
503
|
-
return
|
|
249
|
+
return this.query.asCubeQuery().order;
|
|
504
250
|
}
|
|
505
251
|
return Object.entries(this.query.asCubeQuery().order || {});
|
|
506
252
|
}
|
|
507
|
-
/**
|
|
508
|
-
* @return {?}
|
|
509
|
-
*/
|
|
510
253
|
asObject() {
|
|
511
|
-
return this.asArray().reduce((
|
|
512
|
-
* @param {?} memo
|
|
513
|
-
* @param {?} __1
|
|
514
|
-
* @return {?}
|
|
515
|
-
*/
|
|
516
|
-
(memo, [key, value]) => (Object.assign(Object.assign({}, memo), { [key]: value }))), {});
|
|
254
|
+
return this.asArray().reduce((memo, [key, value]) => (Object.assign(Object.assign({}, memo), { [key]: value })), {});
|
|
517
255
|
}
|
|
518
256
|
}
|
|
519
|
-
if (false) {
|
|
520
|
-
/** @type {?} */
|
|
521
|
-
Order.prototype.orderMembers;
|
|
522
|
-
/**
|
|
523
|
-
* @type {?}
|
|
524
|
-
* @private
|
|
525
|
-
*/
|
|
526
|
-
Order.prototype.query;
|
|
527
|
-
}
|
|
528
257
|
class FilterMember {
|
|
529
|
-
/**
|
|
530
|
-
* @param {?} query
|
|
531
|
-
*/
|
|
532
258
|
constructor(query) {
|
|
533
259
|
this.query = query;
|
|
534
260
|
}
|
|
535
|
-
/**
|
|
536
|
-
* @private
|
|
537
|
-
* @return {?}
|
|
538
|
-
*/
|
|
539
261
|
get filters() {
|
|
540
262
|
// TODO: update this type assertion once the QueryBuilder supports logical and/or
|
|
541
|
-
return (
|
|
263
|
+
return (this.query.asCubeQuery().filters || []);
|
|
542
264
|
}
|
|
543
|
-
/**
|
|
544
|
-
* @param {?} by
|
|
545
|
-
* @param {?} updateWith
|
|
546
|
-
* @return {?}
|
|
547
|
-
*/
|
|
548
265
|
update(by, updateWith) {
|
|
549
|
-
|
|
550
|
-
const filters = this.filters.map((/**
|
|
551
|
-
* @param {?} filter
|
|
552
|
-
* @param {?} index
|
|
553
|
-
* @return {?}
|
|
554
|
-
*/
|
|
555
|
-
(filter, index) => {
|
|
266
|
+
const filters = this.filters.map((filter, index) => {
|
|
556
267
|
if (index === by || filter.member === by || filter.dimension === by) {
|
|
557
268
|
return Object.assign(Object.assign({}, filter), updateWith);
|
|
558
269
|
}
|
|
559
270
|
return filter;
|
|
560
|
-
})
|
|
271
|
+
});
|
|
561
272
|
this.query.setPartialQuery({
|
|
562
|
-
filters:
|
|
273
|
+
filters: filters,
|
|
563
274
|
});
|
|
564
275
|
}
|
|
565
|
-
/**
|
|
566
|
-
* @param {?} filter
|
|
567
|
-
* @return {?}
|
|
568
|
-
*/
|
|
569
276
|
add(filter) {
|
|
570
277
|
this.query.setPartialQuery({
|
|
571
278
|
filters: [...this.filters, filter],
|
|
572
279
|
});
|
|
573
280
|
}
|
|
574
|
-
/**
|
|
575
|
-
* @param {?} by
|
|
576
|
-
* @return {?}
|
|
577
|
-
*/
|
|
578
281
|
remove(by) {
|
|
579
282
|
this.query.setPartialQuery({
|
|
580
|
-
filters: this.filters.filter((
|
|
581
|
-
* @param {?} filter
|
|
582
|
-
* @param {?} index
|
|
583
|
-
* @return {?}
|
|
584
|
-
*/
|
|
585
|
-
(filter, index) => {
|
|
283
|
+
filters: this.filters.filter((filter, index) => {
|
|
586
284
|
if (filter.member === by || filter.dimension === by || index === by) {
|
|
587
285
|
return false;
|
|
588
286
|
}
|
|
589
287
|
return true;
|
|
590
|
-
})
|
|
288
|
+
}),
|
|
591
289
|
});
|
|
592
290
|
}
|
|
593
|
-
/**
|
|
594
|
-
* @param {?} filters
|
|
595
|
-
* @return {?}
|
|
596
|
-
*/
|
|
597
291
|
set(filters) {
|
|
598
292
|
this.query.setPartialQuery({
|
|
599
293
|
filters,
|
|
600
294
|
});
|
|
601
295
|
}
|
|
602
|
-
/**
|
|
603
|
-
* @param {?} name
|
|
604
|
-
* @param {?} replaceWithName
|
|
605
|
-
* @return {?}
|
|
606
|
-
*/
|
|
607
296
|
replace(name, replaceWithName) {
|
|
608
297
|
this.query.setPartialQuery({
|
|
609
|
-
filters: this.filters.map((
|
|
610
|
-
* @param {?} filter
|
|
611
|
-
* @return {?}
|
|
612
|
-
*/
|
|
613
|
-
(filter) => {
|
|
614
|
-
/** @type {?} */
|
|
298
|
+
filters: this.filters.map((filter) => {
|
|
615
299
|
const field = filter.member ? 'member' : 'dimension';
|
|
616
300
|
return filter.member === name || filter.dimension === name
|
|
617
301
|
? Object.assign(Object.assign({}, filter), { [field]: replaceWithName }) : filter;
|
|
618
|
-
})
|
|
302
|
+
}),
|
|
619
303
|
});
|
|
620
304
|
}
|
|
621
|
-
/**
|
|
622
|
-
* @return {?}
|
|
623
|
-
*/
|
|
624
305
|
asArray() {
|
|
625
|
-
return this.filters.map((
|
|
626
|
-
* @param {?} filter
|
|
627
|
-
* @return {?}
|
|
628
|
-
*/
|
|
629
|
-
(filter) => {
|
|
306
|
+
return this.filters.map((filter) => {
|
|
630
307
|
return Object.assign(Object.assign(Object.assign({}, this.query.meta.resolveMember(filter.member || filter.dimension, [
|
|
631
308
|
'dimensions',
|
|
632
309
|
'measures',
|
|
633
310
|
])), { operators: this.query.meta.filterOperatorsForMember(filter.member || filter.dimension, ['dimensions', 'measures']) }), filter);
|
|
634
|
-
})
|
|
311
|
+
});
|
|
635
312
|
}
|
|
636
313
|
}
|
|
637
|
-
if (false) {
|
|
638
|
-
/**
|
|
639
|
-
* @type {?}
|
|
640
|
-
* @private
|
|
641
|
-
*/
|
|
642
|
-
FilterMember.prototype.query;
|
|
643
|
-
}
|
|
644
314
|
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
Segments: "segments",
|
|
655
|
-
TimeDimensions: "timeDimensions",
|
|
656
|
-
Filters: "filters",
|
|
657
|
-
Order: "order",
|
|
658
|
-
};
|
|
315
|
+
var MemberType;
|
|
316
|
+
(function (MemberType) {
|
|
317
|
+
MemberType["Measures"] = "measures";
|
|
318
|
+
MemberType["Dimensions"] = "dimensions";
|
|
319
|
+
MemberType["Segments"] = "segments";
|
|
320
|
+
MemberType["TimeDimensions"] = "timeDimensions";
|
|
321
|
+
MemberType["Filters"] = "filters";
|
|
322
|
+
MemberType["Order"] = "order";
|
|
323
|
+
})(MemberType || (MemberType = {}));
|
|
659
324
|
class Query extends StateSubject {
|
|
660
|
-
|
|
661
|
-
* @param {?} meta
|
|
662
|
-
* @param {?=} _onBeforeChange
|
|
663
|
-
*/
|
|
664
|
-
constructor(meta, _onBeforeChange = (/**
|
|
665
|
-
* @param {?} newQuery
|
|
666
|
-
* @return {?}
|
|
667
|
-
*/
|
|
668
|
-
(newQuery) => newQuery)) {
|
|
325
|
+
constructor(meta, _onBeforeChange = (newQuery) => newQuery) {
|
|
669
326
|
super({});
|
|
670
327
|
this.meta = meta;
|
|
671
328
|
this._onBeforeChange = _onBeforeChange;
|
|
672
329
|
this.init();
|
|
673
330
|
}
|
|
674
|
-
/**
|
|
675
|
-
* @private
|
|
676
|
-
* @return {?}
|
|
677
|
-
*/
|
|
678
331
|
init() {
|
|
679
332
|
this.measures = new BaseMember(this, MemberType.Measures);
|
|
680
333
|
this.dimensions = new BaseMember(this, MemberType.Dimensions);
|
|
@@ -683,260 +336,110 @@ class Query extends StateSubject {
|
|
|
683
336
|
this.filters = new FilterMember(this);
|
|
684
337
|
this.order = new Order(this);
|
|
685
338
|
}
|
|
686
|
-
/**
|
|
687
|
-
* @return {?}
|
|
688
|
-
*/
|
|
689
339
|
asCubeQuery() {
|
|
690
340
|
return this.subject.getValue() || {};
|
|
691
341
|
}
|
|
692
|
-
/**
|
|
693
|
-
* @param {?} query
|
|
694
|
-
* @return {?}
|
|
695
|
-
*/
|
|
696
342
|
setQuery(query) {
|
|
697
343
|
this.subject.next(this._onBeforeChange(query, this.subject.getValue(), this));
|
|
698
344
|
}
|
|
699
|
-
/**
|
|
700
|
-
* @param {?} partialQuery
|
|
701
|
-
* @return {?}
|
|
702
|
-
*/
|
|
703
345
|
setPartialQuery(partialQuery) {
|
|
704
346
|
this.subject.next(this._onBeforeChange(Object.assign(Object.assign({}, this.subject.getValue()), partialQuery), this.subject.getValue(), this));
|
|
705
347
|
}
|
|
706
|
-
/**
|
|
707
|
-
* @param {?} limit
|
|
708
|
-
* @return {?}
|
|
709
|
-
*/
|
|
710
348
|
setLimit(limit) {
|
|
711
349
|
this.setPartialQuery({ limit });
|
|
712
350
|
}
|
|
713
|
-
/**
|
|
714
|
-
* @return {?}
|
|
715
|
-
*/
|
|
716
351
|
isPresent() {
|
|
717
352
|
return isQueryPresent(this.asCubeQuery());
|
|
718
353
|
}
|
|
719
354
|
}
|
|
720
|
-
if (false) {
|
|
721
|
-
/** @type {?} */
|
|
722
|
-
Query.prototype.measures;
|
|
723
|
-
/** @type {?} */
|
|
724
|
-
Query.prototype.dimensions;
|
|
725
|
-
/** @type {?} */
|
|
726
|
-
Query.prototype.segments;
|
|
727
|
-
/** @type {?} */
|
|
728
|
-
Query.prototype.timeDimensions;
|
|
729
|
-
/** @type {?} */
|
|
730
|
-
Query.prototype.filters;
|
|
731
|
-
/** @type {?} */
|
|
732
|
-
Query.prototype.order;
|
|
733
|
-
/** @type {?} */
|
|
734
|
-
Query.prototype.meta;
|
|
735
|
-
/**
|
|
736
|
-
* @type {?}
|
|
737
|
-
* @private
|
|
738
|
-
*/
|
|
739
|
-
Query.prototype._onBeforeChange;
|
|
740
|
-
}
|
|
741
355
|
|
|
742
|
-
/**
|
|
743
|
-
* @fileoverview added by tsickle
|
|
744
|
-
* Generated from: src/query-builder/builder-meta.ts
|
|
745
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
746
|
-
*/
|
|
747
356
|
class BuilderMeta {
|
|
748
|
-
/**
|
|
749
|
-
* @param {?} meta
|
|
750
|
-
*/
|
|
751
357
|
constructor(meta) {
|
|
752
358
|
this.meta = meta;
|
|
753
359
|
this.mapMeta();
|
|
754
360
|
}
|
|
755
|
-
/**
|
|
756
|
-
* @private
|
|
757
|
-
* @return {?}
|
|
758
|
-
*/
|
|
759
361
|
mapMeta() {
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
this.measures = (/** @type {?} */ (this.meta.membersForQuery(null, 'measures')));
|
|
362
|
+
const allDimensions = (this.meta.membersForQuery(null, 'dimensions'));
|
|
363
|
+
this.measures = this.meta.membersForQuery(null, 'measures');
|
|
763
364
|
this.segments = this.meta.membersForQuery(null, 'segments');
|
|
764
|
-
this.dimensions = allDimensions.filter((
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
*/
|
|
768
|
-
({ type }) => type !== 'time'));
|
|
769
|
-
this.timeDimensions = allDimensions.filter((/**
|
|
770
|
-
* @param {?} __0
|
|
771
|
-
* @return {?}
|
|
772
|
-
*/
|
|
773
|
-
({ type }) => type === 'time'));
|
|
774
|
-
this.filters = [...allDimensions, ...this.measures].map((/**
|
|
775
|
-
* @param {?} member
|
|
776
|
-
* @return {?}
|
|
777
|
-
*/
|
|
778
|
-
(member) => {
|
|
365
|
+
this.dimensions = allDimensions.filter(({ type }) => type !== 'time');
|
|
366
|
+
this.timeDimensions = allDimensions.filter(({ type }) => type === 'time');
|
|
367
|
+
this.filters = [...allDimensions, ...this.measures].map((member) => {
|
|
779
368
|
return Object.assign(Object.assign({}, member), { operators: this.meta.filterOperatorsForMember(member.name, [
|
|
780
369
|
'dimensions',
|
|
781
370
|
'measures',
|
|
782
371
|
]) });
|
|
783
|
-
})
|
|
372
|
+
});
|
|
784
373
|
}
|
|
785
374
|
}
|
|
786
|
-
if (false) {
|
|
787
|
-
/** @type {?} */
|
|
788
|
-
BuilderMeta.prototype.measures;
|
|
789
|
-
/** @type {?} */
|
|
790
|
-
BuilderMeta.prototype.dimensions;
|
|
791
|
-
/** @type {?} */
|
|
792
|
-
BuilderMeta.prototype.segments;
|
|
793
|
-
/** @type {?} */
|
|
794
|
-
BuilderMeta.prototype.timeDimensions;
|
|
795
|
-
/** @type {?} */
|
|
796
|
-
BuilderMeta.prototype.filters;
|
|
797
|
-
/** @type {?} */
|
|
798
|
-
BuilderMeta.prototype.meta;
|
|
799
|
-
}
|
|
800
375
|
|
|
801
|
-
/**
|
|
802
|
-
* @fileoverview added by tsickle
|
|
803
|
-
* Generated from: src/query-builder/pivot-config.ts
|
|
804
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
805
|
-
*/
|
|
806
376
|
class PivotConfig extends StateSubject {
|
|
807
|
-
/**
|
|
808
|
-
* @param {?} pivotConfig
|
|
809
|
-
*/
|
|
810
377
|
constructor(pivotConfig) {
|
|
811
378
|
super(pivotConfig);
|
|
812
379
|
}
|
|
813
|
-
/**
|
|
814
|
-
* @param {?} sourceIndex
|
|
815
|
-
* @param {?} destinationIndex
|
|
816
|
-
* @param {?} sourceAxis
|
|
817
|
-
* @param {?} destinationAxis
|
|
818
|
-
* @return {?}
|
|
819
|
-
*/
|
|
820
380
|
moveItem(sourceIndex, destinationIndex, sourceAxis, destinationAxis) {
|
|
821
381
|
this.subject.next(movePivotItem(this.get(), sourceIndex, destinationIndex, sourceAxis, destinationAxis));
|
|
822
382
|
}
|
|
823
|
-
/**
|
|
824
|
-
* @param {?} fillMissingDates
|
|
825
|
-
* @return {?}
|
|
826
|
-
*/
|
|
827
383
|
setFillMissingDates(fillMissingDates) {
|
|
828
384
|
this.subject.next(Object.assign(Object.assign({}, this.get()), { fillMissingDates }));
|
|
829
385
|
}
|
|
830
386
|
}
|
|
831
387
|
|
|
832
|
-
/**
|
|
833
|
-
* @fileoverview added by tsickle
|
|
834
|
-
* Generated from: src/query-builder/chart-type.ts
|
|
835
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
836
|
-
*/
|
|
837
388
|
class ChartType extends StateSubject {
|
|
838
|
-
/**
|
|
839
|
-
* @param {?} value
|
|
840
|
-
*/
|
|
841
389
|
constructor(value) {
|
|
842
390
|
super(value);
|
|
843
391
|
}
|
|
844
392
|
}
|
|
845
393
|
|
|
846
|
-
/**
|
|
847
|
-
* @fileoverview added by tsickle
|
|
848
|
-
* Generated from: src/query-builder/query-builder.service.ts
|
|
849
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
850
|
-
*/
|
|
851
394
|
class QueryBuilderService {
|
|
852
395
|
constructor() {
|
|
853
396
|
this._disableHeuristics = false;
|
|
854
397
|
this._heuristicChange$ = new Subject();
|
|
855
|
-
this.builderMeta = new Promise((
|
|
856
|
-
|
|
857
|
-
* @return {?}
|
|
858
|
-
*/
|
|
859
|
-
(resolve) => (this._resolveBuilderMeta = resolve)));
|
|
860
|
-
this.query = new Promise((/**
|
|
861
|
-
* @param {?} resolve
|
|
862
|
-
* @return {?}
|
|
863
|
-
*/
|
|
864
|
-
(resolve) => (this._resolveQuery = resolve)));
|
|
398
|
+
this.builderMeta = new Promise((resolve) => (this._resolveBuilderMeta = resolve));
|
|
399
|
+
this.query = new Promise((resolve) => (this._resolveQuery = resolve));
|
|
865
400
|
this.state = new BehaviorSubject({});
|
|
866
401
|
}
|
|
867
|
-
/**
|
|
868
|
-
* @private
|
|
869
|
-
* @return {?}
|
|
870
|
-
*/
|
|
871
402
|
init() {
|
|
872
403
|
return __awaiter(this, void 0, void 0, function* () {
|
|
873
404
|
this.pivotConfig = new PivotConfig(null);
|
|
874
405
|
this.chartType = new ChartType('line');
|
|
875
|
-
this._cubejs.meta().subscribe((
|
|
876
|
-
* @param {?} meta
|
|
877
|
-
* @return {?}
|
|
878
|
-
*/
|
|
879
|
-
(meta) => {
|
|
406
|
+
this._cubejs.meta().subscribe((meta) => {
|
|
880
407
|
this._meta = meta;
|
|
881
408
|
this._query = new Query(this._meta, this._handleQueryChange.bind(this));
|
|
882
409
|
this._resolveQuery(this._query);
|
|
883
410
|
this._resolveBuilderMeta(new BuilderMeta(this._meta));
|
|
884
|
-
})
|
|
411
|
+
});
|
|
885
412
|
this.subscribe();
|
|
886
413
|
if (!this._disableHeuristics) {
|
|
887
414
|
this._heuristicChange$
|
|
888
|
-
.pipe(switchMap((
|
|
889
|
-
* @param {?} data
|
|
890
|
-
* @return {?}
|
|
891
|
-
*/
|
|
892
|
-
(data) => {
|
|
415
|
+
.pipe(switchMap((data) => {
|
|
893
416
|
return combineLatest([
|
|
894
|
-
this._cubejs.dryRun(data.query).pipe(catchError((
|
|
895
|
-
* @param {?} error
|
|
896
|
-
* @return {?}
|
|
897
|
-
*/
|
|
898
|
-
(error) => {
|
|
417
|
+
this._cubejs.dryRun(data.query).pipe(catchError((error) => {
|
|
899
418
|
console.error(error);
|
|
900
419
|
return of(null);
|
|
901
|
-
}))
|
|
420
|
+
})),
|
|
902
421
|
of(data.shouldApplyHeuristicOrder),
|
|
903
422
|
]);
|
|
904
|
-
}))
|
|
905
|
-
.subscribe((
|
|
906
|
-
* @param {?} __0
|
|
907
|
-
* @return {?}
|
|
908
|
-
*/
|
|
909
|
-
([dryRunResponse, shouldApplyHeuristicOrder]) => {
|
|
423
|
+
}))
|
|
424
|
+
.subscribe(([dryRunResponse, shouldApplyHeuristicOrder]) => {
|
|
910
425
|
if (!dryRunResponse) {
|
|
911
426
|
return;
|
|
912
427
|
}
|
|
913
428
|
const { pivotQuery, queryOrder } = dryRunResponse;
|
|
914
429
|
this.pivotConfig.set(ResultSet.getNormalizedPivotConfig(pivotQuery, this.pivotConfig.get()));
|
|
915
430
|
if (shouldApplyHeuristicOrder) {
|
|
916
|
-
this._query.order.set(queryOrder.reduce((
|
|
917
|
-
* @param {?} a
|
|
918
|
-
* @param {?} b
|
|
919
|
-
* @return {?}
|
|
920
|
-
*/
|
|
921
|
-
(a, b) => (Object.assign(Object.assign({}, a), b))), {}));
|
|
431
|
+
this._query.order.set(queryOrder.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}));
|
|
922
432
|
}
|
|
923
|
-
})
|
|
433
|
+
});
|
|
924
434
|
}
|
|
925
435
|
});
|
|
926
436
|
}
|
|
927
|
-
/**
|
|
928
|
-
* @private
|
|
929
|
-
* @param {?} newQuery
|
|
930
|
-
* @param {?} oldQuery
|
|
931
|
-
* @return {?}
|
|
932
|
-
*/
|
|
933
437
|
_handleQueryChange(newQuery, oldQuery) {
|
|
934
438
|
var _a, _b;
|
|
935
439
|
const { chartType, shouldApplyHeuristicOrder, query: heuristicQuery, } = defaultHeuristics(newQuery, oldQuery, {
|
|
936
440
|
meta: this._meta,
|
|
937
441
|
sessionGranularity: (_b = (_a = newQuery === null || newQuery === void 0 ? void 0 : newQuery.timeDimensions) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.granularity,
|
|
938
442
|
});
|
|
939
|
-
/** @type {?} */
|
|
940
443
|
const query = this._disableHeuristics
|
|
941
444
|
? newQuery
|
|
942
445
|
: heuristicQuery || newQuery;
|
|
@@ -951,158 +454,62 @@ class QueryBuilderService {
|
|
|
951
454
|
}
|
|
952
455
|
return query;
|
|
953
456
|
}
|
|
954
|
-
/**
|
|
955
|
-
* @param {?} cubejsClient
|
|
956
|
-
* @return {?}
|
|
957
|
-
*/
|
|
958
457
|
setCubejsClient(cubejsClient) {
|
|
959
458
|
this._cubejs = cubejsClient;
|
|
960
459
|
this.init();
|
|
961
460
|
}
|
|
962
|
-
/**
|
|
963
|
-
* @private
|
|
964
|
-
* @return {?}
|
|
965
|
-
*/
|
|
966
461
|
subscribe() {
|
|
967
|
-
Object.getOwnPropertyNames(this).forEach((
|
|
968
|
-
* @param {?} key
|
|
969
|
-
* @return {?}
|
|
970
|
-
*/
|
|
971
|
-
(key) => {
|
|
462
|
+
Object.getOwnPropertyNames(this).forEach((key) => {
|
|
972
463
|
if (this[key] instanceof StateSubject) {
|
|
973
|
-
this[key].subject.subscribe((
|
|
974
|
-
* @param {?} value
|
|
975
|
-
* @return {?}
|
|
976
|
-
*/
|
|
977
|
-
(value) => this.setPartialState({
|
|
464
|
+
this[key].subject.subscribe((value) => this.setPartialState({
|
|
978
465
|
[key]: value,
|
|
979
|
-
}))
|
|
466
|
+
}));
|
|
980
467
|
}
|
|
981
|
-
})
|
|
982
|
-
this.query.then((
|
|
983
|
-
|
|
984
|
-
* @return {?}
|
|
985
|
-
*/
|
|
986
|
-
(query) => {
|
|
987
|
-
query.subject.subscribe((/**
|
|
988
|
-
* @param {?} cubeQuery
|
|
989
|
-
* @return {?}
|
|
990
|
-
*/
|
|
991
|
-
(cubeQuery) => {
|
|
468
|
+
});
|
|
469
|
+
this.query.then((query) => {
|
|
470
|
+
query.subject.subscribe((cubeQuery) => {
|
|
992
471
|
this.setPartialState({
|
|
993
472
|
query: cubeQuery,
|
|
994
473
|
});
|
|
995
|
-
})
|
|
996
|
-
})
|
|
474
|
+
});
|
|
475
|
+
});
|
|
997
476
|
}
|
|
998
|
-
/**
|
|
999
|
-
* @param {?} state
|
|
1000
|
-
* @return {?}
|
|
1001
|
-
*/
|
|
1002
477
|
deserialize(state) {
|
|
1003
478
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1004
479
|
if (state.query) {
|
|
1005
480
|
(yield this.query).setQuery(state.query);
|
|
1006
481
|
}
|
|
1007
|
-
Object.entries(state).forEach((
|
|
1008
|
-
* @param {?} __0
|
|
1009
|
-
* @return {?}
|
|
1010
|
-
*/
|
|
1011
|
-
([key, value]) => {
|
|
482
|
+
Object.entries(state).forEach(([key, value]) => {
|
|
1012
483
|
if (this[key] instanceof StateSubject) {
|
|
1013
484
|
this[key].set(value);
|
|
1014
485
|
}
|
|
1015
|
-
})
|
|
486
|
+
});
|
|
1016
487
|
this.subscribe();
|
|
1017
488
|
});
|
|
1018
489
|
}
|
|
1019
|
-
/**
|
|
1020
|
-
* @param {?} partialState
|
|
1021
|
-
* @return {?}
|
|
1022
|
-
*/
|
|
1023
490
|
setPartialState(partialState) {
|
|
1024
491
|
this.state.next(Object.assign(Object.assign({}, this.state.getValue()), partialState));
|
|
1025
492
|
}
|
|
1026
|
-
/**
|
|
1027
|
-
* @return {?}
|
|
1028
|
-
*/
|
|
1029
493
|
disableHeuristics() {
|
|
1030
494
|
this._disableHeuristics = false;
|
|
1031
495
|
}
|
|
1032
|
-
/**
|
|
1033
|
-
* @return {?}
|
|
1034
|
-
*/
|
|
1035
496
|
enableHeuristics() {
|
|
1036
497
|
this._disableHeuristics = true;
|
|
1037
498
|
}
|
|
1038
499
|
}
|
|
500
|
+
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
|
|
1039
501
|
QueryBuilderService.decorators = [
|
|
1040
502
|
{ type: Injectable }
|
|
1041
503
|
];
|
|
1042
|
-
if (false) {
|
|
1043
|
-
/**
|
|
1044
|
-
* @type {?}
|
|
1045
|
-
* @private
|
|
1046
|
-
*/
|
|
1047
|
-
QueryBuilderService.prototype._cubejs;
|
|
1048
|
-
/**
|
|
1049
|
-
* @type {?}
|
|
1050
|
-
* @private
|
|
1051
|
-
*/
|
|
1052
|
-
QueryBuilderService.prototype._meta;
|
|
1053
|
-
/**
|
|
1054
|
-
* @type {?}
|
|
1055
|
-
* @private
|
|
1056
|
-
*/
|
|
1057
|
-
QueryBuilderService.prototype._query;
|
|
1058
|
-
/**
|
|
1059
|
-
* @type {?}
|
|
1060
|
-
* @private
|
|
1061
|
-
*/
|
|
1062
|
-
QueryBuilderService.prototype._disableHeuristics;
|
|
1063
|
-
/**
|
|
1064
|
-
* @type {?}
|
|
1065
|
-
* @private
|
|
1066
|
-
*/
|
|
1067
|
-
QueryBuilderService.prototype._resolveQuery;
|
|
1068
|
-
/**
|
|
1069
|
-
* @type {?}
|
|
1070
|
-
* @private
|
|
1071
|
-
*/
|
|
1072
|
-
QueryBuilderService.prototype._resolveBuilderMeta;
|
|
1073
|
-
/**
|
|
1074
|
-
* @type {?}
|
|
1075
|
-
* @private
|
|
1076
|
-
*/
|
|
1077
|
-
QueryBuilderService.prototype._heuristicChange$;
|
|
1078
|
-
/** @type {?} */
|
|
1079
|
-
QueryBuilderService.prototype.builderMeta;
|
|
1080
|
-
/** @type {?} */
|
|
1081
|
-
QueryBuilderService.prototype.query;
|
|
1082
|
-
/** @type {?} */
|
|
1083
|
-
QueryBuilderService.prototype.state;
|
|
1084
|
-
/** @type {?} */
|
|
1085
|
-
QueryBuilderService.prototype.pivotConfig;
|
|
1086
|
-
/** @type {?} */
|
|
1087
|
-
QueryBuilderService.prototype.chartType;
|
|
1088
|
-
}
|
|
1089
504
|
|
|
1090
|
-
|
|
1091
|
-
*
|
|
1092
|
-
* Generated from: src/public_api.ts
|
|
1093
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
505
|
+
/*
|
|
506
|
+
* Public API Surface of cubejs-client-ngx
|
|
1094
507
|
*/
|
|
1095
508
|
|
|
1096
|
-
|
|
1097
|
-
* @fileoverview added by tsickle
|
|
1098
|
-
* Generated from: index.ts
|
|
1099
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
1100
|
-
*/
|
|
509
|
+
// This file is not used to build this module. It is only used during editing
|
|
1101
510
|
|
|
1102
511
|
/**
|
|
1103
|
-
*
|
|
1104
|
-
* Generated from: cubejs-client-ngx.ts
|
|
1105
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
512
|
+
* Generated bundle index. Do not edit.
|
|
1106
513
|
*/
|
|
1107
514
|
|
|
1108
515
|
export { BaseMember, BuilderMeta, ChartType, CubejsClient, CubejsClientModule, FilterMember, MemberType, Order, PivotConfig, Query, QueryBuilderService, TimeDimensionMember, StateSubject as ɵa };
|