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

Commit 3d373f1

Browse files
author
Martin Wahnschaffe
committed
Campaign dashboard definition SORMAS-Foundation#2527
Dynamically resize charts, when screen size changes Make sure charts take the exact height defined (e.g. 90%) Reduce header font size to better fit on small screens
1 parent 830a846 commit 3d373f1

3 files changed

Lines changed: 34 additions & 14 deletions

File tree

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
import java.util.function.Function;
1010
import java.util.stream.Collectors;
1111

12-
import com.vaadin.ui.CssLayout;
12+
import com.vaadin.ui.VerticalLayout;
1313

1414
import de.symeda.sormas.api.campaign.diagram.CampaignDiagramDataDto;
1515
import de.symeda.sormas.api.campaign.diagram.CampaignDiagramDefinitionDto;
1616
import de.symeda.sormas.api.campaign.diagram.CampaignDiagramSeries;
1717
import de.symeda.sormas.ui.highcharts.HighChart;
1818

19-
public class CampaignDashboardDiagramComponent extends CssLayout {
19+
@SuppressWarnings("serial")
20+
public class CampaignDashboardDiagramComponent extends VerticalLayout {
2021

2122
private CampaignDiagramDefinitionDto diagramDefinition;
2223

@@ -32,8 +33,10 @@ public CampaignDashboardDiagramComponent(CampaignDiagramDefinitionDto diagramDef
3233

3334
campaignColumnChart = new HighChart();
3435

36+
setSizeFull();
3537
campaignColumnChart.setSizeFull();
3638

39+
setMargin(false);
3740
addComponent(campaignColumnChart);
3841
// setExpandRatio(campaignColumnChart, 1);
3942

@@ -64,8 +67,6 @@ private void buildDiagramChart(String title) {
6467
hcjs.append("var options = {"
6568
+ "chart:{ "
6669
+ " type: 'column', "
67-
+ " width: $(\"#container\").height(), "
68-
+ " height: $(\"#container\").width(), "
6970
+ " backgroundColor: 'transparent', "
7071
+ " borderRadius: '1', "
7172
+ " borderWidth: '1', "
@@ -78,7 +79,7 @@ private void buildDiagramChart(String title) {
7879
+ "},"
7980
+ "legend: { backgroundColor: 'transparent', margin: 30 },"
8081
+ "colors: ['#4472C4', '#ED7D31', '#A5A5A5', '#FFC000', '#5B9BD5', '#70AD47', '#FF0000', '#6691C4','#ffba08','#519e8a','#ed254e','#39a0ed','#FF8C00','#344055','#D36135','#82d173'],"
81-
+ "title:{ text: '" + title + "'},");
82+
+ "title:{ text: '" + title + "', style: { fontSize: '15px' } },");
8283
//@formatter:on
8384

8485
Map<String, Long> stackMap = diagramDefinition.getCampaignDiagramSeriesList()

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

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,22 @@ public void refreshDashboard() {
118118
final VerticalLayout diagramsWrapper = new VerticalLayout();
119119
diagramsWrapper.setMargin(new MarginInfo(false, true, false, true));
120120
diagramsWrapper.setId(tabId);
121-
diagramsWrapper.setSizeFull();
122121

123-
final CssLayout diagramsLayout = new CssLayout();
124-
diagramsLayout.setWidth(
125-
dashboardElements.size() == 1 && gridTemplateAreaCreator.getNrOfGridAreaColumns() == 1 ? gridTemplateAreaCreator.getWidthsSum() : 100,
122+
diagramsWrapper.setWidth(
123+
dashboardElements.size() == 1 && gridTemplateAreaCreator.getGridColumns() == 1 ? gridTemplateAreaCreator.getWidthsSum() : 100,
126124
Unit.PERCENTAGE);
127-
diagramsLayout.setHeight(gridTemplateAreaCreator.getGridContainerHeight(), Unit.PERCENTAGE);
125+
diagramsWrapper.setHeight(gridTemplateAreaCreator.getGridContainerHeight(), Unit.PERCENTAGE);
126+
127+
final CssLayout diagramsLayout = new CssLayout();
128+
diagramsLayout.setSizeFull();
128129
final String gridCssClass = tabId.replaceAll("[^a-zA-Z]+", "") + generateRandomString() + GRID_CONTAINER;
129130

130-
styles.add(createDiagramGridStyle(gridCssClass, gridTemplateAreaCreator.getFormattedGridTemplate()));
131+
styles.add(
132+
createDiagramGridStyle(
133+
gridCssClass,
134+
gridTemplateAreaCreator.getFormattedGridTemplate(),
135+
gridTemplateAreaCreator.getGridRows(),
136+
gridTemplateAreaCreator.getGridColumns()));
131137
diagramsLayout.setStyleName(gridCssClass);
132138

133139
campaignFormDataMap.forEach((campaignDashboardDiagramDto, diagramData) -> {
@@ -162,10 +168,11 @@ private String generateRandomString() {
162168
return UUID.randomUUID().toString().substring(0, 6);
163169
}
164170

165-
private String createDiagramGridStyle(String gridCssClass, String gridAreasTemplate) {
171+
private String createDiagramGridStyle(String gridCssClass, String gridAreasTemplate, int rows, int columns) {
166172
final String s = "." + gridCssClass;
167173
campaignDashboardDiagramStyles.add(s);
168-
return s + "{ display: grid; grid-gap:10px; grid-auto-columns: 1fr; grid-auto-rows: 1fr; grid-template-areas:" + gridAreasTemplate + "; }";
174+
return s + "{ display: grid; grid-gap:1%; grid-auto-columns: " + (100 / columns - 1) + "%; grid-auto-rows: " + (100 / rows - 1)
175+
+ "%; grid-template-areas:" + gridAreasTemplate + "; }";
169176
}
170177

171178
private String createDiagramStyle(String diagramCssClass, String diagramId) {

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,22 @@ public Integer getWidthsSum() {
8686
return widthsSum;
8787
}
8888

89-
public Integer getNrOfGridAreaColumns() {
89+
public Integer getGridColumns() {
9090
return nrOfGridAreaColumns;
9191
}
9292

93+
public int getGridRows() {
94+
int rows = 0;
95+
for (int x = 0; x < nrOfGridAreaRows; x++) {
96+
if (rowIsNull(x, nrOfGridAreaColumns)) {
97+
continue;
98+
} else {
99+
rows++;
100+
}
101+
}
102+
return rows;
103+
}
104+
93105
private boolean rowIsNull(int x, Integer nrOfGridColumnAreas) {
94106
for (int y = 0; y < nrOfGridColumnAreas; y++) {
95107
if (grid[y][x] != null)

0 commit comments

Comments
 (0)