| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- "use strict";
 
- /**
 
-  * Licensed Materials - Property of IBM
 
-  * IBM Cognos Products: Cognos Analytics
 
-  * Copyright IBM Corp. 2017, 2017
 
-  * US Government Users Restricted Rights - Use, duplication or disclosure
 
-  * restricted by GSA ADP Schedule Contract with IBM Corp.
 
-  */
 
- define(['underscore', 'bi/commons/ui/core/Class'], function (_, Class) {
 
-   var BaseCustomizationService = Class.extend({
 
-     init: function init(options) {
 
-       BaseCustomizationService.inherited('init', this, arguments);
 
-       _.extend(this, options);
 
-       this._ajaxService = options.glassContext.services.ajax;
 
-       this._customizations = null;
 
-     },
 
-     /*
 
-      * Abstract methods
 
-      */
 
-     getCustomizations: function getCustomizations(id) {},
 
-     saveCustomizations: function saveCustomizations(id) {},
 
-     _getCustomizationsWithDefaults: function _getCustomizationsWithDefaults() {},
 
-     _getCustomizations: function _getCustomizations(url) {
 
-       return Promise.try(function () {
 
-         if (this._customizations === null) {
 
-           return this._ajaxGet(url).then(function (result) {
 
-             this._customizations = result;
 
-           }.bind(this));
 
-         }
 
-       }.bind(this)).then(this._getCustomizationsWithDefaults.bind(this));
 
-     },
 
-     _setCustomization: function _setCustomization(id, key, value) {
 
-       return Promise.try(function () {
 
-         return this.getCustomizations(id).then(function () {
 
-           this._customizations[key] = value;
 
-           return this.saveCustomizations(id);
 
-         }.bind(this)).then(this._getCustomizationsWithDefaults.bind(this));
 
-       }.bind(this));
 
-     },
 
-     _saveCustomizations: function _saveCustomizations(url) {
 
-       return this._ajaxPut(url, this._customizations);
 
-     },
 
-     _replaceDefaultsWCustomValues: function _replaceDefaultsWCustomValues(returnValue, customizations, key) {
 
-       if (returnValue.hasOwnProperty(key) && customizations[key]) {
 
-         if (key === 'ui_excludedFeatures' && customizations.ui_excludedFeatures.ids) {
 
-           returnValue.ui_excludedFeatures.ids = customizations.ui_excludedFeatures.ids;
 
-         } else if (key === 'ui_teamFolders' && customizations.ui_teamFolders.pathRef) {
 
-           returnValue.ui_teamFolders.pathRef = customizations.ui_teamFolders.pathRef;
 
-         } else if (key === 'fileUpload_location' && customizations.fileUpload_location) {
 
-           returnValue.fileUpload_location = customizations.fileUpload_location;
 
-         } else if (key === 'baseTextDirection') {//do nothing
 
-         } else {
 
-           returnValue[key] = customizations[key];
 
-         }
 
-         if (key === 'biDirectionalFeaturesEnabled') {
 
-           returnValue.baseTextDirection = customizations.baseTextDirection;
 
-         }
 
-       }
 
-     },
 
-     setHomePage: function setHomePage(id, homePage) {
 
-       return this._setCustomization(id, 'ui_homePage', homePage);
 
-     },
 
-     setTheme: function setTheme(id, theme) {
 
-       return this._setCustomization(id, 'ui_theme', theme);
 
-     },
 
-     setExcludedFeatures: function setExcludedFeatures(id, excludedFeatures) {
 
-       return this._setCustomization(id, 'ui_excludedFeatures', excludedFeatures);
 
-     },
 
-     setTeamFolders: function setTeamFolders(id, teamFolders) {
 
-       return this._setCustomization(id, 'ui_teamFolders', teamFolders);
 
-     },
 
-     setCustomSaveLocation: function setCustomSaveLocation(id, customSaveLocation) {
 
-       return this._setCustomization(id, 'fileUpload_location', customSaveLocation);
 
-     },
 
-     setParameters: function setParameters(id, parameters) {
 
-       return this._setCustomization(id, 'parameters', parameters);
 
-     },
 
-     setParameterValues: function setParameterValues(id, parameterValues) {
 
-       return this._setCustomization(id, 'parameter_values', parameterValues);
 
-     },
 
-     resetFeatures: function resetFeatures(id) {
 
-       return this._setCustomization(id, 'ui_excludedFeatures', {
 
-         'ids': []
 
-       });
 
-     },
 
-     setRegionalSettings: function setRegionalSettings(id, regionalSettings) {
 
-       return this.getCustomizations(id).then(function () {
 
-         this._customizations.productLocale = regionalSettings.productLocale;
 
-         this._customizations.contentLocale = regionalSettings.contentLocale;
 
-         this._customizations.timeZoneID = regionalSettings.timeZoneID;
 
-         this._customizations.baseTextDirection = regionalSettings.baseTextDirection;
 
-         this._customizations.biDirectionalFeaturesEnabled = regionalSettings.biDirectionalFeaturesEnabled;
 
-         return this.saveCustomizations(id);
 
-       }.bind(this)).then(this._getCustomizationsWithDefaults.bind(this));
 
-     },
 
-     _getBaseOptions: function _getBaseOptions() {
 
-       return {
 
-         contentType: BaseCustomizationService._contentType,
 
-         dataType: 'json'
 
-       };
 
-     },
 
-     _ajaxHelper: function _ajaxHelper(url, method, data) {
 
-       var options = this._getBaseOptions();
 
-       options.method = method;
 
-       options.url = url;
 
-       if (data !== undefined) {
 
-         options.data = JSON.stringify(data);
 
-       }
 
-       return this._ajaxService.ajax(options);
 
-     },
 
-     _ajaxGet: function _ajaxGet(url) {
 
-       return this._ajaxHelper(url, 'GET');
 
-     },
 
-     _ajaxDelete: function _ajaxDelete(url) {
 
-       return this._ajaxHelper(url, 'DELETE');
 
-     },
 
-     _ajaxPut: function _ajaxPut(url, data) {
 
-       return this._ajaxHelper(url, 'PUT', data);
 
-     },
 
-     _ajaxPost: function _ajaxPost(url, data) {
 
-       return this._ajaxHelper(url, 'POST', data);
 
-     },
 
-     _fetchGet: function _fetchGet(url) {
 
-       var options = this._getBaseOptions();
 
-       return this.glassContext.services.fetch.get(url, options);
 
-     },
 
-     _fetchPut: function _fetchPut(url, data) {
 
-       var options = this._getBaseOptions();
 
-       options.data = JSON.stringify(data);
 
-       return this.glassContext.services.fetch.put(url, options);
 
-     }
 
-   });
 
-   BaseCustomizationService._contentType = 'application/json; charset=utf-8';
 
-   return BaseCustomizationService;
 
- });
 
 
  |