@cubejs-client/ngx 1.2.34 → 1.3.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/esm2022/src/client.mjs +70 -0
- package/{esm2020 → esm2022}/src/module.mjs +5 -5
- package/esm2022/src/query-builder/builder-meta.mjs +29 -0
- package/esm2022/src/query-builder/common.mjs +14 -0
- package/esm2022/src/query-builder/query-builder.service.mjs +125 -0
- package/esm2022/src/query-builder/query-members.mjs +231 -0
- package/esm2022/src/query-builder/query.mjs +55 -0
- package/{fesm2020 → fesm2022}/cubejs-client-ngx.mjs +52 -22
- package/{fesm2020 → fesm2022}/cubejs-client-ngx.mjs.map +1 -1
- package/package.json +7 -13
- package/src/client.d.ts +1 -1
- package/src/query-builder/chart-type.d.ts +1 -1
- package/src/query-builder/query-builder.service.d.ts +1 -1
- package/src/query-builder/query-members.d.ts +2 -2
- package/src/query-builder/query.d.ts +1 -1
- package/cubejs-client-ngx.d.ts +0 -5
- package/esm2020/src/client.mjs +0 -68
- package/esm2020/src/query-builder/builder-meta.mjs +0 -23
- package/esm2020/src/query-builder/common.mjs +0 -13
- package/esm2020/src/query-builder/query-builder.service.mjs +0 -120
- package/esm2020/src/query-builder/query-members.mjs +0 -226
- package/esm2020/src/query-builder/query.mjs +0 -47
- package/fesm2015/cubejs-client-ngx.mjs +0 -517
- package/fesm2015/cubejs-client-ngx.mjs.map +0 -1
- /package/{esm2020 → esm2022}/cubejs-client-ngx.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/src/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/query-builder/chart-type.mjs +0 -0
- /package/{esm2020 → esm2022}/src/query-builder/pivot-config.mjs +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { Observable, from, BehaviorSubject } from 'rxjs';
|
|
3
|
+
import cube from '@cubejs-client/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class CubeClient {
|
|
6
|
+
config;
|
|
7
|
+
ready$ = new BehaviorSubject(false);
|
|
8
|
+
cubeApi;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
if (this.config instanceof Observable) {
|
|
12
|
+
this.config.subscribe(() => {
|
|
13
|
+
this.ready$.next(true);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
this.ready$.next(true);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
apiInstance() {
|
|
21
|
+
if (!this.cubeApi) {
|
|
22
|
+
if (this.config instanceof Observable) {
|
|
23
|
+
this.config.subscribe((config) => {
|
|
24
|
+
this.cubeApi = cube(config.token, config.options);
|
|
25
|
+
if (!this.cubeApi) {
|
|
26
|
+
throw new Error('Cannot create CubeApi instance. Please check that the config is passed correctly and contains all required options.');
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.cubeApi = cube(this.config.token, this.config.options);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return this.cubeApi;
|
|
35
|
+
}
|
|
36
|
+
load(query, options) {
|
|
37
|
+
return from(this.apiInstance().load(query, options));
|
|
38
|
+
}
|
|
39
|
+
sql(query, options) {
|
|
40
|
+
return from(this.apiInstance().sql(query, options));
|
|
41
|
+
}
|
|
42
|
+
dryRun(query, options) {
|
|
43
|
+
return from(this.apiInstance().dryRun(query, options));
|
|
44
|
+
}
|
|
45
|
+
meta(options) {
|
|
46
|
+
return from(this.apiInstance().meta(options));
|
|
47
|
+
}
|
|
48
|
+
watch(query, params = {}) {
|
|
49
|
+
return new Observable((observer) => query.subscribe({
|
|
50
|
+
next: async (query) => {
|
|
51
|
+
try {
|
|
52
|
+
const resultSet = await this.apiInstance().load(query, params);
|
|
53
|
+
observer.next(resultSet);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
observer.error(err);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClient, deps: [{ token: 'config' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
62
|
+
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClient });
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClient, decorators: [{
|
|
65
|
+
type: Injectable
|
|
66
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
67
|
+
type: Inject,
|
|
68
|
+
args: ['config']
|
|
69
|
+
}] }] });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxJQVNOLE1BQU0scUJBQXFCLENBQUM7O0FBUTdCLE1BQU0sT0FBTyxVQUFVO0lBS2lCO0lBSi9CLE1BQU0sR0FBNkIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0QsT0FBTyxDQUFVO0lBRXpCLFlBQXNDLE1BQTZCO1FBQTdCLFdBQU0sR0FBTixNQUFNLENBQXVCO1FBQ2pFLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLFlBQVksVUFBVSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUVsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNsQixNQUFNLElBQUksS0FBSyxDQUNiLHFIQUFxSCxDQUN0SCxDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRU0sSUFBSSxDQUNULEtBQXNCLEVBQ3RCLE9BQTJCO1FBRTNCLE9BQU8sSUFBSSxDQUFxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxHQUFHLENBQ1IsS0FBc0IsRUFDdEIsT0FBMkI7UUFFM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sTUFBTSxDQUNYLEtBQXNCLEVBQ3RCLE9BQTJCO1FBRTNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUEyQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUU7UUFDN0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ2pDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDZCxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUM7b0JBQ0gsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDL0QsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztnQkFBQyxPQUFNLEdBQUcsRUFBRSxDQUFDO29CQUNaLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFFSCxDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzJIQTFFVSxVQUFVLGtCQUtELFFBQVE7K0hBTGpCLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQU1JLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgY3ViZSwge1xuICBDdWJlQXBpLFxuICBDdWJlQXBpT3B0aW9ucyxcbiAgRHJ5UnVuUmVzcG9uc2UsXG4gIExvYWRNZXRob2RPcHRpb25zLFxuICBNZXRhLFxuICBRdWVyeSxcbiAgUmVzdWx0U2V0LFxuICBTcWxRdWVyeSxcbn0gZnJvbSAnQGN1YmVqcy1jbGllbnQvY29yZSc7XG5cbmV4cG9ydCB0eXBlIEN1YmVDb25maWcgPSB7XG4gIHRva2VuOiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBDdWJlQXBpT3B0aW9ucztcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDdWJlQ2xpZW50IHtcbiAgcHVibGljIHJlYWR5JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBjdWJlQXBpOiBDdWJlQXBpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2NvbmZpZycpIHByaXZhdGUgY29uZmlnOiBhbnkgfCBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICBpZiAodGhpcy5jb25maWcgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlYWR5JC5uZXh0KHRydWUpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVhZHkkLm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcGlJbnN0YW5jZSgpOiBDdWJlQXBpIHtcbiAgICBpZiAoIXRoaXMuY3ViZUFwaSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xuICAgICAgICAgIHRoaXMuY3ViZUFwaSA9IGN1YmUoY29uZmlnLnRva2VuLCBjb25maWcub3B0aW9ucyk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuY3ViZUFwaSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnQ2Fubm90IGNyZWF0ZSBDdWJlQXBpIGluc3RhbmNlLiBQbGVhc2UgY2hlY2sgdGhhdCB0aGUgY29uZmlnIGlzIHBhc3NlZCBjb3JyZWN0bHkgYW5kIGNvbnRhaW5zIGFsbCByZXF1aXJlZCBvcHRpb25zLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3ViZUFwaSA9IGN1YmUodGhpcy5jb25maWcudG9rZW4sIHRoaXMuY29uZmlnLm9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmN1YmVBcGk7XG4gIH1cblxuICBwdWJsaWMgbG9hZChcbiAgICBxdWVyeTogUXVlcnkgfCBRdWVyeVtdLFxuICAgIG9wdGlvbnM/OiBMb2FkTWV0aG9kT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPFJlc3VsdFNldD4ge1xuICAgIHJldHVybiBmcm9tKDxQcm9taXNlPFJlc3VsdFNldD4+dGhpcy5hcGlJbnN0YW5jZSgpLmxvYWQocXVlcnksIG9wdGlvbnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBzcWwoXG4gICAgcXVlcnk6IFF1ZXJ5IHwgUXVlcnlbXSxcbiAgICBvcHRpb25zPzogTG9hZE1ldGhvZE9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxTcWxRdWVyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpSW5zdGFuY2UoKS5zcWwocXVlcnksIG9wdGlvbnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBkcnlSdW4oXG4gICAgcXVlcnk6IFF1ZXJ5IHwgUXVlcnlbXSxcbiAgICBvcHRpb25zPzogTG9hZE1ldGhvZE9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxEcnlSdW5SZXNwb25zZT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpSW5zdGFuY2UoKS5kcnlSdW4ocXVlcnksIG9wdGlvbnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRhKG9wdGlvbnM/OiBMb2FkTWV0aG9kT3B0aW9ucyk6IE9ic2VydmFibGU8TWV0YT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpSW5zdGFuY2UoKS5tZXRhKG9wdGlvbnMpKTtcbiAgfVxuXG4gIHB1YmxpYyB3YXRjaChxdWVyeSwgcGFyYW1zID0ge30pOiBPYnNlcnZhYmxlPFJlc3VsdFNldD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+XG4gICAgICBxdWVyeS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBhc3luYyAocXVlcnkpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0U2V0ID0gYXdhaXQgdGhpcy5hcGlJbnN0YW5jZSgpLmxvYWQocXVlcnksIHBhcmFtcyk7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3VsdFNldCk7XG4gICAgICAgICAgfSBjYXRjaChlcnIpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -14,14 +14,14 @@ export class CubeClientModule {
|
|
|
14
14
|
],
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
18
|
+
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: CubeClientModule });
|
|
19
|
+
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClientModule, providers: [CubeClient] });
|
|
17
20
|
}
|
|
18
|
-
|
|
19
|
-
/** @nocollapse */ CubeClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CubeClientModule });
|
|
20
|
-
/** @nocollapse */ CubeClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CubeClientModule, providers: [CubeClient] });
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CubeClientModule, decorators: [{
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClientModule, decorators: [{
|
|
22
22
|
type: NgModule,
|
|
23
23
|
args: [{
|
|
24
24
|
providers: [CubeClient],
|
|
25
25
|
}]
|
|
26
26
|
}] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUt0QyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBVztRQUMvQixPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUU7Z0JBQ1QsVUFBVTtnQkFDVjtvQkFDRSxPQUFPLEVBQUUsUUFBUTtvQkFDakIsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzsySEFaVSxnQkFBZ0I7NEhBQWhCLGdCQUFnQjs0SEFBaEIsZ0JBQWdCLGFBRmhCLENBQUMsVUFBVSxDQUFDOzs0RkFFWixnQkFBZ0I7a0JBSDVCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDdWJlQ2xpZW50IH0gZnJvbSAnLi9jbGllbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtDdWJlQ2xpZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ3ViZUNsaWVudE1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc6IGFueSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Q3ViZUNsaWVudE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQ3ViZUNsaWVudE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBDdWJlQ2xpZW50LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogJ2NvbmZpZycsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export class BuilderMeta {
|
|
2
|
+
meta;
|
|
3
|
+
measures;
|
|
4
|
+
dimensions;
|
|
5
|
+
segments;
|
|
6
|
+
timeDimensions;
|
|
7
|
+
filters;
|
|
8
|
+
constructor(meta) {
|
|
9
|
+
this.meta = meta;
|
|
10
|
+
this.mapMeta();
|
|
11
|
+
}
|
|
12
|
+
mapMeta() {
|
|
13
|
+
const allDimensions = (this.meta.membersForQuery(null, 'dimensions'));
|
|
14
|
+
this.measures = this.meta.membersForQuery(null, 'measures');
|
|
15
|
+
this.segments = this.meta.membersForQuery(null, 'segments');
|
|
16
|
+
this.dimensions = allDimensions.filter(({ type }) => type !== 'time');
|
|
17
|
+
this.timeDimensions = allDimensions.filter(({ type }) => type === 'time');
|
|
18
|
+
this.filters = [...allDimensions, ...this.measures].map((member) => {
|
|
19
|
+
return {
|
|
20
|
+
...member,
|
|
21
|
+
operators: this.meta.filterOperatorsForMember(member.name, [
|
|
22
|
+
'dimensions',
|
|
23
|
+
'measures',
|
|
24
|
+
]),
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci1tZXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3F1ZXJ5LWJ1aWxkZXIvYnVpbGRlci1tZXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxXQUFXO0lBT007SUFONUIsUUFBUSxDQUFpQjtJQUN6QixVQUFVLENBQW1CO0lBQzdCLFFBQVEsQ0FBZ0I7SUFDeEIsY0FBYyxDQUFtQjtJQUNqQyxPQUFPLENBQXVDO0lBRTlDLFlBQTRCLElBQVU7UUFBVixTQUFJLEdBQUosSUFBSSxDQUFNO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sYUFBYSxHQUFxQixDQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQzlDLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakUsT0FBTztnQkFDTCxHQUFHLE1BQU07Z0JBQ1QsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtvQkFDekQsWUFBWTtvQkFDWixVQUFVO2lCQUNYLENBQUM7YUFDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBNZXRhLFxuICBUQ3ViZURpbWVuc2lvbixcbiAgVEN1YmVNZWFzdXJlLFxuICBUQ3ViZU1lbWJlcixcbn0gZnJvbSAnQGN1YmVqcy1jbGllbnQvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZGVyTWV0YSB7XG4gIG1lYXN1cmVzOiBUQ3ViZU1lYXN1cmVbXTtcbiAgZGltZW5zaW9uczogVEN1YmVEaW1lbnNpb25bXTtcbiAgc2VnbWVudHM6IFRDdWJlTWVtYmVyW107XG4gIHRpbWVEaW1lbnNpb25zOiBUQ3ViZURpbWVuc2lvbltdO1xuICBmaWx0ZXJzOiBBcnJheTxUQ3ViZU1lYXN1cmUgfCBUQ3ViZURpbWVuc2lvbj47XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG1ldGE6IE1ldGEpIHtcbiAgICB0aGlzLm1hcE1ldGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwTWV0YSgpIHtcbiAgICBjb25zdCBhbGxEaW1lbnNpb25zID0gPFRDdWJlRGltZW5zaW9uW10+KFxuICAgICAgdGhpcy5tZXRhLm1lbWJlcnNGb3JRdWVyeShudWxsLCAnZGltZW5zaW9ucycpXG4gICAgKTtcblxuICAgIHRoaXMubWVhc3VyZXMgPSA8VEN1YmVNZWFzdXJlW10+dGhpcy5tZXRhLm1lbWJlcnNGb3JRdWVyeShudWxsLCAnbWVhc3VyZXMnKTtcbiAgICB0aGlzLnNlZ21lbnRzID0gdGhpcy5tZXRhLm1lbWJlcnNGb3JRdWVyeShudWxsLCAnc2VnbWVudHMnKTtcbiAgICB0aGlzLmRpbWVuc2lvbnMgPSBhbGxEaW1lbnNpb25zLmZpbHRlcigoeyB0eXBlIH0pID0+IHR5cGUgIT09ICd0aW1lJyk7XG4gICAgdGhpcy50aW1lRGltZW5zaW9ucyA9IGFsbERpbWVuc2lvbnMuZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gJ3RpbWUnKTtcbiAgICB0aGlzLmZpbHRlcnMgPSBbLi4uYWxsRGltZW5zaW9ucywgLi4udGhpcy5tZWFzdXJlc10ubWFwKChtZW1iZXIpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm1lbWJlcixcbiAgICAgICAgb3BlcmF0b3JzOiB0aGlzLm1ldGEuZmlsdGVyT3BlcmF0b3JzRm9yTWVtYmVyKG1lbWJlci5uYW1lLCBbXG4gICAgICAgICAgJ2RpbWVuc2lvbnMnLFxuICAgICAgICAgICdtZWFzdXJlcycsXG4gICAgICAgIF0pLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
export class StateSubject {
|
|
3
|
+
subject;
|
|
4
|
+
constructor(value) {
|
|
5
|
+
this.subject = new BehaviorSubject(value);
|
|
6
|
+
}
|
|
7
|
+
get() {
|
|
8
|
+
return this.subject.getValue();
|
|
9
|
+
}
|
|
10
|
+
set(value) {
|
|
11
|
+
this.subject.next(value);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3F1ZXJ5LWJ1aWxkZXIvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsTUFBTSxPQUFPLFlBQVk7SUFDdkIsT0FBTyxDQUFxQjtJQUU1QixZQUFZLEtBQVE7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQVE7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIFN0YXRlU3ViamVjdDxUID0gYW55PiB7XG4gIHN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxUPjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QodmFsdWUpO1xuICB9XG5cbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLnN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHNldCh2YWx1ZTogVCkge1xuICAgIHRoaXMuc3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ResultSet, isQueryPresent, defaultHeuristics, } from '@cubejs-client/core';
|
|
3
|
+
import { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';
|
|
4
|
+
import { catchError, switchMap } from 'rxjs/operators';
|
|
5
|
+
import { Query } from './query';
|
|
6
|
+
import { BuilderMeta } from './builder-meta';
|
|
7
|
+
import { PivotConfig } from './pivot-config';
|
|
8
|
+
import { ChartType } from './chart-type';
|
|
9
|
+
import { StateSubject } from './common';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class QueryBuilderService {
|
|
12
|
+
_cube;
|
|
13
|
+
_meta;
|
|
14
|
+
_query;
|
|
15
|
+
_disableHeuristics = false;
|
|
16
|
+
_resolveQuery;
|
|
17
|
+
_resolveBuilderMeta;
|
|
18
|
+
_heuristicChange$ = new Subject();
|
|
19
|
+
builderMeta = new Promise((resolve) => (this._resolveBuilderMeta = resolve));
|
|
20
|
+
query = new Promise((resolve) => (this._resolveQuery = resolve));
|
|
21
|
+
state = new BehaviorSubject({});
|
|
22
|
+
pivotConfig;
|
|
23
|
+
chartType;
|
|
24
|
+
async init() {
|
|
25
|
+
this.pivotConfig = new PivotConfig(null);
|
|
26
|
+
this.chartType = new ChartType('line');
|
|
27
|
+
this._cube.meta().subscribe((meta) => {
|
|
28
|
+
this._meta = meta;
|
|
29
|
+
this._query = new Query(this._meta, this._handleQueryChange.bind(this));
|
|
30
|
+
this._resolveQuery(this._query);
|
|
31
|
+
this._resolveBuilderMeta(new BuilderMeta(this._meta));
|
|
32
|
+
});
|
|
33
|
+
this.subscribe();
|
|
34
|
+
if (!this._disableHeuristics) {
|
|
35
|
+
this._heuristicChange$
|
|
36
|
+
.pipe(switchMap((data) => {
|
|
37
|
+
return combineLatest([
|
|
38
|
+
this._cube.dryRun(data.query).pipe(catchError((error) => {
|
|
39
|
+
console.error(error);
|
|
40
|
+
return of(null);
|
|
41
|
+
})),
|
|
42
|
+
of(data.shouldApplyHeuristicOrder),
|
|
43
|
+
]);
|
|
44
|
+
}))
|
|
45
|
+
.subscribe(([dryRunResponse, shouldApplyHeuristicOrder]) => {
|
|
46
|
+
if (!dryRunResponse) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const { pivotQuery, queryOrder } = dryRunResponse;
|
|
50
|
+
this.pivotConfig.set(ResultSet.getNormalizedPivotConfig(pivotQuery, this.pivotConfig.get()));
|
|
51
|
+
if (shouldApplyHeuristicOrder) {
|
|
52
|
+
this._query.order.set(queryOrder.reduce((a, b) => ({ ...a, ...b }), {}));
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
_handleQueryChange(newQuery, oldQuery) {
|
|
58
|
+
const { chartType, shouldApplyHeuristicOrder, query: heuristicQuery, } = defaultHeuristics(newQuery, oldQuery, {
|
|
59
|
+
meta: this._meta,
|
|
60
|
+
sessionGranularity: newQuery?.timeDimensions?.[0]?.granularity,
|
|
61
|
+
});
|
|
62
|
+
const query = this._disableHeuristics
|
|
63
|
+
? newQuery
|
|
64
|
+
: heuristicQuery || newQuery;
|
|
65
|
+
if (isQueryPresent(query) && !this._disableHeuristics) {
|
|
66
|
+
this._heuristicChange$.next({
|
|
67
|
+
shouldApplyHeuristicOrder: Boolean(shouldApplyHeuristicOrder),
|
|
68
|
+
query,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (!this._disableHeuristics && chartType) {
|
|
72
|
+
this.chartType.set(chartType);
|
|
73
|
+
}
|
|
74
|
+
return query;
|
|
75
|
+
}
|
|
76
|
+
setCubeClient(cubeClient) {
|
|
77
|
+
this._cube = cubeClient;
|
|
78
|
+
this.init();
|
|
79
|
+
}
|
|
80
|
+
subscribe() {
|
|
81
|
+
Object.getOwnPropertyNames(this).forEach((key) => {
|
|
82
|
+
if (this[key] instanceof StateSubject) {
|
|
83
|
+
this[key].subject.subscribe((value) => this.setPartialState({
|
|
84
|
+
[key]: value,
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
this.query.then((query) => {
|
|
89
|
+
query.subject.subscribe((cubeQuery) => {
|
|
90
|
+
this.setPartialState({
|
|
91
|
+
query: cubeQuery,
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async deserialize(state) {
|
|
97
|
+
if (state.query) {
|
|
98
|
+
(await this.query).setQuery(state.query);
|
|
99
|
+
}
|
|
100
|
+
Object.entries(state).forEach(([key, value]) => {
|
|
101
|
+
if (this[key] instanceof StateSubject) {
|
|
102
|
+
this[key].set(value);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
this.subscribe();
|
|
106
|
+
}
|
|
107
|
+
setPartialState(partialState) {
|
|
108
|
+
this.state.next({
|
|
109
|
+
...this.state.getValue(),
|
|
110
|
+
...partialState,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
disableHeuristics() {
|
|
114
|
+
this._disableHeuristics = false;
|
|
115
|
+
}
|
|
116
|
+
enableHeuristics() {
|
|
117
|
+
this._disableHeuristics = true;
|
|
118
|
+
}
|
|
119
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
120
|
+
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryBuilderService });
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryBuilderService, decorators: [{
|
|
123
|
+
type: Injectable
|
|
124
|
+
}] });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFNBQVMsRUFHVCxjQUFjLEVBQ2QsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBU3hDLE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsS0FBSyxDQUFhO0lBQ2xCLEtBQUssQ0FBTztJQUNaLE1BQU0sQ0FBUTtJQUNkLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxhQUFhLENBQXlCO0lBQ3RDLG1CQUFtQixDQUErQjtJQUNsRCxpQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO0lBRXRDLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FDaEMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxDQUNsRCxDQUFDO0lBQ08sS0FBSyxHQUFHLElBQUksT0FBTyxDQUMx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LENBQUM7MkhBekpVLG1CQUFtQjsrSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWV0YSxcbiAgUmVzdWx0U2V0LFxuICBRdWVyeSBhcyBUQ3ViZVF1ZXJ5LFxuICBQaXZvdENvbmZpZyBhcyBUUGl2b3RDb25maWcsXG4gIGlzUXVlcnlQcmVzZW50LFxuICBkZWZhdWx0SGV1cmlzdGljcyxcbn0gZnJvbSAnQGN1YmVqcy1jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEN1YmVDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tICcuL3F1ZXJ5JztcbmltcG9ydCB7IEJ1aWxkZXJNZXRhIH0gZnJvbSAnLi9idWlsZGVyLW1ldGEnO1xuaW1wb3J0IHsgUGl2b3RDb25maWcgfSBmcm9tICcuL3Bpdm90LWNvbmZpZyc7XG5pbXBvcnQgeyBDaGFydFR5cGUsIFRDaGFydFR5cGUgfSBmcm9tICcuL2NoYXJ0LXR5cGUnO1xuaW1wb3J0IHsgU3RhdGVTdWJqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuXG5leHBvcnQgdHlwZSBUUXVlcnlCdWlsZGVyU3RhdGUgPSB7XG4gIHF1ZXJ5PzogVEN1YmVRdWVyeTtcbiAgcGl2b3RDb25maWc/OiBUUGl2b3RDb25maWc7XG4gIGNoYXJ0VHlwZT86IFRDaGFydFR5cGU7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUXVlcnlCdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgX2N1YmU6IEN1YmVDbGllbnQ7XG4gIHByaXZhdGUgX21ldGE6IE1ldGE7XG4gIHByaXZhdGUgX3F1ZXJ5OiBRdWVyeTtcbiAgcHJpdmF0ZSBfZGlzYWJsZUhldXJpc3RpY3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVzb2x2ZVF1ZXJ5OiAocXVlcnk6IFF1ZXJ5KSA9PiB2b2lkO1xuICBwcml2YXRlIF9yZXNvbHZlQnVpbGRlck1ldGE6IChxdWVyeTogQnVpbGRlck1ldGEpID0+IHZvaWQ7XG4gIHByaXZhdGUgX2hldXJpc3RpY0NoYW5nZSQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgcmVhZG9ubHkgYnVpbGRlck1ldGEgPSBuZXcgUHJvbWlzZTxCdWlsZGVyTWV0YT4oXG4gICAgKHJlc29sdmUpID0+ICh0aGlzLl9yZXNvbHZlQnVpbGRlck1ldGEgPSByZXNvbHZlKVxuICApO1xuICByZWFkb25seSBxdWVyeSA9IG5ldyBQcm9taXNlPFF1ZXJ5PihcbiAgICAocmVzb2x2ZSkgPT4gKHRoaXMuX3Jlc29sdmVRdWVyeSA9IHJlc29sdmUpXG4gICk7XG4gIHJlYWRvbmx5IHN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUUXVlcnlCdWlsZGVyU3RhdGU+KHt9KTtcblxuICBwaXZvdENvbmZpZzogUGl2b3RDb25maWc7XG4gIGNoYXJ0VHlwZTogQ2hhcnRUeXBlO1xuXG4gIHByaXZhdGUgYXN5bmMgaW5pdCgpIHtcbiAgICB0aGlzLnBpdm90Q29uZmlnID0gbmV3IFBpdm90Q29uZmlnKG51bGwpO1xuICAgIHRoaXMuY2hhcnRUeXBlID0gbmV3IENoYXJ0VHlwZSgnbGluZScpO1xuXG4gICAgdGhpcy5fY3ViZS5tZXRhKCkuc3Vic2NyaWJlKChtZXRhKSA9PiB7XG4gICAgICB0aGlzLl9tZXRhID0gbWV0YTtcblxuICAgICAgdGhpcy5fcXVlcnkgPSBuZXcgUXVlcnkoXG4gICAgICAgIHRoaXMuX21ldGEsXG4gICAgICAgIHRoaXMuX2hhbmRsZVF1ZXJ5Q2hhbmdlLmJpbmQodGhpcylcbiAgICAgICk7XG4gICAgICB0aGlzLl9yZXNvbHZlUXVlcnkodGhpcy5fcXVlcnkpO1xuICAgICAgdGhpcy5fcmVzb2x2ZUJ1aWxkZXJNZXRhKG5ldyBCdWlsZGVyTWV0YSh0aGlzLl9tZXRhKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKCF0aGlzLl9kaXNhYmxlSGV1cmlzdGljcykge1xuICAgICAgdGhpcy5faGV1cmlzdGljQ2hhbmdlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgdGhpcy5fY3ViZS5kcnlSdW4oZGF0YS5xdWVyeSkucGlwZShjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICBvZihkYXRhLnNob3VsZEFwcGx5SGV1cmlzdGljT3JkZXIpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChbZHJ5UnVuUmVzcG9uc2UsIHNob3VsZEFwcGx5SGV1cmlzdGljT3JkZXJdKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWRyeVJ1blJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgeyBwaXZvdFF1ZXJ5LCBxdWVyeU9yZGVyIH0gPSBkcnlSdW5SZXNwb25zZTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5waXZvdENvbmZpZy5zZXQoXG4gICAgICAgICAgICAgIFJlc3VsdFNldC5nZXROb3JtYWxpemVkUGl2b3RDb25maWcoXG4gICAgICAgICAgICAgICAgcGl2b3RRdWVyeSxcbiAgICAgICAgICAgICAgICB0aGlzLnBpdm90Q29uZmlnLmdldCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoc2hvdWxkQXBwbHlIZXVyaXN0aWNPcmRlcikge1xuICAgICAgICAgICAgICB0aGlzLl9xdWVyeS5vcmRlci5zZXQoXG4gICAgICAgICAgICAgICAgcXVlcnlPcmRlci5yZWR1Y2UoKGEsIGIpID0+ICh7IC4uLmEsIC4uLmIgfSksIHt9KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVRdWVyeUNoYW5nZShuZXdRdWVyeSwgb2xkUXVlcnkpIHtcbiAgICBjb25zdCB7XG4gICAgICBjaGFydFR5cGUsXG4gICAgICBzaG91bGRBcHBseUhldXJpc3RpY09yZGVyLFxuICAgICAgcXVlcnk6IGhldXJpc3RpY1F1ZXJ5LFxuICAgIH0gPSBkZWZhdWx0SGV1cmlzdGljcyhuZXdRdWVyeSwgb2xkUXVlcnksIHtcbiAgICAgIG1ldGE6IHRoaXMuX21ldGEsXG4gICAgICBzZXNzaW9uR3JhbnVsYXJpdHk6IG5ld1F1ZXJ5Py50aW1lRGltZW5zaW9ucz8uWzBdPy5ncmFudWxhcml0eSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fZGlzYWJsZUhldXJpc3RpY3NcbiAgICAgID8gbmV3UXVlcnlcbiAgICAgIDogaGV1cmlzdGljUXVlcnkgfHwgbmV3UXVlcnk7XG5cbiAgICBpZiAoaXNRdWVyeVByZXNlbnQocXVlcnkpICYmICF0aGlzLl9kaXNhYmxlSGV1cmlzdGljcykge1xuICAgICAgdGhpcy5faGV1cmlzdGljQ2hhbmdlJC5uZXh0KHtcbiAgICAgICAgc2hvdWxkQXBwbHlIZXVyaXN0aWNPcmRlcjogQm9vbGVhbihzaG91bGRBcHBseUhldXJpc3RpY09yZGVyKSxcbiAgICAgICAgcXVlcnksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2Rpc2FibGVIZXVyaXN0aWNzICYmIGNoYXJ0VHlwZSkge1xuICAgICAgdGhpcy5jaGFydFR5cGUuc2V0KGNoYXJ0VHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgc2V0Q3ViZUNsaWVudChjdWJlQ2xpZW50OiBDdWJlQ2xpZW50KSB7XG4gICAgdGhpcy5fY3ViZSA9IGN1YmVDbGllbnQ7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZSgpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICh0aGlzW2tleV0gaW5zdGFuY2VvZiBTdGF0ZVN1YmplY3QpIHtcbiAgICAgICAgdGhpc1trZXldLnN1YmplY3Quc3Vic2NyaWJlKCh2YWx1ZSkgPT5cbiAgICAgICAgICB0aGlzLnNldFBhcnRpYWxTdGF0ZSh7XG4gICAgICAgICAgICBba2V5XTogdmFsdWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnF1ZXJ5LnRoZW4oKHF1ZXJ5KSA9PiB7XG4gICAgICBxdWVyeS5zdWJqZWN0LnN1YnNjcmliZSgoY3ViZVF1ZXJ5KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0UGFydGlhbFN0YXRlKHtcbiAgICAgICAgICBxdWVyeTogY3ViZVF1ZXJ5LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVzZXJpYWxpemUoc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUucXVlcnkpIHtcbiAgICAgIChhd2FpdCB0aGlzLnF1ZXJ5KS5zZXRRdWVyeShzdGF0ZS5xdWVyeSk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmVudHJpZXMoc3RhdGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHRoaXNba2V5XSBpbnN0YW5jZW9mIFN0YXRlU3ViamVjdCkge1xuICAgICAgICB0aGlzW2tleV0uc2V0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzZXRQYXJ0aWFsU3RhdGUocGFydGlhbFN0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZS5uZXh0KHtcbiAgICAgIC4uLnRoaXMuc3RhdGUuZ2V0VmFsdWUoKSxcbiAgICAgIC4uLnBhcnRpYWxTdGF0ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2FibGVIZXVyaXN0aWNzKCkge1xuICAgIHRoaXMuX2Rpc2FibGVIZXVyaXN0aWNzID0gZmFsc2U7XG4gIH1cblxuICBlbmFibGVIZXVyaXN0aWNzKCkge1xuICAgIHRoaXMuX2Rpc2FibGVIZXVyaXN0aWNzID0gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { moveItemInArray, } from '@cubejs-client/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import equal from 'fast-deep-equal/es6';
|
|
4
|
+
export class BaseMember {
|
|
5
|
+
query;
|
|
6
|
+
field;
|
|
7
|
+
constructor(query, field) {
|
|
8
|
+
this.query = query;
|
|
9
|
+
this.field = field;
|
|
10
|
+
}
|
|
11
|
+
get members() {
|
|
12
|
+
return this.query.asCubeQuery()[this.field] || [];
|
|
13
|
+
}
|
|
14
|
+
add(name) {
|
|
15
|
+
this.query.setPartialQuery({
|
|
16
|
+
[this.field]: [...this.members, name],
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
replace(name, replaceWithName) {
|
|
20
|
+
this.query.setPartialQuery({
|
|
21
|
+
[this.field]: this.members.map((currentName) => currentName === name ? replaceWithName : currentName),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
remove(by) {
|
|
25
|
+
this.query.setPartialQuery({
|
|
26
|
+
[this.field]: this.query
|
|
27
|
+
.asCubeQuery()[this.field].filter((currentName, index) => {
|
|
28
|
+
if (typeof by === 'string') {
|
|
29
|
+
return currentName !== by;
|
|
30
|
+
}
|
|
31
|
+
return index !== by;
|
|
32
|
+
}),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
set(members) {
|
|
36
|
+
this.query.setPartialQuery({
|
|
37
|
+
[this.field]: members,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
asArray() {
|
|
41
|
+
return (this.query.asCubeQuery()[this.field] || []).map((name) => this.query.meta.resolveMember(name, this.field));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class TimeDimensionMember {
|
|
45
|
+
query;
|
|
46
|
+
constructor(query) {
|
|
47
|
+
this.query = query;
|
|
48
|
+
}
|
|
49
|
+
get members() {
|
|
50
|
+
return this.query.asCubeQuery().timeDimensions || [];
|
|
51
|
+
}
|
|
52
|
+
get granularity() {
|
|
53
|
+
return this.members[0]?.granularity;
|
|
54
|
+
}
|
|
55
|
+
updateTimeDimension(by, updateWith) {
|
|
56
|
+
const timeDimensions = this.members.map((td, index) => {
|
|
57
|
+
if (td.dimension === by || index === by) {
|
|
58
|
+
return {
|
|
59
|
+
...td,
|
|
60
|
+
...updateWith,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return td;
|
|
64
|
+
});
|
|
65
|
+
this.query.setPartialQuery({
|
|
66
|
+
timeDimensions,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
add(name) {
|
|
70
|
+
this.query.setPartialQuery({
|
|
71
|
+
timeDimensions: [
|
|
72
|
+
{
|
|
73
|
+
dimension: name,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
remove(name) {
|
|
79
|
+
this.query.setPartialQuery({
|
|
80
|
+
timeDimensions: this.members.filter(({ dimension }) => dimension !== name),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
set(timeDimensions) {
|
|
84
|
+
this.query.setPartialQuery({
|
|
85
|
+
timeDimensions,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
setDateRange(by, dateRange) {
|
|
89
|
+
this.updateTimeDimension(by, { dateRange });
|
|
90
|
+
}
|
|
91
|
+
setGranularity(by, granularity) {
|
|
92
|
+
this.updateTimeDimension(by, { granularity });
|
|
93
|
+
}
|
|
94
|
+
asArray() {
|
|
95
|
+
return (this.query.asCubeQuery().timeDimensions || []).map((td) => {
|
|
96
|
+
return {
|
|
97
|
+
...this.query.meta.resolveMember(td.dimension, 'dimensions'),
|
|
98
|
+
...td,
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export class Order {
|
|
104
|
+
query;
|
|
105
|
+
orderMembers = new BehaviorSubject([]);
|
|
106
|
+
constructor(query) {
|
|
107
|
+
this.query = query;
|
|
108
|
+
this.query.subject.subscribe(this.handleQueryChange.bind(this));
|
|
109
|
+
this.orderMembers.subscribe(this.handleOrderMembersChange.bind(this));
|
|
110
|
+
}
|
|
111
|
+
handleOrderMembersChange(orderMembers) {
|
|
112
|
+
const order = orderMembers
|
|
113
|
+
.filter(({ order }) => order !== 'none')
|
|
114
|
+
.reduce((memo, { id, order }) => ({ ...memo, [id]: order }), {});
|
|
115
|
+
if (!equal(order, this.asObject())) {
|
|
116
|
+
this.query.setPartialQuery({ order });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
handleQueryChange() {
|
|
120
|
+
this.orderMembers.next([
|
|
121
|
+
...this.query.measures.asArray(),
|
|
122
|
+
...this.query.dimensions.asArray(),
|
|
123
|
+
...this.query.timeDimensions.asArray(),
|
|
124
|
+
].map(({ name, title }) => {
|
|
125
|
+
return {
|
|
126
|
+
id: name,
|
|
127
|
+
order: this.of(name),
|
|
128
|
+
title,
|
|
129
|
+
};
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
setMemberOrder(id, order) {
|
|
133
|
+
this.orderMembers.next(this.orderMembers.getValue().map((orderMember) => {
|
|
134
|
+
if (orderMember.id === id) {
|
|
135
|
+
return {
|
|
136
|
+
...orderMember,
|
|
137
|
+
order,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return orderMember;
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
reorder(sourceIndex, destinationIndex) {
|
|
144
|
+
this.orderMembers.next(moveItemInArray(this.orderMembers.getValue(), sourceIndex, destinationIndex));
|
|
145
|
+
}
|
|
146
|
+
of(member) {
|
|
147
|
+
return (this.query.asCubeQuery().order || {})[member] || 'none';
|
|
148
|
+
}
|
|
149
|
+
set(order) {
|
|
150
|
+
this.query.setPartialQuery({ order });
|
|
151
|
+
}
|
|
152
|
+
asArray() {
|
|
153
|
+
if (Array.isArray(this.query.asCubeQuery().order)) {
|
|
154
|
+
return this.query.asCubeQuery().order;
|
|
155
|
+
}
|
|
156
|
+
return Object.entries(this.query.asCubeQuery().order || {});
|
|
157
|
+
}
|
|
158
|
+
asObject() {
|
|
159
|
+
return this.asArray().reduce((memo, [key, value]) => ({ ...memo, [key]: value }), {});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
export class FilterMember {
|
|
163
|
+
query;
|
|
164
|
+
constructor(query) {
|
|
165
|
+
this.query = query;
|
|
166
|
+
}
|
|
167
|
+
get filters() {
|
|
168
|
+
// TODO: update this type assertion once the QueryBuilder supports logical and/or
|
|
169
|
+
return (this.query.asCubeQuery().filters || []);
|
|
170
|
+
}
|
|
171
|
+
update(by, updateWith) {
|
|
172
|
+
const filters = this.filters.map((filter, index) => {
|
|
173
|
+
if (index === by || filter.member === by || filter.dimension === by) {
|
|
174
|
+
return {
|
|
175
|
+
...filter,
|
|
176
|
+
...updateWith,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
return filter;
|
|
180
|
+
});
|
|
181
|
+
this.query.setPartialQuery({
|
|
182
|
+
filters: filters,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
add(filter) {
|
|
186
|
+
this.query.setPartialQuery({
|
|
187
|
+
filters: [...this.filters, filter],
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
remove(by) {
|
|
191
|
+
this.query.setPartialQuery({
|
|
192
|
+
filters: this.filters.filter((filter, index) => {
|
|
193
|
+
if (filter.member === by || filter.dimension === by || index === by) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
return true;
|
|
197
|
+
}),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
set(filters) {
|
|
201
|
+
this.query.setPartialQuery({
|
|
202
|
+
filters,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
replace(name, replaceWithName) {
|
|
206
|
+
this.query.setPartialQuery({
|
|
207
|
+
filters: this.filters.map((filter) => {
|
|
208
|
+
const field = filter.member ? 'member' : 'dimension';
|
|
209
|
+
return filter.member === name || filter.dimension === name
|
|
210
|
+
? {
|
|
211
|
+
...filter,
|
|
212
|
+
[field]: replaceWithName,
|
|
213
|
+
}
|
|
214
|
+
: filter;
|
|
215
|
+
}),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
asArray() {
|
|
219
|
+
return this.filters.map((filter) => {
|
|
220
|
+
return {
|
|
221
|
+
...this.query.meta.resolveMember(filter.member || filter.dimension, [
|
|
222
|
+
'dimensions',
|
|
223
|
+
'measures',
|
|
224
|
+
]),
|
|
225
|
+
operators: this.query.meta.filterOperatorsForMember(filter.member || filter.dimension, ['dimensions', 'measures']),
|
|
226
|
+
...filter,
|
|
227
|
+
};
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktbWVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9xdWVyeS1idWlsZGVyL3F1ZXJ5LW1lbWJlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGVBQWUsR0FJaEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBWXhDLE1BQU0sT0FBTyxVQUFVO0lBRVg7SUFDQTtJQUZWLFlBQ1UsS0FBWSxFQUNaLEtBQTZDO1FBRDdDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixVQUFLLEdBQUwsS0FBSyxDQUF3QztJQUNwRCxDQUFDO0lBRUosSUFBWSxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxHQUFHLENBQUMsSUFBWTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQ3pCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVksRUFBRSxlQUF1QjtRQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUN6QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQzdDLFdBQVcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUNyRDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMs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d0IsQ0FDakQsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxFQUNqQyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FDM0I7Z0JBQ0QsR0FBRyxNQUFNO2FBQ1YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVGltZURpbWVuc2lvbkdyYW51bGFyaXR5LFxuICBUUXVlcnlPcmRlck9iamVjdCxcbiAgVFF1ZXJ5T3JkZXJBcnJheSxcbiAgbW92ZUl0ZW1JbkFycmF5LFxuICBGaWx0ZXIsXG4gIFVuYXJ5RmlsdGVyLFxuICBCaW5hcnlGaWx0ZXIsXG59IGZyb20gJ0BjdWJlanMtY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsL2VzNic7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi9xdWVyeSc7XG5cbmV4cG9ydCB0eXBlIFRPcmRlciA9ICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnO1xuXG5leHBvcnQgdHlwZSBUT3JkZXJNZW1iZXIgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG9yZGVyOiBUT3JkZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgQmFzZU1lbWJlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcXVlcnk6IFF1ZXJ5LFxuICAgIHByaXZhdGUgZmllbGQ6ICdtZWFzdXJlcycgfCAnZGltZW5zaW9ucycgfCAnc2VnbWVudHMnXG4gICkge31cblxuICBwcml2YXRlIGdldCBtZW1iZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5LmFzQ3ViZVF1ZXJ5KClbdGhpcy5maWVsZF0gfHwgW107XG4gIH1cblxuICBhZGQobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5xdWVyeS5zZXRQYXJ0aWFsUXVlcnkoe1xuICAgICAgW3RoaXMuZmllbGRdOiBbLi4udGhpcy5tZW1iZXJzLCBuYW1lXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlcGxhY2UobmFtZTogc3RyaW5nLCByZXBsYWNlV2l0aE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIFt0aGlzLmZpZWxkXTogdGhpcy5tZW1iZXJzLm1hcCgoY3VycmVudE5hbWUpID0+XG4gICAgICAgIGN1cnJlbnROYW1lID09PSBuYW1lID8gcmVwbGFjZVdpdGhOYW1lIDogY3VycmVudE5hbWVcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICByZW1vdmUoYnk6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIFt0aGlzLmZpZWxkXTogdGhpcy5xdWVyeVxuICAgICAgICAuYXNDdWJlUXVlcnkoKVxuICAgICAgICBbdGhpcy5maWVsZF0uZmlsdGVyKChjdXJyZW50TmFtZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnROYW1lICE9PSBieTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gaW5kZXggIT09IGJ5O1xuICAgICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHNldChtZW1iZXJzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIFt0aGlzLmZpZWxkXTogbWVtYmVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzQXJyYXkoKSB7XG4gICAgcmV0dXJuICh0aGlzLnF1ZXJ5LmFzQ3ViZVF1ZXJ5KClbdGhpcy5maWVsZF0gfHwgW10pLm1hcCgobmFtZSkgPT5cbiAgICAgIHRoaXMucXVlcnkubWV0YS5yZXNvbHZlTWVtYmVyKG5hbWUsIHRoaXMuZmllbGQpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZURpbWVuc2lvbk1lbWJlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcXVlcnk6IFF1ZXJ5KSB7fVxuXG4gIHByaXZhdGUgZ2V0IG1lbWJlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnkuYXNDdWJlUXVlcnkoKS50aW1lRGltZW5zaW9ucyB8fCBbXTtcbiAgfVxuXG4gIGdldCBncmFudWxhcml0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZW1iZXJzWzBdPy5ncmFudWxhcml0eTtcbiAgfVxuXG4gIHVwZGF0ZVRpbWVEaW1lbnNpb24oYnk6IHN0cmluZyB8IG51bWJlciwgdXBkYXRlV2l0aDogYW55KSB7XG4gICAgY29uc3QgdGltZURpbWVuc2lvbnMgPSB0aGlzLm1lbWJlcnMubWFwKCh0ZCwgaW5kZXgpID0+IHtcbiAgICAgIGlmICh0ZC5kaW1lbnNpb24gPT09IGJ5IHx8IGluZGV4ID09PSBieSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnRkLFxuICAgICAgICAgIC4uLnVwZGF0ZVdpdGgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICB0aW1lRGltZW5zaW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIGFkZChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICB0aW1lRGltZW5zaW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGltZW5zaW9uOiBuYW1lLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICB0aW1lRGltZW5zaW9uczogdGhpcy5tZW1iZXJzLmZpbHRlcihcbiAgICAgICAgKHsgZGltZW5zaW9uIH0pID0+IGRpbWVuc2lvbiAhPT0gbmFtZVxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxuXG4gIHNldCh0aW1lRGltZW5zaW9uczogYW55W10pIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICB0aW1lRGltZW5zaW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHNldERhdGVSYW5nZShieTogc3RyaW5nIHwgbnVtYmVyLCBkYXRlUmFuZ2U6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdGhpcy51cGRhdGVUaW1lRGltZW5zaW9uKGJ5LCB7IGRhdGVSYW5nZSB9KTtcbiAgfVxuXG4gIHNldEdyYW51bGFyaXR5KGJ5OiBzdHJpbmcgfCBudW1iZXIsIGdyYW51bGFyaXR5OiBUaW1lRGltZW5zaW9uR3JhbnVsYXJpdHkpIHtcbiAgICB0aGlzLnVwZGF0ZVRpbWVEaW1lbnNpb24oYnksIHsgZ3JhbnVsYXJpdHkgfSk7XG4gIH1cblxuICBhc0FycmF5KCk6IGFueVtdIHtcbiAgICByZXR1cm4gKHRoaXMucXVlcnkuYXNDdWJlUXVlcnkoKS50aW1lRGltZW5zaW9ucyB8fCBbXSkubWFwKCh0ZCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4udGhpcy5xdWVyeS5tZXRhLnJlc29sdmVNZW1iZXIodGQuZGltZW5zaW9uLCAnZGltZW5zaW9ucycpLFxuICAgICAgICAuLi50ZCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yZGVyIHtcbiAgb3JkZXJNZW1iZXJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUT3JkZXJNZW1iZXJbXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcXVlcnk6IFF1ZXJ5KSB7XG4gICAgdGhpcy5xdWVyeS5zdWJqZWN0LnN1YnNjcmliZSh0aGlzLmhhbmRsZVF1ZXJ5Q2hhbmdlLmJpbmQodGhpcykpO1xuICAgIHRoaXMub3JkZXJNZW1iZXJzLnN1YnNjcmliZSh0aGlzLmhhbmRsZU9yZGVyTWVtYmVyc0NoYW5nZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT3JkZXJNZW1iZXJzQ2hhbmdlKG9yZGVyTWVtYmVyczogVE9yZGVyTWVtYmVyW10pIHtcbiAgICBjb25zdCBvcmRlciA9IG9yZGVyTWVtYmVyc1xuICAgICAgLmZpbHRlcigoeyBvcmRlciB9KSA9PiBvcmRlciAhPT0gJ25vbmUnKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKG1lbW8sIHsgaWQsIG9yZGVyIH0pID0+ICh7IC4uLm1lbW8sIFtpZF06IG9yZGVyIH0pLFxuICAgICAgICB7fVxuICAgICAgKSBhcyBUUXVlcnlPcmRlck9iamVjdDtcblxuICAgIGlmICghZXF1YWwob3JkZXIsIHRoaXMuYXNPYmplY3QoKSkpIHtcbiAgICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHsgb3JkZXIgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVRdWVyeUNoYW5nZSgpIHtcbiAgICB0aGlzLm9yZGVyTWVtYmVycy5uZXh0KFxuICAgICAgW1xuICAgICAgICAuLi50aGlzLnF1ZXJ5Lm1lYXN1cmVzLmFzQXJyYXkoKSxcbiAgICAgICAgLi4udGhpcy5xdWVyeS5kaW1lbnNpb25zLmFzQXJyYXkoKSxcbiAgICAgICAgLi4udGhpcy5xdWVyeS50aW1lRGltZW5zaW9ucy5hc0FycmF5KCksXG4gICAgICBdLm1hcDxUT3JkZXJNZW1iZXI+KCh7IG5hbWUsIHRpdGxlIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogbmFtZSxcbiAgICAgICAgICBvcmRlcjogdGhpcy5vZihuYW1lKSxcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldE1lbWJlck9yZGVyKGlkOiBzdHJpbmcsIG9yZGVyOiBUT3JkZXIpIHtcbiAgICB0aGlzLm9yZGVyTWVtYmVycy5uZXh0KFxuICAgICAgdGhpcy5vcmRlck1lbWJlcnMuZ2V0VmFsdWUoKS5tYXAoKG9yZGVyTWVtYmVyKSA9PiB7XG4gICAgICAgIGlmIChvcmRlck1lbWJlci5pZCA9PT0gaWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub3JkZXJNZW1iZXIsXG4gICAgICAgICAgICBvcmRlcixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcmRlck1lbWJlcjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlb3JkZXIoc291cmNlSW5kZXg6IG51bWJlciwgZGVzdGluYXRpb25JbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5vcmRlck1lbWJlcnMubmV4dChcbiAgICAgIG1vdmVJdGVtSW5BcnJheShcbiAgICAgICAgdGhpcy5vcmRlck1lbWJlcnMuZ2V0VmFsdWUoKSxcbiAgICAgICAgc291cmNlSW5kZXgsXG4gICAgICAgIGRlc3RpbmF0aW9uSW5kZXhcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgb2YobWVtYmVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKHRoaXMucXVlcnkuYXNDdWJlUXVlcnkoKS5vcmRlciB8fCB7fSlbbWVtYmVyXSB8fCAnbm9uZSc7XG4gIH1cblxuICBzZXQob3JkZXI6IFRRdWVyeU9yZGVyT2JqZWN0IHwgVFF1ZXJ5T3JkZXJBcnJheSkge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHsgb3JkZXIgfSk7XG4gIH1cblxuICBhc0FycmF5KCk6IFRRdWVyeU9yZGVyQXJyYXkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucXVlcnkuYXNDdWJlUXVlcnkoKS5vcmRlcikpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5LmFzQ3ViZVF1ZXJ5KCkub3JkZXIgYXMgVFF1ZXJ5T3JkZXJBcnJheTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5xdWVyeS5hc0N1YmVRdWVyeSgpLm9yZGVyIHx8IHt9KTtcbiAgfVxuXG4gIGFzT2JqZWN0KCk6IFRRdWVyeU9yZGVyT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5hc0FycmF5KCkucmVkdWNlKFxuICAgICAgKG1lbW8sIFtrZXksIHZhbHVlXSkgPT4gKHsgLi4ubWVtbywgW2tleV06IHZhbHVlIH0pLFxuICAgICAge31cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJNZW1iZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHF1ZXJ5OiBRdWVyeSkge31cblxuICBwcml2YXRlIGdldCBmaWx0ZXJzKCkge1xuICAgIC8vIFRPRE86IHVwZGF0ZSB0aGlzIHR5cGUgYXNzZXJ0aW9uIG9uY2UgdGhlIFF1ZXJ5QnVpbGRlciBzdXBwb3J0cyBsb2dpY2FsIGFuZC9vclxuICAgIHJldHVybiAodGhpcy5xdWVyeS5hc0N1YmVRdWVyeSgpLmZpbHRlcnMgfHwgW10pIGFzIChVbmFyeUZpbHRlciB8IEJpbmFyeUZpbHRlcilbXTtcbiAgfVxuXG4gIHVwZGF0ZShieTogc3RyaW5nIHwgbnVtYmVyLCB1cGRhdGVXaXRoOiBQYXJ0aWFsPEZpbHRlcj4pIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5maWx0ZXJzLm1hcCgoZmlsdGVyLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGluZGV4ID09PSBieSB8fCBmaWx0ZXIubWVtYmVyID09PSBieSB8fCBmaWx0ZXIuZGltZW5zaW9uID09PSBieSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgICAuLi51cGRhdGVXaXRoLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICB9KTtcblxuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnMgYXMgRmlsdGVyW10sXG4gICAgfSk7XG4gIH1cblxuICBhZGQoZmlsdGVyOiBGaWx0ZXIpIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICBmaWx0ZXJzOiBbLi4udGhpcy5maWx0ZXJzLCBmaWx0ZXJdLFxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlKGJ5OiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMuZmlsdGVyKChmaWx0ZXIsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChmaWx0ZXIubWVtYmVyID09PSBieSB8fCBmaWx0ZXIuZGltZW5zaW9uID09PSBieSB8fCBpbmRleCA9PT0gYnkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgc2V0KGZpbHRlcnM6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5xdWVyeS5zZXRQYXJ0aWFsUXVlcnkoe1xuICAgICAgZmlsdGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIHJlcGxhY2UobmFtZTogc3RyaW5nLCByZXBsYWNlV2l0aE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycy5tYXAoKGZpbHRlcikgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5tZW1iZXIgPyAnbWVtYmVyJyA6ICdkaW1lbnNpb24nO1xuICAgICAgICByZXR1cm4gZmlsdGVyLm1lbWJlciA9PT0gbmFtZSB8fCBmaWx0ZXIuZGltZW5zaW9uID09PSBuYW1lXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgICAgICAgW2ZpZWxkXTogcmVwbGFjZVdpdGhOYW1lLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogZmlsdGVyO1xuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBhc0FycmF5KCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLm1hcCgoZmlsdGVyKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi50aGlzLnF1ZXJ5Lm1ldGEucmVzb2x2ZU1lbWJlcihmaWx0ZXIubWVtYmVyIHx8IGZpbHRlci5kaW1lbnNpb24sIFtcbiAgICAgICAgICAnZGltZW5zaW9ucycsXG4gICAgICAgICAgJ21lYXN1cmVzJyxcbiAgICAgICAgXSksXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5xdWVyeS5tZXRhLmZpbHRlck9wZXJhdG9yc0Zvck1lbWJlcihcbiAgICAgICAgICBmaWx0ZXIubWVtYmVyIHx8IGZpbHRlci5kaW1lbnNpb24sXG4gICAgICAgICAgWydkaW1lbnNpb25zJywgJ21lYXN1cmVzJ11cbiAgICAgICAgKSxcbiAgICAgICAgLi4uZmlsdGVyLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { isQueryPresent } from '@cubejs-client/core';
|
|
2
|
+
import { StateSubject } from './common';
|
|
3
|
+
import { BaseMember, FilterMember, Order, TimeDimensionMember } from './query-members';
|
|
4
|
+
export var MemberType;
|
|
5
|
+
(function (MemberType) {
|
|
6
|
+
MemberType["Measures"] = "measures";
|
|
7
|
+
MemberType["Dimensions"] = "dimensions";
|
|
8
|
+
MemberType["Segments"] = "segments";
|
|
9
|
+
MemberType["TimeDimensions"] = "timeDimensions";
|
|
10
|
+
MemberType["Filters"] = "filters";
|
|
11
|
+
MemberType["Order"] = "order";
|
|
12
|
+
})(MemberType || (MemberType = {}));
|
|
13
|
+
export class Query extends StateSubject {
|
|
14
|
+
meta;
|
|
15
|
+
_onBeforeChange;
|
|
16
|
+
measures;
|
|
17
|
+
dimensions;
|
|
18
|
+
segments;
|
|
19
|
+
timeDimensions;
|
|
20
|
+
filters;
|
|
21
|
+
order;
|
|
22
|
+
constructor(meta, _onBeforeChange = (newQuery) => newQuery) {
|
|
23
|
+
super({});
|
|
24
|
+
this.meta = meta;
|
|
25
|
+
this._onBeforeChange = _onBeforeChange;
|
|
26
|
+
this.init();
|
|
27
|
+
}
|
|
28
|
+
init() {
|
|
29
|
+
this.measures = new BaseMember(this, MemberType.Measures);
|
|
30
|
+
this.dimensions = new BaseMember(this, MemberType.Dimensions);
|
|
31
|
+
this.segments = new BaseMember(this, MemberType.Segments);
|
|
32
|
+
this.timeDimensions = new TimeDimensionMember(this);
|
|
33
|
+
this.filters = new FilterMember(this);
|
|
34
|
+
this.order = new Order(this);
|
|
35
|
+
}
|
|
36
|
+
asCubeQuery() {
|
|
37
|
+
return this.subject.getValue() || {};
|
|
38
|
+
}
|
|
39
|
+
setQuery(query) {
|
|
40
|
+
this.subject.next(this._onBeforeChange(query, this.subject.getValue(), this));
|
|
41
|
+
}
|
|
42
|
+
setPartialQuery(partialQuery) {
|
|
43
|
+
this.subject.next(this._onBeforeChange({
|
|
44
|
+
...this.subject.getValue(),
|
|
45
|
+
...partialQuery,
|
|
46
|
+
}, this.subject.getValue(), this));
|
|
47
|
+
}
|
|
48
|
+
setLimit(limit) {
|
|
49
|
+
this.setPartialQuery({ limit });
|
|
50
|
+
}
|
|
51
|
+
isPresent() {
|
|
52
|
+
return isQueryPresent(this.asCubeQuery());
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcXVlcnktYnVpbGRlci9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUE2QixNQUFNLHFCQUFxQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkYsTUFBTSxDQUFOLElBQVksVUFPWDtBQVBELFdBQVksVUFBVTtJQUNwQixtQ0FBcUIsQ0FBQTtJQUNyQix1Q0FBeUIsQ0FBQTtJQUN6QixtQ0FBcUIsQ0FBQTtJQUNyQiwrQ0FBaUMsQ0FBQTtJQUNqQyxpQ0FBbUIsQ0FBQTtJQUNuQiw2QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFQVyxVQUFVLEtBQVYsVUFBVSxRQU9yQjtBQVFELE1BQU0sT0FBTyxLQUFNLFNBQVEsWUFBd0I7SUFTeEM7SUFDQztJQVRWLFFBQVEsQ0FBYTtJQUNyQixVQUFVLENBQWE7SUFDdkIsUUFBUSxDQUFhO0lBQ3JCLGNBQWMsQ0FBc0I7SUFDcEMsT0FBTyxDQUFlO0lBQ3RCLEtBQUssQ0FBUTtJQUViLFlBQ1MsSUFBVSxFQUNULGtCQUFvQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUTtRQUVsRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFISCxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQ1Qsb0JBQWUsR0FBZixlQUFlLENBQTJDO1FBR2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxJQUFJO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFpQjtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFpQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDZixJQUFJLENBQUMsZUFBZSxDQUNsQjtZQUNFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDMUIsR0FBRyxZQUFZO1NBQ2hCLEVBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFDdkIsSUFBSSxDQUNMLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUXVlcnlQcmVzZW50LCBNZXRhLCBRdWVyeSBhcyBUQ3ViZVF1ZXJ5IH0gZnJvbSAnQGN1YmVqcy1jbGllbnQvY29yZSc7XG5cbmltcG9ydCB7IFN0YXRlU3ViamVjdCB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IEJhc2VNZW1iZXIsIEZpbHRlck1lbWJlciwgT3JkZXIsIFRpbWVEaW1lbnNpb25NZW1iZXIgfSBmcm9tICcuL3F1ZXJ5LW1lbWJlcnMnO1xuXG5leHBvcnQgZW51bSBNZW1iZXJUeXBlIHtcbiAgTWVhc3VyZXMgPSAnbWVhc3VyZXMnLFxuICBEaW1lbnNpb25zID0gJ2RpbWVuc2lvbnMnLFxuICBTZWdtZW50cyA9ICdzZWdtZW50cycsXG4gIFRpbWVEaW1lbnNpb25zID0gJ3RpbWVEaW1lbnNpb25zJyxcbiAgRmlsdGVycyA9ICdmaWx0ZXJzJyxcbiAgT3JkZXIgPSAnb3JkZXInLFxufVxuXG5leHBvcnQgdHlwZSBPbkNoYW5nZUNhbGxiYWNrID0gKFxuICBuZXdRdWVyeTogVEN1YmVRdWVyeSxcbiAgb2xkUXVlcnk6IFRDdWJlUXVlcnksXG4gIHF1ZXJ5OiBRdWVyeVxuKSA9PiBUQ3ViZVF1ZXJ5O1xuXG5leHBvcnQgY2xhc3MgUXVlcnkgZXh0ZW5kcyBTdGF0ZVN1YmplY3Q8VEN1YmVRdWVyeT4ge1xuICBtZWFzdXJlczogQmFzZU1lbWJlcjtcbiAgZGltZW5zaW9uczogQmFzZU1lbWJlcjtcbiAgc2VnbWVudHM6IEJhc2VNZW1iZXI7XG4gIHRpbWVEaW1lbnNpb25zOiBUaW1lRGltZW5zaW9uTWVtYmVyO1xuICBmaWx0ZXJzOiBGaWx0ZXJNZW1iZXI7XG4gIG9yZGVyOiBPcmRlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWV0YTogTWV0YSxcbiAgICBwcml2YXRlIF9vbkJlZm9yZUNoYW5nZTogT25DaGFuZ2VDYWxsYmFjayA9IChuZXdRdWVyeSkgPT4gbmV3UXVlcnlcbiAgKSB7XG4gICAgc3VwZXIoe30pO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIHRoaXMubWVhc3VyZXMgPSBuZXcgQmFzZU1lbWJlcih0aGlzLCBNZW1iZXJUeXBlLk1lYXN1cmVzKTtcbiAgICB0aGlzLmRpbWVuc2lvbnMgPSBuZXcgQmFzZU1lbWJlcih0aGlzLCBNZW1iZXJUeXBlLkRpbWVuc2lvbnMpO1xuICAgIHRoaXMuc2VnbWVudHMgPSBuZXcgQmFzZU1lbWJlcih0aGlzLCBNZW1iZXJUeXBlLlNlZ21lbnRzKTtcbiAgICB0aGlzLnRpbWVEaW1lbnNpb25zID0gbmV3IFRpbWVEaW1lbnNpb25NZW1iZXIodGhpcyk7XG4gICAgdGhpcy5maWx0ZXJzID0gbmV3IEZpbHRlck1lbWJlcih0aGlzKTtcbiAgICB0aGlzLm9yZGVyID0gbmV3IE9yZGVyKHRoaXMpO1xuICB9XG5cbiAgYXNDdWJlUXVlcnkoKTogVEN1YmVRdWVyeSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdC5nZXRWYWx1ZSgpIHx8IHt9O1xuICB9XG5cbiAgc2V0UXVlcnkocXVlcnk6IFRDdWJlUXVlcnkpIHtcbiAgICB0aGlzLnN1YmplY3QubmV4dCh0aGlzLl9vbkJlZm9yZUNoYW5nZShxdWVyeSwgdGhpcy5zdWJqZWN0LmdldFZhbHVlKCksIHRoaXMpKTtcbiAgfVxuXG4gIHNldFBhcnRpYWxRdWVyeShwYXJ0aWFsUXVlcnk6IFBhcnRpYWw8VEN1YmVRdWVyeT4pIHtcbiAgICB0aGlzLnN1YmplY3QubmV4dChcbiAgICAgIHRoaXMuX29uQmVmb3JlQ2hhbmdlKFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5zdWJqZWN0LmdldFZhbHVlKCksXG4gICAgICAgICAgLi4ucGFydGlhbFF1ZXJ5LFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnN1YmplY3QuZ2V0VmFsdWUoKSxcbiAgICAgICAgdGhpc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBzZXRMaW1pdChsaW1pdDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRQYXJ0aWFsUXVlcnkoeyBsaW1pdCB9KTtcbiAgfVxuICBcbiAgaXNQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1F1ZXJ5UHJlc2VudCh0aGlzLmFzQ3ViZVF1ZXJ5KCkpO1xuICB9XG59XG4iXX0=
|