'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: Dashboard * (C) Copyright IBM Corp. 2019 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /** * @class expandCollapse * @hideconstructor */ define(['underscore', '../../../lib/@waca/dashboard-common/dist/core/APIFactory', './api/ExpandCollapseAPI'], function (_, APIFactory, expandCollapseAPI) { return function () { function ExpandCollapse(options) { _classCallCheck(this, ExpandCollapse); this.dashboard = options.dashboardAPI; this.content = options.content; } ExpandCollapse.prototype.getAPI = function getAPI() { if (!this._api) { this._api = APIFactory.createAPI(this, [expandCollapseAPI]); } return this._api; }; ExpandCollapse.prototype.expand = function expand(dataItemId, parentUseValue, currentUseValue) { var dataItem = this._getDataItem(dataItemId); var transaction = this.dashboard.getFeature('Transaction'); var transactionToken = transaction.startTransaction(); var nestedDataItem = void 0; if (!dataItem.getUnion().getDataItemList().length) { nestedDataItem = dataItem; } else { nestedDataItem = this._findNestedDataItem(dataItem.getUnion().getDataItemList(), parentUseValue) || dataItem; } if (!nestedDataItem.getUnion().getDataItemList().find(function (dataItem) { return dataItem.getDrillDownValue() === currentUseValue; })) { var addedUnionDataItem = nestedDataItem.getUnion().addDataItem({ itemId: dataItem.getColumnId() }, transactionToken); addedUnionDataItem.drillDown(currentUseValue, transactionToken); } transaction.endTransaction(transactionToken); }; ExpandCollapse.prototype.collapse = function collapse(dataItemId, parentUseValue, currentUseValue) { var dataItem = this._getDataItem(dataItemId); var transaction = this.dashboard.getFeature('Transaction'); var transactionToken = transaction.startTransaction(); //Find nested Parent dataitem, if it's not found assume its the top level var parentDataItem = this._findNestedDataItem(dataItem.getUnion().getDataItemList(), parentUseValue) || dataItem; //find Child to remove var dataItemToRemove = this._findNestedDataItem(parentDataItem.getUnion().getDataItemList(), currentUseValue); if (parentDataItem && dataItemToRemove) { dataItemToRemove.clearDrill(transactionToken); parentDataItem.getUnion().removeDataItem(dataItemToRemove.getId(), transactionToken); } transaction.endTransaction(transactionToken); }; ExpandCollapse.prototype._getDataItem = function _getDataItem(dataItemId) { var visApi = this.content.getFeature('Visualization'); var dataItem = visApi.getSlots().getDataItemList().find(function (dataItem) { return dataItem.getId() === dataItemId; }); if (!dataItem) { throw new Error('Expand Failed, Invalid DataItem'); } return dataItem; }; /* * private function to find the nested dataitem from the root array provided * * @param rootArray Array starting point * @param useValue the drill down value of the dataItem to find * * @return VisDataItemUnionModel */ ExpandCollapse.prototype._findNestedDataItem = function _findNestedDataItem(rootArray, useValue) { var queue = Array.from(rootArray); var found = null; while (queue.length > 0 && !found) { var current = queue.shift(); var children = current.getUnion().getDataItemList(); queue.push.apply(queue, children || []); var currentValue = current.getDrillDownValue(); if (currentValue === useValue) { found = current; } } return found; }; return ExpandCollapse; }(); }); //# sourceMappingURL=ExpandCollapse.js.map