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

Commit 7e8ec15

Browse files
Change event/eventParticipant/case/contact header SORMAS-Foundation#3062 (SORMAS-Foundation#3643)
* Change event/eventParticipant/case/contact header SORMAS-Foundation#3062 * Add padding to the new event/eventParticipant/case/contact title layout SORMAS-Foundation#3062 * Add case person name to the contact view title SORMAS-Foundation#3062 * Add event period to the event view title when there's an endate SORMAS-Foundation#3062 * Simplify enum toString pattern SORMAS-Foundation#3062 * Use the long version label of the contact classification enum SORMAS-Foundation#3062
1 parent 0e4044f commit 7e8ec15

10 files changed

Lines changed: 142 additions & 24 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactDto.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,12 @@ public void setReportLatLonAccuracy(Float reportLatLonAccuracy) {
494494
}
495495

496496
public ContactReferenceDto toReference() {
497-
return new ContactReferenceDto(getUuid());
497+
return new ContactReferenceDto(
498+
getUuid(),
499+
getPerson().getFirstName(),
500+
getPerson().getLastName(),
501+
getCaze() != null ? getCaze().getFirstName() : null,
502+
getCaze() != null ? getCaze().getLastName() : null);
498503
}
499504

500505
public UserReferenceDto getResultingCaseUser() {

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/AbstractCaseView.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import de.symeda.sormas.api.i18n.I18nProperties;
3939
import de.symeda.sormas.api.user.UserRight;
4040
import de.symeda.sormas.api.user.UserRole;
41-
import de.symeda.sormas.api.utils.DataHelper;
4241
import de.symeda.sormas.ui.ControllerProvider;
4342
import de.symeda.sormas.ui.SubMenu;
4443
import de.symeda.sormas.ui.UserProvider;
@@ -70,7 +69,6 @@ public abstract class AbstractCaseView extends AbstractDetailView<CaseReferenceD
7069
private final Property.ValueChangeListener viewModeToggleListener;
7170

7271
protected AbstractCaseView(String viewName, boolean redirectSimpleModeToCaseDataView) {
73-
7472
super(viewName);
7573

7674
if (!ViewModelProviders.of(AbstractCaseView.class).has(ViewConfiguration.class)) {
@@ -200,12 +198,7 @@ public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, Strin
200198
menu.addView(CaseContactsView.VIEW_NAME, I18nProperties.getPrefixCaption(CaseDataDto.I18N_PREFIX, Captions.caseContacts), params);
201199
}
202200

203-
infoLabel.setValue(getReference().getCaption());
204-
205-
infoLabelSub.setValue(
206-
caze.getDisease() != Disease.OTHER
207-
? DataHelper.toStringNullable(caze.getDisease())
208-
: DataHelper.toStringNullable(caze.getDiseaseDetails()));
201+
replaceViewHeader(ControllerProvider.getCaseController().getCaseViewTitleLayout(caze));
209202
}
210203

211204
@Override

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseController.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import java.util.function.Consumer;
2525
import java.util.stream.Collectors;
2626

27+
import org.apache.commons.lang3.StringUtils;
28+
2729
import com.vaadin.navigator.Navigator;
2830
import com.vaadin.server.ExternalResource;
2931
import com.vaadin.server.Page;
@@ -44,6 +46,7 @@
4446
import com.vaadin.ui.themes.ValoTheme;
4547

4648
import de.symeda.sormas.api.Disease;
49+
import de.symeda.sormas.api.DiseaseHelper;
4750
import de.symeda.sormas.api.FacadeProvider;
4851
import de.symeda.sormas.api.caze.CaseCriteria;
4952
import de.symeda.sormas.api.caze.CaseDataDto;
@@ -105,6 +108,7 @@
105108
import de.symeda.sormas.ui.utils.ButtonHelper;
106109
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent;
107110
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent.CommitListener;
111+
import de.symeda.sormas.ui.utils.CssStyles;
108112
import de.symeda.sormas.ui.utils.DateHelper8;
109113
import de.symeda.sormas.ui.utils.VaadinUiUtil;
110114
import de.symeda.sormas.ui.utils.ViewMode;
@@ -1310,4 +1314,26 @@ private void saveCasesFromLineListing(LineListingLayout lineListingForm, List<Li
13101314
lineListingForm.closeWindow();
13111315
ControllerProvider.getCaseController().navigateToIndex();
13121316
}
1317+
1318+
public VerticalLayout getCaseViewTitleLayout(CaseDataDto caseData) {
1319+
VerticalLayout titleLayout = new VerticalLayout();
1320+
titleLayout.addStyleNames(CssStyles.LAYOUT_MINIMAL, CssStyles.VSPACE_4, CssStyles.VSPACE_TOP_4);
1321+
titleLayout.setSpacing(false);
1322+
1323+
Label diseaseLabel = new Label(DiseaseHelper.toString(caseData.getDisease(), caseData.getDiseaseDetails()));
1324+
CssStyles.style(diseaseLabel, CssStyles.H3, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
1325+
titleLayout.addComponents(diseaseLabel);
1326+
1327+
Label classificationLabel = new Label(caseData.getCaseClassification().toString());
1328+
classificationLabel.addStyleNames(CssStyles.H3, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
1329+
titleLayout.addComponent(classificationLabel);
1330+
1331+
String shortUuid = DataHelper.getShortUuid(caseData.getUuid());
1332+
String person = caseData.getPerson().getCaption();
1333+
Label caseLabel = new Label(StringUtils.isNotBlank(person) ? person + " (" + shortUuid + ")" : shortUuid);
1334+
caseLabel.addStyleNames(CssStyles.H1, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
1335+
titleLayout.addComponent(caseLabel);
1336+
1337+
return titleLayout;
1338+
}
13131339
}

sormas-ui/src/main/java/de/symeda/sormas/ui/contact/AbstractContactView.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import com.vaadin.ui.Label;
2727
import com.vaadin.ui.themes.ValoTheme;
2828

29-
import de.symeda.sormas.api.Disease;
3029
import de.symeda.sormas.api.FacadeProvider;
3130
import de.symeda.sormas.api.contact.ContactCriteria;
3231
import de.symeda.sormas.api.contact.ContactDto;
@@ -37,7 +36,6 @@
3736
import de.symeda.sormas.api.person.PersonDto;
3837
import de.symeda.sormas.api.person.PersonReferenceDto;
3938
import de.symeda.sormas.api.user.UserRight;
40-
import de.symeda.sormas.api.utils.DataHelper;
4139
import de.symeda.sormas.ui.ControllerProvider;
4240
import de.symeda.sormas.ui.SubMenu;
4341
import de.symeda.sormas.ui.UserProvider;
@@ -106,9 +104,7 @@ public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, Strin
106104
menu.addView(ContactEpiDataView.VIEW_NAME, I18nProperties.getPrefixCaption(ContactDto.I18N_PREFIX, ContactDto.EPI_DATA), params);
107105
menu.addView(ContactVisitsView.VIEW_NAME, I18nProperties.getPrefixCaption(ContactDto.I18N_PREFIX, ContactDto.VISITS), params);
108106

109-
infoLabel.setValue(getReference().getCaption());
110-
infoLabelSub.setValue(
111-
contact.getDisease() != Disease.OTHER ? contact.getDisease().toShortString() : DataHelper.toStringNullable(contact.getDiseaseDetails()));
107+
replaceViewHeader(ControllerProvider.getContactController().getContactViewTitleLayout(contact));
112108
}
113109

114110
@Override

sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactController.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.vaadin.ui.Window;
4949

5050
import de.symeda.sormas.api.Disease;
51+
import de.symeda.sormas.api.DiseaseHelper;
5152
import de.symeda.sormas.api.FacadeProvider;
5253
import de.symeda.sormas.api.caze.CaseCriteria;
5354
import de.symeda.sormas.api.caze.CaseDataDto;
@@ -781,4 +782,24 @@ public void deleteContact(ContactIndexDto contact, Runnable callback) {
781782
callback.run();
782783
});
783784
}
785+
786+
public VerticalLayout getContactViewTitleLayout(ContactDto contact) {
787+
VerticalLayout titleLayout = new VerticalLayout();
788+
titleLayout.addStyleNames(CssStyles.LAYOUT_MINIMAL, CssStyles.VSPACE_4, CssStyles.VSPACE_TOP_4);
789+
titleLayout.setSpacing(false);
790+
791+
Label diseaseLabel = new Label(DiseaseHelper.toString(contact.getDisease(), contact.getDiseaseDetails()));
792+
CssStyles.style(diseaseLabel, CssStyles.H3, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
793+
titleLayout.addComponents(diseaseLabel);
794+
795+
Label classificationLabel = new Label(contact.getContactClassification().toString());
796+
classificationLabel.addStyleNames(CssStyles.H3, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
797+
titleLayout.addComponent(classificationLabel);
798+
799+
Label contactLabel = new Label(contact.toReference().getCaptionAlwaysWithUuid());
800+
contactLabel.addStyleNames(CssStyles.H1, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
801+
titleLayout.addComponent(contactLabel);
802+
803+
return titleLayout;
804+
}
784805
}

sormas-ui/src/main/java/de/symeda/sormas/ui/events/AbstractEventView.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import de.symeda.sormas.api.event.EventReferenceDto;
2727
import de.symeda.sormas.api.i18n.Captions;
2828
import de.symeda.sormas.api.i18n.I18nProperties;
29-
import de.symeda.sormas.api.utils.DataHelper;
29+
import de.symeda.sormas.ui.ControllerProvider;
3030
import de.symeda.sormas.ui.SubMenu;
3131
import de.symeda.sormas.ui.utils.AbstractDetailView;
3232
import de.symeda.sormas.ui.utils.DirtyStateComponent;
@@ -59,8 +59,8 @@ public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, Strin
5959
menu.addView(EventDataView.VIEW_NAME, I18nProperties.getCaption(EventDto.I18N_PREFIX), params);
6060
menu.addView(EventParticipantsView.VIEW_NAME, I18nProperties.getCaption(Captions.eventEventParticipants), params);
6161
menu.addView(EventActionsView.VIEW_NAME, I18nProperties.getCaption(Captions.eventEventActions), params);
62-
infoLabel.setValue(getReference().getCaption());
63-
infoLabelSub.setValue(DataHelper.getShortUuid(getReference().getUuid()));
62+
63+
replaceViewHeader(ControllerProvider.getEventController().getEventViewTitleLayout(getReference().getUuid()));
6464
}
6565

6666
@Override

sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventController.java

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import java.util.ArrayList;
2121
import java.util.Collection;
2222
import java.util.List;
23-
import com.vaadin.data.provider.DataProvider;
24-
import com.vaadin.data.provider.ListDataProvider;
23+
24+
import org.apache.commons.lang3.StringUtils;
25+
import org.apache.commons.text.StringEscapeUtils;
26+
2527
import com.vaadin.navigator.Navigator;
2628
import com.vaadin.server.Page;
2729
import com.vaadin.server.Sizeable;
@@ -32,6 +34,7 @@
3234
import com.vaadin.ui.Notification;
3335
import com.vaadin.ui.Notification.Type;
3436
import com.vaadin.ui.UI;
37+
import com.vaadin.ui.VerticalLayout;
3538
import com.vaadin.ui.Window;
3639
import com.vaadin.ui.themes.ValoTheme;
3740

@@ -43,10 +46,7 @@
4346
import de.symeda.sormas.api.event.EventCriteria;
4447
import de.symeda.sormas.api.event.EventDto;
4548
import de.symeda.sormas.api.event.EventIndexDto;
46-
import de.symeda.sormas.api.event.EventParticipantCriteria;
4749
import de.symeda.sormas.api.event.EventParticipantDto;
48-
import de.symeda.sormas.api.event.EventParticipantFacade;
49-
import de.symeda.sormas.api.event.EventParticipantIndexDto;
5050
import de.symeda.sormas.api.event.EventParticipantReferenceDto;
5151
import de.symeda.sormas.api.event.EventReferenceDto;
5252
import de.symeda.sormas.api.i18n.Captions;
@@ -55,16 +55,17 @@
5555
import de.symeda.sormas.api.person.PersonDto;
5656
import de.symeda.sormas.api.user.UserReferenceDto;
5757
import de.symeda.sormas.api.user.UserRight;
58+
import de.symeda.sormas.api.utils.DataHelper;
5859
import de.symeda.sormas.ui.SormasUI;
5960
import de.symeda.sormas.ui.UserProvider;
6061
import de.symeda.sormas.ui.events.eventLink.EventSelectionField;
6162
import de.symeda.sormas.ui.utils.ButtonHelper;
6263
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent;
6364
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent.CommitListener;
65+
import de.symeda.sormas.ui.utils.CssStyles;
66+
import de.symeda.sormas.ui.utils.DateFormatHelper;
6467
import de.symeda.sormas.ui.utils.VaadinUiUtil;
6568

66-
import org.apache.commons.text.StringEscapeUtils;
67-
6869
public class EventController {
6970

7071
public void registerViews(Navigator navigator) {
@@ -570,4 +571,33 @@ public void dearchiveAllSelectedItems(Collection<EventIndexDto> selectedRows, Ru
570571
});
571572
}
572573
}
574+
575+
public VerticalLayout getEventViewTitleLayout(String uuid) {
576+
EventDto event = findEvent(uuid);
577+
578+
VerticalLayout titleLayout = new VerticalLayout();
579+
titleLayout.addStyleNames(CssStyles.LAYOUT_MINIMAL, CssStyles.VSPACE_4, CssStyles.VSPACE_TOP_4);
580+
titleLayout.setSpacing(false);
581+
582+
Label statusLabel = new Label(event.getEventStatus().toString());
583+
statusLabel.addStyleNames(CssStyles.H3, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
584+
titleLayout.addComponents(statusLabel);
585+
586+
if (event.getStartDate() != null) {
587+
Label eventStartDateLabel = new Label(
588+
event.getEndDate() != null
589+
? DateFormatHelper.buildPeriodString(event.getStartDate(), event.getEndDate())
590+
: DateFormatHelper.formatDate(event.getStartDate()));
591+
eventStartDateLabel.addStyleNames(CssStyles.H3, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
592+
titleLayout.addComponent(eventStartDateLabel);
593+
}
594+
595+
String shortUuid = DataHelper.getShortUuid(event.getUuid());
596+
String eventTitle = event.getEventTitle();
597+
Label eventLabel = new Label(StringUtils.isNotBlank(eventTitle) ? eventTitle + " (" + shortUuid + ")" : shortUuid);
598+
eventLabel.addStyleNames(CssStyles.H1, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
599+
titleLayout.addComponent(eventLabel);
600+
601+
return titleLayout;
602+
}
573603
}

sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantDataView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class EventParticipantDataView extends AbstractDetailView<EventParticipan
6060

6161
public EventParticipantDataView() {
6262
super(VIEW_NAME);
63+
hideInfoLabel();
6364
}
6465

6566
@Override
@@ -175,5 +176,7 @@ public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, Strin
175176
menu.addView(EventParticipantDataView.VIEW_NAME, I18nProperties.getCaption(EventParticipantDto.I18N_PREFIX), params);
176177
infoLabel.setValue(I18nProperties.getCaption(Captions.EventParticipant));
177178
infoLabelSub.setValue(eventParticipantDto.getPerson().toString());
179+
180+
replaceViewHeader(ControllerProvider.getEventParticipantController().getEventParticipantViewTitleLayout(eventParticipantDto));
178181
}
179182
}

sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantsController.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@
2121
import java.util.List;
2222
import java.util.function.Consumer;
2323

24+
import org.apache.commons.lang3.StringUtils;
25+
2426
import com.vaadin.server.Page;
2527
import com.vaadin.server.Sizeable.Unit;
2628
import com.vaadin.ui.Label;
2729
import com.vaadin.ui.Notification;
2830
import com.vaadin.ui.Notification.Type;
2931
import com.vaadin.ui.UI;
32+
import com.vaadin.ui.VerticalLayout;
3033
import com.vaadin.ui.Window;
3134
import com.vaadin.v7.data.Validator;
3235

@@ -46,10 +49,13 @@
4649
import de.symeda.sormas.api.region.RegionReferenceDto;
4750
import de.symeda.sormas.api.user.UserDto;
4851
import de.symeda.sormas.api.user.UserRight;
52+
import de.symeda.sormas.api.utils.DataHelper;
4953
import de.symeda.sormas.ui.ControllerProvider;
5054
import de.symeda.sormas.ui.SormasUI;
5155
import de.symeda.sormas.ui.UserProvider;
5256
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent;
57+
import de.symeda.sormas.ui.utils.CssStyles;
58+
import de.symeda.sormas.ui.utils.DateFormatHelper;
5359
import de.symeda.sormas.ui.utils.VaadinUiUtil;
5460

