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

Commit a55a7aa

Browse files
authored
2644 - Enable the usage of population data in campaign diagrams (SORMAS-Foundation#3778)
* 2644 - fix warning message placement * SORMAS-Foundation#2644-move no-population-data-label inside chart diagram * SORMAS-Foundation#2644 - add extra checks for warning message display
1 parent d8dfb48 commit a55a7aa

3 files changed

Lines changed: 28 additions & 26 deletions

File tree

sormas-api/src/main/resources/strings.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,8 @@ errorReadingTemplate = Error reading template '%s'
250250
errorReadingDocument = Error reading document '%s'
251251
errorProcessingTemplate = Error processing template '%s'
252252
errorSormasToSormasNotEditable = Readonly data can not be shared.
253-
errorCampaignDiagramTotalsCalculationError = At least part of the percentage values for the diagram '%s' could not be calculated. Please check the diagram definitions for errors.
254-
errorNoPopulationDataLocations=No population data was found for the following locations : %s
253+
errorCampaignDiagramTotalsCalculationError=At least part of the percentage values for the diagram '%s' could not be calculated. Please check the diagram definitions for errors.
254+
errorNoPopulationDataLocations=No population data was found for the following locations: %s
255255
errorNoPopulationDataFound=There is no population data available. Switching to absolute data view
256256
errorFormIdPopulationAgeGroup=Both "Form Id" and "Population Age Group" options are set
257257
# headings

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

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@
1212
import java.util.List;
1313
import java.util.Map;
1414
import java.util.Objects;
15+
import java.util.Optional;
1516
import java.util.function.Function;
1617
import java.util.stream.Collectors;
1718

19+
import com.vaadin.ui.Alignment;
20+
import com.vaadin.ui.Label;
21+
import org.apache.commons.collections4.CollectionUtils;
1822
import org.apache.commons.text.StringEscapeUtils;
1923

2024
import com.vaadin.ui.Notification;
@@ -136,7 +140,28 @@ public void buildDiagramChart(String title, boolean isCommunityGrouping) {
136140
+ "title:{ text: '" + StringEscapeUtils.escapeEcmaScript(title) + "', style: { fontSize: '15px' } },");
137141
//@formatter:on
138142

143+
noPopulationDataLocations.clear();
144+
if (Objects.nonNull(totalValuesMap)) {
145+
for (Object key : axisCaptions.keySet()) {
146+
if ((Double.valueOf(0)).equals(totalValuesMap.get(new CampaignDashboardTotalsReference(key, null)))) {
147+
noPopulationDataLocations.add(axisCaptions.get(key));
148+
}
149+
}
150+
}
151+
139152
hcjs.append("xAxis: {");
153+
if (Objects.nonNull(diagramDefinition.getCampaignSeriesTotal())) {
154+
Optional isPopulationGroupUsed =
155+
diagramDefinition.getCampaignSeriesTotal().stream().filter(series -> Objects.nonNull(series.getPopulationGroup())).findFirst();
156+
if (showPercentages && isPopulationGroupUsed.isPresent() && !CollectionUtils.isEmpty(this.getNoPopulationDataLocations())) {
157+
hcjs.append(
158+
"title: {" + " text:'"
159+
+ String.format(
160+
I18nProperties.getString(Strings.errorNoPopulationDataLocations),
161+
String.join(", ", this.getNoPopulationDataLocations()))
162+
+ "' },");
163+
}
164+
}
140165
if (stackMap.size() > 1) {
141166
hcjs.append("opposite: true,");
142167
}
@@ -175,14 +200,6 @@ public void buildDiagramChart(String title, boolean isCommunityGrouping) {
175200
}
176201

177202
hcjs.append("series: [");
178-
noPopulationDataLocations.clear();
179-
if (Objects.nonNull(totalValuesMap)) {
180-
for (Object key : axisCaptions.keySet()) {
181-
if ((Double.valueOf(0)).equals(totalValuesMap.get(new CampaignDashboardTotalsReference(key, null)))) {
182-
noPopulationDataLocations.add(axisCaptions.get(key));
183-
}
184-
}
185-
}
186203
for (CampaignDiagramSeries series : diagramDefinition.getCampaignDiagramSeries()) {
187204
String seriesKey = series.getFormId() + series.getFieldId();
188205
if (!diagramDataBySeriesAndXAxis.containsKey(seriesKey))

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

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.symeda.sormas.ui.dashboard.campaigns;
22

33
import java.util.ArrayList;
4+
import java.util.HashMap;
45
import java.util.List;
56
import java.util.Map;
67
import java.util.Objects;
@@ -183,8 +184,6 @@ private void refreshDiagrams(Page page, VerticalLayout layout, String tabId, Str
183184
gridTemplateAreaCreator.getGridRows(),
184185
gridTemplateAreaCreator.getGridColumns()));
185186
diagramsLayout.setStyleName(gridCssClass);
186-
Label noPopulationLocationsLabel = new Label();
187-
VerticalLayout locationLayout = new VerticalLayout();
188187

189188
campaignFormDataMap.forEach((campaignDashboardDiagramDto, diagramData) -> {
190189
final CampaignDiagramDefinitionDto campaignDiagramDefinitionDto = campaignDashboardDiagramDto.getCampaignDiagramDefinitionDto();
@@ -208,20 +207,6 @@ private void refreshDiagrams(Page page, VerticalLayout layout, String tabId, Str
208207
diagramComponent
209208
.buildDiagramChart(campaignDiagramDefinitionDto.getDiagramCaption(), Objects.nonNull(dataProvider.getDistrict()));
210209
diagramsLayout.addComponent(diagramComponent, index);
211-
if (diagramComponent.isShowPercentages()) {
212-
if (!diagramComponent.getNoPopulationDataLocations().isEmpty()) {
213-
214-
noPopulationLocationsLabel.setValue(
215-
String.format(
216-
I18nProperties.getString(Strings.errorNoPopulationDataLocations),
217-
String.join(",", diagramComponent.getNoPopulationDataLocations())));
218-
locationLayout.addComponent(noPopulationLocationsLabel);
219-
locationLayout.setComponentAlignment(noPopulationLocationsLabel, Alignment.MIDDLE_CENTER);
220-
diagramsLayout.addComponent(locationLayout);
221-
}
222-
} else {
223-
locationLayout.removeComponent(noPopulationLocationsLabel);
224-
}
225210
});
226211

227212
diagramsLayout.addComponent(diagramComponent);

0 commit comments

Comments
 (0)