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