Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 0746ca8

Browse files
authored
Merge pull request SORMAS-Foundation#4172 from hzi-braunschweig/3163-allow_custom_series_caption
SORMAS-Foundation#3163 allow custom series caption
2 parents 3239c22 + 787129e commit 0746ca8

2 files changed

Lines changed: 27 additions & 5 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/campaign/diagram/CampaignDiagramSeries.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import java.io.Serializable;
44
import java.util.Objects;
55

6+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
67
import de.symeda.sormas.api.AgeGroup;
78

9+
@JsonIgnoreProperties(ignoreUnknown = true)
810
public class CampaignDiagramSeries implements Serializable {
911

1012
private static final long serialVersionUID = 1420672609912364060L;
@@ -14,6 +16,7 @@ public class CampaignDiagramSeries implements Serializable {
1416
private String referenceValue;
1517
private String stack;
1618
private AgeGroup populationGroup;
19+
private String caption;
1720

1821
public CampaignDiagramSeries() {
1922
}
@@ -57,6 +60,14 @@ public void setStack(String stack) {
5760
this.stack = stack;
5861
}
5962

63+
public String getCaption() {
64+
return caption;
65+
}
66+
67+
public void setCaption(String caption) {
68+
this.caption = caption;
69+
}
70+
6071
/**
6172
* Needed. Otherwise hibernate will persist whenever loading,
6273
* because hibernate types creates new instances that aren't equal.
@@ -72,6 +83,7 @@ public boolean equals(Object o) {
7283
&& Objects.equals(formId, that.formId)
7384
&& Objects.equals(referenceValue, that.referenceValue)
7485
&& Objects.equals(stack, that.stack)
86+
&& Objects.equals(caption, that.caption)
7587
&& Objects.equals(populationGroup, that.populationGroup);
7688
}
7789

@@ -85,6 +97,6 @@ public void setPopulationGroup(AgeGroup populationGroup) {
8597

8698
@Override
8799
public int hashCode() {
88-
return Objects.hash(fieldId, formId, referenceValue, stack, populationGroup);
100+
return Objects.hash(fieldId, formId, referenceValue, stack, caption, populationGroup);
89101
}
90102
}

sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/campaigns/CampaignDashboardDiagramComponent.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,13 @@
3232
import de.symeda.sormas.api.i18n.I18nProperties;
3333
import de.symeda.sormas.api.i18n.Strings;
3434
import de.symeda.sormas.ui.highcharts.HighChart;
35+
import org.slf4j.Logger;
36+
import org.slf4j.LoggerFactory;
3537

36-
@SuppressWarnings("serial")
3738
public class CampaignDashboardDiagramComponent extends VerticalLayout {
3839

40+
private static final Logger LOG = LoggerFactory.getLogger(CampaignDashboardDiagramComponent.class);
41+
3942
private final CampaignDiagramDefinitionDto diagramDefinition;
4043

4144
private final Map<String, Map<Object, CampaignDiagramDataDto>> diagramDataBySeriesAndXAxis = new HashMap<>();
@@ -155,8 +158,8 @@ public void buildDiagramChart(String title, CampaignJurisdictionLevel campaignJu
155158

156159
final Map<String, Long> stackMap = diagramDefinition.getCampaignDiagramSeries()
157160
.stream()
158-
.filter(campaignDiagramSeries -> campaignDiagramSeries.getStack() != null)
159161
.map(CampaignDiagramSeries::getStack)
162+
.filter(Objects::nonNull)
160163
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
161164

162165
//@formatter:off
@@ -231,8 +234,7 @@ private void appendSeries(CampaignJurisdictionLevel campaignJurisdictionLevelGro
231234

232235
Map<Object, CampaignDiagramDataDto> seriesData = diagramDataBySeriesAndXAxis.get(seriesKey);
233236
Collection<CampaignDiagramDataDto> values = seriesData.values();
234-
Iterator<CampaignDiagramDataDto> iterator = values.iterator();
235-
String fieldName = (iterator.hasNext() ? iterator.next().getFieldCaption() : seriesKey);
237+
String fieldName = assembleFieldname(values, series, seriesKey);
236238
if (showPercentages) {
237239
if (campaignJurisdictionLevelGroupBy == CampaignJurisdictionLevel.COMMUNITY) {
238240
fieldName = I18nProperties.getString(Strings.populationDataByCommunity);
@@ -250,6 +252,14 @@ private void appendSeries(CampaignJurisdictionLevel campaignJurisdictionLevelGro
250252
hcjs.append("]");
251253
}
252254

255+
private String assembleFieldname(final Collection<CampaignDiagramDataDto> values, final CampaignDiagramSeries series, final String defaultValue) {
256+
if (series.getCaption() != null && !series.getCaption().isEmpty()) {
257+
return series.getCaption();
258+
}
259+
Iterator<CampaignDiagramDataDto> iterator = values.iterator();
260+
return iterator.hasNext() ? iterator.next().getFieldCaption() : defaultValue;
261+
}
262+
253263
private void appendData(
254264
boolean isCommunityGrouping,
255265
StringBuilder hcjs,

0 commit comments

Comments
 (0)