RoleCustomizationService.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: Cognos Analytics
  5. * Copyright IBM Corp. 2015, 2017
  6. * US Government Users Restricted Rights - Use, duplication or disclosure
  7. * restricted by GSA ADP Schedule Contract with IBM Corp.
  8. */
  9. define(['underscore', 'bi/admin/common/services/BaseCustomizationService', 'bi/admin/common/utils/AJAXUtils', 'bi/admin/nls/StringResource'], function (_, BaseCustomizationService, AJAXUtils, StringResource) {
  10. var RoleCustomizationService = BaseCustomizationService.extend({
  11. init: function init(options) {
  12. RoleCustomizationService.inherited('init', this, arguments);
  13. _.extend(this, options);
  14. this._roleRank = null;
  15. },
  16. getCustomizations: function getCustomizations(id) {
  17. return this._getCustomizations(AJAXUtils.getPath('getUserProfileSettings', id));
  18. },
  19. saveCustomizations: function saveCustomizations(id) {
  20. return this.getRoleRank(id).then(function (roleRank) {
  21. if (roleRank === 0) {
  22. this.setRoleRank(1);
  23. return this.saveRoleRank(id);
  24. }
  25. }.bind(this)).then(function () {
  26. return this._saveCustomizations(AJAXUtils.getPath('getUserProfileSettings', id));
  27. }.bind(this));
  28. },
  29. _saveCustomizations: function _saveCustomizations(url) {
  30. if (this._customizations.fileUpload_location === ".my_folders") {
  31. delete this._customizations.fileUpload_location;
  32. url = url + "?fields=fileUpload_location";
  33. return this._ajaxDelete(url, 'DELETE');
  34. }
  35. if (this._customizations.ui_teamFolders && _.isEmpty(this._customizations.ui_teamFolders)) {
  36. delete this._customizations.ui_teamFolders;
  37. url = url + "?fields=ui_teamFolders";
  38. return this._ajaxDelete(url, 'DELETE');
  39. }
  40. return this._ajaxPut(url, this._customizations);
  41. },
  42. _getCustomizationsWithDefaults: function _getCustomizationsWithDefaults() {
  43. var returnValue = {
  44. 'ui_theme': RoleCustomizationService.DEFAULT,
  45. 'ui_homePage': {
  46. 'perspective': RoleCustomizationService.DEFAULT
  47. },
  48. 'ui_excludedFeatures': {
  49. 'ids': []
  50. },
  51. 'ui_teamFolders': {},
  52. 'parameter_values': {},
  53. 'fileUpload_location': null
  54. };
  55. if (this._customizations) {
  56. Object.keys(returnValue).forEach(this._replaceDefaultsWCustomValues.bind(this, returnValue, this._customizations));
  57. }
  58. return returnValue;
  59. },
  60. getRoleRank: function getRoleRank(id) {
  61. return Promise.try(function () {
  62. if (this._roleRank === null) {
  63. return this._ajaxGet(AJAXUtils.getPath('updateRole', id) + '?fields=profileRank').then(function (result) {
  64. if (result.data && result.data.length === 1) {
  65. this._roleRank = result.data[0].profileRank;
  66. } else {
  67. this._roleRank = 0;
  68. }
  69. }.bind(this));
  70. }
  71. }.bind(this)).then(function () {
  72. return this._roleRank;
  73. }.bind(this));
  74. },
  75. setRoleRank: function setRoleRank(rank) {
  76. if (rank >= 0 && rank <= 10) {
  77. this._roleRank = rank;
  78. }
  79. },
  80. saveRoleRank: function saveRoleRank(id) {
  81. return Promise.try(function () {
  82. return this._ajaxPut(AJAXUtils.getPath('updateRole', id), {
  83. 'type': 'role',
  84. 'profileRank': this._roleRank
  85. });
  86. }.bind(this));
  87. }
  88. });
  89. RoleCustomizationService.DEFAULT = StringResource.get('default');
  90. return RoleCustomizationService;
  91. });