5561
public class EventParticipantsController {
@@ -269,4 +275,35 @@ private void savePersonAndEventParticipant(Consumer<EventParticipantReferenceDto
269275
doneConsumer.accept(null);
270276
SormasUI.refreshView();
271277
}
278+
279+
public VerticalLayout getEventParticipantViewTitleLayout(EventParticipantDto eventParticipant) {
280+
EventDto event = FacadeProvider.getEventFacade().getEventByUuid(eventParticipant.getEvent().getUuid());
281+
282+
VerticalLayout titleLayout = new VerticalLayout();
283+
titleLayout.addStyleNames(CssStyles.LAYOUT_MINIMAL, CssStyles.VSPACE_4, CssStyles.VSPACE_TOP_4);
284+
titleLayout.setSpacing(false);
285+
286+
String eventShortUuid = DataHelper.getShortUuid(event.getUuid());
287+
String eventTitle = event.getEventTitle();
288+
Label eventLabel = new Label(StringUtils.isNotBlank(eventTitle) ? eventTitle + " (" + eventShortUuid + ")" : eventShortUuid);
289+
eventLabel.addStyleNames(CssStyles.H1, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
290+
titleLayout.addComponent(eventLabel);
291+
292+
if (event.getStartDate() != null) {
293+
Label eventStartDateLabel = new Label(
294+
event.getEndDate() != null
295+
? DateFormatHelper.buildPeriodString(event.getStartDate(), event.getEndDate())
296+
: DateFormatHelper.formatDate(event.getStartDate()));
297+
eventStartDateLabel.addStyleNames(CssStyles.H3, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
298+
titleLayout.addComponent(eventStartDateLabel);
299+
}
300+
301+
String shortUuid = DataHelper.getShortUuid(eventParticipant.getUuid());
302+
String person = eventParticipant.getPerson().toReference().getCaption();
303+
Label eventParticipantLabel = new Label(StringUtils.isNotBlank(person) ? person + " (" + shortUuid + ")" : shortUuid);
304+
eventParticipantLabel.addStyleNames(CssStyles.H1, CssStyles.VSPACE_NONE, CssStyles.VSPACE_TOP_NONE);
305+
titleLayout.addComponents(eventParticipantLabel);
306+
307+
return titleLayout;
308+
}
272309
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.vaadin.server.Resource;
3030
import com.vaadin.server.StreamResource;
3131
import com.vaadin.shared.ui.MarginInfo;
32+
import com.vaadin.ui.AbstractLayout;
3233
import com.vaadin.ui.Alignment;
3334
import com.vaadin.ui.Button;
3435
import com.vaadin.ui.Component;
@@ -115,6 +116,12 @@ public Label getViewSubTitleLabel() {
115116
return viewSubTitleLabel;
116117
}
117118

119+
public void replaceViewHeader(AbstractLayout headerLayout) {
120+
this.viewHeader.removeAllComponents();
121+
this.viewHeader.addComponent(headerLayout);
122+
this.viewHeader.setExpandRatio(headerLayout, 1);
123+
}
124+
118125
public boolean navigateTo(BaseCriteria criteria) {
119126
return navigateTo(criteria, true);
120127
}

0 commit comments

Comments
 (0)