From 06cb827bd14859bdde31f0db2755c958a10f26d7 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 10 Aug 2015 14:43:59 +0200 Subject: [PATCH 01/21] Implemented calculator considering only the lastest not upcoming series event --- .../gwt/server/EventListDataCalculator.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java new file mode 100644 index 00000000000..745ce516187 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java @@ -0,0 +1,54 @@ +package com.sap.sailing.gwt.server; + +import java.net.URL; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.Map; + +import com.sap.sailing.domain.base.EventBase; +import com.sap.sailing.gwt.server.HomeServiceUtil.EventVisitor; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO; +import com.sap.sailing.gwt.ui.shared.general.EventState; +import com.sap.sailing.server.RacingEventService; + +public class EventListDataCalculator implements EventVisitor { + + private final Map lastestEventPerSeries = new HashMap<>(); + private final EventListViewDTO result = new EventListViewDTO(); + private final RacingEventService service; + + public EventListDataCalculator(RacingEventService service) { + this.service = service; + } + + @Override + public void visit(EventBase event, boolean onRemoteServer, URL baseURL) { + EventListEventDTO eventDTO = HomeServiceUtil.convertToEventListDTO(event, baseURL, onRemoteServer, service); + if (HomeServiceUtil.calculateEventState(event) != EventState.UPCOMING && HomeServiceUtil.isFakeSeries(event)) { + String seriesName = HomeServiceUtil.getSeriesName(event); + EventListEventDTO latestEvent = lastestEventPerSeries.get(seriesName); + if (latestEvent == null || latestEvent.getStartDate().before(eventDTO.getStartDate())) { + lastestEventPerSeries.put(seriesName, eventDTO); + } + } else { + result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); + } + } + + public EventListViewDTO getResult() { + for (EventListEventDTO eventDTO : lastestEventPerSeries.values()) { + result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); + } + return result; + } + + private int getYear(Date date) { + Calendar cal = GregorianCalendar.getInstance(); + cal.setTime(date); + return cal.get(Calendar.YEAR); + } + +} From 37bae1bc8e7649b58aec2de1489e7a07e6eaee54 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 10 Aug 2015 14:45:03 +0200 Subject: [PATCH 02/21] Integrated calculator (considering only the lastest not upcoming series event) into event list view service method --- .../sailing/gwt/server/HomeServiceImpl.java | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java index 550ed2649cd..ef98509eb7c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java @@ -1,13 +1,9 @@ package com.sap.sailing.gwt.server; import java.net.MalformedURLException; -import java.net.URL; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collections; import java.util.Comparator; -import java.util.Date; -import java.util.GregorianCalendar; import java.util.HashSet; import java.util.List; import java.util.Random; @@ -20,11 +16,9 @@ import org.osgi.util.tracker.ServiceTracker; import com.sap.sailing.domain.base.Event; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; -import com.sap.sailing.gwt.server.HomeServiceUtil.EventVisitor; import com.sap.sailing.gwt.ui.client.HomeService; import com.sap.sailing.gwt.ui.server.Activator; import com.sap.sailing.gwt.ui.server.ProxiedRemoteServiceServlet; -import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO.EventSeriesState; @@ -262,21 +256,8 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home @Override public EventListViewDTO getEventListView() throws MalformedURLException { - // TODO fill stats of years - final EventListViewDTO result = new EventListViewDTO(); - HomeServiceUtil.forAllPublicEvents(getService(), getThreadLocalRequest(), new EventVisitor() { - @Override - public void visit(EventBase event, boolean onRemoteServer, URL baseURL) { - EventListEventDTO eventDTO = HomeServiceUtil.convertToEventListDTO(event, baseURL, onRemoteServer, getService()); - result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); - } - }); - return result; - } - - private int getYear(Date date) { - Calendar cal = GregorianCalendar.getInstance(); - cal.setTime(date); - return cal.get(Calendar.YEAR); + EventListDataCalculator eventListDataCalculator = new EventListDataCalculator(getService()); + HomeServiceUtil.forAllPublicEvents(getService(), getThreadLocalRequest(), eventListDataCalculator); + return eventListDataCalculator.getResult(); } } From 8d92eac8db3107351430ab0f115307112d09b616 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 12 Aug 2015 11:57:59 +0200 Subject: [PATCH 03/21] Added DTO structure for EventSeries --- .../eventlist/EventListEventSeriesDTO.java | 26 +++++++++++++++++ .../general/EventSeriesReferenceDTO.java | 28 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventSeriesDTO.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventSeriesReferenceDTO.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventSeriesDTO.java new file mode 100644 index 00000000000..7143370b8ef --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventSeriesDTO.java @@ -0,0 +1,26 @@ +package com.sap.sailing.gwt.ui.shared.eventlist; + +import java.util.UUID; + +import com.sap.sailing.gwt.ui.shared.general.EventSeriesReferenceDTO; + +public class EventListEventSeriesDTO extends EventSeriesReferenceDTO { + + private int eventsCount; + + protected EventListEventSeriesDTO() { + } + + public EventListEventSeriesDTO(UUID id, String displayName) { + super(id, displayName); + } + + public int getEventsCount() { + return eventsCount; + } + + public void setEventsCount(int eventsCount) { + this.eventsCount = eventsCount; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventSeriesReferenceDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventSeriesReferenceDTO.java new file mode 100644 index 00000000000..c870505b7a1 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventSeriesReferenceDTO.java @@ -0,0 +1,28 @@ +package com.sap.sailing.gwt.ui.shared.general; + +import java.util.UUID; + +import com.sap.sailing.gwt.ui.shared.dispatch.DTO; + +public class EventSeriesReferenceDTO implements DTO { + + private UUID id; + private String displayName; + + protected EventSeriesReferenceDTO() { + } + + public EventSeriesReferenceDTO(UUID id, String displayName) { + this.id = id; + this.displayName = displayName; + } + + public UUID getId() { + return id; + } + + public String getDisplayName() { + return displayName; + } + +} From 421d5ca0aebf7b9ebc7349092636c6d3fe17bb34 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 12 Aug 2015 12:14:00 +0200 Subject: [PATCH 04/21] Refactored EventDTO structure --- .../shared/eventlist/EventListEventDTO.java | 25 +++++++------------ .../general/EventLinkAndMetadataDTO.java | 24 ++++++++++++++++++ .../gwt/ui/shared/start/EventStageDTO.java | 22 ++-------------- 3 files changed, 35 insertions(+), 36 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventLinkAndMetadataDTO.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java index bf230060052..87219a3f686 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java @@ -1,24 +1,17 @@ package com.sap.sailing.gwt.ui.shared.eventlist; -import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventLinkAndMetadataDTO; -public class EventListEventDTO extends EventMetadataDTO { - private String baseURL; - private boolean isOnRemoteServer; +public class EventListEventDTO extends EventLinkAndMetadataDTO { + + private EventListEventSeriesDTO eventSeries; - public String getBaseURL() { - return baseURL; + public EventListEventSeriesDTO getEventSeries() { + return eventSeries; } - public void setBaseURL(String baseURL) { - this.baseURL = baseURL; - } - - public boolean isOnRemoteServer() { - return isOnRemoteServer; - } - - public void setOnRemoteServer(boolean isOnRemoteServer) { - this.isOnRemoteServer = isOnRemoteServer; + public void setEventSeries(EventListEventSeriesDTO eventSeries) { + this.eventSeries = eventSeries; } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventLinkAndMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventLinkAndMetadataDTO.java new file mode 100644 index 00000000000..a0d4c0a3005 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventLinkAndMetadataDTO.java @@ -0,0 +1,24 @@ +package com.sap.sailing.gwt.ui.shared.general; + +public class EventLinkAndMetadataDTO extends EventMetadataDTO { + + private String baseURL; + private boolean isOnRemoteServer; + + public String getBaseURL() { + return baseURL; + } + + public void setBaseURL(String baseURL) { + this.baseURL = baseURL; + } + + public boolean isOnRemoteServer() { + return isOnRemoteServer; + } + + public void setOnRemoteServer(boolean isOnRemoteServer) { + this.isOnRemoteServer = isOnRemoteServer; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java index cfe5edee279..6c656526860 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java @@ -1,30 +1,12 @@ package com.sap.sailing.gwt.ui.shared.start; -import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventLinkAndMetadataDTO; -public class EventStageDTO extends EventMetadataDTO { +public class EventStageDTO extends EventLinkAndMetadataDTO { private StageEventType stageType; - private String baseURL; - private boolean isOnRemoteServer; private String stageImageURL; - public String getBaseURL() { - return baseURL; - } - - public void setBaseURL(String baseURL) { - this.baseURL = baseURL; - } - - public boolean isOnRemoteServer() { - return isOnRemoteServer; - } - - public void setOnRemoteServer(boolean isOnRemoteServer) { - this.isOnRemoteServer = isOnRemoteServer; - } - public StageEventType getStageType() { return stageType; } From ec974ddf525ce7d471ccc6c0338b49d3e1abd296 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 12 Aug 2015 13:52:34 +0200 Subject: [PATCH 05/21] Added calculation of event series metadata for event list --- .../gwt/server/EventListDataCalculator.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java index 745ce516187..e43c08aa9bb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java @@ -2,14 +2,15 @@ package com.sap.sailing.gwt.server; import java.net.URL; import java.util.Calendar; -import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.gwt.server.HomeServiceUtil.EventVisitor; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; import com.sap.sailing.server.RacingEventService; @@ -17,6 +18,7 @@ import com.sap.sailing.server.RacingEventService; public class EventListDataCalculator implements EventVisitor { private final Map lastestEventPerSeries = new HashMap<>(); + private final Map numberOfEventsPerSeries = new HashMap<>(); private final EventListViewDTO result = new EventListViewDTO(); private final RacingEventService service; @@ -33,22 +35,33 @@ public class EventListDataCalculator implements EventVisitor { if (latestEvent == null || latestEvent.getStartDate().before(eventDTO.getStartDate())) { lastestEventPerSeries.put(seriesName, eventDTO); } + increaseNumberOfEvents(seriesName); } else { - result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); + addEventToResults(eventDTO); } } + private void increaseNumberOfEvents(String seriesName) { + Integer currentValue = numberOfEventsPerSeries.get(seriesName); + currentValue = currentValue == null ? 0 : currentValue; + numberOfEventsPerSeries.put(seriesName, ++currentValue); + } + public EventListViewDTO getResult() { - for (EventListEventDTO eventDTO : lastestEventPerSeries.values()) { - result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); + for (Entry latestEventInSeries : lastestEventPerSeries.entrySet()) { + String seriesName = latestEventInSeries.getKey(); + EventListEventDTO latestEvent = latestEventInSeries.getValue(); + latestEvent.setEventSeries(new EventListEventSeriesDTO(latestEvent.getId(), seriesName)); + latestEvent.getEventSeries().setEventsCount(numberOfEventsPerSeries.get(seriesName)); + addEventToResults(latestEvent); } return result; } - private int getYear(Date date) { + private void addEventToResults(EventListEventDTO eventDTO) { Calendar cal = GregorianCalendar.getInstance(); - cal.setTime(date); - return cal.get(Calendar.YEAR); + cal.setTime(eventDTO.getStartDate()); + result.addEvent(eventDTO, cal.get(Calendar.YEAR)); } } From 946f2eff946232c5f6d7bbd84d4b653881fccdbe Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 10:20:19 +0200 Subject: [PATCH 06/21] Added partial for series info corner --- .../home/client/shared/event/EventTeaser.gss | 29 +++++++++++++++++ .../shared/event/EventTeaserResources.java | 3 ++ .../event/EventTeaserSeriesInfoCorner.java | 31 +++++++++++++++++++ .../event/EventTeaserSeriesInfoCorner.ui.xml | 10 ++++++ 4 files changed, 73 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.gss index 2a272b8db69..7222a76b944 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.gss @@ -1,6 +1,7 @@ /** * A event teaser with image */ + @def SERIES_CORNER_SIZE 6em; .eventteasercontainer { font-size: 1rem; text-align: center; @@ -40,6 +41,34 @@ position: absolute; bottom: 0; right: 0; + width: SERIES_CORNER_SIZE; + height: SERIES_CORNER_SIZE; + overflow: hidden; +} +.eventteaser_series .eventteaser_series_corner { + position: absolute; + border-style: solid; + border-color: rgba(240, 171, 0, 0.75) transparent; + border-width: 0 0 SERIES_CORNER_SIZE SERIES_CORNER_SIZE; +} +.eventteaser_series .eventteaser_series_text { + display: block; + text-align: center; + color: white; + font-weight: 600; + font-size: 120%; + width: 7em; + height: 3.5em; + transform: rotate(315deg) translate(-1.25em, 1.6em); +} +.eventteaser_series .eventteaser_series_eventcount { + position: absolute; + bottom: 0.5em; + right: 0.5em; + text-align: right; + font-weight: 600; + color: white; + font-size: 120%; } .eventteaser_name { width: 100%; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserResources.java index 96927122486..edc67be513c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserResources.java @@ -18,6 +18,9 @@ public interface EventTeaserResources extends ClientBundle { String eventteaser_title_name(); String eventteaser_image(); String eventteaser_series(); + String eventteaser_series_corner(); + String eventteaser_series_text(); + String eventteaser_series_eventcount(); String eventteaser_name(); String eventteaser_title_name_label(); String label(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java new file mode 100644 index 00000000000..79a0fb5e6c2 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java @@ -0,0 +1,31 @@ +package com.sap.sailing.gwt.home.client.shared.event; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.AnchorElement; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.UIObject; +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; + +public class EventTeaserSeriesInfoCorner extends UIObject { + + private static EventTeaserSeriesInfoCornerUiBinder uiBinder = GWT.create(EventTeaserSeriesInfoCornerUiBinder.class); + + interface EventTeaserSeriesInfoCornerUiBinder extends UiBinder { + } + + @UiField DivElement seriesEventsCountUi; + @UiField AnchorElement seriesInfoTextUi; + + public EventTeaserSeriesInfoCorner(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + setElement(uiBinder.createAndBindUi(this)); + int eventCount = eventSeries.getEventsCount(); + seriesInfoTextUi.setTitle(eventSeries.getDisplayName() + " - " + StringMessages.INSTANCE.eventsCount(eventSeries.getEventsCount())); + seriesNavigation.configureAnchorElement(seriesInfoTextUi); + seriesEventsCountUi.setInnerText(String.valueOf(eventCount)); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.ui.xml new file mode 100644 index 00000000000..2f0b8c4585e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.ui.xml @@ -0,0 +1,10 @@ + + + + +
+
+ +
+
+
\ No newline at end of file From 39b9f1036862a1e8b80f36d7d317f058fe4fb8f0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 11:26:58 +0200 Subject: [PATCH 07/21] Extended EventTeaser to use series info corner --- .../events/recent/RecentEventTeaser.java | 5 ++++ .../home/client/shared/event/EventTeaser.java | 26 +++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java index 1799af3ad45..3c5ff5384fa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java @@ -7,6 +7,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.shared.event.EventTeaser; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.LabelType; @@ -23,6 +24,10 @@ public class RecentEventTeaser extends Composite { eventTeaser = new EventTeaser(placeNavigation, event, labelType); initWidget(uiBinder.createAndBindUi(this)); } + + public void setSeriesInformation(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + eventTeaser.setSeriesInformation(seriesNavigation, eventSeries); + } public void hideImage(boolean hide) { eventTeaser.hideImage(hide); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.java index 7d7d3b3df34..1a1bd8edd4c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.java @@ -17,23 +17,18 @@ import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.client.shared.LabelTypeUtil; import com.sap.sailing.gwt.home.client.shared.LongNamesUtil; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.LabelType; public class EventTeaser extends Composite { - @UiField - SpanElement eventName; - @UiField - SpanElement venue; - @UiField - SpanElement eventDate; - @UiField - AnchorElement eventLink; - @UiField - DivElement eventImage; - @UiField - DivElement eventState; + @UiField SpanElement eventName; + @UiField SpanElement venue; + @UiField SpanElement eventDate; + @UiField AnchorElement eventLink; + @UiField DivElement eventImage; + @UiField DivElement eventState; private final EventMetadataDTO event; @@ -77,7 +72,6 @@ public class EventTeaser extends Composite { eventDate.setInnerText(EventDatesFormatterUtil.formatDateRangeWithoutYear(event.getStartDate(), event.getEndDate())); final StringBuilder thumbnailUrlBuilder = new StringBuilder("url('"); - final String thumbnailImageUrl = event.getThumbnailImageURL(); if (thumbnailImageUrl == null || thumbnailImageUrl.isEmpty()) { thumbnailUrlBuilder.append(EventTeaserResources.INSTANCE.defaultEventPhotoImage().getSafeUri().asString()); @@ -87,7 +81,11 @@ public class EventTeaser extends Composite { thumbnailUrlBuilder.append("')"); eventImage.getStyle().setBackgroundImage(thumbnailUrlBuilder.toString()); } - + + public void setSeriesInformation(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + eventImage.appendChild(new EventTeaserSeriesInfoCorner(seriesNavigation, eventSeries).getElement()); + } + public void hideImage(boolean hide) { if (hide) { eventImage.getStyle().setDisplay(Display.NONE); From 02e8f64ebf643e7fcd642b1edc0ece0c3f261fc4 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 11:29:22 +0200 Subject: [PATCH 08/21] Refactored EventDTO structure --- .../gwt/ui/shared/eventlist/EventListEventDTO.java | 1 + .../sailing/gwt/ui/shared/general/EventMetadataDTO.java | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java index 87219a3f686..b2e566af76a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java @@ -6,6 +6,7 @@ public class EventListEventDTO extends EventLinkAndMetadataDTO { private EventListEventSeriesDTO eventSeries; + @Override public EventListEventSeriesDTO getEventSeries() { return eventSeries; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventMetadataDTO.java index 912e7914477..ed5ce2780a5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventMetadataDTO.java @@ -2,6 +2,8 @@ package com.sap.sailing.gwt.ui.shared.general; import java.util.Date; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; + public class EventMetadataDTO extends EventReferenceDTO { private EventState state; @@ -41,8 +43,6 @@ public class EventMetadataDTO extends EventReferenceDTO { return state; } - - public void setState(EventState state) { this.state = state; } @@ -107,4 +107,8 @@ public class EventMetadataDTO extends EventReferenceDTO { } return venue; } + + public EventListEventSeriesDTO getEventSeries() { + return null; + } } From 01734587b47a46662f38223d74f93af0fe196682 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 11:41:26 +0200 Subject: [PATCH 09/21] Integrated series info corner in event list --- .../client/place/events/recent/EventsOverviewRecentYear.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java index 5c9984bac3e..32024a813e8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java @@ -72,6 +72,11 @@ public class EventsOverviewRecentYear extends Composite { for (EventListEventDTO eventDTO : events) { PlaceNavigation eventNavigation = navigator.getEventNavigation(eventDTO.getId().toString(), eventDTO.getBaseURL(), eventDTO.isOnRemoteServer()); RecentEventTeaser recentEvent = new RecentEventTeaser(eventNavigation, eventDTO, eventDTO.getState().getListStateMarker()); + if (eventDTO.getEventSeries() != null) { + String seriesId = eventDTO.getEventSeries().getId().toString(), baseUrl = eventDTO.getBaseURL(); + PlaceNavigation seriesNavigation = navigator.getEventSeriesNavigation(seriesId, baseUrl, eventDTO.isOnRemoteServer()); + recentEvent.setSeriesInformation(seriesNavigation, eventDTO.getEventSeries()); + } recentEventsTeaserPanel.add(recentEvent); } headerDiv.addDomHandler(new ClickHandler() { From f9cfaba0322d97be67eccc153fbf348910d45df3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 11:57:23 +0200 Subject: [PATCH 10/21] Added String messages for series event info --- .../home/client/shared/event/EventTeaserSeriesInfoCorner.java | 3 ++- .../java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 4 +++- .../sap/sailing/gwt/ui/client/StringMessages_de.properties | 4 +++- .../sap/sailing/gwt/ui/client/StringMessages_ru.properties | 4 +++- .../sap/sailing/gwt/ui/client/StringMessages_zh.properties | 4 +++- 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java index 79a0fb5e6c2..0f2ec1f1fd1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java @@ -23,7 +23,8 @@ public class EventTeaserSeriesInfoCorner extends UIObject { public EventTeaserSeriesInfoCorner(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { setElement(uiBinder.createAndBindUi(this)); int eventCount = eventSeries.getEventsCount(); - seriesInfoTextUi.setTitle(eventSeries.getDisplayName() + " - " + StringMessages.INSTANCE.eventsCount(eventSeries.getEventsCount())); + seriesInfoTextUi.setTitle(eventSeries.getDisplayName() + " - " + + StringMessages.INSTANCE.eventsHaveTakenPlace(eventSeries.getEventsCount())); seriesNavigation.configureAnchorElement(seriesInfoTextUi); seriesEventsCountUi.setInnerText(String.valueOf(eventCount)); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 13ba3e6fcb0..1ca4b77b5ab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1360,4 +1360,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String choosePresentation(); String openFullscreenView(); String closeFullscreenView(); + String eventsHaveTakenPlace(@PluralCount(DefaultRule_1_0n.class) int eventCount); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 038f39f4920..062f795097d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1328,4 +1328,6 @@ plainText=Plain Text columnChart=Column Chart choosePresentation=Choose Presentation openFullscreenView=Open fullscreen view -closeFullscreenView=Close fullscreen view \ No newline at end of file +closeFullscreenView=Close fullscreen view +eventsHaveTakenPlace={0} events have taken place +eventsHaveTakenPlace[one]= One event has taken place \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index ba041c0fe9e..2aefd2da20e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1318,4 +1318,6 @@ plainText=Einfacher Text columnChart=Säulendiagramm choosePresentation=Wähle Präsentation openFullscreenView=Vollbildansicht öffnen -closeFullscreenView=Vollbildansicht schließen \ No newline at end of file +closeFullscreenView=Vollbildansicht schließen +eventsHaveTakenPlace={0} Veranstaltungen haben stattgefunden +eventsHaveTakenPlace[one]= Eine Veranstaltung hat stattgefunden \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 9b56d586742..593ea1f5c08 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1265,4 +1265,6 @@ plainText=Plain Text columnChart=Column Chart choosePresentation=Choose Presentation openFullscreenView=Open fullscreen view -closeFullscreenView=Close fullscreen view \ No newline at end of file +closeFullscreenView=Close fullscreen view +eventsHaveTakenPlace={0} events have taken place +eventsHaveTakenPlace[one]= One event has taken place \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 0ec69e1e57d..3fdb6e8ffed 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1307,4 +1307,6 @@ noFinishedRaces=There are no finished races yet racesOverview=Races overview latestRegattaStandings=Latest Regatta Standings openFullscreenView=Open fullscreen view -closeFullscreenView=Close fullscreen view \ No newline at end of file +closeFullscreenView=Close fullscreen view +eventsHaveTakenPlace={0} events have taken place +eventsHaveTakenPlace[one]= One event has taken place \ No newline at end of file From bfe631d33830e5b908123b9d0bc9b7de864e8b56 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 12:06:29 +0200 Subject: [PATCH 11/21] Adjusted browser event consumption in PlaceNavigation --- .../com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java index 8fb8143b90b..f0a5538edab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java @@ -102,6 +102,7 @@ public class PlaceNavigation { public void onBrowserEvent(Event event) { if (LinkUtil.handleLinkClick(event)) { event.preventDefault(); + event.stopPropagation(); goToPlace(); } } From b64bd5c563eb7ca5cbb3f809e726d8fc5e97cff7 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 16:37:58 +0200 Subject: [PATCH 12/21] Added partial for mobile series info --- .../EventOverviewRecentSeriesInfo.java | 32 +++++++++++++++++++ .../EventOverviewRecentSeriesInfo.ui.xml | 15 +++++++++ .../partials/recents/EventsOverviewRecent.gss | 11 +++++++ .../EventsOverviewRecentResources.java | 1 + 4 files changed, 59 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.java new file mode 100644 index 00000000000..bd0f0174647 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.java @@ -0,0 +1,32 @@ +package com.sap.sailing.gwt.home.mobile.partials.recents; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.AnchorElement; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.UIObject; +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; + +public class EventOverviewRecentSeriesInfo extends UIObject { + + private static EventOverviewRecentSeriesInfoUiBinder uiBinder = GWT + .create(EventOverviewRecentSeriesInfoUiBinder.class); + + interface EventOverviewRecentSeriesInfoUiBinder extends UiBinder { + } + + @UiField DivElement seriesNameUi; + @UiField DivElement seriesInfoUi; + private final AnchorElement seriesUi; + + public EventOverviewRecentSeriesInfo(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + setElement(seriesUi = uiBinder.createAndBindUi(this)); + seriesNameUi.setInnerText(eventSeries.getDisplayName()); + seriesInfoUi.setInnerText(StringMessages.INSTANCE.eventsHaveTakenPlace(eventSeries.getEventsCount())); + seriesNavigation.configureAnchorElement(seriesUi); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.ui.xml new file mode 100644 index 00000000000..3661c9f72ad --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.ui.xml @@ -0,0 +1,15 @@ + + + + + + +
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.gss index e09c41ae214..9ab603590ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.gss @@ -197,3 +197,14 @@ .togglecontainerhidden { display: none; } +.seriesInfo { + display: block; + padding: 0.5rem; + padding-left: 3em; +} +.seriesInfo .eventteaser_title { + font-size: 93.3333333333%; +} +.seriesInfo .eventteaser_title_name { + color: #bcbcbc; +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentResources.java index 805a841fcc4..68448729b12 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentResources.java @@ -46,6 +46,7 @@ public interface EventsOverviewRecentResources extends ClientBundle { String eventsoverviewrecent_event_arrow(); String eventsoverviewrecent_event_arrow_image(); String togglecontainerhidden(); + String seriesInfo(); } @Source("com/sap/sailing/gwt/home/images/default_event_photo.jpg") From 494db9a8a4b2f0cee8d80f437cb9ad90615be751 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 16:40:52 +0200 Subject: [PATCH 13/21] Integrated series info in mobile event list --- .../recents/EventsOverviewRecentYear.java | 6 +++- .../EventsOverviewRecentYearEvent.java | 8 ++++- .../EventsOverviewRecentYearEvent.ui.xml | 35 ++++++++++--------- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java index 4b2d4800058..28626eb5bd6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java @@ -49,11 +49,15 @@ public class EventsOverviewRecentYear extends Composite { this.eventsCount.setInnerText(i18n.eventsCount(events.size())); boolean first = true; for (EventListEventDTO eventDTO : events) { - PlaceNavigation eventNavigation = navigator.getEventNavigation(eventDTO.getId() .toString(), eventDTO.getBaseURL(), eventDTO.isOnRemoteServer()); EventsOverviewRecentYearEvent recentEvent = new EventsOverviewRecentYearEvent(eventNavigation, eventDTO, eventDTO.getState().getListStateMarker(), first || eventDTO.isRunning()); + if (eventDTO.getEventSeries() != null) { + String seriesId = eventDTO.getEventSeries().getId().toString(), baseUrl = eventDTO.getBaseURL(); + PlaceNavigation seriesNavigation = navigator.getEventSeriesNavigation(seriesId, baseUrl, eventDTO.isOnRemoteServer()); + recentEvent.setSeriesInformation(seriesNavigation, eventDTO.getEventSeries()); + } recentEventsTeaserPanel.add(recentEvent); if (first) { first = false; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java index 796e3576111..ef9427674c4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java @@ -13,6 +13,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.client.shared.LabelTypeUtil; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.LabelType; @@ -35,11 +36,13 @@ public class EventsOverviewRecentYearEvent extends Widget { SpanElement eventDateUi; @UiField SpanElement eventNameUi; + + private final Element eventContainerUi; public EventsOverviewRecentYearEvent(final PlaceNavigation placeNavigation, final EventMetadataDTO event, LabelType labelType, boolean isTeaserEvent) { EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); + setElement(eventContainerUi = uiBinder.createAndBindUi(this)); eventNameUi.setInnerText(event.getDisplayName()); if (isTeaserEvent) { eventImageUi.getStyle().setDisplay(Display.BLOCK); @@ -61,5 +64,8 @@ public class EventsOverviewRecentYearEvent extends Widget { event.getEndDate())); } + public void setSeriesInformation(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + eventContainerUi.appendChild(new EventOverviewRecentSeriesInfo(seriesNavigation, eventSeries).getElement()); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml index d5a4c3a7dbe..fede092e9cb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml @@ -7,24 +7,25 @@ type="com.sap.sailing.gwt.home.mobile.resources.SharedResources" /> - - - -
-
-
- -
+
+ + + \ No newline at end of file From 8dba89109c2a1d7393def2649fe4133542b75d83 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 18 Aug 2015 16:50:00 +0200 Subject: [PATCH 14/21] Mobile Event Overview - Use teaser image instead of stage image --- .../client/place/event/overview/EventOverviewStage.java | 2 +- .../gwt/home/mobile/places/event/EventViewImpl.java | 2 +- .../dispatch/event/GetEventOverviewStageAction.java | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java index 92fe518ef0b..e00ab4d3030 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java @@ -70,7 +70,7 @@ public class EventOverviewStage extends Composite { public void setupRefresh(RefreshManager refreshManager) { this.refreshManager = refreshManager; - refreshManager.add(refreshable, new GetEventOverviewStageAction(presenter.getCtx().getEventDTO().getId())); + refreshManager.add(refreshable, new GetEventOverviewStageAction(presenter.getCtx().getEventDTO().getId(), false)); if(presenter.getCtx().getEventDTO().getState() == EventState.RUNNING) { refreshManager.add(newsRefreshable, new GetEventOverviewNewsAction(presenter.getCtx().getEventDTO().getId(), 15)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java index 31dfc09cf96..17e64593cc1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java @@ -70,7 +70,7 @@ public class EventViewImpl extends Composite implements EventView { private void setupOverviewStage(UUID eventId) { overviewStageUi = new EventOverviewStage(currentPresenter); - refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(eventId)); + refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(eventId, true)); } private void setupListContent(EventViewDTO event) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java index bcbd0921395..78e28f34706 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java @@ -1,5 +1,8 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; +import static com.sap.sailing.gwt.server.HomeServiceUtil.findEventThumbnailImageUrlAsString; +import static com.sap.sailing.gwt.server.HomeServiceUtil.getStageImageURLAsString; + import java.util.Arrays; import java.util.Collection; import java.util.UUID; @@ -23,13 +26,15 @@ public class GetEventOverviewStageAction implements Action rankedTagsFinished = Arrays.asList(MediaTagConstants.STAGE, MediaTagConstants.FEATURED, MediaTagConstants.HIGHLIGHT); private UUID eventId; + private boolean useTeaserImage; @SuppressWarnings("unused") private GetEventOverviewStageAction() { } - public GetEventOverviewStageAction(UUID eventId) { + public GetEventOverviewStageAction(UUID eventId, boolean useTeaserImage) { this.eventId = eventId; + this.useTeaserImage = useTeaserImage; } @Override @@ -63,7 +68,7 @@ public class GetEventOverviewStageAction implements Action Date: Thu, 20 Aug 2015 15:01:39 +0200 Subject: [PATCH 15/21] Fixed navigation to events on remote servers --- .../sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java | 2 +- .../sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java index 8b878fb0f34..dd59d4e6241 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java @@ -26,7 +26,7 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { if(placeNavigation.isRemotePlace()) { String destinationUrl = placeNavigation.getTargetUrl(); History.newItem(History.getToken(), false); - Window.Location.replace(destinationUrl); + Window.Location.assign(destinationUrl); } else { placeController.goTo(placeNavigation.getPlace()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java index 35424ece899..c594f8267f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java @@ -26,7 +26,7 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { if(placeNavigation.isRemotePlace()) { String destinationUrl = placeNavigation.getTargetUrl(); History.newItem(History.getToken(), false); - Window.Location.replace(destinationUrl); + Window.Location.assign(destinationUrl); } else { placeController.goTo(placeNavigation.getPlace()); } From f6cb376e3ab0abff6b8a8024ce7a1121e1bc85a4 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 15:02:08 +0200 Subject: [PATCH 16/21] Fixed potential NPE in UpcomingEventStageTeaserBand classes --- .../client/shared/stage/UpcomingEventStageTeaserBand.java | 4 +++- .../mobile/partials/stage/UpcomingEventStageTeaserBand.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/UpcomingEventStageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/UpcomingEventStageTeaserBand.java index 3ab75d6ec48..c14c1009dcf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/UpcomingEventStageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/UpcomingEventStageTeaserBand.java @@ -27,6 +27,8 @@ public class UpcomingEventStageTeaserBand extends StageTeaserBand { @Override public void actionLinkClicked(ClickEvent e) { getPlaceNavigator().goToPlace(getEventNavigation()); - e.preventDefault(); + if (e != null) { + e.preventDefault(); + } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java index 4a1b5dca7c1..322fc6879a0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java @@ -27,6 +27,8 @@ public class UpcomingEventStageTeaserBand extends StageTeaserBand { @Override public void actionLinkClicked(ClickEvent e) { getPlaceNavigator().goToPlace(getEventNavigation()); - e.preventDefault(); + if (e != null) { + e.preventDefault(); + } } } From 60fa2d74ab86a2e200358abb8a714e1532d51ce0 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Fri, 21 Aug 2015 08:39:46 +0200 Subject: [PATCH 17/21] Fixed the calculation of the location of series events if there are FlexibleLeaderboards part of the series --- .../java/com/sap/sailing/gwt/server/HomeServiceUtil.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index c243cbf921e..2c2155273db 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -412,11 +412,10 @@ public final class HomeServiceUtil { Event event = (Event) eventBase; for (Leaderboard leaderboard : event.getLeaderboardGroups().iterator().next().getLeaderboards()) { if(leaderboard instanceof RegattaLeaderboard) { - if(!HomeServiceUtil.isPartOfEvent(event, leaderboard)) { - continue; + if(HomeServiceUtil.isPartOfEvent(event, leaderboard)) { + return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName(); } } - return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName(); } return null; } From 6cf91f47253e3407252da5f3fcc5aca1abf7b94a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 21 Aug 2015 10:26:41 +0200 Subject: [PATCH 18/21] Fixed style in series event list --- .../gwt/home/client/place/events/recent/RecentEventTeaser.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java index 3c5ff5384fa..7948dabb03d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java @@ -21,6 +21,7 @@ public class RecentEventTeaser extends Composite { @UiField(provided = true) EventTeaser eventTeaser; public RecentEventTeaser(final PlaceNavigation placeNavigation, final EventMetadataDTO event, LabelType labelType) { + EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); eventTeaser = new EventTeaser(placeNavigation, event, labelType); initWidget(uiBinder.createAndBindUi(this)); } From 1081f9fa2f8961469bd0a4c178d36fd1d5440db2 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 21 Aug 2015 15:08:56 +0200 Subject: [PATCH 19/21] Fixed missing contents on media page --- .../gwt/ui/shared/media/SailingImageDTO.java | 22 ++++++++++++++++++ .../gwt/ui/shared/media/SailingVideoDTO.java | 23 ++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingImageDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingImageDTO.java index cd501f548cf..8073004d049 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingImageDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingImageDTO.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.shared.media; import java.util.Date; import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; +import com.sap.sse.gwt.client.media.AbstractMediaDTO; import com.sap.sse.gwt.client.media.ImageDTO; public class SailingImageDTO extends ImageDTO { @@ -21,4 +22,25 @@ public class SailingImageDTO extends ImageDTO { public EventReferenceDTO getEventRef() { return eventRef; } + + // TODO Move to {@link AbstractMediaDTO} --- + @Override + public int compareTo(AbstractMediaDTO o) { + int createdAtDateComp = compareToByCreatedAtDate(o); + return createdAtDateComp == 0 ? getSourceRef().compareTo(o.getSourceRef()) : createdAtDateComp; + } + + private int compareToByCreatedAtDate(AbstractMediaDTO o) { + if(getCreatedAtDate() == o.getCreatedAtDate()) { + return 0; + } + if(getCreatedAtDate() == null) { + return 1; + } + if(o.getCreatedAtDate() == null) { + return -1; + } + return -getCreatedAtDate().compareTo(o.getCreatedAtDate()); + } + // TODO END --- } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingVideoDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingVideoDTO.java index d4270438627..fede6eea00b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingVideoDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingVideoDTO.java @@ -4,6 +4,7 @@ import java.util.Date; import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; import com.sap.sse.common.media.MimeType; +import com.sap.sse.gwt.client.media.AbstractMediaDTO; import com.sap.sse.gwt.client.media.VideoDTO; public class SailingVideoDTO extends VideoDTO { @@ -23,5 +24,25 @@ public class SailingVideoDTO extends VideoDTO { public EventReferenceDTO getEventRef() { return eventRef; } - + + // TODO Move to {@link AbstractMediaDTO} --- + @Override + public int compareTo(AbstractMediaDTO o) { + int createdAtDateComp = compareToByCreatedAtDate(o); + return createdAtDateComp == 0 ? getSourceRef().compareTo(o.getSourceRef()) : createdAtDateComp; + } + + private int compareToByCreatedAtDate(AbstractMediaDTO o) { + if(getCreatedAtDate() == o.getCreatedAtDate()) { + return 0; + } + if(getCreatedAtDate() == null) { + return 1; + } + if(o.getCreatedAtDate() == null) { + return -1; + } + return -getCreatedAtDate().compareTo(o.getCreatedAtDate()); + } + // TODO END --- } From 1ae93709963f1dadad581f131fd9035df6124e51 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 4 Sep 2015 10:31:51 +0200 Subject: [PATCH 20/21] Ensure correct location calculation for flexible leaderboards --- .../java/com/sap/sailing/gwt/server/HomeServiceUtil.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index 2c2155273db..adedf6ac3ea 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -9,9 +9,9 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Locale; +import java.util.Map.Entry; import java.util.Random; import java.util.UUID; -import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; @@ -411,10 +411,8 @@ public final class HomeServiceUtil { } Event event = (Event) eventBase; for (Leaderboard leaderboard : event.getLeaderboardGroups().iterator().next().getLeaderboards()) { - if(leaderboard instanceof RegattaLeaderboard) { - if(HomeServiceUtil.isPartOfEvent(event, leaderboard)) { - return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName(); - } + if(HomeServiceUtil.isPartOfEvent(event, leaderboard)) { + return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName(); } } return null; From 22ecae22cb3c423618026841f698a8f7ad7cf163 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 2 Sep 2015 13:40:57 +0200 Subject: [PATCH 21/21] Fixed calculatition of event stage candidates --- .../server/EventStageCandidateCalculator.java | 2 +- .../gwt/server/FeaturedEventsComparator.java | 28 ++++++++++++++----- .../sailing/gwt/server/HomeServiceImpl.java | 7 +++-- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java index dbba6e86a69..41f36011c12 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java @@ -15,7 +15,7 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; public class EventStageCandidateCalculator implements EventVisitor { private final TimePoint now = MillisecondsTimePoint.now(); - private final SortedSet> featuredEvents = new TreeSet<>(FeaturedEventsComparator.INSTANCE); + private final SortedSet> featuredEvents = new TreeSet<>(new FeaturedEventsComparator()); @Override public void visit(EventBase event, boolean onRemoteServer, URL baseURL) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java index bd475ee6fa8..655503bdfbe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java @@ -1,7 +1,11 @@ package com.sap.sailing.gwt.server; import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.gwt.ui.shared.start.StageEventType; import com.sap.sse.common.TimePoint; import com.sap.sse.common.TimeRange; @@ -10,15 +14,25 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.impl.TimeRangeImpl; public class FeaturedEventsComparator implements Comparator> { - public static final Comparator> INSTANCE = new FeaturedEventsComparator(); + + private final TimePoint now = MillisecondsTimePoint.now(); + private final Random randomizer = new Random(); + private final Map randomizedEvents = new HashMap<>(); @Override public int compare(Pair eventAndStageType1, Pair eventAndStageType2) { - TimePoint now = MillisecondsTimePoint.now(); - TimeRange event1Range = new TimeRangeImpl(eventAndStageType1.getB().event.getStartDate(), - eventAndStageType1.getB().event.getEndDate()); - TimeRange event2Range = new TimeRangeImpl(eventAndStageType2.getB().event.getStartDate(), - eventAndStageType2.getB().event.getEndDate()); - return event1Range.timeDifference(now).compareTo(event2Range.timeDifference(now)); + EventBase event1 = eventAndStageType1.getB().event, event2 = eventAndStageType2.getB().event; + TimeRange event1Range = new TimeRangeImpl(event1.getStartDate(), event1.getEndDate()); + TimeRange event2Range = new TimeRangeImpl(event2.getStartDate(), event2.getEndDate()); + int timeDiffComp = event1Range.timeDifference(now).compareTo(event2Range.timeDifference(now)); + return timeDiffComp == 0 ? getRandomValue(event1) - getRandomValue(event2) : timeDiffComp; + } + + private int getRandomValue(EventBase event) { + Integer randomValue = randomizedEvents.get(event); + if (randomValue == null) { + randomizedEvents.put(event, randomValue = randomizer.nextInt()); + } + return randomValue; } } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java index ef98509eb7c..bd8d0a9779f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java @@ -72,13 +72,14 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home int count = 0; for(Pair pair : stageCandidateCalculator.getFeaturedEvents()) { + StageEventType stageType = pair.getA(); + EventHolder holder = pair.getB(); + count++; - if(count > MAX_STAGE_EVENTS) { + if(count > MAX_STAGE_EVENTS && stageType != StageEventType.RUNNING) { break; } - StageEventType stageType = pair.getA(); - EventHolder holder = pair.getB(); result.addStageEvent(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, getService(), false)); EventReferenceDTO eventRef = new EventReferenceDTO(holder.event);