From 6e4007ee1feaab0450aa05634a267b40c987c39f Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Tue, 15 Jan 2019 10:36:56 -0700 Subject: [PATCH] SHIBUI-1062 Implemented action required tab, added styling --- .../resources/i18n/messages_en.properties | 3 + ui/src/app/admin/admin.component.ts | 3 +- .../component/access-request.component.html | 89 +++++++++++-------- .../component/access-request.component.ts | 13 ++- .../component/user-management.component.html | 5 +- .../component/user-management.component.ts | 13 ++- .../container/action-required.component.ts | 4 +- .../container/admin-management.component.ts | 4 +- ui/src/app/admin/reducer/index.ts | 4 + ui/src/app/core/reducer/index.ts | 4 + .../container/dashboard.component.html | 8 +- .../container/dashboard.component.ts | 13 +++ ui/src/app/dashboard/dashboard.module.ts | 4 +- 13 files changed, 111 insertions(+), 56 deletions(-) diff --git a/backend/src/main/resources/i18n/messages_en.properties b/backend/src/main/resources/i18n/messages_en.properties index 1c207ee38..21a343f61 100644 --- a/backend/src/main/resources/i18n/messages_en.properties +++ b/backend/src/main/resources/i18n/messages_en.properties @@ -378,11 +378,14 @@ label.nameid-formats-type=NameID Type label.select-filter-type=Select Filter Type label.admin=Admin +label.action-required=Action Required +label.user-access-request=User Access Request label.user-maintenance=User Maintenance label.user-id=UserId label.email=Email label.role=Role label.delete=Delete? +label.delete-request=Delete Request message.delete-user-title=Delete User? message.delete-user-body=You are requesting to delete a user. If you complete this process the user will be removed. This cannot be undone. Do you wish to continue? diff --git a/ui/src/app/admin/admin.component.ts b/ui/src/app/admin/admin.component.ts index 01ebbea7e..038d281b8 100644 --- a/ui/src/app/admin/admin.component.ts +++ b/ui/src/app/admin/admin.component.ts @@ -3,6 +3,7 @@ import { LoadRoleRequest } from '../core/action/configuration.action'; import * as fromRoot from '../app.reducer'; import { Store } from '@ngrx/store'; +import { LoadAdminRequest } from './action/collection.action'; @Component({ selector: 'admin-page', @@ -15,6 +16,6 @@ export class AdminComponent implements OnInit { ) { } ngOnInit(): void { - this.store.dispatch(new LoadRoleRequest()); + this.store.dispatch(new LoadAdminRequest()); } } diff --git a/ui/src/app/admin/component/access-request.component.html b/ui/src/app/admin/component/access-request.component.html index c9242578e..a9b96b586 100644 --- a/ui/src/app/admin/component/access-request.component.html +++ b/ui/src/app/admin/component/access-request.component.html @@ -7,51 +7,62 @@ -
-
-
-
-
-
- UserId: + +
+
+

There are no new user requests at this time.

+
+
+
+ +
+
+
+
+
+
+ UserId +
+
{{ user.username }}
+
+ Email +
+
{{ user.emailAddress }}
-
{{ user.username }}
-
- Email: +
+
+
+ Name +
+
{{ user.firstName }} {{ user.lastName }}
+ +
+ +
-
{{ user.emailAddress }}
-
-
-
- Name: -
-
{{ user.firstName }} {{ user.lastName }}
-
- Role: -
-
- -
+
+
-
- -
-
+
\ No newline at end of file diff --git a/ui/src/app/admin/component/access-request.component.ts b/ui/src/app/admin/component/access-request.component.ts index 1be85f37a..e082761de 100644 --- a/ui/src/app/admin/component/access-request.component.ts +++ b/ui/src/app/admin/component/access-request.component.ts @@ -1,5 +1,8 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core'; import { UserManagementComponent } from './user-management.component'; +import * as fromAdmin from '../reducer'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; @Component({ selector: 'access-request-component', @@ -7,4 +10,10 @@ import { UserManagementComponent } from './user-management.component'; templateUrl: './access-request.component.html', styleUrls: [] }) -export class AccessRequestComponent extends UserManagementComponent {} +export class AccessRequestComponent extends UserManagementComponent implements OnInit { + + ngOnInit(): void { + this.users$ = this.store.select(fromAdmin.getAllNewUsers); + this.hasUsers$ = this.users$.pipe(map(userList => userList.length > 0)); + } +} diff --git a/ui/src/app/admin/component/user-management.component.html b/ui/src/app/admin/component/user-management.component.html index 3f0706a7b..86ecfb6e0 100644 --- a/ui/src/app/admin/component/user-management.component.html +++ b/ui/src/app/admin/component/user-management.component.html @@ -8,7 +8,10 @@
- +
+

There are no users configured in the system for you to manage.

+
+
diff --git a/ui/src/app/admin/component/user-management.component.ts b/ui/src/app/admin/component/user-management.component.ts index b4c31ad3b..356f062ba 100644 --- a/ui/src/app/admin/component/user-management.component.ts +++ b/ui/src/app/admin/component/user-management.component.ts @@ -10,6 +10,7 @@ import { UpdateAdminRequest, RemoveAdminRequest } from '../action/collection.act import { Admin } from '../model/admin'; import { DeleteUserDialogComponent } from '../component/delete-user-dialog.component'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { map } from 'rxjs/operators'; @Component({ selector: 'user-management', @@ -17,17 +18,23 @@ import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; templateUrl: './user-management.component.html', styleUrls: [] }) -export class UserManagementComponent { +export class UserManagementComponent implements OnInit { users$: Observable; roles$: Observable; + hasUsers$: Observable; + constructor( protected store: Store, protected modal: NgbModal ) { - this.users$ = this.store.select(fromAdmin.getAllAdmins); - this.roles$ = this.store.select(fromCore.getRoles); + this.roles$ = this.store.select(fromCore.getUserRoles); + } + + ngOnInit(): void { + this.users$ = this.store.select(fromAdmin.getAllConfiguredUsers); + this.hasUsers$ = this.users$.pipe(map(userList => userList.length > 0)); } setUserRole(user: Admin, change: string): void { diff --git a/ui/src/app/admin/container/action-required.component.ts b/ui/src/app/admin/container/action-required.component.ts index e920c81e1..8f7aab548 100644 --- a/ui/src/app/admin/container/action-required.component.ts +++ b/ui/src/app/admin/container/action-required.component.ts @@ -15,7 +15,5 @@ export class ActionRequiredPageComponent { constructor( private store: Store - ) { - this.store.dispatch(new LoadNewUsersRequest()); - } + ) {} } diff --git a/ui/src/app/admin/container/admin-management.component.ts b/ui/src/app/admin/container/admin-management.component.ts index e9dd5ff68..2773eadc2 100644 --- a/ui/src/app/admin/container/admin-management.component.ts +++ b/ui/src/app/admin/container/admin-management.component.ts @@ -15,7 +15,5 @@ export class AdminManagementPageComponent { constructor( private store: Store - ) { - this.store.dispatch(new LoadAdminRequest()); - } + ) {} } diff --git a/ui/src/app/admin/reducer/index.ts b/ui/src/app/admin/reducer/index.ts index 4cecad337..31a5265ea 100644 --- a/ui/src/app/admin/reducer/index.ts +++ b/ui/src/app/admin/reducer/index.ts @@ -31,3 +31,7 @@ export const getSelectedAdmin = createSelector(getAdminEntities, getSelectedAdmi return selectedId && entities[selectedId]; }); export const getAdminIds = createSelector(getCollectionState, fromCollection.selectAdminIds); +export const getAllNewUsers = createSelector(getAllAdmins, (admins) => admins.filter(a => a.role === 'ROLE_NONE')); +export const getAllConfiguredUsers = createSelector(getAllAdmins, (admins) => admins.filter(a => a.role !== 'ROLE_NONE')); + +export const getTotalActionsRequired = createSelector(getAllNewUsers, (users) => users.length); diff --git a/ui/src/app/core/reducer/index.ts b/ui/src/app/core/reducer/index.ts index 9d9f91dec..74333224d 100644 --- a/ui/src/app/core/reducer/index.ts +++ b/ui/src/app/core/reducer/index.ts @@ -39,5 +39,9 @@ export const getVersionInfo = createSelector(getVersionState, fromVersion.getVer export const getVersionLoading = createSelector(getVersionState, fromVersion.getVersionIsLoading); export const getVersionError = createSelector(getVersionState, fromVersion.getVersionError); +export const filterRoles = (roles: string[]) => roles.filter(r => r !== 'ROLE_NONE'); + export const getConfigState = createSelector(getCoreFeature, getConfigStateFn); export const getRoles = createSelector(getConfigState, fromConfig.getRoles); + +export const getUserRoles = createSelector(getRoles, filterRoles); diff --git a/ui/src/app/dashboard/container/dashboard.component.html b/ui/src/app/dashboard/container/dashboard.component.html index f1b289aed..fe8b9e983 100644 --- a/ui/src/app/dashboard/container/dashboard.component.html +++ b/ui/src/app/dashboard/container/dashboard.component.html @@ -1,4 +1,4 @@ -
+
UserId