@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,2 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("@cubejs-client/core"),require("rxjs/operators"),require("fast-deep-equal")):"function"==typeof define&&define.amd?define("@cubejs-client/ngx",["exports","@angular/core","rxjs","@cubejs-client/core","rxjs/operators","fast-deep-equal"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self)["cubejs-client"]=e["cubejs-client"]||{},e["cubejs-client"].ngx={}),e.ng.core,e.rxjs,e.cubejs,e.rxjs.operators,e.equal)}(this,(function(e,t,r,i,n,s){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=o(i),a=o(s),c=function(e,t){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}c(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function l(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{a(i.next(e))}catch(e){s(e)}}function u(e){try{a(i.throw(e))}catch(e){s(e)}}function a(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,u)}a((i=i.apply(e,t||[])).next())}))}function h(e,t){var r,i,n,s,o={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return s={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function u(s){return function(u){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,i&&(n=2&s[0]?i.return:s[0]?i.throw||((n=i.return)&&n.call(i),0):i.next)&&!(n=n.call(i,s[1])).done)return n;switch(i=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,i=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(n=o.trys,(n=n.length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){o.label=s[1];break}if(6===s[0]&&o.label<n[1]){o.label=n[1],n=s;break}if(n&&o.label<n[2]){o.label=n[2],o.ops.push(s);break}n[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(e,o)}catch(e){s=[6,e],i=0}finally{r=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,u])}}}Object.create;function p(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var i,n,s=r.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(i=s.next()).done;)o.push(i.value)}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return o}function y(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(p(arguments[t]));return e}Object.create;var b=function(){function e(e){this.config=e}return e.prototype.apiInstace=function(){var e=this;return this.cubeJsApi||(this.config instanceof r.Observable?this.config.subscribe((function(t){e.cubeJsApi=u.default(t.token,t.options)})):this.cubeJsApi=u.default(this.config.token,this.config.options)),this.cubeJsApi},e.prototype.load=function(e,t){return r.from(this.apiInstace().load(e,t))},e.prototype.sql=function(){for(var e,t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];return r.from((e=this.apiInstace()).sql.apply(e,y(t)))},e.prototype.dryRun=function(){for(var e,t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];return r.from((e=this.apiInstace()).dryRun.apply(e,y(t)))},e.prototype.meta=function(){for(var e,t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];return r.from((e=this.apiInstace()).meta.apply(e,y(t)))},e.prototype.watch=function(e,t){var i=this;return void 0===t&&(t={}),new r.Observable((function(r){return e.subscribe({next:function(e){return l(i,void 0,void 0,(function(){var i;return h(this,(function(n){switch(n.label){case 0:return[4,this.apiInstace().load(e,t)];case 1:return i=n.sent(),r.next(i),[2]}}))}))}})}))},e}();b.decorators=[{type:t.Injectable}],b.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:["config"]}]}]};var m=function(){function e(){}return e.forRoot=function(t){return{ngModule:e,providers:[b,{provide:"config",useValue:t}]}},e}();m.decorators=[{type:t.NgModule,args:[{providers:[b]}]}];var d=function(){function e(e){this.subject=new r.BehaviorSubject(e)}return e.prototype.get=function(){return this.subject.getValue()},e.prototype.set=function(e){this.subject.next(e)},e}();var g=function(){function e(e,t){this.query=e,this.field=t}return Object.defineProperty(e.prototype,"members",{get:function(){return this.query.asCubeQuery()[this.field]||[]},enumerable:!1,configurable:!0}),e.prototype.add=function(e){var t;this.query.setPartialQuery(((t={})[this.field]=y(this.members,[e]),t))},e.prototype.replace=function(e,t){var r;this.query.setPartialQuery(((r={})[this.field]=this.members.map((function(r){return r===e?t:r})),r))},e.prototype.remove=function(e){var t;this.query.setPartialQuery(((t={})[this.field]=this.query.asCubeQuery()[this.field].filter((function(t,r){return"string"==typeof e?t!==e:r!==e})),t))},e.prototype.set=function(e){var t;this.query.setPartialQuery(((t={})[this.field]=e,t))},e.prototype.asArray=function(){var e=this;return(this.query.asCubeQuery()[this.field]||[]).map((function(t){return e.query.meta.resolveMember(t,e.field)}))},e}();var v=function(){function e(e){this.query=e}return Object.defineProperty(e.prototype,"members",{get:function(){return this.query.asCubeQuery().timeDimensions||[]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"granularity",{get:function(){var e;return null===(e=this.members[0])||void 0===e?void 0:e.granularity},enumerable:!1,configurable:!0}),e.prototype.updateTimeDimension=function(e,t){var r=this.members.map((function(r,i){return r.dimension===e||i===e?Object.assign(Object.assign({},r),t):r}));this.query.setPartialQuery({timeDimensions:r})},e.prototype.add=function(e){this.query.setPartialQuery({timeDimensions:[{dimension:e}]})},e.prototype.remove=function(e){this.query.setPartialQuery({timeDimensions:this.members.filter((function(t){return t.dimension!==e}))})},e.prototype.set=function(e){this.query.setPartialQuery({timeDimensions:e})},e.prototype.setDateRange=function(e,t){this.updateTimeDimension(e,{dateRange:t})},e.prototype.setGranularity=function(e,t){this.updateTimeDimension(e,{granularity:t})},e.prototype.asArray=function(){var e=this;return(this.query.asCubeQuery().timeDimensions||[]).map((function(t){return Object.assign(Object.assign({},e.query.meta.resolveMember(t.dimension,"dimensions")),t)}))},e}();var j=function(){function e(e){this.query=e,this.orderMembers=new r.BehaviorSubject([]),this.query.subject.subscribe(this.handleQueryChange.bind(this)),this.orderMembers.subscribe(this.handleOrderMembersChange.bind(this))}return e.prototype.handleOrderMembersChange=function(e){var t=e.filter((function(e){return"none"!==e.order})).reduce((function(e,t){var r,i=t.id,n=t.order;return Object.assign(Object.assign({},e),((r={})[i]=n,r))}),{});a.default(t,this.asObject())||this.query.setPartialQuery({order:t})},e.prototype.handleQueryChange=function(){var e=this;this.orderMembers.next(y(this.query.measures.asArray(),this.query.dimensions.asArray(),this.query.timeDimensions.asArray()).map((function(t){var r=t.name,i=t.title;return{id:r,order:e.of(r),title:i}})))},e.prototype.setMemberOrder=function(e,t){this.orderMembers.next(this.orderMembers.getValue().map((function(r){return r.id===e?Object.assign(Object.assign({},r),{order:t}):r})))},e.prototype.reorder=function(e,t){this.orderMembers.next(i.moveItemInArray(this.orderMembers.getValue(),e,t))},e.prototype.of=function(e){return(this.query.asCubeQuery().order||{})[e]||"none"},e.prototype.set=function(e){this.query.setPartialQuery({order:e})},e.prototype.asArray=function(){return Array.isArray(this.query.asCubeQuery().order)?this.query.asCubeQuery().order:Object.entries(this.query.asCubeQuery().order||{})},e.prototype.asObject=function(){return this.asArray().reduce((function(e,t){var r,i=p(t,2),n=i[0],s=i[1];return Object.assign(Object.assign({},e),((r={})[n]=s,r))}),{})},e}();var q=function(){function e(e){this.query=e}return Object.defineProperty(e.prototype,"filters",{get:function(){return this.query.asCubeQuery().filters||[]},enumerable:!1,configurable:!0}),e.prototype.update=function(e,t){var r=this.filters.map((function(r,i){return i===e||r.member===e||r.dimension===e?Object.assign(Object.assign({},r),t):r}));this.query.setPartialQuery({filters:r})},e.prototype.add=function(e){this.query.setPartialQuery({filters:y(this.filters,[e])})},e.prototype.remove=function(e){this.query.setPartialQuery({filters:this.filters.filter((function(t,r){return t.member!==e&&t.dimension!==e&&r!==e}))})},e.prototype.set=function(e){this.query.setPartialQuery({filters:e})},e.prototype.replace=function(e,t){this.query.setPartialQuery({filters:this.filters.map((function(r){var i,n=r.member?"member":"dimension";return r.member||r.dimension===e?Object.assign(Object.assign({},r),((i={})[n]=t,i)):r}))})},e.prototype.asArray=function(){var e=this;return this.filters.map((function(t){return Object.assign(Object.assign(Object.assign({},e.query.meta.resolveMember(t.member||t.dimension,["dimensions","measures"])),{operators:e.query.meta.filterOperatorsForMember(t.member||t.dimension,["dimensions","measures"])}),t)}))},e}();var O={Measures:"measures",Dimensions:"dimensions",Segments:"segments",TimeDimensions:"timeDimensions",Filters:"filters",Order:"order"},Q=function(e){function t(t,r){void 0===r&&(r=function(e){return e});var i=e.call(this,{})||this;return i.meta=t,i._onBeforeChange=r,i.init(),i}return f(t,e),t.prototype.init=function(){this.measures=new g(this,O.Measures),this.dimensions=new g(this,O.Dimensions),this.segments=new g(this,O.Segments),this.timeDimensions=new v(this),this.filters=new q(this),this.order=new j(this)},t.prototype.asCubeQuery=function(){return this.subject.getValue()||{}},t.prototype.setQuery=function(e){this.subject.next(this._onBeforeChange(e,this.subject.getValue(),this))},t.prototype.setPartialQuery=function(e){this.subject.next(this._onBeforeChange(Object.assign(Object.assign({},this.subject.getValue()),e),this.subject.getValue(),this))},t.prototype.setLimit=function(e){this.setPartialQuery({limit:e})},t.prototype.isPresent=function(){return i.isQueryPresent(this.asCubeQuery())},t}(d);var _=function(){function e(e){this.meta=e,this.mapMeta()}return e.prototype.mapMeta=function(){var e=this,t=this.meta.membersForQuery(null,"dimensions");this.measures=this.meta.membersForQuery(null,"measures"),this.segments=this.meta.membersForQuery(null,"segments"),this.dimensions=t.filter((function(e){return"time"!==e.type})),this.timeDimensions=t.filter((function(e){return"time"===e.type})),this.filters=y(t,this.measures).map((function(t){return Object.assign(Object.assign({},t),{operators:e.meta.filterOperatorsForMember(t.name,["dimensions","measures"])})}))},e}();var P=function(e){function t(t){return e.call(this,t)||this}return f(t,e),t.prototype.moveItem=function(e,t,r,n){this.subject.next(i.movePivotItem(this.get(),e,t,r,n))},t.prototype.setFillMissingDates=function(e){this.subject.next(Object.assign(Object.assign({},this.get()),{fillMissingDates:e}))},t}(d),w=function(e){function t(t){return e.call(this,t)||this}return f(t,e),t}(d),C=function(){function e(){var e=this;this._disableHeuristics=!1,this._heuristicChange$=new r.Subject,this.builderMeta=new Promise((function(t){return e._resolveBuilderMeta=t})),this.query=new Promise((function(t){return e._resolveQuery=t})),this.state=new r.BehaviorSubject({})}return e.prototype.init=function(){return l(this,void 0,void 0,(function(){var e=this;return h(this,(function(t){return this.pivotConfig=new P(null),this.chartType=new w("line"),this._cubejs.meta().subscribe((function(t){e._meta=t,e._query=new Q(e._meta,e._handleQueryChange.bind(e)),e._resolveQuery(e._query),e._resolveBuilderMeta(new _(e._meta))})),this.subscribe(),this._disableHeuristics||this._heuristicChange$.pipe(n.switchMap((function(t){return r.combineLatest([e._cubejs.dryRun(t.query).pipe(n.catchError((function(e){return console.error(e),r.of(null)}))),r.of(t.shouldApplyHeuristicOrder)])}))).subscribe((function(t){var r=p(t,2),n=r[0],s=r[1];if(n){var o=n.pivotQuery,u=n.queryOrder;e.pivotConfig.set(i.ResultSet.getNormalizedPivotConfig(o,e.pivotConfig.get())),s&&e._query.order.set(u.reduce((function(e,t){return Object.assign(Object.assign({},e),t)}),{}))}})),[2]}))}))},e.prototype._handleQueryChange=function(e,t){var r,n,s=i.defaultHeuristics(e,t,{meta:this._meta,sessionGranularity:null===(n=null===(r=null==e?void 0:e.timeDimensions)||void 0===r?void 0:r[0])||void 0===n?void 0:n.granularity}),o=s.chartType,u=s.shouldApplyHeuristicOrder,a=s.query,c=this._disableHeuristics?e:a||e;return i.isQueryPresent(c)&&!this._disableHeuristics&&this._heuristicChange$.next({shouldApplyHeuristicOrder:Boolean(u),query:c}),!this._disableHeuristics&&o&&this.chartType.set(o),c},e.prototype.setCubejsClient=function(e){this._cubejs=e,this.init()},e.prototype.subscribe=function(){var e=this;Object.getOwnPropertyNames(this).forEach((function(t){e[t]instanceof d&&e[t].subject.subscribe((function(r){var i;return e.setPartialState(((i={})[t]=r,i))}))})),this.query.then((function(t){t.subject.subscribe((function(t){e.setPartialState({query:t})}))}))},e.prototype.deserialize=function(e){return l(this,void 0,void 0,(function(){var t=this;return h(this,(function(r){switch(r.label){case 0:return e.query?[4,this.query]:[3,2];case 1:r.sent().setQuery(e.query),r.label=2;case 2:return Object.entries(e).forEach((function(e){var r=p(e,2),i=r[0],n=r[1];t[i]instanceof d&&t[i].set(n)})),this.subscribe(),[2]}}))}))},e.prototype.setPartialState=function(e){this.state.next(Object.assign(Object.assign({},this.state.getValue()),e))},e.prototype.disableHeuristics=function(){this._disableHeuristics=!1},e.prototype.enableHeuristics=function(){this._disableHeuristics=!0},e}();C.decorators=[{type:t.Injectable}],e.BaseMember=g,e.BuilderMeta=_,e.ChartType=w,e.CubejsClient=b,e.CubejsClientModule=m,e.FilterMember=q,e.MemberType=O,e.Order=j,e.PivotConfig=P,e.Query=Q,e.QueryBuilderService=C,e.TimeDimensionMember=v,e.ɵa=d,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=cubejs-client-ngx.umd.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../src/client.ts","../../src/module.ts","../../src/query-builder/common.ts","../../src/query-builder/query-members.ts","../../src/query-builder/query.ts","../../src/query-builder/builder-meta.ts","../../src/query-builder/pivot-config.ts","../../src/query-builder/chart-type.ts","../../src/query-builder/query-builder.service.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__read","o","m","r","i","ar","error","__spread","arguments","concat","CubejsClient","config","apiInstace","_this","cubeJsApi","Observable","subscribe","cubejs","token","options","load","query","from","sql","params","_i","_a","dryRun","meta","watch","observer","resultSet","Injectable","Inject","args","CubejsClientModule","forRoot","ngModule","providers","provide","useValue","NgModule","StateSubject","subject","BehaviorSubject","get","getValue","set","BaseMember","field","defineProperty","asCubeQuery","add","name","setPartialQuery","_b","members","replace","replaceWithName","map","currentName","remove","by","filter","index","asArray","resolveMember","TimeDimensionMember","timeDimensions","granularity","updateTimeDimension","updateWith","td","dimension","assign","setDateRange","dateRange","setGranularity","Order","orderMembers","handleQueryChange","bind","handleOrderMembersChange","order","reduce","memo","id","_c","equal","asObject","measures","dimensions","title","of","setMemberOrder","orderMember","reorder","sourceIndex","destinationIndex","moveItemInArray","member","isArray","entries","_d","key","FilterMember","filters","update","operators","filterOperatorsForMember","MemberType","Measures","Dimensions","Segments","TimeDimensions","Filters","Query","_onBeforeChange","newQuery","_super","init","segments","setQuery","partialQuery","setLimit","limit","isPresent","isQueryPresent","BuilderMeta","mapMeta","allDimensions","membersForQuery","type","PivotConfig","pivotConfig","moveItem","sourceAxis","destinationAxis","movePivotItem","setFillMissingDates","fillMissingDates","ChartType","QueryBuilderService","_disableHeuristics","_heuristicChange$","Subject","builderMeta","_resolveBuilderMeta","_resolveQuery","state","chartType","_cubejs","_meta","_query","_handleQueryChange","pipe","switchMap","data","combineLatest","catchError","console","shouldApplyHeuristicOrder","dryRunResponse","pivotQuery","queryOrder","ResultSet","getNormalizedPivotConfig","a","oldQuery","defaultHeuristics","sessionGranularity","heuristicQuery","Boolean","setCubejsClient","cubejsClient","getOwnPropertyNames","forEach","setPartialState","cubeQuery","deserialize","partialState","disableHeuristics","enableHeuristics"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport cubejs, {\n LoadMethodOptions,\n Meta,\n Query,\n ResultSet,\n} from '@cubejs-client/core';\n\n@Injectable()\nexport class CubejsClient {\n private cubeJsApi;\n constructor(@Inject('config') private config) {}\n\n private apiInstace() {\n if (!this.cubeJsApi) {\n if (this.config instanceof Observable) {\n this.config.subscribe((config) => {\n this.cubeJsApi = cubejs(config.token, config.options);\n });\n } else {\n this.cubeJsApi = cubejs(this.config.token, this.config.options);\n }\n }\n\n return this.cubeJsApi;\n }\n\n public load(\n query: Query | Query[],\n options?: LoadMethodOptions\n ): Observable<ResultSet> {\n return from(<Promise<ResultSet>>this.apiInstace().load(query, options));\n }\n\n public sql(...params): Observable<any> {\n return from(this.apiInstace().sql(...params));\n }\n\n public dryRun(...params): Observable<any> {\n return from(this.apiInstace().dryRun(...params));\n }\n\n public meta(...params): Observable<Meta> {\n return from(<Promise<Meta>>this.apiInstace().meta(...params));\n }\n\n public watch(query, params = {}): Observable<ResultSet> {\n return new Observable((observer) =>\n query.subscribe({\n next: async (query) => {\n const resultSet = await this.apiInstace().load(query, params);\n observer.next(resultSet);\n },\n })\n );\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CubejsClient } from './client';\n\n@NgModule({\n providers: [CubejsClient],\n})\nexport class CubejsClientModule {\n public static forRoot(config: any): ModuleWithProviders<CubejsClientModule> {\n return {\n ngModule: CubejsClientModule,\n providers: [\n CubejsClient,\n {\n provide: 'config',\n useValue: config,\n },\n ],\n };\n }\n}\n","import { BehaviorSubject } from 'rxjs';\n\nexport class StateSubject<T = any> {\n subject: BehaviorSubject<T>;\n\n constructor(value: T) {\n this.subject = new BehaviorSubject(value);\n }\n\n get() {\n return this.subject.getValue();\n }\n\n set(value: T) {\n this.subject.next(value);\n }\n}\n","import {\n TimeDimensionGranularity,\n TQueryOrderObject,\n TQueryOrderArray,\n moveItemInArray,\n Filter,\n UnaryFilter,\n BinaryFilter,\n} from '@cubejs-client/core';\nimport { BehaviorSubject } from 'rxjs';\nimport equal from 'fast-deep-equal';\n\nimport { Query } from './query';\n\nexport type TOrder = 'asc' | 'desc' | 'none';\n\nexport type TOrderMember = {\n id: string;\n order: TOrder;\n title: string;\n};\n\nexport class BaseMember {\n constructor(\n private query: Query,\n private field: 'measures' | 'dimensions' | 'segments'\n ) {}\n\n private get members() {\n return this.query.asCubeQuery()[this.field] || [];\n }\n\n add(name: string) {\n this.query.setPartialQuery({\n [this.field]: [...this.members, name],\n });\n }\n\n replace(name: string, replaceWithName: string) {\n this.query.setPartialQuery({\n [this.field]: this.members.map((currentName) =>\n currentName === name ? replaceWithName : currentName\n ),\n });\n }\n\n remove(by: string | number) {\n this.query.setPartialQuery({\n [this.field]: this.query\n .asCubeQuery()\n [this.field].filter((currentName, index) => {\n if (typeof by === 'string') {\n return currentName !== by;\n }\n\n return index !== by;\n }),\n });\n }\n\n set(members: string[]) {\n this.query.setPartialQuery({\n [this.field]: members,\n });\n }\n\n asArray() {\n return (this.query.asCubeQuery()[this.field] || []).map((name) =>\n this.query.meta.resolveMember(name, this.field)\n );\n }\n}\n\nexport class TimeDimensionMember {\n constructor(private query: Query) {}\n\n private get members() {\n return this.query.asCubeQuery().timeDimensions || [];\n }\n\n get granularity() {\n return this.members[0]?.granularity;\n }\n\n updateTimeDimension(by: string | number, updateWith: any) {\n const timeDimensions = this.members.map((td, index) => {\n if (td.dimension === by || index === by) {\n return {\n ...td,\n ...updateWith,\n };\n }\n return td;\n });\n\n this.query.setPartialQuery({\n timeDimensions,\n });\n }\n\n add(name: string) {\n this.query.setPartialQuery({\n timeDimensions: [\n {\n dimension: name,\n },\n ],\n });\n }\n\n remove(name: string) {\n this.query.setPartialQuery({\n timeDimensions: this.members.filter(\n ({ dimension }) => dimension !== name\n ),\n });\n }\n\n set(timeDimensions: any[]) {\n this.query.setPartialQuery({\n timeDimensions,\n });\n }\n\n setDateRange(by: string | number, dateRange: string | string[]) {\n this.updateTimeDimension(by, { dateRange });\n }\n\n setGranularity(by: string | number, granularity: TimeDimensionGranularity) {\n this.updateTimeDimension(by, { granularity });\n }\n\n asArray(): any[] {\n return (this.query.asCubeQuery().timeDimensions || []).map((td) => {\n return {\n ...this.query.meta.resolveMember(td.dimension, 'dimensions'),\n ...td,\n };\n });\n }\n}\n\nexport class Order {\n orderMembers = new BehaviorSubject<TOrderMember[]>([]);\n\n constructor(private query: Query) {\n this.query.subject.subscribe(this.handleQueryChange.bind(this));\n this.orderMembers.subscribe(this.handleOrderMembersChange.bind(this));\n }\n\n private handleOrderMembersChange(orderMembers: TOrderMember[]) {\n const order = orderMembers\n .filter(({ order }) => order !== 'none')\n .reduce(\n (memo, { id, order }) => ({ ...memo, [id]: order }),\n {}\n ) as TQueryOrderObject;\n\n if (!equal(order, this.asObject())) {\n this.query.setPartialQuery({ order });\n }\n }\n\n private handleQueryChange() {\n this.orderMembers.next(\n [\n ...this.query.measures.asArray(),\n ...this.query.dimensions.asArray(),\n ...this.query.timeDimensions.asArray(),\n ].map<TOrderMember>(({ name, title }) => {\n return {\n id: name,\n order: this.of(name),\n title,\n };\n })\n );\n }\n\n setMemberOrder(id: string, order: TOrder) {\n this.orderMembers.next(\n this.orderMembers.getValue().map((orderMember) => {\n if (orderMember.id === id) {\n return {\n ...orderMember,\n order,\n };\n }\n return orderMember;\n })\n );\n }\n\n reorder(sourceIndex: number, destinationIndex: number) {\n this.orderMembers.next(\n moveItemInArray(\n this.orderMembers.getValue(),\n sourceIndex,\n destinationIndex\n )\n );\n }\n\n of(member: string) {\n return (this.query.asCubeQuery().order || {})[member] || 'none';\n }\n\n set(order: TQueryOrderObject | TQueryOrderArray) {\n this.query.setPartialQuery({ order });\n }\n\n asArray(): TQueryOrderArray {\n if (Array.isArray(this.query.asCubeQuery().order)) {\n return this.query.asCubeQuery().order as TQueryOrderArray;\n }\n\n return Object.entries(this.query.asCubeQuery().order || {});\n }\n\n asObject(): TQueryOrderObject {\n return this.asArray().reduce(\n (memo, [key, value]) => ({ ...memo, [key]: value }),\n {}\n );\n }\n}\n\nexport class FilterMember {\n constructor(private query: Query) {}\n\n private get filters() {\n // TODO: update this type assertion once the QueryBuilder supports logical and/or\n return (this.query.asCubeQuery().filters || []) as (UnaryFilter | BinaryFilter)[];\n }\n\n update(by: string | number, updateWith: Partial<Filter>) {\n const filters = this.filters.map((filter, index) => {\n if (index === by || filter.member === by || filter.dimension === by) {\n return {\n ...filter,\n ...updateWith,\n };\n }\n return filter;\n });\n\n this.query.setPartialQuery({\n filters: filters as Filter[],\n });\n }\n\n add(filter: Filter) {\n this.query.setPartialQuery({\n filters: [...this.filters, filter],\n });\n }\n\n remove(by: string | number) {\n this.query.setPartialQuery({\n filters: this.filters.filter((filter, index) => {\n if (filter.member === by || filter.dimension === by || index === by) {\n return false;\n }\n\n return true;\n }),\n });\n }\n\n set(filters: Filter[]) {\n this.query.setPartialQuery({\n filters,\n });\n }\n\n replace(name: string, replaceWithName: string) {\n this.query.setPartialQuery({\n filters: this.filters.map((filter) => {\n const field = filter.member ? 'member' : 'dimension';\n return filter.member || filter.dimension === name\n ? {\n ...filter,\n [field]: replaceWithName,\n }\n : filter;\n }),\n });\n }\n\n asArray(): any[] {\n return this.filters.map((filter) => {\n return {\n ...this.query.meta.resolveMember(filter.member || filter.dimension, [\n 'dimensions',\n 'measures',\n ]),\n operators: this.query.meta.filterOperatorsForMember(\n filter.member || filter.dimension,\n ['dimensions', 'measures']\n ),\n ...filter,\n };\n });\n }\n}\n","import { isQueryPresent, Meta, Query as TCubeQuery } from '@cubejs-client/core';\n\nimport { StateSubject } from './common';\nimport { BaseMember, FilterMember, Order, TimeDimensionMember } from './query-members';\n\nexport enum MemberType {\n Measures = 'measures',\n Dimensions = 'dimensions',\n Segments = 'segments',\n TimeDimensions = 'timeDimensions',\n Filters = 'filters',\n Order = 'order',\n}\n\nexport type OnChangeCallback = (\n newQuery: TCubeQuery,\n oldQuery: TCubeQuery,\n query: Query\n) => TCubeQuery;\n\nexport class Query extends StateSubject<TCubeQuery> {\n measures: BaseMember;\n dimensions: BaseMember;\n segments: BaseMember;\n timeDimensions: TimeDimensionMember;\n filters: FilterMember;\n order: Order;\n\n constructor(\n public meta: Meta,\n private _onBeforeChange: OnChangeCallback = (newQuery) => newQuery\n ) {\n super({});\n this.init();\n }\n\n private init() {\n this.measures = new BaseMember(this, MemberType.Measures);\n this.dimensions = new BaseMember(this, MemberType.Dimensions);\n this.segments = new BaseMember(this, MemberType.Segments);\n this.timeDimensions = new TimeDimensionMember(this);\n this.filters = new FilterMember(this);\n this.order = new Order(this);\n }\n\n asCubeQuery(): TCubeQuery {\n return this.subject.getValue() || {};\n }\n\n setQuery(query: TCubeQuery) {\n this.subject.next(this._onBeforeChange(query, this.subject.getValue(), this));\n }\n\n setPartialQuery(partialQuery: Partial<TCubeQuery>) {\n this.subject.next(\n this._onBeforeChange(\n {\n ...this.subject.getValue(),\n ...partialQuery,\n },\n this.subject.getValue(),\n this\n )\n );\n }\n\n setLimit(limit: number) {\n this.setPartialQuery({ limit });\n }\n \n isPresent(): boolean {\n return isQueryPresent(this.asCubeQuery());\n }\n}\n","import {\n Meta,\n TCubeDimension,\n TCubeMeasure,\n TCubeMember,\n} from '@cubejs-client/core';\n\nexport class BuilderMeta {\n measures: TCubeMeasure[];\n dimensions: TCubeDimension[];\n segments: TCubeMember[];\n timeDimensions: TCubeDimension[];\n filters: Array<TCubeMeasure | TCubeDimension>;\n\n constructor(public readonly meta: Meta) {\n this.mapMeta();\n }\n\n private mapMeta() {\n const allDimensions = <TCubeDimension[]>(\n this.meta.membersForQuery(null, 'dimensions')\n );\n\n this.measures = <TCubeMeasure[]>this.meta.membersForQuery(null, 'measures');\n this.segments = this.meta.membersForQuery(null, 'segments');\n this.dimensions = allDimensions.filter(({ type }) => type !== 'time');\n this.timeDimensions = allDimensions.filter(({ type }) => type === 'time');\n this.filters = [...allDimensions, ...this.measures].map((member) => {\n return {\n ...member,\n operators: this.meta.filterOperatorsForMember(member.name, [\n 'dimensions',\n 'measures',\n ]),\n };\n });\n }\n}\n","import {\n movePivotItem,\n PivotConfig as TPivotConfig,\n TSourceAxis,\n} from '@cubejs-client/core';\nimport { StateSubject } from './common';\n\nexport class PivotConfig extends StateSubject<TPivotConfig> {\n constructor(pivotConfig: TPivotConfig) {\n super(pivotConfig);\n }\n \n moveItem(\n sourceIndex: number,\n destinationIndex: number,\n sourceAxis: TSourceAxis,\n destinationAxis: TSourceAxis\n ) {\n this.subject.next(\n movePivotItem(\n this.get(),\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n )\n );\n }\n \n setFillMissingDates(fillMissingDates: boolean) {\n this.subject.next({\n ...this.get(),\n fillMissingDates\n })\n }\n}\n","import { StateSubject } from './common';\n\nexport type TChartType = 'line' | 'area' | 'bar' | 'number' | 'table' | 'pie';\n\nexport class ChartType extends StateSubject<TChartType> {\n constructor(value) {\n super(value);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Meta,\n ResultSet,\n Query as TCubeQuery,\n PivotConfig as TPivotConfig,\n isQueryPresent,\n defaultHeuristics,\n} from '@cubejs-client/core';\nimport { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\n\nimport { CubejsClient } from '../client';\nimport { Query } from './query';\nimport { BuilderMeta } from './builder-meta';\nimport { PivotConfig } from './pivot-config';\nimport { ChartType, TChartType } from './chart-type';\nimport { StateSubject } from './common';\n\nexport type TQueryBuilderState = {\n query?: TCubeQuery;\n pivotConfig?: TPivotConfig;\n chartType?: TChartType;\n};\n\n@Injectable()\nexport class QueryBuilderService {\n private _cubejs: CubejsClient;\n private _meta: Meta;\n private _query: Query;\n private _disableHeuristics: boolean = false;\n private _resolveQuery: (query: Query) => void;\n private _resolveBuilderMeta: (query: BuilderMeta) => void;\n private _heuristicChange$ = new Subject<any>();\n\n readonly builderMeta = new Promise<BuilderMeta>(\n (resolve) => (this._resolveBuilderMeta = resolve)\n );\n readonly query = new Promise<Query>(\n (resolve) => (this._resolveQuery = resolve)\n );\n readonly state = new BehaviorSubject<TQueryBuilderState>({});\n\n pivotConfig: PivotConfig;\n chartType: ChartType;\n\n private async init() {\n this.pivotConfig = new PivotConfig(null);\n this.chartType = new ChartType('line');\n\n this._cubejs.meta().subscribe((meta) => {\n this._meta = meta;\n\n this._query = new Query(\n this._meta,\n this._handleQueryChange.bind(this)\n );\n this._resolveQuery(this._query);\n this._resolveBuilderMeta(new BuilderMeta(this._meta));\n });\n\n this.subscribe();\n\n if (!this._disableHeuristics) {\n this._heuristicChange$\n .pipe(\n switchMap((data) => {\n return combineLatest([\n this._cubejs.dryRun(data.query).pipe(catchError((error) => {\n console.error(error);\n return of(null);\n })),\n of(data.shouldApplyHeuristicOrder),\n ]);\n })\n )\n .subscribe(\n ([dryRunResponse, shouldApplyHeuristicOrder]) => {\n if (!dryRunResponse) {\n return;\n }\n \n const { pivotQuery, queryOrder } = dryRunResponse;\n \n this.pivotConfig.set(\n ResultSet.getNormalizedPivotConfig(\n pivotQuery,\n this.pivotConfig.get()\n )\n );\n if (shouldApplyHeuristicOrder) {\n this._query.order.set(\n queryOrder.reduce((a, b) => ({ ...a, ...b }), {})\n );\n }\n }\n );\n }\n }\n\n private _handleQueryChange(newQuery, oldQuery) {\n const {\n chartType,\n shouldApplyHeuristicOrder,\n query: heuristicQuery,\n } = defaultHeuristics(newQuery, oldQuery, {\n meta: this._meta,\n sessionGranularity: newQuery?.timeDimensions?.[0]?.granularity,\n });\n\n const query = this._disableHeuristics\n ? newQuery\n : heuristicQuery || newQuery;\n\n if (isQueryPresent(query) && !this._disableHeuristics) {\n this._heuristicChange$.next({\n shouldApplyHeuristicOrder: Boolean(shouldApplyHeuristicOrder),\n query,\n });\n }\n\n if (!this._disableHeuristics && chartType) {\n this.chartType.set(chartType);\n }\n\n return query;\n }\n\n setCubejsClient(cubejsClient: CubejsClient) {\n this._cubejs = cubejsClient;\n this.init();\n }\n\n private subscribe() {\n Object.getOwnPropertyNames(this).forEach((key) => {\n if (this[key] instanceof StateSubject) {\n this[key].subject.subscribe((value) =>\n this.setPartialState({\n [key]: value,\n })\n );\n }\n });\n this.query.then((query) => {\n query.subject.subscribe((cubeQuery) => {\n this.setPartialState({\n query: cubeQuery,\n });\n });\n });\n }\n\n async deserialize(state) {\n if (state.query) {\n (await this.query).setQuery(state.query);\n }\n\n Object.entries(state).forEach(([key, value]) => {\n if (this[key] instanceof StateSubject) {\n this[key].set(value);\n }\n });\n\n this.subscribe();\n }\n\n setPartialState(partialState) {\n this.state.next({\n ...this.state.getValue(),\n ...partialState,\n });\n }\n\n disableHeuristics() {\n this._disableHeuristics = false;\n }\n\n enableHeuristics() {\n this._disableHeuristics = true;\n }\n}\n"]}
|