RelinkUtils.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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: Dashboard
  6. * (C) Copyright IBM Corp. 2017, 2020
  7. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. */
  9. define(['../../DynamicFileLoader'], function (DynamicFileLoader) {
  10. var RelinkUtils = function () {
  11. function RelinkUtils() {
  12. _classCallCheck(this, RelinkUtils);
  13. }
  14. RelinkUtils.relink = function relink(source, newSourceInfo, dashboardApi) {
  15. var oldCMAssetId = source.getAssetId();
  16. return dashboardApi.getFeature('.LifeCycleManager').invokeLifeCycleHandlers('pre:relink').then(function () {
  17. return Promise.all([source.relink(newSourceInfo), DynamicFileLoader.load(['dashboard-analytics/dataSources/utils/RelinkItemIdInSpec'])]);
  18. }).then(function (Results) {
  19. var logger = dashboardApi.getGlassCoreSvc('.Logger');
  20. var sourceInfo = Results[0];
  21. var RelinkItemIdInSpec = Results[1][0];
  22. var newDashboardJSONSpec = void 0;
  23. var oldDashboardSpec = dashboardApi.getFeature('internal').getBoardModel().toJSON();
  24. if (sourceInfo) {
  25. var newCMAssetId = newSourceInfo.assetId;
  26. var relinkItemIdInSpec = new RelinkItemIdInSpec(oldDashboardSpec, { sourceId: sourceInfo.sourceId, oldCMAssetId: oldCMAssetId, newCMAssetId: newCMAssetId }, logger);
  27. var oldItemIds = relinkItemIdInSpec.getItemIds();
  28. var newItemIds = sourceInfo.relinkIdForExpressions(oldItemIds);
  29. newDashboardJSONSpec = relinkItemIdInSpec.replaceItemIds(newItemIds);
  30. }
  31. //relink is only supported for uploaded files. For non-uploaded files use the oldDashboardSpec since newDashboardJSONSpec is undefined
  32. return dashboardApi.reloadFromJSONSpec(newDashboardJSONSpec || oldDashboardSpec);
  33. }).then(function (dashboardApi) {
  34. return dashboardApi.getFeature('.LifeCycleManager').invokeLifeCycleHandlers('post:relink');
  35. });
  36. };
  37. return RelinkUtils;
  38. }();
  39. return RelinkUtils;
  40. });
  41. //# sourceMappingURL=RelinkUtils.js.map