diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/HeatMapController.java b/src/main/java/org/olat/modules/quality/analysis/ui/HeatMapController.java index 69c2a3df3603dc6ce02c65c7e13119a9a11594c8..2c2fa742f8f5f89ca534a57f36bd8b2cdbc64a6a 100644 --- a/src/main/java/org/olat/modules/quality/analysis/ui/HeatMapController.java +++ b/src/main/java/org/olat/modules/quality/analysis/ui/HeatMapController.java @@ -365,56 +365,25 @@ public class HeatMapController extends FormBasicController implements Filterable private void loadHeatMap() { GroupBy lastGroupBy = getLastGroupBy(multiGroupBy); + String groupNameNA = translate("heatmap.not.specified"); List<String> identifiers = sliders.stream().map(SliderWrapper::getIdentifier).collect(toList()); GroupedStatistics<GroupedStatistic> statistics = loadHeatMapStatistics(); Set<MultiKey> keys = statistics.getMultiKeys(); List<HeatMapRow> rows = new ArrayList<>(keys.size()); for (MultiKey multiKey : keys) { - List<String> groupNames = new ArrayList<>(6); - boolean found = true; + if (MultiKey.none().equals(multiKey)) continue; - if (multiGroupBy.getGroupBy1() != null) { - String groupName1 = translate("heatmap.not.specified"); - if (multiKey.getKey1() != null) { - groupName1 = groupByNames.getName(new GroupByKey(multiGroupBy.getGroupBy1(), multiKey.getKey1())); - if (groupName1 == null) { - found = false; - } - } - groupNames.add(groupName1); - } - if (multiGroupBy.getGroupBy2() != null) { - String groupName2 = translate("heatmap.not.specified"); - if (multiKey.getKey2() != null) { - groupName2 = groupByNames.getName(new GroupByKey(multiGroupBy.getGroupBy2(), multiKey.getKey2())); - if (groupName2 == null) { - found = false; - } - } - groupNames.add(groupName2); - } - if (multiGroupBy.getGroupBy3() != null) { - String groupName3 = translate("heatmap.not.specified"); - if (multiKey.getKey3() != null) { - groupName3 = groupByNames.getName(new GroupByKey(multiGroupBy.getGroupBy3(), multiKey.getKey3())); - if (groupName3 == null) { - found = false; - } - } - groupNames.add(groupName3); - } + List<String> groupNames = getGroupNames(multiKey, groupNameNA); - if (found) { - // Iterate over the identifiers to sort the statistics according to the headers. - List<GroupedStatistic> rowStatistics = new ArrayList<>(); - for (String identifier : identifiers) { - GroupedStatistic rowStatistic = statistics.getStatistic(identifier, multiKey); - rowStatistics.add(rowStatistic); - } - boolean hideTrend = GroupBy.DATA_COLLECTION.equals(lastGroupBy) || MultiKey.none().equals(multiKey); - HeatMapRow row = new HeatMapRow(multiKey, groupNames, rowStatistics, !hideTrend); - rows.add(row); + // Iterate over the identifiers to sort the statistics according to the headers. + List<GroupedStatistic> rowStatistics = new ArrayList<>(); + for (String identifier : identifiers) { + GroupedStatistic rowStatistic = statistics.getStatistic(identifier, multiKey); + rowStatistics.add(rowStatistic); } + boolean hideTrend = GroupBy.DATA_COLLECTION.equals(lastGroupBy); + HeatMapRow row = new HeatMapRow(multiKey, groupNames, rowStatistics, !hideTrend); + rows.add(row); } if (insufficientOnly) { @@ -430,6 +399,26 @@ public class HeatMapController extends FormBasicController implements Filterable tableEl.reset(true, true, true); } + private List<String> getGroupNames(MultiKey multiKey, String groupNameNA) { + List<String> groupNames = new ArrayList<>(3); + if (multiGroupBy.getGroupBy1() != null) { + groupNames.add(getGroupName(multiKey, 1, groupNameNA)); + } + if (multiGroupBy.getGroupBy2() != null) { + groupNames.add(getGroupName(multiKey, 2, groupNameNA)); + } + if (multiGroupBy.getGroupBy3() != null) { + groupNames.add(getGroupName(multiKey, 3, groupNameNA)); + } + return groupNames; + } + + private String getGroupName(MultiKey mKey, int index, String groupNameNA) { + GroupByKey groupByAndKey = getGroupByAndKey(multiGroupBy, mKey, index); + String groupName = groupByNames.getName(groupByAndKey); + return StringHelper.containsNonWhitespace(groupName)? groupName: groupNameNA; + } + public List<ColumnConfig> getColumnConfigs() { List<ColumnConfig> columConfigs = new ArrayList<>(); if (multiGroupBy.getGroupBy1() != null) {