VisMapColumnsToSlot.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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, 2020
  6. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. */
  8. define(['underscore'], function (_) {
  9. return function () {
  10. function VisMapColumnsToSlot() {
  11. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  12. _classCallCheck(this, VisMapColumnsToSlot);
  13. this.content = options.content;
  14. this.visualization = options.visualization;
  15. this.slots = this.visualization.getSlots();
  16. this.transaction = options.transaction;
  17. }
  18. VisMapColumnsToSlot.prototype.mapColumns = function mapColumns(slotId, droppedColumns) {
  19. var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  20. var transactionToken = arguments[3];
  21. var columns = droppedColumns;
  22. var metadataColumns = _.pluck(droppedColumns, 'metadataColumn');
  23. var originalMetadataColumns = _.chain(droppedColumns).pluck('original').compact().pluck('metadataColumn').value();
  24. var slot = this.slots.getSlot(slotId);
  25. if (slot) {
  26. var position = options.position,
  27. bReplace = options.bReplace,
  28. activeDataSourceId = options.activeDataSourceId;
  29. var canSetLocalFilters = _.isBoolean(options.canSetLocalFilters) ? options.canSetLocalFilters : true;
  30. var slotDataItemList = slot.getDataItemList();
  31. var localFilters = this.visualization.getLocalFilters();
  32. var subTransactionToken = this.transaction.startTransaction(transactionToken);
  33. // before add data items, ensure the visulization datasource is set. Could fail
  34. // in certain conditions, for example if the visualization don't support the datasource.
  35. this._setDataSource(metadataColumns, subTransactionToken, activeDataSourceId);
  36. if (this.visualization.getDataSource() === null) {
  37. this.transaction.endTransaction(subTransactionToken);
  38. return;
  39. }
  40. if (bReplace && slotDataItemList.length) {
  41. //Delete local filters associated with this data item so that it will get added to undo/redo stack
  42. var filterKey = { itemId: slotDataItemList[position].getColumnId() };
  43. if (localFilters.filterExists(filterKey)) {
  44. localFilters.removeFilter(filterKey, subTransactionToken);
  45. }
  46. var ids = [slotDataItemList[position].getId()];
  47. slot.removeDataItems(ids, subTransactionToken);
  48. if (this.visualization.getDataSource() === null) {
  49. this._setDataSource(metadataColumns, subTransactionToken, activeDataSourceId);
  50. }
  51. }
  52. var localFltersSpec = [];
  53. if (canSetLocalFilters) {
  54. var result = this._getLocalFilters({
  55. slot: slot,
  56. columns: columns,
  57. bReplace: bReplace
  58. }, subTransactionToken);
  59. localFltersSpec.push.apply(localFltersSpec, result);
  60. }
  61. metadataColumns = _.pluck(columns, 'metadataColumn');
  62. var columnSpecs = _.map(metadataColumns, function (metadataColumn) {
  63. return { columnId: metadataColumn.getId() };
  64. });
  65. if (columnSpecs.length) {
  66. var _dataItemList = slot.addDataItems(columnSpecs, position, subTransactionToken);
  67. var items = originalMetadataColumns;
  68. items && items.forEach(function (item, index) {
  69. var navPathId = item.getParent() ? item.getParent().getId() : null;
  70. if (navPathId && item.getParent().getObjectType().toLowerCase() === 'drillgroup') {
  71. _dataItemList[index].setNavigationPathId(navPathId, subTransactionToken);
  72. }
  73. });
  74. }
  75. var dataItemList = slot.getDataItemList();
  76. localFltersSpec.forEach(function (spec) {
  77. //if dataItem is added to slot or visualization, then add filters,
  78. // if dataItem is not added due to any reason, do not add filters
  79. var dataItem = dataItemList.find(function (dataItem) {
  80. return dataItem.getColumnId() === spec.itemContext.itemId;
  81. }) || null;
  82. if (dataItem) {
  83. if (spec.hasFilters) {
  84. localFilters.editFilter(spec.itemContext, spec.filterContext, subTransactionToken);
  85. } else {
  86. localFilters.addFilter(spec.itemContext, spec.filterContext, subTransactionToken);
  87. }
  88. }
  89. });
  90. this.transaction.endTransaction(subTransactionToken);
  91. }
  92. };
  93. VisMapColumnsToSlot.prototype._setDataSource = function _setDataSource(metadataColumns, transactionToken, activeDataSourceId) {
  94. var sourceId = activeDataSourceId;
  95. if (!sourceId && metadataColumns.length > 0) {
  96. var firstMetadataColumn = metadataColumns[0];
  97. sourceId = firstMetadataColumn.getSourceId();
  98. }
  99. this.visualization.setDataSource(sourceId, transactionToken);
  100. };
  101. VisMapColumnsToSlot.prototype._getLocalFilters = function _getLocalFilters() {
  102. var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  103. var transactionToken = arguments[1];
  104. return this.content.getFeature('VisDnD.utils').addMembersAsLocalFilters({
  105. slotAPI: context.slot,
  106. doUpdateFilters: false,
  107. columns: context.columns,
  108. bReplace: context.bReplace
  109. }, transactionToken);
  110. };
  111. return VisMapColumnsToSlot;
  112. }();
  113. });
  114. //# sourceMappingURL=VisMapColumnsToSlot.js.map