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

Commit 23b52ab

Browse files
authored
SORMAS-Foundation#3069 modify campaign selector for campaign data view (SORMAS-Foundation#3281)
* SORMAS-Foundation#3069 modify campaign selector for campaign data view * SORMAS-Foundation#3069 fix query * SORMAS-Foundation#3069 fix change requests * SORMAS-Foundation#3069 fix column width * SORMAS-Foundation#3069 fix captions * SORMAS-Foundation#3069 fix change requests * SORMAS-Foundation#3069 fix imports
1 parent 91d7265 commit 23b52ab

10 files changed

Lines changed: 91 additions & 33 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/campaign/form/CampaignFormMetaFacade.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package de.symeda.sormas.api.campaign.form;
22

3-
import javax.ejb.Remote;
43
import java.io.IOException;
54
import java.util.Date;
65
import java.util.List;
76

8-
import de.symeda.sormas.api.campaign.data.CampaignFormDataDto;
7+
import javax.ejb.Remote;
98

109
@Remote
1110
public interface CampaignFormMetaFacade {
@@ -28,6 +27,8 @@ CampaignFormMetaDto buildCampaignFormMetaFromJson(String formId, String language
2827

2928
CampaignFormMetaDto getCampaignFormMetaByUuid(String campaignFormUuid);
3029

30+
List<CampaignFormMetaReferenceDto> getCampaignFormMetasAsReferencesByCampaign(String uuid);
31+
3132
List<CampaignFormMetaDto> getAllAfter(Date campaignFormMetaChangeDate);
3233

3334
List<String> getAllUuids();

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
@@ -139,10 +139,12 @@ public interface Captions {
139139
String Campaign_creatingUser = "Campaign.creatingUser";
140140
String Campaign_description = "Campaign.description";
141141
String Campaign_district = "Campaign.district";
142+
String Campaign_edit = "Campaign.edit";
142143
String Campaign_endDate = "Campaign.endDate";
143144
String Campaign_name = "Campaign.name";
144145
String Campaign_region = "Campaign.region";
145146
String Campaign_startDate = "Campaign.startDate";
147+
String Campaign_viewForms = "Campaign.viewForms";
146148
String campaignActiveCampaigns = "campaignActiveCampaigns";
147149
String campaignAdditionalChart = "campaignAdditionalChart";
148150
String campaignAdditionalForm = "campaignAdditionalForm";

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ Campaign.description=Description
211211
Campaign.startDate=Start date
212212
Campaign.endDate=End date
213213
Campaign.creatingUser=Creating user
214+
Campaign.viewForms=Open
215+
Campaign.edit=Edit
214216
Campaign.area=Area
215217
Campaign.region=Region
216218
Campaign.district=District

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/form/CampaignFormMetaFacadeEjb.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,14 @@ public List<CampaignFormMetaDto> getByUuids(List<String> uuids) {
143143
return service.getByUuids(uuids).stream().map(campaignFormMeta -> toDto(campaignFormMeta)).collect(Collectors.toList());
144144
}
145145

146+
@Override
147+
public List<CampaignFormMetaReferenceDto> getCampaignFormMetasAsReferencesByCampaign(String uuid) {
148+
return service.getCampaignFormMetasAsReferencesByCampaign(uuid);
149+
}
150+
146151
@Override
147-
public void validateAllFormMetas() {
148-
List<CampaignFormMeta> forms = service.getAll();
152+
public void validateAllFormMetas() {
153+
List<CampaignFormMeta> forms = service.getAll();
149154

150155
for (CampaignFormMeta form : forms) {
151156
try {

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/form/CampaignFormMetaService.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
import javax.persistence.criteria.CriteriaBuilder;
99
import javax.persistence.criteria.CriteriaQuery;
1010
import javax.persistence.criteria.From;
11+
import javax.persistence.criteria.Join;
1112
import javax.persistence.criteria.Predicate;
1213
import javax.persistence.criteria.Root;
1314

15+
import de.symeda.sormas.api.campaign.form.CampaignFormMetaReferenceDto;
1416
import de.symeda.sormas.backend.campaign.Campaign;
1517
import de.symeda.sormas.backend.common.AbstractAdoService;
1618
import de.symeda.sormas.backend.common.AbstractDomainObject;
@@ -52,4 +54,15 @@ public List<CampaignFormMeta> getAllAfter(Date since, User user) {
5254
List<CampaignFormMeta> resultList = em.createQuery(cq).getResultList();
5355
return resultList;
5456
}
57+
58+
public List<CampaignFormMetaReferenceDto> getCampaignFormMetasAsReferencesByCampaign(String uuid) {
59+
CriteriaBuilder cb = em.getCriteriaBuilder();
60+
CriteriaQuery<CampaignFormMetaReferenceDto> cq = cb.createQuery(CampaignFormMetaReferenceDto.class);
61+
Root<Campaign> campaignRoot = cq.from(Campaign.class);
62+
Join<Campaign, CampaignFormMeta> campaignFormMetaJoin = campaignRoot.join(Campaign.CAMPAIGN_FORM_METAS);
63+
Predicate filter = cb.equal(campaignRoot.get(Campaign.UUID), uuid);
64+
cq = cq.where(filter);
65+
cq.multiselect(campaignFormMetaJoin.get(CampaignFormMeta.UUID), campaignFormMetaJoin.get(CampaignFormMeta.FORM_NAME));
66+
return em.createQuery(cq).getResultList();
67+
}
5568
}

sormas-ui/src/main/java/de/symeda/sormas/ui/MainScreen.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import de.symeda.sormas.api.user.UserRole;
5151
import de.symeda.sormas.api.utils.DataHelper;
5252
import de.symeda.sormas.ui.campaign.AbstractCampaignView;
53+
import de.symeda.sormas.ui.campaign.campaigndata.AbstractCampaignDataView;
5354
import de.symeda.sormas.ui.campaign.campaigndata.CampaignDataView;
5455
import de.symeda.sormas.ui.campaign.campaigns.CampaignsView;
5556
import de.symeda.sormas.ui.caze.CasesView;
@@ -205,8 +206,8 @@ public View getView(String viewName) {
205206
if (permitted(FeatureType.CAMPAIGNS, UserRight.CAMPAIGN_VIEW)) {
206207
AbstractCampaignView.registerViews(navigator);
207208
menu.addView(
208-
CampaignsView.class,
209-
AbstractCampaignView.ROOT_VIEW_NAME,
209+
CampaignDataView.class,
210+
AbstractCampaignDataView.ROOT_VIEW_NAME,
210211
I18nProperties.getCaption(Captions.mainMenuCampaigns),
211212
VaadinIcons.CLIPBOARD_CHECK);
212213
}

sormas-ui/src/main/java/de/symeda/sormas/ui/campaign/AbstractCampaignView.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,23 @@ protected AbstractCampaignView(String viewName) {
4343
public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, String params) {
4444
menu.removeAllViews();
4545

46-
menu.addView(
47-
CampaignsView.VIEW_NAME,
48-
I18nProperties.getPrefixCaption("View", CampaignsView.VIEW_NAME.replaceAll("/", ".") + ".short", ""),
49-
params);
5046
menu.addView(
5147
CampaignDataView.VIEW_NAME,
5248
I18nProperties.getPrefixCaption("View", CampaignDataView.VIEW_NAME.replaceAll("/", ".") + ".short", ""),
5349
params);
50+
menu.addView(
51+
CampaignsView.VIEW_NAME,
52+
I18nProperties.getPrefixCaption("View", CampaignsView.VIEW_NAME.replaceAll("/", ".") + ".short", ""),
53+
params);
54+
5455
}
5556

5657
public static void registerViews(Navigator navigator) {
57-
navigator.addView(CampaignsView.VIEW_NAME, CampaignsView.class);
58-
navigator.addView(CampaignView.VIEW_NAME, CampaignView.class);
5958
navigator.addView(CampaignDataView.VIEW_NAME, CampaignDataView.class);
6059
navigator.addView(CampaignFormDataView.VIEW_NAME, CampaignFormDataView.class);
60+
navigator.addView(CampaignsView.VIEW_NAME, CampaignsView.class);
61+
navigator.addView(CampaignView.VIEW_NAME, CampaignView.class);
62+
6163
}
6264

6365
@Override

sormas-ui/src/main/java/de/symeda/sormas/ui/campaign/campaigndata/CampaignDataView.java

Lines changed: 48 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import java.io.IOException;
2121
import java.util.List;
22+
import java.util.Objects;
2223
import java.util.function.Consumer;
2324

2425
import javax.naming.NamingException;
@@ -30,6 +31,7 @@
3031
import com.vaadin.server.StreamResource;
3132
import com.vaadin.ui.Alignment;
3233
import com.vaadin.ui.Button;
34+
import com.vaadin.ui.ComboBox;
3335
import com.vaadin.ui.HorizontalLayout;
3436
import com.vaadin.ui.VerticalLayout;
3537
import com.vaadin.ui.Window;
@@ -38,6 +40,7 @@
3840

3941
import de.symeda.sormas.api.FacadeProvider;
4042
import de.symeda.sormas.api.Language;
43+
import de.symeda.sormas.api.campaign.CampaignReferenceDto;
4144
import de.symeda.sormas.api.campaign.data.CampaignFormDataCriteria;
4245
import de.symeda.sormas.api.campaign.data.CampaignFormElementImportance;
4346
import de.symeda.sormas.api.campaign.form.CampaignFormElement;
@@ -68,7 +71,7 @@ public class CampaignDataView extends AbstractCampaignView {
6871
private final CampaignDataGrid grid;
6972
private CampaignFormDataFilterForm filterForm;
7073
private Button importCampaignButton;
71-
74+
private ComboBox campaignCombo;
7275
protected OptionGroup campaignFormElementImportance;
7376

7477
public static final String ONLY_IMPORTANT_FORM_ELEMENTS = "onlyImportantFormElements";
@@ -78,6 +81,17 @@ public CampaignDataView() {
7881
super(VIEW_NAME);
7982

8083
criteria = ViewModelProviders.of(getClass()).get(CampaignFormDataCriteria.class);
84+
85+
campaignCombo = new ComboBox(" ");
86+
List<CampaignReferenceDto> campaigns = FacadeProvider.getCampaignFacade().getAllCampaignsAsReference();
87+
campaignCombo.setItems(campaigns);
88+
final CampaignReferenceDto lastStartedCampaign = FacadeProvider.getCampaignFacade().getLastStartedCampaign();
89+
if (lastStartedCampaign != null && campaigns.contains(lastStartedCampaign)) {
90+
campaignCombo.setValue(lastStartedCampaign);
91+
}
92+
criteria.setCampaign((CampaignReferenceDto) campaignCombo.getValue());
93+
CssStyles.style(campaignCombo, CssStyles.SOFT_REQUIRED);
94+
addHeaderComponent(campaignCombo);
8195
grid = new CampaignDataGrid(criteria);
8296

8397
VerticalLayout mainLayout = new VerticalLayout();
@@ -149,12 +163,7 @@ public CampaignDataView() {
149163
PopupButton newFormButton = ButtonHelper.createIconPopupButton(Captions.actionNewForm, VaadinIcons.PLUS_CIRCLE, newFormLayout);
150164
newFormButton.setId("new-form");
151165

152-
for (CampaignFormMetaReferenceDto campaignForm : FacadeProvider.getCampaignFormMetaFacade().getAllCampaignFormMetasAsReferences()) {
153-
Button campaignFormButton = ButtonHelper
154-
.createButton(campaignForm.toString(), e -> ControllerProvider.getCampaignController().createCampaignDataForm(campaignForm));
155-
campaignFormButton.setWidth(100, Unit.PERCENTAGE);
156-
newFormLayout.addComponent(campaignFormButton);
157-
}
166+
createNewFormLayout(newFormLayout);
158167

159168
addHeaderComponent(newFormButton);
160169
}
@@ -167,7 +176,22 @@ public CampaignDataView() {
167176

168177
importCampaignButton = ButtonHelper.createIconPopupButton(Captions.actionImport, VaadinIcons.PLUS_CIRCLE, importFormLayout);
169178
importCampaignButton.setId("campaign-form-import");
170-
for (CampaignFormMetaReferenceDto campaignForm : FacadeProvider.getCampaignFormMetaFacade().getAllCampaignFormMetasAsReferences()) {
179+
createImportLayout(importFormLayout);
180+
addHeaderComponent(importCampaignButton);
181+
campaignCombo.addValueChangeListener(e -> {
182+
importFormLayout.removeAllComponents();
183+
newFormLayout.removeAllComponents();
184+
if (!Objects.isNull(campaignCombo.getValue())) {
185+
createImportLayout(importFormLayout);
186+
createNewFormLayout(newFormLayout);
187+
}
188+
});
189+
addComponent(mainLayout);
190+
}
191+
192+
private void createImportLayout(VerticalLayout importFormLayout) {
193+
for (CampaignFormMetaReferenceDto campaignForm : FacadeProvider.getCampaignFormMetaFacade()
194+
.getCampaignFormMetasAsReferencesByCampaign(((CampaignReferenceDto) campaignCombo.getValue()).getUuid())) {
171195

172196
Button campaignFormButton = ButtonHelper.createButton(campaignForm.toString(), e -> {
173197
Window popupWindow = null;
@@ -182,9 +206,16 @@ public CampaignDataView() {
182206
campaignFormButton.setWidth(100, Unit.PERCENTAGE);
183207
importFormLayout.addComponent(campaignFormButton);
184208
}
185-
addHeaderComponent(importCampaignButton);
209+
}
186210

187-
addComponent(mainLayout);
211+
private void createNewFormLayout(VerticalLayout newFormLayout) {
212+
for (CampaignFormMetaReferenceDto campaignForm : FacadeProvider.getCampaignFormMetaFacade()
213+
.getCampaignFormMetasAsReferencesByCampaign(((CampaignReferenceDto) campaignCombo.getValue()).getUuid())) {
214+
Button campaignFormButton = ButtonHelper
215+
.createButton(campaignForm.toString(), e -> ControllerProvider.getCampaignController().createCampaignDataForm(campaignForm));
216+
campaignFormButton.setWidth(100, Unit.PERCENTAGE);
217+
newFormLayout.addComponent(campaignFormButton);
218+
}
188219
}
189220

190221
private void createImportanceFilterSwitch() {
@@ -215,11 +246,13 @@ public CampaignFormDataFilterForm createFilterBar() {
215246
navigateTo(null, true);
216247
});
217248
filterForm.addApplyHandler(e -> {
218-
if (!navigateTo(criteria, false)) {
219-
grid.reload();
220-
}
249+
criteria.setCampaign((CampaignReferenceDto) campaignCombo.getValue());
250+
grid.reload();
251+
});
252+
campaignCombo.addValueChangeListener(e -> {
253+
criteria.setCampaign((CampaignReferenceDto) campaignCombo.getValue());
254+
grid.reload();
221255
});
222-
223256
filterForm.setFormMetaChangedCallback(createFormMetaChangedCallback());
224257

225258
return filterForm;
@@ -272,6 +305,7 @@ public void enter(ViewChangeEvent event) {
272305
if (params.startsWith("?")) {
273306
params = params.substring(1);
274307
criteria.fromUrlParams(params);
308+
campaignCombo.setValue(criteria.getCampaign());
275309
}
276310

277311
applyingCriteria = true;

sormas-ui/src/main/java/de/symeda/sormas/ui/campaign/campaigndata/CampaignFormDataFilterForm.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,6 @@ protected String[] getMainFilterLocators() {
5858

5959
@Override
6060
protected void addFields() {
61-
ComboBox cbCampaign = addField(
62-
FieldConfiguration.withCaptionAndPixelSized(
63-
CampaignFormDataCriteria.CAMPAIGN,
64-
I18nProperties.getPrefixCaption(CampaignFormDataDto.I18N_PREFIX, CampaignFormDataDto.CAMPAIGN),
65-
200));
66-
cbCampaign.addItems(FacadeProvider.getCampaignFacade().getAllCampaignsAsReference());
6761

6862
cbCampaignForm = addField(
6963
FieldConfiguration.withCaptionAndPixelSized(
@@ -72,7 +66,7 @@ protected void addFields() {
7266
200));
7367
cbCampaignForm.addItems(FacadeProvider.getCampaignFormMetaFacade().getAllCampaignFormMetasAsReferences());
7468

75-
FieldHelper.addSoftRequiredStyle(cbCampaign, cbCampaignForm);
69+
FieldHelper.addSoftRequiredStyle(cbCampaignForm);
7670

7771
if (formMetaChangedCallback != null) {
7872
cbCampaignForm.addValueChangeListener(e -> {
@@ -180,4 +174,5 @@ public void setFormMetaChangedCallback(Consumer<CampaignFormMetaReferenceDto> fo
180174
cbCampaignForm.addValueChangeListener(e -> formMetaChangedCallback.accept((CampaignFormMetaReferenceDto) e.getProperty().getValue()));
181175
}
182176
}
177+
183178
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.vaadin.shared.data.sort.SortDirection;
2525
import com.vaadin.ui.renderers.DateRenderer;
2626
import com.vaadin.ui.renderers.HtmlRenderer;
27+
2728
import de.symeda.sormas.api.FacadeProvider;
2829
import de.symeda.sormas.api.Language;
2930
import de.symeda.sormas.api.campaign.CampaignCriteria;
@@ -86,6 +87,8 @@ public CampaignGrid(CampaignCriteria criteria) {
8687
for (Column<?, ?> column : getColumns()) {
8788
column.setCaption(I18nProperties.getPrefixCaption(CampaignIndexDto.I18N_PREFIX, column.getId(), column.getCaption()));
8889
}
90+
getColumn(EDIT_BTN_ID).setWidth(40);
91+
getColumn(VIEW_FORMS_BTN_ID).setWidth(40);
8992

9093
addItemClickListener(
9194
new ShowDetailsListener<>(VIEW_FORMS_BTN_ID, e -> ControllerProvider.getCampaignController().navigateToCampaignData(e.getUuid())));

0 commit comments

Comments
 (0)