summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE-os/client/src/directives
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-portal-FE-os/client/src/directives')
-rw-r--r--ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.directive.js111
-rw-r--r--ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.less182
-rw-r--r--ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.tpl.html42
-rw-r--r--ecomp-portal-FE-os/client/src/directives/search-users/search-users.controller.js168
-rw-r--r--ecomp-portal-FE-os/client/src/directives/search-users/search-users.less159
-rw-r--r--ecomp-portal-FE-os/client/src/directives/search-users/search-users.tpl.html143
6 files changed, 805 insertions, 0 deletions
diff --git a/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.directive.js b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.directive.js
new file mode 100644
index 00000000..92207dfa
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.directive.js
@@ -0,0 +1,111 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+/**
+ * Created by nnaffar on 1/28/16.
+ */
+(function () {
+ class RightMenu {
+ constructor($rootScope,$window,$timeout) {
+ this.templateUrl = 'app/directives/right-menu/right-menu.tpl.html';
+ this.restrict = 'AE';
+ this.$rootScope = $rootScope;
+ this.$window = $window;
+ this.$timeout=$timeout;
+ this.link = this._link.bind(this);
+ this.scope = {
+ userList :'='
+ }
+ }
+
+ _link(scope) {
+ let init = () => {
+ scope.isOpen = true;
+ scope.rightSideToggleBtn = 'Collapse';
+
+ scope.openInNewTab = (url) => {
+ if(url == "self") {
+ alert("Cannot chat with self!");
+ } else {
+ var win = window.open(url, '_blank');
+ setCookie(url.split("chat_id=")[1], 'source', 1);
+ //window.localStorage.setItem(url.split("chat_id=")[1],'source');
+ win.focus();
+ }
+ };
+
+ };
+
+ init();
+
+
+ scope.toggleSidebar = () => {
+ scope.isOpen = !scope.isOpen;
+ if(scope.isOpen){
+ scope.rightSideToggleBtn = 'Collapse';
+ }else{
+ scope.rightSideToggleBtn = 'Expand';
+ }
+ };
+
+ scope.scrollbarWidth =function(){
+ var $outer = $('<div>').css({visibility: 'hidden', width: 100, overflow: 'scroll'}).appendTo('body'),
+ widthWithScroll = $('<div>').css({width: '100%'}).appendTo($outer).outerWidth();
+ $outer.remove();
+ return 100 - widthWithScroll;
+ };
+
+ scope.calculateUserbarOffset = function(){
+ var userbarWid = $("#online-userbar").width()==0?75:$("#online-userbar").width();
+ var scrollbarWid = scope.scrollbarWidth();
+ var userbarOffset = scrollbarWid+userbarWid-1;
+ /*Setting the offset for userbar*/
+ $("#online-userbar").css("left",-userbarOffset);
+ /*Setting the offset for user bar toggle button*/
+ $(".ecomp-right-sidebar-toggle-btn").css("right",scrollbarWid);
+ }
+ this.$timeout(scope.calculateUserbarOffset, 0);
+
+ scope.isBrowserInternetExplorer = false;
+ scope.browserName = bowser.name;
+
+ if (bowser.msie || bowser.msedge) {
+ scope.isBrowserInternetExplorer = true;
+ } else {
+ scope.isBrowserInternetExplorer = false;
+ }
+
+ scope.calculateUserBarHeight = () => {
+ var footerOff = $('#online-userbar').offset().top;
+ var headOff = $('#footer').offset().top;
+ var userbarHeight= parseInt($(".online-user-container").css('height'),10);
+ var defaultOffSet = 45;
+ // console.log(headOff - footerOff-defaultOffSet);
+ $(".online-user-container").css({
+ "height" : headOff - footerOff-defaultOffSet
+ });
+ };
+ angular.element(this.$window).bind('resize', function(){
+ scope.calculateUserBarHeight();
+ });
+ }
+
+ }
+ angular.module('ecompApp').directive('rightMenu', ($rootScope,$window,$timeout) => new RightMenu($rootScope,$window,$timeout));
+})(); \ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.less b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.less
new file mode 100644
index 00000000..102ac228
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.less
@@ -0,0 +1,182 @@
+/**
+ * Created by nnaffar on 1/28/16.
+ */
+@sidebar-width: 200px;
+@transition-duration: 0.25s;
+@overlayer-opacity: 0.65;
+
+
+.close-button {
+ //width: @sidebar-width;
+ .blackText24m;
+ //.bg_u;
+ font-size: 3em;
+ line-height: 18px;
+ position: absolute;
+ cursor: pointer;
+ vertical-align: middle;
+ top: @second-level-top;
+ left: 0;
+ -webkit-font-smoothing: antialiased;
+ height: 53px;
+ z-index: 101;
+ //box-shadow: 0 4px 5px rgba(0, 0, 0, .2);
+
+}
+.ecomp-right-sidebar-container{
+ position: absolute;
+ display: block;
+ left: 0;
+ z-index: 100;
+ transition: left @transition-duration;
+ margin-top: -15px;
+
+ .ecomp-right-sidebar-main {
+ //background-color: ;
+ position: absolute;
+ margin-top: 115px;
+
+ height: 100vh;
+ .bg_portalWhite;//white for 1702
+ box-shadow: 0 4px 5px rgba(0, 0, 0, .2);
+ left: -90px;
+ width:75px;
+ padding:0px;
+ height: 100vh;
+
+
+
+ .accordion-container{
+ margin-top: 45px;
+ }
+ .portal-accordion-font{
+ font-size: .875rem;
+ color: #666;
+ display: inline-block;
+ font-family: Arial;
+
+ }
+
+ .portal-accordion-active{
+ color: #199DDF !important;
+ }
+
+ .sub-item{
+ .portal-accordion-font;
+ cursor: pointer;
+ height: 37px;
+ line-height: 37px;
+ padding-left: 20px;
+ padding-bottom: 10px;
+ vertical-align: middle;
+ width: 100%;
+ }
+ .sub-item:hover{
+ .portal-accordion-active;
+ }
+
+ .parent-item{
+ .portal-accordion-font;
+ border-bottom: 1px solid #bbb;
+ cursor: pointer;
+ height: 37px;
+ line-height: 37px;
+ padding-bottom: 10px;
+ vertical-align: middle;
+ width: 100%;
+ }
+ .parent-item:hover{
+ .portal-accordion-active;
+ }
+
+ }
+}
+
+.open-userbar {
+ left: 0;
+ transition: left .25s ease-in-out;
+ -moz-transition: left .25s ease-in-out;
+ -webkit-transition: left .25s ease-in-out;
+}
+
+.close-userbar {
+ left: 91px;
+ transition: left .25s ease-in-out;
+ -moz-transition: left .25s ease-in-out;
+ -webkit-transition: left .25s ease-in-out;
+}
+
+.content-overlayed {
+ position: fixed;
+ top: 110px;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: none repeat scroll 0 0 rgb(242, 242, 242);
+ z-index: 9999;
+}
+.fade-animation{
+ opacity: @overlayer-opacity;
+ transition: opacity @transition-duration ease-in-out;
+}
+.fade-animation.ng-hide {
+ opacity:0;
+ transition: opacity @transition-duration ease-in-out;
+}
+
+.activeUserIcon {
+ transition: all .2s ease-in-out;
+ display: block;
+ margin-left: auto; margin-right: auto; height:55px; width:55px; border-radius: 50%;
+
+}
+.activeUserIcon:hover { transform: scale(1.5); }
+
+.ecomp-right-sidebar-toggle{
+ position: absolute;
+ top: 400px;
+ right: 35px;
+}
+.ecomp-right-sidebar-toggle-btn{
+ position:relative;
+}
+.open-userbar-toggle {
+ // right: 0;
+ transition: right .25s ease-in-out;
+ -moz-transition: right .25s ease-in-out;
+ -webkit-transition: right .25s ease-in-out;
+}
+
+.close-userbar-toggle {
+ right: -36px;
+ transition: right .25s ease-in-out;
+ -moz-transition: right .25s ease-in-out;
+ -webkit-transition: right .25s ease-in-out;
+}
+
+.ecomp-right-sidebar-title{
+ font-family: Arial;
+ font-size: 14px;
+ color: #ef6f00;
+ margin-bottom:20px;
+ text-align: center;
+}
+
+.ecomp-right-sidebar-toggle a{
+ transform: rotate(-90deg);
+ z-index:2
+}
+.ecomp-right-sidebar-toggle button{
+ transform: rotate(-90deg);
+ z-index:2;
+ width: 100px!important;
+ height: 30px !important;
+ padding-bottom: 26px !important;
+ }
+ .btn:last-child {
+ margin-right: 6px !important;
+}
+
+.right-menu-button{
+ font-family: Omnes-ECOMP-W02,Arial
+} \ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.tpl.html b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.tpl.html
new file mode 100644
index 00000000..d779cae5
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.tpl.html
@@ -0,0 +1,42 @@
+<!--
+ ================================================================================
+ eCOMP Portal
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ -->
+<div id="ecomp-right-sidebar-container" class="ecomp-sidebar-container" ng-class="isOpen ? 'open-sidebar': 'close-sidebar'">
+ <div id="online-userbar" class="ecomp-sidebar-main" style="right: 0px; width:75px; padding:0px;" >
+ <div class="online-user-container" id="online-user-container" style="margin-top:45px; overflow-y:auto; overflow-x:hidden">
+ <div class="ecomp-right-sidebar-title">Online Users</div>
+ <div ng-repeat="user in userList">
+ <div class="child-row" style="height:85px;">
+ <div>
+ <a href="javascript:void(0)" ng-click="openInNewTab(user.linkQ)" ><img class="activeUserIcon" ng-src="assets/images/photo.png" alt="User Link" ></a>
+ <div style="font-family: Arial; font-size:10px; text-align: center;" >{{user.userId}}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<div id="user-sidebar-toggle" class="ecomp-right-sidebar-toggle" ng-class="isOpen ? 'open-userbar-toggle': 'close-userbar-toggle'">
+ <div id="user-sidebar-toggle-button" class="ecomp-right-sidebar-toggle-btn">
+ <button href="javascript:void(0)" ng-click="toggleSidebar()" class="btn btn-alt btn-small">
+ <span id="user-chevron-down" class="icon-chevron-down" ng-show="isOpen"></span>
+ <span id="user-chevron-up" class="icon-chevron-up" ng-hide="isOpen"><span class="right-menu-button">Users</span></span>
+ </button>
+ </div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/directives/search-users/search-users.controller.js b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.controller.js
new file mode 100644
index 00000000..e6e7661b
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.controller.js
@@ -0,0 +1,168 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+
+'use strict';
+(function () {
+ class SearchUsersCtrl {
+
+ constructor($log, usersService,adminsService, $scope,confirmBoxService) {
+
+ $scope.UserSearchsIsNull=false;
+ $scope.userExist = false;
+ this.scrollApi = {};//scrollTop directive
+ $scope.txtResults = 'result';
+
+ this.showAddUser = false;
+ this.showSearch = true;
+ this.newUser ={
+ firstName:'',
+ lastName:'',
+ emailAddress:'',
+
+ middleName:'',
+ loginId:'',
+ loginPwd:'',
+ loginPwdCheck:''
+ };
+
+ let activeRequests = [];
+ let clearReq = (req) => {
+ activeRequests.splice(activeRequests.indexOf(req), 1);
+ };
+
+ this.showAddUserSection = () => {
+ this.showAddUser = true;
+ this.showSearch = false;
+ }
+
+ this.addNewUserFun = () => {
+ if (this.newUser.loginId =='' || this.newUser.loginPwd == '' || this.newUser.firstName == '' || this.newUser.lastName =='' || this.newUser.emailAddress ==''||this.newUser.loginPwd ==''){
+ var warningMsg = "Please enter a value for all fields marked with *.";
+ confirmBoxService.showInformation(warningMsg).then(isConfirmed => {return;});
+ return;
+ } else if (this.newUser.loginPwd != this.newUser.loginPwdCheck) {
+ var warningMsg = "Passwords do not match, please try again.";
+ confirmBoxService.showInformation(warningMsg).then(isConfirmed => {return;});
+ return;
+ }
+ else {
+ // check password length complexity.
+ var warningMsg = adminsService.isComplexPassword(this.newUser.loginPwd);
+ if (warningMsg != null) {
+ confirmBoxService.showInformation(warningMsg).then(isConfirmed => {return;});
+ return;
+ }
+ } // password
+
+ adminsService.addNewUser(this.newUser,'Yes').then(res=> {
+
+ if(res.message == 'Record already exist'){
+
+ this.showAddUser = true;
+ this.showSearch = false;
+ $scope.userExist = true;
+
+ }else{
+
+ $scope.userExist = false;
+ this.selectedUser = this.newUser;
+ this.selectedUser.orgUserId = this.newUser.loginId;
+ this.searchUsersResults = [];
+ this.searchUsersResults.push(this.newUser);
+ this.showAddUser = false;
+ this.showSearch = true;
+ this.newUser ={
+ firstName:'',
+ lastName:'',
+ emailAdress:'',
+ middleName:'',
+ loginId:'',
+ loginPwd:'',
+ loginPwdCheck:''
+ };
+ this.searchUserString ='';
+ $scope.UserSearchsIsNull = false;
+ }
+
+
+ }).catch(err=> {
+ $log.error('adminsService: addNewUser error:: ', err);
+ // $scope.errMsg=err;
+ confirmBoxService.showInformation('Add New User failed: ' + err);
+
+ }).finally(() => {
+ //this.isLoadingTable = false;
+
+ });
+ }
+
+ this.searchUsers = () => {
+ this.isLoading = true;
+ if(this.searchUsersInProgress){
+ return;
+ }
+ this.selectedUser = null;
+ this.searchUsersInProgress = true;
+ this.searchUsersResults = null;
+
+ let searchUsersReq = usersService.searchUsers(this.searchUserString);
+ activeRequests.push(searchUsersReq);
+ searchUsersReq.promise().then(usersList => {
+ $log.debug('searchUsers found the following users: ', JSON.stringify(usersList));
+ this.searchUsersResults = usersList;
+ $log.debug('searchUsersResults length: ', usersList.length);
+ if (usersList.length != 1) {
+ $scope.txtResults = 'results'
+ } else {
+ $scope.txtResults = 'result'
+ }
+ $scope.UserSearchsIsNull=false;
+ }).catch(err => {
+ $log.error('SearchUsersCtrl.searchUsers: ' + err);
+ $scope.UserSearchsIsNull=true;
+ }).finally(() => {
+ this.scrollApi.scrollTop();
+ this.searchUsersInProgress = false;
+ clearReq(searchUsersReq);
+ this.isLoading = false;
+ });
+ };
+
+ let init = () => {
+ this.isLoading = false;
+ this.searchUsersInProgress = false;
+ };
+
+ this.setSelectedUser = user => {
+ this.selectedUser = user;
+ };
+
+ init();
+
+ $scope.$on('$destroy', () => {
+ activeRequests.forEach(req => {
+ req.cancel();
+ });
+ });
+ }
+ }
+ SearchUsersCtrl.$inject = ['$log', 'usersService','adminsService', '$scope','confirmBoxService'];
+ angular.module('ecompApp').controller('SearchUsersCtrl', SearchUsersCtrl);
+})();
diff --git a/ecomp-portal-FE-os/client/src/directives/search-users/search-users.less b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.less
new file mode 100644
index 00000000..2fb97867
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.less
@@ -0,0 +1,159 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+ .search-users-directive{
+ .title {
+ //.n18r;
+ .dGray18r; //AT&T Dark Gray
+ border-bottom: @blue-active 3px solid;
+
+ }
+
+ .add-user-section{
+ margin-top:0px;
+ margin-left:10px;
+ }
+
+ .input-text-new-user {
+ font-style: italic;
+ padding: 7px 10px;
+ width: 200px !important;
+ display: inline-block;
+ position: relative;
+ margin-bottom: 10px;
+ border-radius: 6px;
+ border: 1px solid #d8d8d8;
+ height: 32px;
+ border-color: slategrey !important;
+ }
+
+ .input-new-user-div{
+ display:inline-block;
+ width: 240px;
+ margin-left:10px;
+ }
+
+ .add-user-button {
+ cursor: pointer;
+ float:right;
+ width: 120px;
+
+ margin-left : 5px;
+
+ .btn-blue;
+
+ line-height: 32px;
+ height: 29px;
+ text-align: center;
+ vertical-align: middle;
+ line-height: 28px;
+
+ &::before {
+ .ico_add_user;
+ content: '\f211';
+ font-family: "Ionicons";
+ vertical-align: middle;
+ display: inline-block;
+ margin-right: 8px;
+ line-height: 16px;
+ }
+ }
+
+ .main {
+ margin: 16px;
+ .search-instructions {
+ .dGray14r;
+ margin-bottom: 8px;
+ }
+ .search {
+ .input-field {
+ display: inline-block;
+ width: 250px;
+ height: 30px;
+ }
+ .search-button {
+ .btn-blue;
+ width: 90px;
+ display: inline-block;
+ float: right;
+ }
+ }
+
+ .search-results {
+ margin-top: 10px;
+ .results-title {
+ .dGray14r;
+ margin-bottom: 8px;
+ }
+
+ .results-container {
+ height: 208px;
+ overflow-y: auto;
+ .user {
+ padding-left: 10px;
+ padding-top: 6px;
+ height: 48px;
+
+ border-top: 1px solid @portalGray;
+ border-right: 1px solid @portalGray;
+ border-left: 1px solid @portalGray;
+
+ &:last-child {
+ border-bottom: 1px solid @portalGray;
+ }
+
+ cursor: pointer;
+ &:hover {
+ background-color: @funcBkgGray;
+ }
+
+ &.selected {
+ background-color: @funcBkgGray;
+ }
+
+ .main-name {
+ .dGray14r;
+
+ }
+ .sub-job-title {
+ .gray13r;
+
+ }
+ }
+
+ }
+
+ }
+ .error-text {
+ margin-top: 25px;
+ font-weight: 400;
+ font-size: 16px;
+ text-align: left;
+ color: @err;
+ }
+
+ .no-user-found {
+ margin-top: 16px;
+ .dGray14r;
+ }
+ .add-new-user-btn{
+ margin-top:10px;
+ }
+ }
+} \ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/directives/search-users/search-users.tpl.html b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.tpl.html
new file mode 100644
index 00000000..ef659920
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.tpl.html
@@ -0,0 +1,143 @@
+<!--
+ ================================================================================
+ eCOMP Portal
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ -->
+<div class="search-users-directive">
+ <form name="searchUsersForm" novalidate>
+ <div class="title" ng-bind="searchUsers.searchTitle"></div>
+ <div class="main">
+ <div ng-if="searchUsers.showSearch">
+ <div class="search-instructions">Enter first name, last name or User ID</div>
+ <div class="search">
+ <input id="input-user-search"
+ autocomplete="off"
+ type="text"
+ name="searchString"
+ placeholder="Search"
+ ng-model="searchUsers.searchUserString"
+ ng-keyup="$event.keyCode===13 && searchUsersForm.searchString.$valid && searchUsers.searchUsers()"
+ pattern="[a-zA-Z0-9-'\s]{1,}"
+ maxlength="80"
+ required="true" auto-focus tabindex="0"/>
+
+ <button class="btn btn-alt btn-small" tabindex="2" id="button-search-users"
+ ng-class="{disabled: searchUsersForm.searchString.$invalid || searchUsers.searchUsersInProgress}"
+ ng-click="searchUsersForm.searchString.$valid && searchUsers.searchUsers()">Search
+ </button>
+
+ <button class="btn btn-alt btn-small" id="Create-New-User-button" ng-click="searchUsers.showAddUserSection()">
+ <i class="icon-people-userbookmark" aria-hidden="true"></i>&nbsp;New User
+ </button>
+
+ </div>
+
+ <span class="ecomp-spinner" ng-show="searchUsers.isLoading"></span>
+ <div ng-show="UserSearchsIsNull===false">
+ <div class="search-results"
+ ng-show="!searchUsers.isLoading
+ && searchUsers.searchUsersResults
+ && searchUsers.searchUsersResults.length">
+ <div id="search-results" ng-show="UserSearchsIsNull===false"
+ class="results-title"
+ ng-bind="'Showing ' + searchUsers.searchUsersResults.length + ' results'"></div>
+ <div class="results-container" scroll-top="searchUsers.scrollApi">
+ <div id="search-result-{{$index}}"
+ class="user"
+ ng-repeat="user in (searchUsers.searchUsersResults | orderBy:['firstName','lastName','orgUserId']) | limitTo: 100 track by $index"
+ ng-click="searchUsers.setSelectedUser(user)"
+ ng-class="{selected: user.orgUserId === searchUsers.selectedUser.orgUserId}">
+ <div id="main-name-{{$index}}" class="main-name">
+ <span id="result-first-name-{{$index}}" ng-bind="::user.firstName"></span>
+ <span id="result-last-name-{{$index}}" ng-bind="::user.lastName"></span>
+ <span id="result-uuid-{{$index}}" ng-bind="::user.orgUserId"></span></div>
+ <div id="job-title-{{$index}}" class="sub-job-title" ng-bind="::user.jobTitle"></div>
+ <br/>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="error-text"
+ id="user-search-error-403"
+ ng-show="UserSearchsIsNull===true">
+ No match found.
+ </div>
+
+ <div id="no-user-found"
+ class="no-user-found"
+ ng-show="searchUsers.searchUsersResults && searchUsers.searchUsersResults.length===0 && !searchUsers.searchUsersInProgress">
+ No users found
+ </div>
+ </div>
+
+
+ <div id="addWidget" class="add-user-section" ng-if="searchUsers.showAddUser">
+ <div>
+ <div class="input-new-user-div" >
+ <div class="">*First Name</div>
+ <input type="text" ng-model="searchUsers.newUser.firstName"/>
+ </div>
+ <div class="input-new-user-div" >
+ <div class="">Middle Name</div>
+ <input type="text" ng-model="searchUsers.newUser.middleName"/>
+ </div>
+ <div class="input-new-user-div" >
+ <div class="">*Last Name</div>
+ <input type="text" ng-model="searchUsers.newUser.lastName"/>
+ </div>
+ <div class="input-new-user-div" >
+ <div class="">*Email Address ID</div>
+ <input type="text" ng-model="searchUsers.newUser.emailAddress"/>
+ </div>
+ <div class="input-new-user-div" >
+ <div class="">*Login ID</div>
+ <input type="text" ng-model="searchUsers.newUser.loginId"/>
+ </div>
+ <div class="input-new-user-div" >
+ <div class="">*Login Password</div>
+ <input type="password" ng-model="searchUsers.newUser.loginPwd"/>
+ </div>
+ <div class="input-new-user-div" >
+ <div class="">*Confirm Login Password</div>
+ <input type="password" ng-model="searchUsers.newUser.loginPwdCheck"/>
+ </div>
+ <div ng-show="searchUsers.newUser.loginPwdCheck.length>=searchUsers.newUser.loginPwd.length&&searchUsers.newUser.loginPwdCheck.length>0&&searchUsers.newUser.loginPwd!=searchUsers.newUser.loginPwdCheck"
+ style="color: #cf2a2a; font-size: 12px;">
+ <small
+ style="position: absolute; margin-top: -6px;">The passwords do not match. Try again.
+ </small>
+ </div>
+ <div ng-show="userExist==true"
+ style="color: #cf2a2a; font-size: 12px;">
+ <small
+ style="position: absolute; margin-top: -6px;">User with same loginId already exists. Try again.
+ </small>
+ </div>
+ </div>
+ <div class="add-new-user-btn">
+ <button class="btn btn-alt btn-small" ng-click="searchUsers.addNewUserFun()">Add New User</button>
+ </div>
+ </div>
+
+
+ </div>
+
+ </div>
+
+ </form>
+</div>