'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