Bugzilla 530162-Filtermatrix/responsibility filter: Show all Person with full name (forename and lastname)
diff --git a/src/app/common/globals.ts b/src/app/common/globals.ts
index c56d3a7..d4f75b9 100644
--- a/src/app/common/globals.ts
+++ b/src/app/common/globals.ts
@@ -2,6 +2,7 @@
static FRONTEND_VERSION = '1.0.1';
static SESSION_TOKEN_TAG = 'X-XSRF-TOKEN';
static CURRENT_USER = 'CURRENT_USER';
+ static ALL_USERS = 'ALL_USERS';
static BASE_URL = '/elogbook/rest/beservice';
static BRANCHESNAME = 'BRANCHES';
static STATUSES = 'STATUSES';
diff --git a/src/app/common/session-context.spec.ts b/src/app/common/session-context.spec.ts
index e33f239..5151bfd 100644
--- a/src/app/common/session-context.spec.ts
+++ b/src/app/common/session-context.spec.ts
@@ -3,6 +3,8 @@
import { TestBed, async, inject } from '@angular/core/testing';
import { SessionContext } from './session-context';
import { User } from '../model/user';
+import { USERS } from '../test-data/users';
+import { UserMap } from 'app/common/user-map';
describe('SessionContext', () => {
beforeEach(() => {
@@ -27,4 +29,30 @@
expect(service.getCurrUser().id).toBe('44');
expect(service.getCurrUser().name).toBe('Rudi');
}));
+
+ it('create a usermapper should fails when empty', inject([SessionContext], (service: SessionContext) => {
+ let errorOccured = false;
+ try {
+ const um = service.getUserMap();
+ } catch ( ea ) {
+ errorOccured = true;
+ }
+
+ expect( errorOccured ).toBe( true );
+ }));
+
+ it('create a usermapper should work with all users set', inject([SessionContext], (service: SessionContext) => {
+ let errorOccured = false;
+ let um: UserMap;
+ service.setAllUsers(USERS);
+ try {
+ um = service.getUserMap();
+ } catch ( ea ) {
+ errorOccured = true;
+ }
+
+ expect( errorOccured ).toBe( false );
+ expect( um.findUser('otto').username ).toBe('otto');
+ }));
+
});
diff --git a/src/app/common/session-context.ts b/src/app/common/session-context.ts
index d42e2ab..ddc8a75 100644
--- a/src/app/common/session-context.ts
+++ b/src/app/common/session-context.ts
@@ -14,6 +14,7 @@
import { NotificationHistoryExpansionState } from '../model/notificationhistoryexpansionstate';
import { SortingState } from '../model/sorting-state';
import { JwtPayload } from '../model/jwt-payload';
+import { UserMap } from '../common/user-map';
@Injectable()
export class SessionContext {
@@ -29,6 +30,7 @@
public filterExpanded = false;
private notificationHistoryExpansionStates: NotificationHistoryExpansionState[];
public sortingState: SortingState;
+ public userMap: UserMap = null;
bannerMessage: BannerMessage = new BannerMessage();
@@ -62,6 +64,15 @@
localStorage.setItem(Globals.CURRENT_USER, JSON.stringify(usr));
}
+ getAllUsers(): User[] {
+ const allUsers = localStorage.getItem(Globals.ALL_USERS);
+ return JSON.parse(allUsers);
+ }
+
+ setAllUsers(allUsr: User[]) {
+ localStorage.setItem(Globals.ALL_USERS, JSON.stringify(allUsr));
+ }
+
setSortingState(gridId: string, sortState: SortingState): void {
localStorage.setItem(gridId, JSON.stringify(sortState));
}
@@ -318,4 +329,11 @@
this.globalSearchFilter.fastSearchSelected = true;
localStorage.setItem(Globals.SEARCHOBJECT, JSON.stringify(this.globalSearchFilter));
}
+
+ getUserMap(): UserMap {
+ if ( this.userMap == null ) {
+ this.userMap = new UserMap(this.getAllUsers());
+ }
+ return this.userMap;
+ }
}
diff --git a/src/app/common/user-map.ts b/src/app/common/user-map.ts
new file mode 100644
index 0000000..051a6b7
--- /dev/null
+++ b/src/app/common/user-map.ts
@@ -0,0 +1,22 @@
+import {User} from '../model/user';
+
+export class UserMap {
+ private mappedUsers: User[];
+
+ constructor( allUsers: User[] ) {
+ this.mappedUsers = [];
+ if ( !allUsers ) {
+ throw new EvalError('UserMap was created without any Users!');
+ }
+ for ( const usr of allUsers ) {
+ this.mappedUsers[ usr.username ] = usr;
+ }
+ }
+
+ public findUser( usrShort: string ): User {
+ if ( this.mappedUsers == null ) {
+ throw new EvalError( 'Usermap has not been initialized before first access');
+ }
+ return this.mappedUsers[ usrShort ];
+ }
+}
diff --git a/src/app/filter/filter.component.css b/src/app/filter/filter.component.css
index 54a007f..cf17e44 100644
--- a/src/app/filter/filter.component.css
+++ b/src/app/filter/filter.component.css
@@ -1,5 +1,5 @@
.filterCheckbox {
float: left;
padding-left: 1cm;
-}
+ }
\ No newline at end of file
diff --git a/src/app/filter/filter.component.html b/src/app/filter/filter.component.html
index de44834..2e78f2b 100644
--- a/src/app/filter/filter.component.html
+++ b/src/app/filter/filter.component.html
@@ -32,22 +32,22 @@
<td>
<span class="filterCheckbox"><input type="checkbox" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'S')" (change)="responsibilitiesSelectionChanged()"
class="responsibility-checkbox-er" [(ngModel)]="getResponsiblity(responsibilityRow,'S').isActive"></span>
- <span class="filterUsername" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'S')">{{ getResponsiblity(responsibilityRow, 'S').responsibleUser }}</span>
+ <span class="filterUsername" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'S')">{{ mapUserName(getResponsiblity(responsibilityRow, 'S').responsibleUser) }}</span>
</td>
<td>
<span class="filterCheckbox"><input type="checkbox" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'G')" (change)="responsibilitiesSelectionChanged()"
class="responsibility-checkbox-gr" [(ngModel)]="getResponsiblity(responsibilityRow,'G').isActive"></span>
- <span class="filterUsername" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'G')">{{ getResponsiblity(responsibilityRow, 'G').responsibleUser }}</span>
+ <span class="filterUsername" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'G')">{{ mapUserName(getResponsiblity(responsibilityRow, 'G').responsibleUser) }}</span>
</td>
<td>
<span class="filterCheckbox"><input type="checkbox" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'F')" (change)="responsibilitiesSelectionChanged()"
class="responsibility-checkbox-dhr" [(ngModel)]="getResponsiblity(responsibilityRow,'F').isActive"></span>
- <span class="filterUsername" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'F')">{{ getResponsiblity(responsibilityRow, 'F').responsibleUser }}</span>
+ <span class="filterUsername" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'F')">{{ mapUserName(getResponsiblity(responsibilityRow, 'F').responsibleUser) }}</span>
</td>
<td>
<span class="filterCheckbox"><input type="checkbox" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'W')" (change)="responsibilitiesSelectionChanged()"
class="responsibility-checkbox-wr" [(ngModel)]="getResponsiblity(responsibilityRow,'W').isActive"></span>
- <span class="filterUsername" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'W')">{{ getResponsiblity(responsibilityRow, 'W').responsibleUser }}</span>
+ <span class="filterUsername" *ngIf="responsibilityRow && getResponsiblity(responsibilityRow,'W')">{{ mapUserName(getResponsiblity(responsibilityRow, 'W').responsibleUser) }}</span>
</td>
</tr>
</tbody>
diff --git a/src/app/filter/filter.component.ts b/src/app/filter/filter.component.ts
index cc4a49e..83b5a7d 100644
--- a/src/app/filter/filter.component.ts
+++ b/src/app/filter/filter.component.ts
@@ -146,4 +146,14 @@
this.sessionContext.setfilterMatrix(filterMatrix);
this.messageService.matrixFilterChanged$.emit(filterMatrix.getNumFilterList());
}
+
+ mapUserName( shortUsr: string ) {
+ const usr = this.sessionContext.getUserMap().findUser(shortUsr);
+ if ( !usr ) {
+ return '[' + shortUsr + ']';
+ } else {
+ return usr.name;
+ }
+ }
+
}
diff --git a/src/app/services/base-data.service.ts b/src/app/services/base-data.service.ts
index 4d0a6e8..4af899d 100644
--- a/src/app/services/base-data.service.ts
+++ b/src/app/services/base-data.service.ts
@@ -11,7 +11,6 @@
import { Branch } from '../model/branch';
import { Status } from '../model/status';
import { GridTerritory } from '../model/gridterritory';
-// import { NotificationHistoryExpansionState } from '../model/notificationhistoryexpansionstate';
import { GRIDTERRITORIES } from '../test-data/gridterritories';
import { MessageService } from './message.service';
@@ -54,15 +53,6 @@
.map(res => super.extractData(res, this._sessionContext))
.catch((error) => { return super.handleErrorPromise(error); });
}
- /*
- public getNotificationHistoryExpansionStates(): Observable<NotificationHistoryExpansionState[]> {
- const headers = new Headers();
- const url = super.getBaseUrl() + '/notificationHistoryExpansionStates/';
- this.createCommonHeaders(headers, this._sessionContext);
- return this._http.get(url, { headers: headers })
- .map(res => super.extractData(res, this._sessionContext))
- .catch((error) => { return super.handleErrorPromise(error); });
- }
- */
+
}
diff --git a/src/app/services/jobs/base-data-loader.service.spec.ts b/src/app/services/jobs/base-data-loader.service.spec.ts
index 4f70c4f..0216df6 100644
--- a/src/app/services/jobs/base-data-loader.service.spec.ts
+++ b/src/app/services/jobs/base-data-loader.service.spec.ts
@@ -2,11 +2,12 @@
import { Status } from '../../model/status';
import { Branch } from '../../model/branch';
import { GridTerritory } from '../../model/gridterritory';
+import { User } from '../../model/user';
import { MessageService, MessageDefines } from '../../services/message.service';
import { AbstractMockObservableService } from '../../common/abstract-mock-observable.service';
import { SessionContext } from '../../common/session-context';
import { BaseDataService } from '../base-data.service';
-
+import { USERS} from '../../test-data/users';
import { BaseDataLoaderService } from './base-data-loader.service';
describe('BaseDataLoaderService', () => {
@@ -38,18 +39,31 @@
}
}
+ class MockUserService extends AbstractMockObservableService {
+ public userList: User[];
+ public userError;
+
+ getUsers() {
+ const newService = new MockDataService();
+ newService.content = this.userList;
+ newService.error = this.userError;
+ return newService;
+ }
+ }
let sessionContext: SessionContext;
let messageService: MessageService;
let mockDataService;
+ let mockUserService;
beforeEach(async(() => {
mockDataService = new MockDataService();
+ mockUserService = new MockUserService();
sessionContext = new SessionContext();
sessionContext.clearStorage();
messageService = new MessageService();
- const loaderServer = new BaseDataLoaderService( mockDataService, messageService, sessionContext );
+ const loaderServer = new BaseDataLoaderService( mockDataService, mockUserService, messageService, sessionContext );
}));
@@ -57,10 +71,12 @@
mockDataService.statusList = [{ id: 1, name: 'offen' }];
mockDataService.branchList = [{ id: 1, name: 'W', description: 'Wasser' }];
mockDataService.gridTerritoryList = [{ id: 1, name: 'MA', description: 'Mannheim', fkRefMaster: 1 }];
+ mockUserService.userList = USERS;
expect(sessionContext.getStatuses()).toBeNull();
expect(sessionContext.getBranches()).toBeNull();
expect(sessionContext.getGridTerritories()).toBeNull();
+ expect(sessionContext.getAllUsers()).toBeNull();
messageService.loginLogoff$.emit( MessageDefines.MSG_LOG_IN_SUCCEEDED );
@@ -74,5 +90,7 @@
expect(sessionContext.getGridTerritories().length).toBe(1);
expect(sessionContext.getGridTerritories()[0].name).toBe('MA');
+
+ expect(sessionContext.getAllUsers().length).toBe(3);
}));
});
diff --git a/src/app/services/jobs/base-data-loader.service.ts b/src/app/services/jobs/base-data-loader.service.ts
index 94291e7..c45cfea 100644
--- a/src/app/services/jobs/base-data-loader.service.ts
+++ b/src/app/services/jobs/base-data-loader.service.ts
@@ -1,6 +1,7 @@
import { Injectable, EventEmitter } from '@angular/core';
import { MessageService, MessageDefines } from '../message.service';
import { BaseDataService } from '../base-data.service';
+import { UserService } from '../user.service';
import { SessionContext } from '../../common/session-context';
@@ -9,6 +10,7 @@
constructor(
private baseDataService: BaseDataService,
+ private userService: UserService,
private msgService: MessageService,
private sessionContext: SessionContext
) {
@@ -40,6 +42,13 @@
error => {
console.log(error);
});
+
+
+ this.userService.getUsers()
+ .subscribe(res => this.sessionContext.setAllUsers(res),
+ error => {
+ console.log(error);
+ });
}
}