diff options
Diffstat (limited to 'ecomp-portal-FE-common/client/app/views/portal-admin')
7 files changed, 446 insertions, 0 deletions
diff --git a/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.controller.js b/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.controller.js new file mode 100644 index 00000000..54575d39 --- /dev/null +++ b/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.controller.js @@ -0,0 +1,95 @@ +/*-
+ * ================================================================================
+ * 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 12/8/15.
+ */
+'use strict';
+(function () {
+ class NewPortalAdminModalCtrl {
+ constructor($log, portalAdminsService, $scope, confirmBoxService) {
+
+ let init = () => {
+ this.isSaving = false;
+ /* istanbul ignore if */
+ if($scope.ngDialogData && $scope.ngDialogData.selectedUser && $scope.ngDialogData.dialogState){
+ this.selectedUser = $scope.ngDialogData.selectedUser;
+ this.dialogState = $scope.ngDialogData.dialogState;
+ }else{
+ this.selectedUser = null;
+ this.dialogState = 1;
+ }
+ //this.searchUsersInProgress = false;
+ //this.showNewAdminAppDropdown = false;
+ $log.info('NewPortalAdminModalCtrl:: initiated');
+ };
+
+ this.addNewPortalAdmin = () => {
+ confirmBoxService.makeAdminChanges('Are you sure you want to add "' + this.selectedUser.firstName + ' ' + this.selectedUser.lastName + '" as a Portal Admin?')
+ .then(isConfirmed => {
+ if(isConfirmed) {
+ if (!this.selectedUser || !this.selectedUser.orgUserId) {
+ $log.error('NewPortalAdminModalCtrl::makeAdminChanges: No portal admin or ID... cannot add');
+ return;
+ }
+ portalAdminsService.addPortalAdmin(this.selectedUser.orgUserId)
+ .then(() => {
+ $log.debug("NewPortalAdminModalCtrl::addNewPortalAdmin: portal admin added successfully");
+ $scope.closeThisDialog(true);
+ }).catch(err => {
+ if(err.status === 409) { //Conflict
+ confirmBoxService.showInformation('This user already exists as a portal admin!').then(function (isConfirmed) {
+ $scope.closeThisDialog(true);
+ });
+ } else {
+ confirmBoxService.showInformation('There was a unknown problem adding the portal admin. ' + 'Please try again later. Error Status: '+ err.status).then(function (isConfirmed) {
+ $scope.closeThisDialog(true);
+ });
+ }
+ });
+ }
+ }).catch(err => {
+ confirmBoxService.showInformation('There was a unknown problem adding the portal admin. ' + 'Please try again later. Error Status: '+ err.status).then(function (isConfirmed) {
+ $scope.closeThisDialog(true);
+ });
+ $log.error('portalAdminsService.addPortalAdmin error status: '+ err.status);
+ });
+ };
+
+ /**
+ * this function set the selected user
+ * @param user: selected user object
+ */
+ this.setSelectedUser = (user) => {
+ $log.debug('NewPortalAdminModalCtrl::setSelectedUser: selected user: ', user);
+ this.selectedUser = user;
+ };
+
+ init();
+
+ $scope.$on('$stateChangeStart', e => {
+ //Disable navigation when modal is opened
+ //**Nabil - note: this will cause the history back state to be replaced with current state
+ e.preventDefault();
+ });
+ }
+ }
+ NewPortalAdminModalCtrl.$inject = ['$log', 'portalAdminsService', '$scope', 'confirmBoxService'];
+ angular.module('ecompApp').controller('NewPortalAdminModalCtrl', NewPortalAdminModalCtrl);
+})();
diff --git a/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.controller.spec.js b/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.controller.spec.js new file mode 100644 index 00000000..3841a2b3 --- /dev/null +++ b/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.controller.spec.js @@ -0,0 +1,19 @@ +/*-
+ * ================================================================================
+ * 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.
+ * ================================================================================
+ */
diff --git a/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.modal.html b/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.modal.html new file mode 100644 index 00000000..d328db82 --- /dev/null +++ b/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.modal.html @@ -0,0 +1,36 @@ +<!--
+ ================================================================================
+ 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="new-admin-modal">
+
+ <div class="search-users">
+
+ <search-users search-title="Add New Portal Admin"
+ selected-user="newPortalAdmin.selectedUser"></search-users>
+
+ <div class="dialog-control">
+
+ <button id="pa-search-users-button-save" class="btn btn-alt btn-small"
+ ng-click="newPortalAdmin.selectedUser && newPortalAdmin.addNewPortalAdmin()"
+ ng-class="{disabled: !newPortalAdmin.selectedUser}">Save
+ </button>
+ <button id="pa-search-users-button-cancel" class="btn btn-alt btn-small" ng-click="closeThisDialog()">Cancel</button>
+ </div>
+ </div>
+</div>
diff --git a/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.modal.less b/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.modal.less new file mode 100644 index 00000000..f8e1960c --- /dev/null +++ b/ecomp-portal-FE-common/client/app/views/portal-admin/new-portal-admin/new-portal-admin.modal.less @@ -0,0 +1,80 @@ +.new-portal-admin-modal { + height: 430px; + + .search-users { + } + + .admin-app-roles { + .title { + //.n18r; + .dGray18r; //AT&T Dark Gray + border-bottom: @blue-active 3px solid; + + } + + .app-roles-main { + margin-top: 16px; + .app-roles-main-title { + .dGray14r; + margin-bottom: 8px; + .left { + display: inline-block; + } + .right { + display: inline-block; + color: @portalDBlue; + float: right; + cursor: pointer; + } + } + + .select-input{ + width: 460px; + } + + .new-administrated-app { + height: 30px; + line-height: 30px; + + border: 1px solid @portalGray; + margin-bottom: 8px; + border-radius: 2px; + padding-left: 6px; + padding-top: 0; + width: 100%; + .dGray14r; + } + + .admin-roles-list { + height: 240px; + overflow-y: auto; + } + + .administrated-application { + width: 460px; + height: 30px; + border: 1px solid @portalGray; + margin-bottom: 8px; + border-radius: 2px; + padding: 6px; + .dGray14r; + display: inline-block; + + } + + .delete-application { + .ico_trash_default; + display: inline-block; + vertical-align: 4px; + cursor: pointer; + position: relative; + top: 6px; + color: transparent; + margin-left: 8px; + } + + } + + } +} + diff --git a/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admin-controller.js b/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admin-controller.js new file mode 100644 index 00000000..0051e708 --- /dev/null +++ b/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admin-controller.js @@ -0,0 +1,110 @@ +/*-
+ * ================================================================================
+ * 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 PortalAdminsCtrl {
+ constructor($log, portalAdminsService, ngDialog, confirmBoxService) {
+
+ let updateTableData = () => {
+ this.isLoadingTable = true;
+ portalAdminsService.getPortalAdmins().then(result=> {
+ $log.debug('PortalAdminsCtrl::updateTableData: result: ' + JSON.stringify(result));
+ if (!result || !result.length) {
+ $log.info('PortalAdminsCtrl::updateTableData: no Portal Admins err handling');
+ this.portalAdminsTableData = [];
+ return;
+ }
+ this.portalAdminsTableData = result;
+ }).catch(err=> {
+ $log.error('PortalAdminsCtrl::updateTableData error :',err);
+ confirmBoxService.showInformation('There was a problem retrieving the portal admins. ' +
+ 'Please try again later. Error: ' + err.status).then(isConfirmed => {});
+
+ }).finally(() => {
+ this.isLoadingTable = false;
+ });
+ };
+
+ let init = () => {
+ $log.info('portalAdminsService.getPortalAdmins::initializing...');
+ this.isLoadingTable = false;
+
+ /*Table general configuration params*/
+ this.searchString= '';
+ /*Table data*/
+ this.portalAdminsTableHeaders = ['First Name', 'Last Name', 'User ID', 'Delete'];
+ this.portalAdminsTableData = [];
+ updateTableData();
+ };
+
+ init();
+
+ this.removePortalAdmin = pAdmin => {
+ $log.debug('PortalAdminsCtrl::removePortalAdmin: pAdmin = ' + JSON.stringify(pAdmin));
+ confirmBoxService.deleteItem(pAdmin.firstName + ' ' + pAdmin.lastName )
+ .then(isConfirmed => {
+ if(isConfirmed){
+ if(!pAdmin || !pAdmin.userId){
+ $log.error('PortalAdminsCtrl::removePortalAdmin No portal admin or ID... cannot delete');
+ return;
+ }
+ portalAdminsService.removePortalAdmin(pAdmin.userId,pAdmin.loginId).then(() => {
+ $log.info("PortalAdminsCtrl::removePortalAdmin removed admin");
+ init();
+ }).catch(err => {
+ $log.error('PortalAdminsCtrl::removePortalAdmin.deleteItem error: '+ err);
+ confirmBoxService.showInformation('There was a problem deleting this portal admins. ' +
+ 'Please try again later. Error: ' + err.status).then(isConfirmed => {});
+ });
+ }
+ }).catch(err => {
+ $log.error('PortalAdminsCtrl::removePortalAdmin.deleteItem error: '+ err);
+ });
+ };
+
+ this.openAddNewPortalAdminModal = (user) => {
+ let data = null;
+ if(user){
+ data = {
+ dialogState: 2,
+ selectedUser:{
+ orgUserId: user.orgUserId,
+ firstName: user.firstName,
+ lastName: user.lastName
+ }
+ }
+ }
+ ngDialog.open({
+ templateUrl: 'app/views/portal-admin/new-portal-admin/new-portal-admin.modal.html',
+ controller: 'NewPortalAdminModalCtrl',
+ controllerAs: 'newPortalAdmin',
+ data: data
+ }).closePromise.then(needUpdate => {
+ if(needUpdate.value === true){
+ $log.debug('PortalAdminsCtrl::openAddNewPortalAdminModal: updating Portal Admin table data...');
+ updateTableData();
+ }
+ });
+ };
+ }
+ }
+ PortalAdminsCtrl.$inject = ['$log', 'portalAdminsService', 'ngDialog', 'confirmBoxService'];
+ angular.module('ecompApp').controller('PortalAdminsCtrl', PortalAdminsCtrl);
+})();
diff --git a/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admin.tpl.html b/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admin.tpl.html new file mode 100644 index 00000000..43f830cc --- /dev/null +++ b/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admin.tpl.html @@ -0,0 +1,64 @@ +<!--
+ ================================================================================
+ 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="w-ecomp-main">
+ <div class="w-ecomp-main-container" >
+ <div class="portal-admins-page-main" id="page-content" >
+ <div id="title" class="w-ecomp-main-view-title">
+ <h1 class="heading-page" >Portal Admins</h1>
+ </div>
+ <div class="portal-admins-table">
+ <div class="table-control">
+ <div class="table-control-fields">
+ <input id="input-table-search" placeholder="Search in entire table" class="table-search-field" type="text" data-ng-model="portalAdmin.searchString">
+ </div>
+ <div class="table-control-buttons">
+ <button class="btn btn-alt btn-small" ng-click="portalAdmin.openAddNewPortalAdminModal()"><i class="icon-people-userbookmark" aria-hidden="true"></i> Add Portal Admin</button>
+ </div>
+ </div>
+
+ <span class="ecomp-spinner" ng-show="portalAdmin.isLoadingTable"></span>
+
+ <div b2b-table table-data="portalAdmin.portalAdminsTableData" ng-hide="portalAdmin.isLoadingTable" search-string="portalAdmin.searchString" class="b2b-table-div">
+ <table>
+ <thead b2b-table-row type="header">
+ <tr >
+ <th b2b-table-header key="firstName" sortable="true" id="col1">First Name</th>
+ <th b2b-table-header key="lastName" sortable="true" id="col2">Last Name</th>
+ <th b2b-table-header key="loginId" sortable="true" id="col3">User ID</th>
+ <th b2b-table-header key="" sortable="falses" id="col4">Delete</th>
+ </tr>
+ </thead>
+ <tbody b2b-table-row type="body" row-repeat="rowData in portalAdmin.portalAdminsTableData">
+ <tr>
+ <td b2b-table-body id="rowheader_t1_{{$index}}" headers="col1" ng-bind="rowData.firstName"></td>
+ <td b2b-table-body headers="rowheader_t1_{{$index}} col2" ng-bind="rowData.lastName"></td>
+ <td b2b-table-body headers="rowheader_t1_{{$index}} col3" ng-bind="rowData.loginId"></td>
+ <td b2b-table-body headers="rowheader_t1_{{$index}} col4">
+ <span class="icon-misc-trash" ng-click="portalAdmin.removePortalAdmin(rowData)"></span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+
+</div>
diff --git a/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admins.less b/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admins.less new file mode 100644 index 00000000..0471aee9 --- /dev/null +++ b/ecomp-portal-FE-common/client/app/views/portal-admin/portal-admins.less @@ -0,0 +1,42 @@ +.portal-admins-page-main { + .bg_portalWhite;//white for 1702 + position: @page-main-position; + top: @page-main-top; + left: @page-main-left; + right: @page-main-right; + bottom: @page-main-bottom; + padding-top: @padding-top; + overflow-y: @page-main-overflow-y; + padding-left: @padding-left-side; + +#input-table-search::-webkit-input-placeholder, +{ +font-style: italic; + color: #D7D7D7; + +} + .portal-admins-table { + width: @table-width; + //margin-left: @table-margin-left; + margin:auto; + .table-control { + .table-dropdown-filter{ + width: @table-dropdown-filter-width; + display: @table-dropdown-filter-display; + } + } + + .table-body { + cursor: pointer; + } + } + + .delete-user{ + .ico_trash_default; + } + + .portal-add-button { + width: 160px; + } +} + |