VisMetadataManager.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. 'use strict';
  2. /*
  3. *+------------------------------------------------------------------------+
  4. *| Licensed Materials - Property of IBM
  5. *| IBM Cognos Products: Dashboard
  6. *| (C) Copyright IBM Corp. 2017, 2019
  7. *|
  8. *| US Government Users Restricted Rights - Use, duplication or disclosure
  9. *| restricted by GSA ADP Schedule Contract with IBM Corp.
  10. *+------------------------------------------------------------------------+
  11. */
  12. define(['../../../../lib/@waca/core-client/js/core-client/ui/core/Class', '../../query/QueryService', '../../query/CommonQueryHelper', '../../../../dataSources/utils/DatasourceUtil', 'underscore'], function (Class, QueryService, CommonQueryHelper, DatasourceUtil, _) {
  13. 'use strict';
  14. /**
  15. * @classdesc provides public APIs to access widget metaddata.
  16. */
  17. var VisMetadataManager = Class.extend({
  18. /**
  19. * @constructs
  20. * @public
  21. * @param {Object} params - Mandatory: parameters to initialize the VisMetadataManager.
  22. * @param {Object} params.widgetModel - Mandatory.
  23. */
  24. init: function init(params) {
  25. VisMetadataManager.inherited('init', this, arguments);
  26. this.dashboardApi = params.dashboardApi;
  27. this.widgetModel = params.widgetModel;
  28. this.visualizationFeature = params.visualizationFeature;
  29. _.each(_.keys(params), function (key) {
  30. this[key] = params[key];
  31. }.bind(this));
  32. },
  33. getModule: function getModule() {
  34. var module = null;
  35. var dataSource = this.visualizationFeature.getDataSource();
  36. if (dataSource) {
  37. var deprecatedDataSources = this.dashboardApi.getFeature('dataSources.deprecated');
  38. if (deprecatedDataSources) {
  39. var legacyDataSourcesCollection = deprecatedDataSources.getSourcesCollection();
  40. var sourceModelAPI = legacyDataSourcesCollection.getSource(dataSource.getId());
  41. module = sourceModelAPI.getModuleAPI();
  42. }
  43. }
  44. return module;
  45. },
  46. getMetadataColumn: function getMetadataColumn(columnId, sourceId, logNotFound) {
  47. if (DatasourceUtil.isMultiMeasuresSeriesOrValue(columnId)) {
  48. return this._getMultiMeasuresSeriesMetadataColumn(columnId);
  49. }
  50. var module = this.getModule(sourceId);
  51. return module ? module.getMetadataColumn(columnId, logNotFound) : null;
  52. },
  53. _getMultiMeasuresSeriesMetadataColumn: function _getMultiMeasuresSeriesMetadataColumn(columnId) {
  54. return {
  55. getId: function getId() {
  56. return columnId;
  57. },
  58. getType: function getType() {
  59. return 'attribute';
  60. },
  61. isHidden: function isHidden() {
  62. return false;
  63. }
  64. };
  65. },
  66. /**
  67. * Returns an array of metadataColumn object for each dataItem in the model
  68. * @param {string} optViewIdx Optional
  69. * @return {[MetadataColumn]}
  70. */
  71. getMetadataColumns: function getMetadataColumns() {
  72. var metadataColumns = [];
  73. if (this.widgetModel && this.widgetModel.get('data')) {
  74. var dataItems = this.widgetModel.get('data').getDataItemsOfAllViewsAsCollection();
  75. if (dataItems) {
  76. var module = this.getModule();
  77. if (module) {
  78. dataItems.forEach(function (dataItem) {
  79. if (!DatasourceUtil.isMultiMeasuresSeriesOrValue(dataItem.id)) {
  80. var metadataColumn = module.getMetadataColumn(dataItem.itemId);
  81. if (metadataColumn) {
  82. metadataColumns.push(metadataColumn);
  83. } else {
  84. metadataColumns.push({
  85. status: 'notFound',
  86. getId: function getId() {
  87. return dataItem.itemId;
  88. },
  89. getLabel: function getLabel() {
  90. return dataItem.itemLabel;
  91. },
  92. getSourceCategory: function getSourceCategory() {
  93. return null;
  94. },
  95. isMissing: function isMissing() {
  96. return true;
  97. }
  98. });
  99. }
  100. }
  101. }.bind(this));
  102. }
  103. }
  104. }
  105. return metadataColumns;
  106. },
  107. destroy: function destroy() {
  108. VisMetadataManager.inherited('destroy', this, arguments);
  109. }
  110. });
  111. return VisMetadataManager;
  112. });
  113. //# sourceMappingURL=VisMetadataManager.js.map