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

Commit df826d2

Browse files
author
Martin Wahnschaffe
authored
SORMAS-Foundation#3503 enabled buffered mode to workarround not working edit buttons (SORMAS-Foundation#3640)
Disabled selection for abstracteditablegrid Changed dashboard elements grid form binding to the diagram id Added refresh to CampaignFormsGridComponent to updated after value is picked
1 parent 4adc1c6 commit df826d2

3 files changed

Lines changed: 35 additions & 29 deletions

File tree

sormas-ui/src/main/java/de/symeda/sormas/ui/campaign/campaigns/CampaignDashboardElementsGridComponent.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,20 @@ protected Binder<CampaignDashboardElement> addColumnsBinder(List<CampaignDashboa
3636
Binder<CampaignDashboardElement> binder = new Binder<>();
3737

3838
final List<CampaignDiagramDefinitionDto> campaignDiagramDefinitionDtos = FacadeProvider.getCampaignDiagramDefinitionFacade().getAll();
39+
final Map<String, String> diagramIdCaptionMap = campaignDiagramDefinitionDtos.stream()
40+
.collect(Collectors.toMap(CampaignDiagramDefinitionDto::getDiagramId, CampaignDiagramDefinitionDto::getDiagramCaption));
3941

40-
ComboBox<DiagramIdCaption> diagramIdCaptionCombo = new ComboBox<>(
41-
Captions.campaignDashboardChart,
42-
campaignDiagramDefinitionDtos.stream()
43-
.map(cdd -> new DiagramIdCaption(cdd.getDiagramId(), cdd.getDiagramCaption()))
44-
.collect(Collectors.toList()));
42+
ComboBox<String> diagramIdCaptionCombo = new ComboBox<>(Captions.campaignDashboardChart, diagramIdCaptionMap.keySet());
43+
diagramIdCaptionCombo.setItemCaptionGenerator(diagramId -> diagramIdCaptionMap.get(diagramId));
4544
diagramIdCaptionCombo.setEmptySelectionAllowed(false);
4645

47-
final Map<String, String> diagramIdCaptionMap = campaignDiagramDefinitionDtos.stream()
48-
.collect(Collectors.toMap(CampaignDiagramDefinitionDto::getDiagramId, CampaignDiagramDefinitionDto::getDiagramCaption));
49-
50-
Binder.Binding<CampaignDashboardElement, DiagramIdCaption> diagramIdCaptionBind = binder.bind(
46+
Binder.Binding<CampaignDashboardElement, String> diagramIdCaptionBind = binder.bind(
5147
diagramIdCaptionCombo,
52-
cde -> new DiagramIdCaption(cde.getDiagramId(), diagramIdCaptionMap.get(cde.getDiagramId())),
48+
CampaignDashboardElement::getDiagramId, CampaignDashboardElement::setDiagramId);
49+
/*cde -> new DiagramIdCaption(cde.getDiagramId(), diagramIdCaptionMap.get(cde.getDiagramId())),
5350
(campaignDashboardElement, diagramIdCaption) -> {
5451
campaignDashboardElement.setDiagramId(diagramIdCaption.getDiagramId());
55-
});
52+
});*/
5653

5754
final Grid.Column<CampaignDashboardElement, String> diagramIdColumn =
5855
grid.addColumn(campaignDashboardElement -> diagramIdCaptionMap.get(campaignDashboardElement.getDiagramId()))
@@ -155,7 +152,7 @@ protected void reorderGrid() {
155152
gridItems.forEach(campaignDashboardElement -> campaignDashboardElement.setOrder(gridItems.indexOf(campaignDashboardElement)));
156153
}
157154

158-
public static class DiagramIdCaption implements Serializable {
155+
/*public static class DiagramIdCaption implements Serializable {
159156
160157
private String diagramId;
161158
private String diagramCaption;
@@ -185,6 +182,6 @@ public void setDiagramCaption(String diagramCaption) {
185182
public String toString() {
186183
return this.diagramCaption;
187184
}
188-
}
185+
}*/
189186

190187
}

sormas-ui/src/main/java/de/symeda/sormas/ui/campaign/campaigns/CampaignFormsGridComponent.java

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.vaadin.ui.ComboBox;
1010
import com.vaadin.ui.Grid;
1111

12+
import de.symeda.sormas.api.ReferenceDto;
1213
import de.symeda.sormas.api.campaign.form.CampaignFormMetaReferenceDto;
1314
import de.symeda.sormas.api.i18n.Captions;
1415
import de.symeda.sormas.api.i18n.I18nProperties;
@@ -31,7 +32,7 @@ public CampaignFormsGridComponent(
3132
protected Button.ClickListener newRowEvent() {
3233
return event -> {
3334
final ArrayList<CampaignFormMetaReferenceDto> gridItems = getItems();
34-
gridItems.add(new CampaignFormMetaReferenceDto(UUID.randomUUID().toString(), ""));
35+
gridItems.add(new CampaignFormMetaReferenceDto(null, ""));
3536
grid.setItems(gridItems);
3637
};
3738
}
@@ -40,24 +41,32 @@ protected Button.ClickListener newRowEvent() {
4041
protected Binder<CampaignFormMetaReferenceDto> addColumnsBinder(List<CampaignFormMetaReferenceDto> allElements) {
4142
final Binder<CampaignFormMetaReferenceDto> binder = new Binder<>();
4243

44+
// This is a bit hacky: The grid is used here to "select" the whole item instead of editing properties
45+
// This is done by replacing uuid and caption of the item
46+
4347
ComboBox<CampaignFormMetaReferenceDto> formCombo = new ComboBox<>(Strings.entityCampaignDataForm, allElements);
4448

4549
Binder.Binding<CampaignFormMetaReferenceDto, CampaignFormMetaReferenceDto> formBind = binder.forField(formCombo)
46-
.withValidator(
47-
campaignFormMetaReferenceDto -> campaignFormMetaReferenceDto != null && campaignFormMetaReferenceDto.getUuid() != null,
48-
I18nProperties.getValidationError(Validations.campaignDashboardDataFormValueNull))
49-
.withValidator(campaignFormMetaReferenceDto -> {
50-
ArrayList<CampaignFormMetaReferenceDto> items = getItems();
51-
return !items.contains(campaignFormMetaReferenceDto);
52-
}, I18nProperties.getValidationError(Validations.campaignDashboardDataFormValueDuplicate))
53-
.bind(campaignFormMetaReferenceDto -> campaignFormMetaReferenceDto, (bindedCampaignFormMeta, selectedCampaignFormMeta) -> {
54-
bindedCampaignFormMeta.setUuid(selectedCampaignFormMeta.getUuid());
55-
bindedCampaignFormMeta.setCaption(selectedCampaignFormMeta.getCaption());
56-
});
50+
.withValidator(
51+
campaignFormMetaReferenceDto -> campaignFormMetaReferenceDto != null && campaignFormMetaReferenceDto.getUuid() != null,
52+
I18nProperties.getValidationError(Validations.campaignDashboardDataFormValueNull))
53+
.withValidator(campaignFormMetaReferenceDto -> {
54+
ArrayList<CampaignFormMetaReferenceDto> items = getItems();
55+
return !items.contains(campaignFormMetaReferenceDto);
56+
}, I18nProperties.getValidationError(Validations.campaignDashboardDataFormValueDuplicate))
57+
.bind(campaignFormMetaReferenceDto -> new CampaignFormMetaReferenceDto(campaignFormMetaReferenceDto.getUuid(), campaignFormMetaReferenceDto.getCaption()),
58+
(bindedCampaignFormMeta, selectedCampaignFormMeta) -> {
59+
bindedCampaignFormMeta.setUuid(selectedCampaignFormMeta.getUuid());
60+
bindedCampaignFormMeta.setCaption(selectedCampaignFormMeta.getCaption());
61+
// workarround: grid doesn't refresh itself for unknown reason
62+
grid.getDataProvider().refreshAll();
63+
});
5764
formCombo.setEmptySelectionAllowed(false);
65+
5866
Grid.Column<CampaignFormMetaReferenceDto, String> formColumn =
59-
grid.addColumn(campaignFormMetaReferenceDto -> campaignFormMetaReferenceDto.getCaption())
60-
.setCaption(I18nProperties.getString(Strings.entityCampaignDataForm));
67+
grid.addColumn(ReferenceDto::getCaption)
68+
.setCaption(I18nProperties.getString(Strings.entityCampaignDataForm));
69+
6170
formColumn.setEditorBinding(formBind);
6271
return binder;
6372
}

sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractEditableGrid.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public AbstractEditableGrid(List<T> savedElements, List<T> allElements) {
6767
savedItems.addAll(savedElements);
6868
grid.setItems(new ArrayList<>(savedElements));
6969
reorderGrid();
70-
grid.setSelectionMode(Grid.SelectionMode.SINGLE);
70+
grid.setSelectionMode(Grid.SelectionMode.NONE);
7171
setSizeFull();
7272

7373
final GridRowDragger<T> gridRowDragger = new GridRowDragger<>(grid);
@@ -98,7 +98,7 @@ public AbstractEditableGrid(List<T> savedElements, List<T> allElements) {
9898
});
9999

100100
grid.getEditor().setBinder(binder);
101-
grid.getEditor().setBuffered(false);
101+
grid.getEditor().setBuffered(true);
102102
grid.getEditor().setEnabled(true);
103103

104104
final HorizontalLayout buttonLayout = new HorizontalLayout();

0 commit comments

Comments
 (0)