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

Commit dd4a5d8

Browse files
committed
SORMAS-Foundation#3349: added ability to switch from column to bar chart, where column is default as defined in DiagramType
1 parent 0746ca8 commit dd4a5d8

3 files changed

Lines changed: 32 additions & 1 deletion

File tree

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,8 @@ public interface Captions {
715715
String dashboardUncooperative = "dashboardUncooperative";
716716
String dashboardUnderFollowUp = "dashboardUnderFollowUp";
717717
String dashboardUnderFollowUpShort = "dashboardUnderFollowUpShort";
718+
String dashboardViewAsBarChart = "dashboardViewAsBarChart";
719+
String dashboardViewAsColumnChart = "dashboardViewAsColumnChart";
718720
String dashboardWeekBefore = "dashboardWeekBefore";
719721
String dashboardYesterday = "dashboardYesterday";
720722
String date = "date";

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,8 @@ dashboardShowDataLabels=Show data labels
792792
dashboardHideDataLabels=Hide data labels
793793
dashboardAggregatedNumber=Count
794794
dashboardProportion=Proportion (%)
795+
dashboardViewAsColumnChart=View as Column Chart
796+
dashboardViewAsBarChart=View as Bar Chart
795797

796798
defaultRegion=Default Region
797799
defaultDistrict=Default District

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.vaadin.ui.JavaScript;
2020
import com.vaadin.ui.JavaScriptFunction;
21+
import de.symeda.sormas.api.campaign.diagram.DiagramType;
2122
import org.apache.commons.collections4.CollectionUtils;
2223
import org.apache.commons.text.StringEscapeUtils;
2324

@@ -46,6 +47,7 @@ public class CampaignDashboardDiagramComponent extends VerticalLayout {
4647
private final Map<CampaignDashboardTotalsReference, Double> totalValuesMap;
4748
private boolean totalValuesWithoutStacks;
4849
private boolean showPercentages;
50+
private boolean showAsColumnChart;
4951
private boolean showDataLabels = false;
5052
private final HighChart campaignColumnChart;
5153

@@ -63,6 +65,7 @@ public CampaignDashboardDiagramComponent(
6365
totalValuesWithoutStacks = true;
6466
}
6567

68+
showAsColumnChart = DiagramType.values().length > 0 && DiagramType.COLUMN == DiagramType.values()[0];
6669
campaignColumnChart = new HighChart();
6770

6871
setSizeFull();
@@ -107,6 +110,12 @@ public CampaignDashboardDiagramComponent(
107110
buildDiagramChart(diagramDefinition.getDiagramCaption(), campaignJurisdictionLevelGroupBy);
108111
});
109112

113+
JavaScript.getCurrent()
114+
.addFunction("changeDiagramChartType_" + diagramDefinition.getDiagramId(), (JavaScriptFunction) jsonArray -> {
115+
setShowAsColumnChart(!isShowAsColumnChart());
116+
buildDiagramChart(diagramDefinition.getDiagramCaption(), campaignJurisdictionLevelGroupBy);
117+
});
118+
110119
buildDiagramChart(diagramDefinition.getDiagramCaption(), campaignJurisdictionLevelGroupBy);
111120
}
112121

@@ -116,7 +125,7 @@ public void buildDiagramChart(String title, CampaignJurisdictionLevel campaignJu
116125
//@formatter:off
117126
hcjs.append("var options = {"
118127
+ "chart:{ "
119-
+ " type: 'column', "
128+
+ " type: '" + (showAsColumnChart ? "column" : "bar") + "', "
120129
+ " backgroundColor: 'white', "
121130
+ " borderRadius: '1', "
122131
+ " borderWidth: '1', "
@@ -143,6 +152,15 @@ public void buildDiagramChart(String title, CampaignJurisdictionLevel campaignJu
143152
: I18nProperties.getCaption(Captions.dashboardShowPercentageValues))
144153
+ "' } ");
145154
}
155+
156+
hcjs.append(
157+
", toggleChartType: { onclick: function() { window.changeDiagramChartType_" + diagramDefinition.getDiagramId()
158+
+ "(); }, text: '"
159+
+ (showAsColumnChart
160+
? I18nProperties.getCaption(Captions.dashboardViewAsBarChart)
161+
: I18nProperties.getCaption(Captions.dashboardViewAsColumnChart))
162+
+ "' } ");
163+
146164
hcjs.append(" }, ");
147165

148166
hcjs.append(" buttons:{ contextButton:{ theme:{ fill: 'transparent' }, ")
@@ -154,6 +172,7 @@ public void buildDiagramChart(String title, CampaignJurisdictionLevel campaignJu
154172
hcjs.append(", 'togglePercentages'");
155173
}
156174

175+
hcjs.append(", 'toggleChartType'");
157176
hcjs.append("]");
158177

159178
final Map<String, Long> stackMap = diagramDefinition.getCampaignDiagramSeries()
@@ -336,4 +355,12 @@ public boolean isShowDataLabels() {
336355
public void setShowDataLabels(boolean showDataLabels) {
337356
this.showDataLabels = showDataLabels;
338357
}
358+
359+
public boolean isShowAsColumnChart() {
360+
return showAsColumnChart;
361+
}
362+
363+
public void setShowAsColumnChart(boolean showAsColumnChart) {
364+
this.showAsColumnChart = showAsColumnChart;
365+
}
339366
}

0 commit comments

Comments
 (0)