123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- 'use strict';
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: Dashboard
- * (C) Copyright IBM Corp. 2018, 2020
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(['../../../lib/@waca/dashboard-common/dist/core/APIFactory', '../../../widgets/livewidget/query/CommonQueryHelper', './QueryResultData', './Query', './api/QueryServiceAPI'], function (APIFactory, CommonQueryHelper, QueryResultData, Query, QueryServiceAPI) {
- var QueryService = function (_CommonQueryHelper) {
- _inherits(QueryService, _CommonQueryHelper);
- function QueryService(options) {
- _classCallCheck(this, QueryService);
- var internalQueryService = options.features['QueryService.internal'];
- var _this = _possibleConstructorReturn(this, _CommonQueryHelper.call(this, {
- queryService: internalQueryService
- }, options.features['Logger']));
- _this.internalQueryService = internalQueryService;
- _this.dashboard = options.features['API'];
- return _this;
- }
- QueryService.prototype._runQuery = function _runQuery(sourceIdOrModule, querySpec) {
- return this.queryService.executeQuery(sourceIdOrModule, querySpec).then(function (queryResponses) {
- var queryResult = new QueryResultData(queryResponses.data);
- queryResult.setPropertyValue('QuerySpec.internal', JSON.stringify(querySpec));
- // Today we don't have access to the raw resposne becasue we use MUI to get the data
- // TODO We should call the ajax service ourself and stop relying on MUI.
- queryResult.setPropertyValue('RawData.internal', JSON.stringify(queryResponses.data));
- queryResult.setPropertyValue('RequestTime.internal', queryResponses.requestTime || null);
- return queryResult.getAPI();
- });
- };
- QueryService.prototype.getAPI = function getAPI() {
- if (!this.queryServiceAPI) {
- this.queryServiceAPI = APIFactory.createAPI(this, [QueryServiceAPI]);
- }
- return this.queryServiceAPI;
- };
- QueryService.prototype.executeQuery = function executeQuery(sourceId, querySpec, senderId, requestOptions) {
- return this.internalQueryService.executeQuery(sourceId, querySpec, senderId, requestOptions).then(function (queryResultData) {
- var queryResult = new QueryResultData(queryResultData.data);
- queryResult.setPropertyValue('QuerySpec.internal', JSON.stringify(querySpec));
- // Today we don't have access to the raw resposne becasue we use MUI to get the data
- // TODO We should call the ajax service ourself and stop relying on MUI.
- queryResult.setPropertyValue('RawData.internal', JSON.stringify(queryResultData.data));
- queryResult.setPropertyValue('RequestTime.internal', queryResultData.requestTime || null);
- return queryResult.getAPI();
- });
- };
- QueryService.prototype.createQuery = function createQuery(type) {
- var query = new Query(this.dashboard, this, type);
- return query.getAPI();
- };
- QueryService.prototype.getColumnValues = function getColumnValues(sourceId) {
- var itemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
- var filterList = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
- var sort = arguments[3];
- var searchTermList = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
- var aggregationList = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
- if (!Array.isArray(itemIdList)) {
- itemIdList = [itemIdList];
- }
- var query = this.createQuery();
- return query.setDataSource(sourceId).then(function () {
- var dataItems = query.addColumns(itemIdList);
- dataItems.forEach(function (dataItem, i) {
- if (!dataItem.getSort() && sort) {
- dataItem.setSort({ type: sort });
- }
- //since we're expecting to see discrete set of values in the filter flyout, set the aggregation to null here
- dataItem.setAggregation(aggregationList && aggregationList[i] || null);
- if (searchTermList.length > 0) {
- query.addSearchTerms(dataItem.getColumnId(), searchTermList);
- }
- });
- query.addFilters(filterList);
- return query.executeQuery();
- });
- };
- QueryService.prototype.getColumnMinMaxValues = function getColumnMinMaxValues(sourceId, itemId) {
- var filters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
- var query = this.createQuery();
- return query.setDataSource(sourceId).then(function () {
- var dataItems = query.addColumns([itemId, itemId]);
- dataItems[0].setAggregation('min');
- dataItems[1].setAggregation('max');
- if (filters.length) {
- query.addFilters(filters);
- }
- return query.executeQuery();
- });
- };
- QueryService.prototype.getDataItemsMinMaxValues = function getDataItemsMinMaxValues(sourceId, dataItems, projections, filterList) {
- var query = this.createQuery('minmax');
- return query.setDataSource(sourceId).then(function () {
- dataItems.forEach(function (dataItem) {
- var columnId = dataItem.getColumnId();
- if (columnId) {
- var queryDataItems = query.addColumns([columnId]);
- var queryDataItem = queryDataItems[queryDataItems.length - 1];
- queryDataItem.setType(dataItem.getType());
- var isProjected = projections.indexOf(dataItem.getId()) !== -1;
- if (isProjected) {
- queryDataItem.setAggregation(dataItem.getAggregation());
- }
- queryDataItem.setProjected(isProjected);
- }
- });
- if (filterList && filterList.length) {
- query.addFilters(filterList);
- }
- return query.executeQuery();
- });
- };
- QueryService.prototype.getRootMembers = function getRootMembers(sourceId) {
- var itemIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
- var filters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
- var rowLimit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 51;
- if (!Array.isArray(itemIds)) {
- itemIds = [itemIds];
- }
- var query = this.createQuery();
- return query.setDataSource(sourceId).then(function () {
- var dataItems = query.addColumns(itemIds);
- dataItems.forEach(function (dataItem) {
- dataItem.addCommand({
- operation: 'add',
- rootMembers: 'true'
- });
- });
- query.addFilters(filters);
- query.setLimit(rowLimit);
- return query.executeQuery();
- });
- };
- QueryService.prototype.getChildren = function getChildren(sourceId) {
- var itemIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
- var memberId = arguments[2];
- var filters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
- var rowLimit = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 51;
- var offset = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
- if (!Array.isArray(itemIds)) {
- itemIds = [itemIds];
- }
- var query = this.createQuery();
- return query.setDataSource(sourceId).then(function () {
- var dataItems = query.addColumns(itemIds);
- dataItems.forEach(function (dataItem) {
- dataItem.addCommand({
- operation: 'add',
- children: memberId
- });
- });
- query.addFilters(filters);
- query.setLimit(rowLimit);
- query.setOffset(offset);
- return query.executeQuery();
- });
- };
- QueryService.prototype.getAscendants = function getAscendants(sourceId) {
- var itemIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
- var memberIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
- var filters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
- if (!Array.isArray(itemIds)) {
- itemIds = [itemIds];
- }
- var query = this.createQuery();
- return query.setDataSource(sourceId).then(function () {
- var dataItems = query.addColumns(itemIds);
- dataItems.forEach(function (dataItem) {
- dataItem.addCommand({
- operation: 'add',
- ascendants: memberIds
- });
- });
- query.addFilters(filters);
- return query.executeQuery();
- });
- };
- // See FilterQueryHelper.getSiblings for notes
- QueryService.prototype.getSiblings = function getSiblings(sourceId) {
- var itemIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
- var memberId = arguments[2];
- var filters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
- var rowLimit = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 51;
- if (!Array.isArray(itemIds)) {
- itemIds = [itemIds];
- }
- var query = this.createQuery();
- return query.setDataSource(sourceId).then(function () {
- var dataItems = query.addColumns(itemIds);
- dataItems.forEach(function (dataItem) {
- dataItem.addCommand({
- operation: 'add',
- siblings: memberId
- });
- });
- query.addFilters(filters);
- query.setLimit(rowLimit);
- return query.executeQuery();
- });
- };
- return QueryService;
- }(CommonQueryHelper);
- return QueryService;
- });
- //# sourceMappingURL=QueryService.js.map
|