Skip to content

Commit 1c4781b

Browse files
authored
Merge pull request #7038 from davidwatkins73/waltz-7037-grid-stat-vals
Report Grids: entity stats have view options
2 parents 2c73f8a + 8278ce7 commit 1c4781b

4 files changed

Lines changed: 42 additions & 19 deletions

File tree

waltz-data/src/main/java/org/finos/waltz/data/report_grid/ReportGridDao.java

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2284,50 +2284,62 @@ private Set<ReportGridCell> fetchEntityStatisticData(GenericSelector selector,
22842284
if (isEmpty(cols)) {
22852285
return emptySet();
22862286
} else {
2287-
Map<Long, Long> statisticDefinitionIdToColIdMap = indexBy(
2287+
Map<Long, ReportGridFixedColumnDefinition> statisticDefinitionIdToColMap = indexBy(
22882288
cols,
2289-
ReportGridFixedColumnDefinition::columnEntityId,
2290-
ReportGridFixedColumnDefinition::gridColumnId);
2289+
ReportGridFixedColumnDefinition::columnEntityId);
22912290

22922291
return dsl
22932292
.select(esv.ENTITY_ID,
22942293
esv.STATISTIC_ID,
22952294
esv.OUTCOME,
2295+
esv.VALUE,
22962296
esv.REASON)
22972297
.from(esv)
2298-
.where(esv.STATISTIC_ID.in(statisticDefinitionIdToColIdMap.keySet())
2298+
.where(esv.STATISTIC_ID.in(statisticDefinitionIdToColMap.keySet())
22992299
.and(esv.CURRENT.eq(true))
23002300
.and(esv.ENTITY_KIND.eq(selector.kind().name()))
23012301
.and(esv.ENTITY_ID.in(selector.selector())))
23022302
.orderBy(esv.OUTCOME)
23032303
.fetchGroups(
23042304
r -> tuple(
23052305
r.get(esv.ENTITY_ID),
2306-
statisticDefinitionIdToColIdMap.get(r.get(esv.STATISTIC_ID))),
2306+
statisticDefinitionIdToColMap.get(r.get(esv.STATISTIC_ID))),
23072307
r -> tuple(
23082308
r.get(esv.OUTCOME),
2309+
r.get(esv.VALUE),
23092310
r.get(esv.REASON)))
23102311
.entrySet()
23112312
.stream()
23122313
.map(kv -> {
2314+
Tuple2<Long, ReportGridFixedColumnDefinition> cellKey = kv.getKey();
2315+
List<Tuple3<String, String, String>> cellValues = kv.getValue();
23132316

2314-
String outcomeString = kv.getValue()
2317+
String outcomeString = cellValues
23152318
.stream()
2316-
.map(t -> t.v1)
2317-
.sorted(comparing(StringUtilities::lower))
2319+
.sorted(comparing(t -> StringUtilities.lower(t.v1)))
2320+
.map(t -> {
2321+
AdditionalColumnOptions opts = cellKey.v2.additionalColumnOptions();
2322+
if (opts == AdditionalColumnOptions.VALUES_ONLY) {
2323+
return t.v2;
2324+
} else if (opts == AdditionalColumnOptions.VALUES_AND_OUTCOMES) {
2325+
return String.format("%s = %s", t.v1, t.v2);
2326+
} else {
2327+
return t.v1;
2328+
}
2329+
})
23182330
.collect(joining("; "));
23192331

2320-
List<Tuple2<String, String>> rowsInComment = CollectionUtilities.sort(
2321-
kv.getValue(),
2332+
List<Tuple3<String, String, String>> rowsInComment = CollectionUtilities.sort(
2333+
cellValues,
23222334
comparing(t -> lower(safeTrim(t.v1))));
23232335

23242336
return ImmutableReportGridCell
23252337
.builder()
2326-
.subjectId(kv.getKey().v1)
2327-
.columnDefinitionId(kv.getKey().v2)
2338+
.subjectId(cellKey.v1)
2339+
.columnDefinitionId(cellKey.v2.gridColumnId())
23282340
.textValue(outcomeString)
23292341
.comment(toHtmlTable(
2330-
asList("Outcome", "Reason"),
2342+
asList("Outcome", "Value", "Reason"),
23312343
rowsInComment))
23322344
.build();
23332345
})

waltz-model/src/main/java/org/finos/waltz/model/report_grid/AdditionalColumnOptions.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ public enum AdditionalColumnOptions {
1818
ROLLUP(asSet(EntityKind.DATA_TYPE)),
1919
COMPLETED_AND_APPROVED_ONLY(asSet(EntityKind.SURVEY_INSTANCE, EntityKind.SURVEY_QUESTION)),
2020
EXCLUDE_WITHDRAWN(asSet(EntityKind.SURVEY_INSTANCE, EntityKind.SURVEY_QUESTION)),
21-
PRIMARY(asSet(EntityKind.MEASURABLE));
21+
PRIMARY(asSet(EntityKind.MEASURABLE)),
22+
VALUES_ONLY(asSet(EntityKind.ENTITY_STATISTIC)),
23+
VALUES_AND_OUTCOMES(asSet(EntityKind.ENTITY_STATISTIC));
24+
2225

2326
private final Set<EntityKind> allowedKinds;
2427

waltz-ng/client/report-grid/components/svelte/ReportGridFilters.svelte

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,12 +199,12 @@
199199
class="clickable waltz-visibility-parent"
200200
class:isActiveFilter={isActive($activeSummaries, summary)}>
201201
<td>
202-
<span class="waltz-visibility-child-30">
203-
<Icon name={isActive($activeSummaries, summary) ? 'check' : 'arrow-left'}/>
204-
</span>
202+
<span class="waltz-visibility-child-30">
203+
<Icon name={isActive($activeSummaries, summary) ? 'check' : 'arrow-left'}/>
204+
</span>
205205
<span class="column-name">
206-
{getDisplayNameForColumn(summary.column)}
207-
</span>
206+
{getDisplayNameForColumn(summary.column)}
207+
</span>
208208
<ul style="display: inline-block"
209209
class="list-inline column-values-summary">
210210
{#each summary.optionSummaries as option}

waltz-ng/client/report-grid/components/svelte/report-grid-utils.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ export const additionalColumnOptions = {
6363
PRIMARY: {
6464
key: "PRIMARY",
6565
name: "Primary",
66+
},
67+
VALUES_ONLY: {
68+
key: "VALUES_ONLY",
69+
name: "Values Only",
70+
},
71+
VALUES_AND_OUTCOMES: {
72+
key: "VALUES_AND_OUTCOMES",
73+
name: "Values and Outcomes",
6674
}
6775
}
6876

0 commit comments

Comments
 (0)