Merge branch 'archive-hotfix' into design2015

Conflicts:
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties
This commit is contained in:
Benjamin Barth committed 2015-09-07 14:25:58 +02:00
commit 619d5a072b
38 files changed
+533 -105

No files matched your search

@@ -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));
@@ -72,6 +72,11 @@ public class EventsOverviewRecentYear extends Composite {
for (EventListEventDTO eventDTO : events) {
PlaceNavigation<EventDefaultPlace> 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() {
@@ -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;
@@ -20,9 +21,14 @@ 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));
}
public void setSeriesInformation(PlaceNavigation<?> seriesNavigation, EventListEventSeriesDTO eventSeries) {
eventTeaser.setSeriesInformation(seriesNavigation, eventSeries);
}
public void hideImage(boolean hide) {
eventTeaser.hideImage(hide);
@@ -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%;
@@ -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);
@@ -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();
@@ -0,0 +1,32 @@
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<DivElement, EventTeaserSeriesInfoCorner> {
}
@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.eventsHaveTakenPlace(eventSeries.getEventsCount()));
seriesNavigation.configureAnchorElement(seriesInfoTextUi);
seriesEventsCountUi.setInnerText(String.valueOf(eventCount));
}
}
@@ -0,0 +1,10 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field="i18n" type="com.sap.sailing.gwt.common.client.i18n.TextMessages" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.shared.event.EventTeaserResources" />
<div class="{local_res.css.eventteaser_series}">
<div class="{local_res.css.eventteaser_series_corner}"></div>
<a class="{local_res.css.eventteaser_series_text}" ui:field="seriesInfoTextUi"><ui:text from="{i18n.series}"/></a>
<div class="{local_res.css.eventteaser_series_eventcount}" ui:field="seriesEventsCountUi"></div>
</div>
</ui:UiBinder>
@@ -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();
}
}
}
@@ -0,0 +1,55 @@
package com.sap.sailing.gwt.home.desktop.app;
import com.google.gwt.core.client.GWT;
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
import com.sap.sailing.gwt.home.shared.app.PlaceNavigator;
public abstract class AbstractPlaceNavigator implements PlaceNavigator {
protected final PlaceController placeController;
private final ApplicationHistoryMapper mapper = GWT.create(ApplicationHistoryMapper.class);
public final static String DEFAULT_SAPSAILING_SERVER = "www.sapsailing.com";
public final static String DEFAULT_SAPSAILING_DEV_SERVER = "dev.sapsailing.com";
public final static String DEFAULT_SAPSAILING_SERVER_URL = "http://" + DEFAULT_SAPSAILING_SERVER;
protected AbstractPlaceNavigator(PlaceController placeController) {
this.placeController = placeController;
}
public <T extends Place> void goToPlace(PlaceNavigation<T> placeNavigation) {
if(placeNavigation.isRemotePlace()) {
String destinationUrl = placeNavigation.getTargetUrl();
History.newItem(History.getToken(), false);
Window.Location.assign(destinationUrl);
} else {
placeController.goTo(placeNavigation.getPlace());
}
}
protected <T extends Place> PlaceNavigation<T> createLocalPlaceNavigation(T destinationPlace) {
return new PlaceNavigation<T>(null, destinationPlace, false, this, mapper);
}
protected <T extends Place> PlaceNavigation<T> createGlobalPlaceNavigation(T destinationPlace) {
return new PlaceNavigation<T>(destinationPlace, this, mapper);
}
protected <T extends Place> PlaceNavigation<T> createPlaceNavigation(String baseUrl, boolean isOnRemoteServer,
T destinationPlace) {
return new PlaceNavigation<T>(baseUrl, destinationPlace, isOnRemoteServer, this, mapper);
}
public <T extends Place> void pushPlaceToHistoryStack(T destinationPlace) {
String placeHistoryToken = mapper.getToken(destinationPlace);
History.newItem(placeHistoryToken, false);
}
}
@@ -0,0 +1,55 @@
package com.sap.sailing.gwt.home.mobile.app;
import com.google.gwt.core.client.GWT;
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
import com.sap.sailing.gwt.home.shared.app.PlaceNavigator;
public abstract class AbstractPlaceNavigator implements PlaceNavigator {
protected final PlaceController placeController;
private final ApplicationHistoryMapper mapper = GWT.create(ApplicationHistoryMapper.class);
public final static String DEFAULT_SAPSAILING_SERVER = "www.sapsailing.com";
public final static String DEFAULT_SAPSAILING_DEV_SERVER = "dev.sapsailing.com";
public final static String DEFAULT_SAPSAILING_SERVER_URL = "http://" + DEFAULT_SAPSAILING_SERVER;
protected AbstractPlaceNavigator(PlaceController placeController) {
this.placeController = placeController;
}
public <T extends Place> void goToPlace(PlaceNavigation<T> placeNavigation) {
if(placeNavigation.isRemotePlace()) {
String destinationUrl = placeNavigation.getTargetUrl();
History.newItem(History.getToken(), false);
Window.Location.assign(destinationUrl);
} else {
placeController.goTo(placeNavigation.getPlace());
}
}
protected <T extends Place> PlaceNavigation<T> createLocalPlaceNavigation(T destinationPlace) {
return new PlaceNavigation<T>(null, destinationPlace, false, this, mapper);
}
protected <T extends Place> PlaceNavigation<T> createGlobalPlaceNavigation(T destinationPlace) {
return new PlaceNavigation<T>(destinationPlace, this, mapper);
}
protected <T extends Place> PlaceNavigation<T> createPlaceNavigation(String baseUrl, boolean isOnRemoteServer,
T destinationPlace) {
return new PlaceNavigation<T>(baseUrl, destinationPlace, isOnRemoteServer, this, mapper);
}
public <T extends Place> void pushPlaceToHistoryStack(T destinationPlace) {
String placeHistoryToken = mapper.getToken(destinationPlace);
History.newItem(placeHistoryToken, false);
}
}
@@ -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<AnchorElement, EventOverviewRecentSeriesInfo> {
}
@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);
}
}
@@ -0,0 +1,15 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<ui:with field="res" type="com.sap.sailing.gwt.home.mobile.resources.SharedResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.mobile.partials.recents.EventsOverviewRecentResources" />
<a class="{local_res.css.eventsoverviewrecent_event} {local_res.css.seriesInfo}">
<div class="{local_res.css.eventteaser_title}">
<div class="{local_res.css.eventteaser_title_name}" ui:field="seriesNameUi"></div>
<div class="{local_res.css.eventteaser_title_location}" ui:field="seriesInfoUi"></div>
</div>
<div class="{local_res.css.eventsoverviewrecent_event_arrow}">
<img src="images/home/arrow-down-grey.png" class="{local_res.css.eventsoverviewrecent_event_arrow_image}"></img>
</div>
</a>
</ui:UiBinder>
@@ -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;
}
@@ -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")
@@ -49,11 +49,15 @@ public class EventsOverviewRecentYear extends Composite {
this.eventsCount.setInnerText(i18n.eventsCount(events.size()));
boolean first = true;
for (EventListEventDTO eventDTO : events) {
PlaceNavigation<EventDefaultPlace> 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;
@@ -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());
}
}
@@ -7,24 +7,25 @@
type="com.sap.sailing.gwt.home.mobile.resources.SharedResources" />
<ui:with field="local_res"
type="com.sap.sailing.gwt.home.mobile.partials.recents.EventsOverviewRecentResources" />
<a ui:field="eventLinkUi">
<img ui:field="eventImageUi" class="{local_res.css.eventsoverviewrecent_event_image}"></img>
<div class="{local_res.css.eventsoverviewrecent_event}">
<div class="{local_res.css.eventteaser_title}">
<div class="{local_res.css.eventteaser_title_name}">
<span ui:field="eventNameUi" />
<div ui:field="eventStateUi"
class="{local_res.css.eventteaser_title_name_state} {res.mainCss.label}" />
<div>
<a ui:field="eventLinkUi">
<img ui:field="eventImageUi" class="{local_res.css.eventsoverviewrecent_event_image}"></img>
<div class="{local_res.css.eventsoverviewrecent_event}">
<div class="{local_res.css.eventteaser_title}">
<div class="{local_res.css.eventteaser_title_name}">
<span ui:field="eventNameUi" />
<div ui:field="eventStateUi"
class="{local_res.css.eventteaser_title_name_state} {res.mainCss.label}" />
</div>
<div class="{local_res.css.eventteaser_title_location}">
<span ui:field="venueUi" />,&nbsp;<span ui:field="eventDateUi" />
</div>
</div>
<div class="{local_res.css.eventteaser_title_location}">
<span ui:field="venueUi" />,&nbsp;<span ui:field="eventDateUi" />
<div class="{local_res.css.eventsoverviewrecent_event_arrow}">
<img src="images/home/arrow-down-grey.png" alt="{i18n.goToEventOverview}"
class="{local_res.css.eventsoverviewrecent_event_arrow_image}"></img>
</div>
</div>
<div class="{local_res.css.eventsoverviewrecent_event_arrow}">
<img src="images/home/arrow-down-grey.png" alt="{i18n.goToEventOverview}"
class="{local_res.css.eventsoverviewrecent_event_arrow_image}"></img>
</div>
</div>
</a>
</a>
</div>
</ui:UiBinder>
@@ -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();
}
}
}
@@ -59,7 +59,7 @@ public class EventViewImpl extends AbstractEventView<EventView.Presenter> implem
private void setupOverviewStage(Panel container) {
overviewStageUi = new EventOverviewStage(currentPresenter);
refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(getEventId()));
refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(getEventId(), true));
container.add(overviewStageUi);
}
@@ -99,6 +99,7 @@ public class PlaceNavigation<T extends Place> {
public void onBrowserEvent(Event event) {
if (LinkUtil.handleLinkClick(event)) {
event.preventDefault();
event.stopPropagation();
goToPlace();
}
}
@@ -0,0 +1,67 @@
package com.sap.sailing.gwt.server;
import java.net.URL;
import java.util.Calendar;
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;
public class EventListDataCalculator implements EventVisitor {
private final Map<String, EventListEventDTO> lastestEventPerSeries = new HashMap<>();
private final Map<String, Integer> numberOfEventsPerSeries = 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);
}
increaseNumberOfEvents(seriesName);
} else {
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 (Entry<String, EventListEventDTO> 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 void addEventToResults(EventListEventDTO eventDTO) {
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(eventDTO.getStartDate());
result.addEvent(eventDTO, cal.get(Calendar.YEAR));
}
}
@@ -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;
@@ -263,21 +257,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();
}
}
@@ -415,12 +415,9 @@ 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;
}
@@ -1382,4 +1382,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
String progress();
String videosCount(@PluralCount(DefaultRule_1_0n.class) int count);
String photosCount(@PluralCount(DefaultRule_1_0n.class) int count);
String eventsHaveTakenPlace(@PluralCount(DefaultRule_1_0n.class) int eventCount);
}
@@ -1351,3 +1351,5 @@ videosCount={0,number} videos
videosCount[one]={0,number} video
photosCount={0,number} photos
photosCount[one]={0,number} photo
eventsHaveTakenPlace={0} events have taken place
eventsHaveTakenPlace[one]= One event has taken place
@@ -1340,3 +1340,5 @@ videosCount={0,number} Videos
videosCount[one]={0,number} Video
photosCount={0,number} Bilder
photosCount[one]={0,number} Bild
eventsHaveTakenPlace={0} Veranstaltungen haben stattgefunden
eventsHaveTakenPlace[one]= Eine Veranstaltung hat stattgefunden
@@ -1290,3 +1290,5 @@ videosCount={0,number} videos
videosCount[one]={0,number} video
photosCount={0,number} photos
photosCount[one]={0,number} photo
eventsHaveTakenPlace={0} events have taken place
eventsHaveTakenPlace[one]= One event has taken place
@@ -1326,3 +1326,5 @@ videosCount={0,number} videos
videosCount[one]={0,number} video
photosCount={0,number} photos
photosCount[one]={0,number} photo
eventsHaveTakenPlace={0} events have taken place
eventsHaveTakenPlace[one]= One event has taken place
@@ -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<ResultWithTTL<EventOv
private static final Collection<String> 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<ResultWithTTL<EventOv
if(stageVideo != null) {
return new EventOverviewVideoStageDTO(EventOverviewVideoStageDTO.Type.MEDIA, HomeServiceUtil.toVideoDTO(stageVideo));
}
String stageImageUrl = HomeServiceUtil.getStageImageURLAsString(event);
String stageImageUrl = useTeaserImage ? findEventThumbnailImageUrlAsString(event) : getStageImageURLAsString(event);
if(state == EventState.UPCOMING || state == EventState.PLANNED) {
return new EventOverviewTickerStageDTO(event.getStartDate().asDate(), event.getName(), stageImageUrl);
}
@@ -1,24 +1,18 @@
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;
@Override
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;
}
}
@@ -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;
}
}
@@ -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;
}
}
@@ -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;
}
}
@@ -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;
}
}
@@ -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 ---
}
@@ -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 ---
}
@@ -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;
}