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

Commit fd0c92c

Browse files
SORMAS-Foundation#2528 - Added field to define whether to show percentage by default
1 parent 417e4ab commit fd0c92c

6 files changed

Lines changed: 47 additions & 14 deletions

File tree

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class CampaignDiagramDefinitionDto extends EntityDto {
1111
private DiagramType diagramType;
1212
private List<CampaignDiagramSeries> campaignDiagramSeries;
1313
private List<CampaignDiagramSeries> campaignSeriesTotal;
14+
private boolean percentageDefault;
1415

1516
public String getDiagramId() {
1617
return diagramId;
@@ -51,4 +52,12 @@ public List<CampaignDiagramSeries> getCampaignSeriesTotal() {
5152
public void setCampaignSeriesTotal(List<CampaignDiagramSeries> campaignSeriesTotal) {
5253
this.campaignSeriesTotal = campaignSeriesTotal;
5354
}
55+
56+
public boolean isPercentageDefault() {
57+
return percentageDefault;
58+
}
59+
60+
public void setPercentageDefault(boolean percentageDefault) {
61+
this.percentageDefault = percentageDefault;
62+
}
5463
}

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/diagram/CampaignDiagramDefinition.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class CampaignDiagramDefinition extends AbstractDomainObject {
2424
private DiagramType diagramType;
2525
private List<CampaignDiagramSeries> campaignDiagramSeries;
2626
private List<CampaignDiagramSeries> campaignSeriesTotal;
27+
private boolean percentageDefault;
2728

2829
@Column
2930
public String getDiagramId() {
@@ -74,4 +75,12 @@ public void setCampaignSeriesTotal(List<CampaignDiagramSeries> campaignSeriesTot
7475
this.campaignSeriesTotal = campaignSeriesTotal;
7576
}
7677

78+
@Column
79+
public boolean isPercentageDefault() {
80+
return percentageDefault;
81+
}
82+
83+
public void setPercentageDefault(boolean percentageDefault) {
84+
this.percentageDefault = percentageDefault;
85+
}
7786
}

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/diagram/CampaignDiagramDefinitionFacadeEjb.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public CampaignDiagramDefinition fromDto(@NotNull CampaignDiagramDefinitionDto s
5252
target.setDiagramCaption(source.getDiagramCaption());
5353
target.setCampaignDiagramSeries(source.getCampaignDiagramSeries());
5454
target.setCampaignSeriesTotal(source.getCampaignSeriesTotal());
55+
target.setPercentageDefault(source.isPercentageDefault());
5556

5657
return target;
5758
}
@@ -69,6 +70,7 @@ public CampaignDiagramDefinitionDto toDto(CampaignDiagramDefinition source) {
6970
target.setDiagramCaption(source.getDiagramCaption());
7071
target.setCampaignDiagramSeries(source.getCampaignDiagramSeries());
7172
target.setCampaignSeriesTotal(source.getCampaignSeriesTotal());
73+
target.setPercentageDefault(source.isPercentageDefault());
7274

7375
return target;
7476
}

sormas-backend/src/main/resources/sql/sormas_schema.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5361,11 +5361,15 @@ ALTER TABLE cases_history
53615361
INSERT INTO schema_version (version_number, comment) VALUES (257, 'Cases > Minimal Essential Data (MED) for Switzerland #2959');
53625362

53635363
-- 2020-09-16 Add total series to campaigndiagramdefinition to calculate percentage values #2528
5364-
53655364
ALTER TABLE campaigndiagramdefinition ADD COLUMN campaignseriestotal json;
53665365
ALTER TABLE campaigndiagramdefinition_history ADD COLUMN campaignseriestotal json;
53675366

53685367
INSERT INTO schema_version (version_number, comment) VALUES (258, 'Add series total to campaigndiagramdefinition to calculate percentage values #2528');
53695368

5369+
-- 2020-10-01 Add possibility to set percentage visualization as default for campaign diagram definitions #2528
5370+
ALTER TABLE campaigndiagramdefinition ADD COLUMN percentagedefault boolean DEFAULT false;
5371+
ALTER TABLE campaigndiagramdefinition_history ADD COLUMN percentagedefault boolean DEFAULT false;
5372+
5373+
INSERT INTO schema_version (version_number, comment) VALUES (259, 'Add possibility to set percentage visualization as default for campaign diagram definitions #2528');
53705374

53715375
-- *** Insert new sql commands BEFORE this line ***

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

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,23 @@ public class CampaignDashboardDiagramComponent extends VerticalLayout {
2424

2525
private final CampaignDiagramDefinitionDto diagramDefinition;
2626

27-
private final Map<String, Map<Object, CampaignDiagramDataDto>> diagramDataBySeriesAndXAxis =
28-
new HashMap<String, Map<Object, CampaignDiagramDataDto>>();
29-
private final List<Object> axisKeys = new ArrayList<Object>();
30-
private final Map<Object, String> axisCaptions = new HashMap<Object, String>();
27+
private final Map<String, Map<Object, CampaignDiagramDataDto>> diagramDataBySeriesAndXAxis = new HashMap<>();
28+
private final List<Object> axisKeys = new ArrayList<>();
29+
private final Map<Object, String> axisCaptions = new HashMap<>();
3130
private final Map<Object, Double> totalValues;
32-
private boolean showPercentage = true;
31+
private boolean showPercentages;
3332

3433
private final HighChart campaignColumnChart;
3534

3635
public CampaignDashboardDiagramComponent(
3736
CampaignDiagramDefinitionDto diagramDefinition,
3837
List<CampaignDiagramDataDto> diagramDataList,
39-
Map<Object, Double> totalValues) {
38+
Map<Object, Double> totalValues,
39+
boolean showPercentages) {
4040

4141
this.totalValues = totalValues;
4242
this.diagramDefinition = diagramDefinition;
43+
this.showPercentages = showPercentages;
4344

4445
campaignColumnChart = new HighChart();
4546

@@ -71,7 +72,6 @@ public CampaignDashboardDiagramComponent(
7172
}
7273

7374
public void buildDiagramChart(String title) {
74-
this.showPercentage = !showPercentage;
7575
final StringBuilder hcjs = new StringBuilder();
7676

7777
//@formatter:off
@@ -92,7 +92,7 @@ public void buildDiagramChart(String title) {
9292
hcjs.append(
9393
" menuItemDefinitions: { togglePercentages: { onclick: function() { window.changeDiagramState_" + diagramDefinition.getDiagramId()
9494
+ "(); }, text: '"
95-
+ (showPercentage
95+
+ (showPercentages
9696
? I18nProperties.getCaption(Captions.dashboardShowTotalValues)
9797
: I18nProperties.getCaption(Captions.dashboardShowPercentageValues))
9898
+ "' } }, ");
@@ -130,7 +130,7 @@ public void buildDiagramChart(String title) {
130130

131131
//@formatter:off
132132
hcjs.append("yAxis: { min: 0, title: { text: ''}");
133-
if (showPercentage && totalValues != null) {
133+
if (showPercentages && totalValues != null) {
134134
hcjs.append(", max: 100, ");
135135
}
136136
if (stackMap.size() > 1) {
@@ -142,13 +142,13 @@ public void buildDiagramChart(String title) {
142142

143143
// series
144144

145-
if (stackMap.size() > 0 || (showPercentage && totalValues != null)) {
145+
if (stackMap.size() > 0 || (showPercentages && totalValues != null)) {
146146
hcjs.append("plotOptions: {");
147147

148148
if (stackMap.size() > 0) {
149149
hcjs.append("column: { stacking: 'normal'}");
150150
}
151-
if (showPercentage && totalValues != null) {
151+
if (showPercentages && totalValues != null) {
152152
hcjs.append(stackMap.size() > 0 ? ", " : "")
153153
.append("series: { dataLabels: { enabled: true, format: '{y} %', style: { fontSize: 14 + 'px' }}}");
154154
}
@@ -169,7 +169,7 @@ public void buildDiagramChart(String title) {
169169
hcjs.append("{ name:'").append(fieldName).append("', data: [");
170170
for (Object axisKey : axisKeys) {
171171
if (seriesData.containsKey(axisKey)) {
172-
if (showPercentage && totalValues != null) {
172+
if (showPercentages && totalValues != null) {
173173
double totalValue = totalValues.get(seriesData.get(axisKey).getGroupingKey());
174174
if (totalValue > 0) {
175175
hcjs.append(
@@ -199,4 +199,11 @@ public void buildDiagramChart(String title) {
199199
campaignColumnChart.setHcjs(hcjs.toString());
200200
}
201201

202+
public boolean isShowPercentages() {
203+
return showPercentages;
204+
}
205+
206+
public void setShowPercentages(boolean showPercentages) {
207+
this.showPercentages = showPercentages;
208+
}
202209
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,14 +141,16 @@ public void refreshDashboard() {
141141
final CampaignDashboardDiagramComponent diagramComponent = new CampaignDashboardDiagramComponent(
142142
campaignDiagramDefinitionDto,
143143
diagramData,
144-
dataProvider.getCampaignFormTotalValues().get(campaignDashboardDiagramDto));
144+
dataProvider.getCampaignFormTotalValues().get(campaignDashboardDiagramDto),
145+
campaignDiagramDefinitionDto.isPercentageDefault());
145146
styles.add(createDiagramStyle(diagramCssClass, diagramId));
146147
diagramComponent.setStyleName(diagramCssClass);
147148

148149
JavaScript.getCurrent()
149150
.addFunction("changeDiagramState_" + campaignDiagramDefinitionDto.getDiagramId(), (JavaScriptFunction) jsonArray -> {
150151
int index = diagramsLayout.getComponentIndex(diagramComponent);
151152
diagramsLayout.removeComponent(diagramComponent);
153+
diagramComponent.setShowPercentages(!diagramComponent.isShowPercentages());
152154
diagramComponent.buildDiagramChart(campaignDiagramDefinitionDto.getDiagramCaption());
153155
diagramsLayout.addComponent(diagramComponent, index);
154156
});

0 commit comments

Comments
 (0)