123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- "use strict";
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: Cognos Analytics
- * Copyright IBM Corp. 2015, 2018
- * US Government Users Restricted Rights -
- * Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(['q', 'jquery', 'doT', 'underscore', 'bi/commons/utils/BidiUtil', 'bi/admin/common/slideout/BasePane', 'bi/admin/nls/StringResource', 'bi/admin/common/utils/AJAXUtils', 'ba-react-admin/ba-react-admin.min'], function (Q, $, dot, _, BidiUtil, BasePane, StringResource, AJAXUtils, AdminReact) {
- //NOSONAR: needed for amd
- 'use strict'; //NOSONAR: meant to be strict
- var CreateNewPane = BasePane.extend({
- /**
- * @param options.$el - JQuery node to append the table HTML
- * @param options.items {object} - An array of tab metadata. Must provide name, module, and objectInfo (containing all the basic properties of the object)
- *
- * @constructor
- */
- init: function init(options) {
- CreateNewPane.inherited('init', this, arguments);
- _.extend(this, options);
- this.autoValidate = true;
- this._stringResource = StringResource;
- this.title = StringResource.get('addNewUser');
- },
- _validate: function _validate() {
- if (!this.validate()) {
- this.glassContext.appController.showErrorMessage(StringResource.get('validateErrorMsg'), StringResource.get('error'));
- return false;
- }
- var passwordString = this.$el.find("input[type=password]").val();
- var userNameString = this.$el.find("input[cog-data=userName]").val();
- var givenNameString = this.$el.find("input[id=givenName]").val();
- var givenSurnameString = this.$el.find("input[id=surname]").val();
- var passwordRegex = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/;
- var isPasswordValidate = passwordRegex.test(passwordString);
- var isGivenNameValidate = givenNameString !== "";
- var isGivenSurnameValidate = givenSurnameString !== "";
- if (userNameString.length < 3) {
- this.glassContext.appController.showErrorMessage(StringResource.get('userNameInvalidErrorMsg'), StringResource.get('error'));
- return false;
- }
- if (!isPasswordValidate) {
- this.glassContext.appController.showErrorMessage(StringResource.get('passwordInvalidErrorMsg'), StringResource.get('error'));
- return false;
- }
- if (!isGivenNameValidate) {
- this.glassContext.appController.showErrorMessage(StringResource.get('givenNameInvalidErrorMsg'), StringResource.get('error'));
- return false;
- }
- if (!isGivenSurnameValidate) {
- this.glassContext.appController.showErrorMessage(StringResource.get('givenSurnameInvalidErrorMsg'), StringResource.get('error'));
- return false;
- }
- return true;
- },
- _createAccountObject: function _createAccountObject(objectInfo, pid) {
- var objURL = AJAXUtils.getPath('createUser', pid);
- var options = {
- dataType: 'json',
- type: 'POST',
- contentType: 'application/json; charset=utf-8',
- data: JSON.stringify(objectInfo),
- url: objURL,
- cache: false
- };
- return this.glassContext.services.ajax.ajax(options);
- },
- renderBody: function renderBody($body) {
- var self = this;
- var deferred = Q.defer();
- var sHtml = dot.template(this.template)(this.objectInfo);
- $body.append(sHtml);
- this._setTextDirection(this.$el.find("input[type=text]"));
- this._setTextDirection(this.$el.find("textarea"));
- this.$el.find('#btnCreate').on('primaryaction', function () {
- if (!self._validate(self.objectInfo)) {
- return;
- }
- self._assemblyObject(self.objectInfo);
- self._createObject(self.objectInfo, self.pid).done(function () {
- var deferred = Q.defer();
- deferred.resolve(self.objectInfo);
- self._refreshAccountListPane();
- var sText = StringResource.get('userToastCreateMsg', {
- 'name': self.objectInfo.defaultName
- });
- self.glassContext.appController.showToast(sText, {
- type: 'success'
- });
- }, function (err) {
- this.glassContext.appController.showErrorMessage(err.responseJSON.messages.join('\n'), StringResource.get('error'));
- }.bind(this));
- }.bind(this));
- this.$el.find('#btnCancel').on('primaryaction', function () {
- this.close();
- }.bind(this));
- deferred.resolve();
- return deferred.promise;
- },
- _refreshAccountListPane: function _refreshAccountListPane() {
- if (this.parentView.pagingEnabled) {
- AdminReact.PaginationHelper.reloadListViewinPagingContext(this.parentView.glassContext, this.parentView._accountExplorer, this.parentView.listView, this.parentView.listAdaptor, true);
- } else {
- this.parentView.listAdaptor.sortChanged = true;
- this.parentView.listView.reload(false);
- }
- this.close();
- },
- _assemblyObject: function _assemblyObject(objectInfo) {
- this.$el.find("[cog-data]").each(function () {
- var propName = $(this).attr("cog-data").trim();
- if ($(this).attr("type") !== "checkbox") {
- objectInfo[propName] = $(this).val();
- }
- });
- objectInfo.defaultName = objectInfo.givenName + ' ' + objectInfo.surname;
- objectInfo.password = btoa(objectInfo.password);
- },
- _createObject: function _createObject(objectInfo, pid) {
- var deferred = Q.defer();
- this._createAccountObject(objectInfo, pid).done(function (data) {
- deferred.resolve(data);
- }).fail(function (jqXHR, err) {
- deferred.reject(err);
- });
- return deferred.promise;
- },
- setFocus: function setFocus() {
- this.$el.find('input[type=text]').filter(':visible:first').focus();
- },
- _onBlur: function _onBlur() {}
- });
- return CreateNewPane;
- });
|