SlotMappingModel.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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 Business Analytics (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. /**
  9. * @class SlotMappingModel
  10. * @hideconstructor
  11. * @classdesc Provides access to the slot mapping model
  12. */
  13. define([], function () {
  14. return function () {
  15. function SlotMappingModel(slotMappingModelJson) {
  16. _classCallCheck(this, SlotMappingModel);
  17. this._slotMappingModel = slotMappingModelJson;
  18. if (!this._slotMappingModel.slots) {
  19. this._slotMappingModel.slots = [];
  20. }
  21. if (!this._slotMappingModel.multiMeasureGroups) {
  22. this._slotMappingModel.multiMeasureGroups = {};
  23. }
  24. }
  25. SlotMappingModel.prototype.getSlotList = function getSlotList() {
  26. return this._slotMappingModel.slots;
  27. };
  28. // Remove a slot from the model
  29. SlotMappingModel.prototype.removeSlot = function removeSlot(slotId) {
  30. this._slotMappingModel.slots = this._slotMappingModel.slots.filter(function (slot) {
  31. return slot.name !== slotId;
  32. });
  33. };
  34. // Get a slot with a given id. If one does not exist, it will be created
  35. SlotMappingModel.prototype.getSlot = function getSlot(slotId) {
  36. var slot = void 0;
  37. for (var i = 0; i < this._slotMappingModel.slots.length; i++) {
  38. if (this._slotMappingModel.slots[i].name === slotId) {
  39. slot = this._slotMappingModel.slots[i];
  40. break;
  41. }
  42. }
  43. if (!slot) {
  44. slot = {
  45. name: slotId
  46. };
  47. this._slotMappingModel.slots.push(slot);
  48. }
  49. if (!slot.dataItems) {
  50. slot.dataItems = [];
  51. }
  52. return slot;
  53. };
  54. SlotMappingModel.prototype._getMultiMeasureGroup = function _getMultiMeasureGroup(dataset) {
  55. return this._slotMappingModel.multiMeasureGroups[dataset];
  56. };
  57. SlotMappingModel.prototype._initMultiMeasureGroup = function _initMultiMeasureGroup(dataset) {
  58. if (!this._slotMappingModel.multiMeasureGroups[dataset]) {
  59. this._slotMappingModel.multiMeasureGroups[dataset] = {};
  60. }
  61. };
  62. SlotMappingModel.prototype.getMultiMeasureSlotId = function getMultiMeasureSlotId(dataset) {
  63. var group = this._getMultiMeasureGroup(dataset);
  64. return group && group.slotId;
  65. };
  66. SlotMappingModel.prototype.setMultiMeasureSlotId = function setMultiMeasureSlotId(dataset, slotId) {
  67. this._initMultiMeasureGroup(dataset);
  68. var group = this._getMultiMeasureGroup(dataset);
  69. group.slotId = slotId;
  70. };
  71. SlotMappingModel.prototype.getMultiMeasurePosition = function getMultiMeasurePosition(dataset) {
  72. var group = this._getMultiMeasureGroup(dataset);
  73. return group ? group.position : -1;
  74. };
  75. SlotMappingModel.prototype.setMultiMeasurePosition = function setMultiMeasurePosition(dataset, position) {
  76. this._initMultiMeasureGroup(dataset);
  77. var group = this._getMultiMeasureGroup(dataset);
  78. group.position = position;
  79. };
  80. SlotMappingModel.prototype.getMappedDataItemIdList = function getMappedDataItemIdList(slotId) {
  81. var dataItemIds = [];
  82. this._slotMappingModel.slots.forEach(function (slot) {
  83. if (slot.dataItems && (!slotId || slotId === slot.name)) {
  84. dataItemIds = dataItemIds.concat(slot.dataItems);
  85. }
  86. });
  87. return dataItemIds;
  88. };
  89. // Get the slot that is mapped to a given dataitem
  90. SlotMappingModel.prototype.getMappedSlot = function getMappedSlot(dataItemId) {
  91. var slot = void 0;
  92. for (var i = 0; i < this._slotMappingModel.slots.length; i++) {
  93. var dataItems = this._slotMappingModel.slots[i].dataItems;
  94. if (dataItems) {
  95. for (var j = 0; j < dataItems.length; j++) {
  96. if (dataItems[j] === dataItemId) {
  97. slot = this._slotMappingModel.slots[i];
  98. break;
  99. }
  100. }
  101. }
  102. if (slot) {
  103. break;
  104. }
  105. }
  106. return slot;
  107. };
  108. // Add a dataItem mapping to a given slot
  109. SlotMappingModel.prototype.mapDataItemsToSlot = function mapDataItemsToSlot(dataItemIdList, slotId) {
  110. var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
  111. this.unmapDataItemsFromSlots(dataItemIdList);
  112. var slot = this.getSlot(slotId);
  113. if (index < 0) {
  114. var _slot$dataItems;
  115. (_slot$dataItems = slot.dataItems).push.apply(_slot$dataItems, dataItemIdList);
  116. } else {
  117. var _slot$dataItems2;
  118. (_slot$dataItems2 = slot.dataItems).splice.apply(_slot$dataItems2, [index, 0].concat(dataItemIdList));
  119. }
  120. };
  121. // Add a dataItem mapping to a given slot
  122. SlotMappingModel.prototype.unmapDataItemsFromSlots = function unmapDataItemsFromSlots(dataItemIdList) {
  123. var _this = this;
  124. dataItemIdList.forEach(function (dataItemId) {
  125. var currentMappedSlot = _this.getMappedSlot(dataItemId);
  126. if (currentMappedSlot) {
  127. currentMappedSlot.dataItems = currentMappedSlot.dataItems.filter(function (id) {
  128. return dataItemId !== id;
  129. });
  130. if (currentMappedSlot.dataItems.length === 0) {
  131. _this.removeSlot(currentMappedSlot.name);
  132. }
  133. }
  134. });
  135. };
  136. return SlotMappingModel;
  137. }();
  138. });
  139. //# sourceMappingURL=SlotMappingModel.js.map