Skip to content

Commit cb4d9c9

Browse files
Key Involvement section showing removed people
- fixed view service endpoint logic - simplified existing multi-call logic to the single view-service call #6838
1 parent 5a7086d commit cb4d9c9

5 files changed

Lines changed: 27 additions & 73 deletions

File tree

waltz-ng/client/involvement/components/sub-section/key-people-sub-section.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
<td>
3737
<div>
3838
<span ng-repeat="p in item.persons">
39-
<waltz-entity-link entity-ref="p.person"></waltz-entity-link> -
40-
<a ng-href="mailto:{{p.person.email}}">
39+
<waltz-entity-link entity-ref="p"></waltz-entity-link> -
40+
<a ng-href="mailto:{{p.email}}">
4141
<waltz-icon name="envelope-o"></waltz-icon>
4242
</a>
4343
<span ng-show="!$last">, </span>

waltz-ng/client/involvement/components/sub-section/key-people-sub-section.js

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { initialiseData } from "../../../common";
2020

2121
import template from "./key-people-sub-section.html";
2222
import { CORE_API } from "../../../common/services/core-api-utils";
23-
import { aggregatePeopleByKeyInvolvementKind } from "../../involvement-utils";
2423

2524
const bindings = {
2625
parentEntityRef: "<",
@@ -35,28 +34,17 @@ function controller($q, serviceBroker) {
3534
const vm = initialiseData(this, initialState);
3635

3736
const refresh = () => {
38-
const involvementPromise = serviceBroker
39-
.loadViewData(
40-
CORE_API.InvolvementStore.findByEntityReference,
41-
[ vm.parentEntityRef ])
42-
.then(r => r.data);
43-
44-
const peoplePromise = serviceBroker
45-
.loadViewData(
46-
CORE_API.InvolvementStore.findPeopleByEntityReference,
47-
[ vm.parentEntityRef ])
48-
.then(r => r.data);
49-
50-
const keyInvolvementsPromise = serviceBroker
51-
.loadViewData(
52-
CORE_API.InvolvementKindStore.findKeyInvolvementKindsByEntityKind,
53-
[ vm.parentEntityRef.kind ])
54-
.then(r => r.data);
55-
56-
$q.all([involvementPromise, peoplePromise, keyInvolvementsPromise])
57-
.then(([involvements = [], people = [], keyInvolvementKinds = []]) => {
58-
vm.keyPeople = aggregatePeopleByKeyInvolvementKind(involvements, people, keyInvolvementKinds);
59-
});
37+
return serviceBroker
38+
.loadViewData(CORE_API.InvolvementViewService.findKeyInvolvementsForEntity, [vm.parentEntityRef])
39+
.then(r => r.data)
40+
.then(keyInvolvements => vm.keyPeople = _
41+
.chain(keyInvolvements)
42+
.groupBy(d => d.involvementKind.name)
43+
.map((v, k) => ({
44+
roleName: k,
45+
persons: _.map(v, d => d.person)
46+
}))
47+
.value());
6048
};
6149

6250
vm.$onChanges = () => {

waltz-ng/client/involvement/involvement-utils.js

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,54 +16,8 @@
1616
*
1717
*/
1818

19-
import _ from "lodash";
2019

2120

22-
export function aggregatePeopleInvolvements(involvements = [], people = []) {
23-
const involvementsByPerson = _
24-
.chain(involvements)
25-
.groupBy('employeeId')
26-
.mapValues(xs => _ // dedupe involvement kinds for person
27-
.chain(xs)
28-
.map(x => ({
29-
kindId: x.kindId,
30-
provenance: x.provenance,
31-
isReadOnly: x.isReadOnly
32-
}))
33-
.uniqBy(d => d.kindId)
34-
.value()
35-
)
36-
.value();
37-
38-
return _
39-
.chain(people)
40-
.map(person => ({person, involvements: involvementsByPerson[person.employeeId]}))
41-
.uniqBy(i => i.person.id)
42-
.value();
43-
}
44-
45-
46-
export function aggregatePeopleByKeyInvolvementKind(involvements, people, keyInvolvementKinds = []) {
47-
const peopleById = _.keyBy(people, "employeeId");
48-
49-
const aggregatePeopleByInvolvementKind = _
50-
.chain(involvements)
51-
.map(inv => ({
52-
person: peopleById[inv.employeeId],
53-
involvement: ({kindId: inv.kindId})
54-
}))
55-
.groupBy(inv => inv.involvement.kindId)
56-
.value();
57-
58-
return _.chain(keyInvolvementKinds)
59-
.map(kind => ({
60-
roleName: kind.name,
61-
persons: aggregatePeopleByInvolvementKind[kind.id]
62-
}))
63-
.sortBy("roleName")
64-
.value();
65-
}
66-
6721
export function mkChangeCommand(operation, personEntityRef, involvementKindId) {
6822
return {
6923
operation,

waltz-ng/client/involvement/services/involvement-view-service.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ export function store($http, BaseApiUrl) {
1010
.get(`${BASE}/entity/kind/${ref.kind}/id/${ref.id}/all-by-direction`)
1111
.then(result => result.data);
1212

13+
const findKeyInvolvementsForEntity = (ref) => $http
14+
.get(`${BASE}/entity/kind/${ref.kind}/id/${ref.id}/key`)
15+
.then(result => result.data);
16+
1317
return {
1418
findAllInvolvementsByEmployeeId,
15-
findAllInvolvementsForEntityByDirection
19+
findAllInvolvementsForEntityByDirection,
20+
findKeyInvolvementsForEntity
1621
};
1722
}
1823

@@ -35,6 +40,11 @@ export const InvolvementViewService_API = {
3540
serviceName,
3641
serviceFnName: "findAllInvolvementsForEntityByDirection",
3742
description: "find all direct, ancestor and descendent involvements for an entity"
43+
},
44+
findKeyInvolvementsForEntity: {
45+
serviceName,
46+
serviceFnName: "findKeyInvolvementsForEntity",
47+
description: "find all key involvements for an entity"
3848
}
3949
};
4050

waltz-service/src/main/java/org/finos/waltz/service/involvement/InvolvementViewService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.finos.waltz.data.involvement.InvolvementViewDao;
66
import org.finos.waltz.model.EntityKind;
77
import org.finos.waltz.model.HierarchyDirection;
8+
import org.finos.waltz.model.utils.IdUtilities;
89
import org.finos.waltz.service.involvement_kind.InvolvementKindService;
910
import org.finos.waltz.service.person.PersonService;
1011
import org.finos.waltz.model.EntityReference;
@@ -69,7 +70,7 @@ public Set<InvolvementViewItem> findAllByEmployeeId(String employeeId) {
6970
public Set<InvolvementDetail> findKeyInvolvementsForEntity(EntityReference ref) {
7071

7172
List<InvolvementKind> keyInvolvements = involvementKindService.findKeyInvolvementKindsByEntityKind(ref.kind());
72-
Map<Long, InvolvementKind> keyInvKindsById = indexBy(keyInvolvements, d -> d.id().get());
73+
Map<Long, InvolvementKind> keyInvKindsById = IdUtilities.indexByOptionalId(keyInvolvements);
7374

7475
List<Involvement> involvements = involvementService.findByEntityReference(ref);
7576
List<Person> people = involvementService.findPeopleByEntityReference(ref);
@@ -83,6 +84,7 @@ public Set<InvolvementDetail> findKeyInvolvementsForEntity(EntityReference ref)
8384
.involvementKind(keyInvKindsById.get(d.kindId()))
8485
.person(peopleByEmployeeId.get(d.employeeId()))
8586
.build())
87+
.filter(d -> ! d.person().isRemoved())
8688
.collect(Collectors.toSet());
8789
}
8890

0 commit comments

Comments
 (0)