QueryDefinitionProvider.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. 'use strict';
  2. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3. /**
  4. * Licensed Materials - Property of IBM
  5. * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2019, 2021
  6. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. */
  8. define(['../../../lib/@waca/dashboard-common/dist/core/APIFactory', './api/QueryDefinitionProviderAPI'], function (APIFactory, QueryDefinitionProviderAPI) {
  9. var _class, _temp;
  10. var QueryDefinitionProvider = (_temp = _class = function () {
  11. function QueryDefinitionProvider(_ref) {
  12. var content = _ref.content,
  13. features = _ref.features;
  14. _classCallCheck(this, QueryDefinitionProvider);
  15. this.content = content;
  16. this.features = features;
  17. }
  18. QueryDefinitionProvider.prototype.initialize = function initialize() {
  19. this.features['DataQueryExecution'].registerQueryDefinitionProvider(this.getAPI());
  20. };
  21. QueryDefinitionProvider.prototype.supports = function supports() {
  22. return true;
  23. };
  24. QueryDefinitionProvider.prototype.getAPI = function getAPI() {
  25. if (!this.api) {
  26. this.api = APIFactory.createAPI(this, [QueryDefinitionProviderAPI]);
  27. }
  28. return this.api;
  29. };
  30. QueryDefinitionProvider.prototype.getType = function getType() {
  31. return 'main';
  32. };
  33. QueryDefinitionProvider.prototype.getQueryDefinitionList = function getQueryDefinitionList() {
  34. var _this = this;
  35. var definitionList = [];
  36. var queryService = this.features['Dashboard.QueryService2'];
  37. var visualization = this.features['Visualization'];
  38. var summariesEnabled = !this.content.getPropertyValue('hideSummaries');
  39. var expandEnabled = this.content.getPropertyValue('expandCollapse');
  40. var suppressionEnabled = this.content.getPropertyValue('suppression') !== QueryDefinitionProvider.SUPPRESSION_NONE;
  41. var slotsByDataset = this._getSlotsByDataset(visualization);
  42. var internalVisualization = this.features['Visualization.internal'];
  43. var filters = [];
  44. if (visualization) {
  45. filters = [].concat(visualization.getLocalFilters().getFilterList(), internalVisualization.getSearchFilterList());
  46. }
  47. var _loop = function _loop(datasetId) {
  48. var definition = queryService.createQueryDefinition(datasetId, _this.getType());
  49. definition.setSummariesEnabled(summariesEnabled);
  50. definition.setExpandEnabled(expandEnabled);
  51. //There are only two values for suppression: rowsAndColumns and none
  52. definition.setSuppressionEnabled(suppressionEnabled);
  53. definition.setDataSource(visualization.getDataSource());
  54. slotsByDataset[datasetId].forEach(function (slot) {
  55. var dataItems = slot.getDataItemList();
  56. if (slot.getDefinition().isStackItems()) {
  57. return _this._nestDataItems({ definition: definition, dataItems: dataItems });
  58. } else {
  59. return _this._composeDataItems({ definition: definition, dataItems: dataItems });
  60. }
  61. });
  62. if (filters && filters.length > 0) {
  63. definition.addFilters(filters);
  64. }
  65. definitionList.push(definition);
  66. };
  67. for (var datasetId in slotsByDataset) {
  68. _loop(datasetId);
  69. }
  70. return Promise.resolve(definitionList);
  71. };
  72. /**
  73. * Get list of slots for each datasets
  74. * @param {VisualizationAPI} visualization
  75. * @returns {Object} array of slots mapped by the datasetId as the key
  76. */
  77. QueryDefinitionProvider.prototype._getSlotsByDataset = function _getSlotsByDataset(visualization) {
  78. var slotMap = {};
  79. var mappedSlots = visualization && visualization.getSlots().getMappedSlotList() || [];
  80. mappedSlots.forEach(function (slot) {
  81. var slotDefinition = slot.getDefinition();
  82. var datasetIds = slotDefinition.getDatasetIdList() || [];
  83. // single slot can be shared among multiple datasets
  84. datasetIds.forEach(function (datasetId) {
  85. if (!slotMap[datasetId]) {
  86. slotMap[datasetId] = [slot];
  87. } else {
  88. slotMap[datasetId].push(slot);
  89. }
  90. });
  91. });
  92. return slotMap;
  93. };
  94. QueryDefinitionProvider.prototype._composeDataItems = function _composeDataItems(_ref2) {
  95. var definition = _ref2.definition,
  96. dataItems = _ref2.dataItems;
  97. definition.createDataItemSet(dataItems);
  98. };
  99. QueryDefinitionProvider.prototype._nestDataItems = function _nestDataItems(_ref3) {
  100. var definition = _ref3.definition,
  101. dataItems = _ref3.dataItems;
  102. var parent = definition;
  103. dataItems.forEach(function (dataItem) {
  104. parent = parent.createDataItemSet([dataItem]);
  105. });
  106. };
  107. return QueryDefinitionProvider;
  108. }(), _class.DEFAULT_ROWLIMIT = 3000, _class.SUPPRESSION_NONE = 'none', _temp);
  109. return QueryDefinitionProvider;
  110. });
  111. //# sourceMappingURL=QueryDefinitionProvider.js.map