123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- 'use strict';
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2019, 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', '../../../lib/@waca/dashboard-common/dist/utils/ContentUtil', '../../../filters/FilterSpecHelper', './api/QueryDefinitionModifierAPI', './DataQueryUtils'], function (APIFactory, ContentUtil, FilterSpecHelper, QueryDefinitionModifierAPI, DataQueryUtils) {
- /**
- * The visualization model is not ready to support brushing (highlight and filters) in R5
- * The purpose of the class is to wired off generating brushing as query filters for expanded column in R5v
- * This is a temporary solution to R5 to wired off expoanded columns brushing support until R6
- */
- var CrosstabQueryDefinitionModifier = function () {
- function CrosstabQueryDefinitionModifier(_ref) {
- var content = _ref.content,
- dashboardAPI = _ref.dashboardAPI,
- features = _ref.features;
- _classCallCheck(this, CrosstabQueryDefinitionModifier);
- this.content = content;
- this.dashboard = dashboardAPI;
- features.DataQueryExecution.registerQueryDefinitionModifier(this.getAPI());
- }
- CrosstabQueryDefinitionModifier.prototype.getAPI = function getAPI() {
- if (!this.api) {
- this.api = APIFactory.createAPI(this, [QueryDefinitionModifierAPI]);
- }
- return this.api;
- };
- CrosstabQueryDefinitionModifier.prototype.getType = function getType() {
- return 'main';
- };
- CrosstabQueryDefinitionModifier.prototype.modifyQueryDefinitionList = function modifyQueryDefinitionList(definitions) {
- var _this = this;
- var vis = this.content.getFeature('Visualization');
- if (vis.getType() === 'Crosstab') {
- definitions.forEach(function (definition) {
- var filters = definition.getFilters();
- var brushedFilters = filters.filter(function (filter) {
- return !!filter.visualizationId;
- });
- definition.removeFilters(brushedFilters);
- definition.setSupportsNonContextualTopBottom(false);
- _this._modifyFilters(definition);
- });
- }
- return definitions;
- };
- CrosstabQueryDefinitionModifier.prototype._modifyFilters = function _modifyFilters(definition) {
- var _this2 = this;
- var filterSpecList = [];
- var visualization = this.content.getFeature('Visualization');
- var dataSource = visualization.getDataSource();
- var brushedFilters = this._getBrushedFiltersByVisualization();
- var unionedDataItemList = this._getUnionedDataItemList(visualization);
- if (unionedDataItemList.length > 0) {
- brushedFilters.forEach(function (brushedFilter) {
- var addFilter = true;
- var columnIds = brushedFilter.columnId ? [brushedFilter.columnId] : FilterSpecHelper.getSelectedCompoundFilterColumnIds([brushedFilter]);
- var _loop = function _loop(index) {
- var brushedColumn = _this2._getHierarchyMetadatColumn(dataSource, dataSource.getMetadataColumn(columnIds[index]));
- if (brushedColumn) {
- var expandedColumn = unionedDataItemList.find(function (dataItem) {
- var column = _this2._getHierarchyMetadatColumn(dataSource, dataItem.getMetadataColumn());
- return column && brushedColumn.getId() === column.getId();
- });
- if (expandedColumn) {
- //One of the columnId in the brushed filter is defined in the expanded column so do not include it
- addFilter = false;
- return 'break';
- }
- }
- };
- for (var index = 0; index < columnIds.length; index++) {
- var _ret = _loop(index);
- if (_ret === 'break') break;
- }
- if (addFilter) {
- filterSpecList.push(brushedFilter);
- }
- });
- } else {
- filterSpecList.push.apply(filterSpecList, brushedFilters);
- }
- var updatedFilterSpecList = DataQueryUtils.convertExcludeEmptyValuesFilters(filterSpecList, visualization.getDataSource());
- definition.addFilters(updatedFilterSpecList);
- };
- CrosstabQueryDefinitionModifier.prototype._getBrushedFiltersByVisualization = function _getBrushedFiltersByVisualization() {
- var eventGroups = this.dashboard.getFeature('EventGroups');
- var globalFilters = this.dashboard.getFeature('GlobalFilters');
- var visualization = this.content.getFeature('Visualization');
- var filterQuerySpecList = [];
- var dataSource = visualization.getDataSource();
- var type = this.dashboard.getAppConfig('pageContainerType');
- var page = ContentUtil.getPageContent(this.content, type);
- var pageId = page && page.getId();
- if (dataSource && visualization.getDefinition().getProperty('reactToExternalBrushing') !== false) {
- var eventGroupId = eventGroups.getGroupId(this.content.getId());
- filterQuerySpecList.push.apply(filterQuerySpecList, globalFilters.getFilterList({
- origin: 'visualization',
- sourceId: dataSource.getId(),
- scope: pageId,
- eventGroupId: eventGroupId
- }, this.content.getId()));
- }
- // Exclude binning filters since they are not fully supported by query service.
- return filterQuerySpecList.filter(function (filterSpec) {
- return !filterSpec.filterBins;
- });
- };
- CrosstabQueryDefinitionModifier.prototype._getHierarchyMetadatColumn = function _getHierarchyMetadatColumn(dataSource, column) {
- return !column || column.isHierarchy() ? column : this._getHierarchyMetadatColumn(dataSource, column.getParent());
- };
- CrosstabQueryDefinitionModifier.prototype._getUnionedDataItemList = function _getUnionedDataItemList(visualization) {
- var unionedDataItemList = [];
- var dataItemList = visualization.getSlots().getDataItemList();
- dataItemList.forEach(function (dataItem) {
- unionedDataItemList.push.apply(unionedDataItemList, dataItem.getUnion().getDataItemList());
- });
- return unionedDataItemList;
- };
- return CrosstabQueryDefinitionModifier;
- }();
- return CrosstabQueryDefinitionModifier;
- });
- //# sourceMappingURL=CrosstabQueryDefinitionModifier.js.map
|