diff --git a/home.md b/home.md index ef9a7cf74a1..9c401284120 100644 --- a/home.md +++ b/home.md @@ -19,11 +19,12 @@ Like businesses, sailors need the latest information to make strategic decisions * [[Monitoring Apache and RabbitMQ|wiki/monitoring-apache-and-rabbitmq]] * [[JMX Support|wiki/jmx]] * Information for Developers - * [[Cook Book|wiki/cook-book]] * [[OnBoarding Information|wiki/onboarding]] + * [[Cook Book|wiki/cook-book]] * [[Building and Deploying|wiki/building-and-deploying]] * [[Continuous Integration with Hudson/Jenkins|wiki/ci]] * [[UI Tests with Selenium|wiki/selenium-ui-tests]] + * [[Profiling|wiki/profiling]] * [[Typical Development Scenarios|wiki/typical-development-scenarios]] * [[Load Tests|wiki/server-load-tests]] * [[Server Replication|wiki/server-replication]] diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages.java index 8242422626f..b72e31dce95 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages.java @@ -26,6 +26,7 @@ public interface TextMessages extends Messages { String pleaseTryAgain(); String reloadPage(); String errorMessageLoadingData(); + String raceNotScheduled(); String countdownDays(); String countdownHours(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages.properties index 9fd78257925..c6ec21ddeb3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages.properties @@ -18,6 +18,7 @@ pleaseEnterASearchTerm=Please enter a search term. pleaseTryAgain=Please try again... reloadPage=Reload page errorMessageLoadingData=An error occured while loading the data for this page. +raceNotScheduled=Not scheduled. countdownDays=Days countdownHours=Hrs diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages_de.properties index d1cc7a31d48..22690949f0c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/i18n/TextMessages_de.properties @@ -18,6 +18,7 @@ pleaseEnterASearchTerm=Bitte gebe einen Suchbegriff ein. pleaseTryAgain=Bitte versuchen sie es erneut... reloadPage=Seite neu laden errorMessageLoadingData=Beim Laden der Daten für diese Seite ist ein Fehler aufgetreten. +raceNotScheduled=Keine Startzeit bekannt countdownDays=Tage countdownHours=Std. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.java index bbb14a009a9..66e1afc9c9c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.java @@ -25,7 +25,7 @@ import com.sap.sse.gwt.client.player.Timer; public class EventRegattaRacesRace extends UIObject { private static EventRegattaRacesRaceUiBinder uiBinder = GWT.create(EventRegattaRacesRaceUiBinder.class); - private enum SimpleRaceStates { NOT_TRACKED, TRACKED_AND_NOT_LIVE, TRACKED_AND_LIVE }; + private enum SimpleRaceStates { NOT_TRACKED, TRACKED_AND_FINISHED, TRACKED_AND_RUNNING, TRACKED_BUT_NOT_SCHEDULED }; interface EventRegattaRacesRaceUiBinder extends UiBinder { } @@ -38,6 +38,7 @@ public class EventRegattaRacesRace extends UIObject { @UiField SpanElement averageRaceWind; @UiField DivElement raceNotTrackedDiv; + @UiField DivElement raceNotScheduledDiv; @UiField DivElement watchRaceDiv; @UiField DivElement analyzeRaceDiv; @UiField AnchorElement watchRaceLink; @@ -83,7 +84,7 @@ public class EventRegattaRacesRace extends UIObject { EventRegattaRacesResources.INSTANCE.css().ensureInjected(); setElement(uiBinder.createAndBindUi(this)); - allConditionalElements = new Element[] {raceWinnerDiv, raceLeaderDiv, watchRaceDiv, analyzeRaceDiv, raceNotTrackedDiv, + allConditionalElements = new Element[] {raceWinnerDiv, raceLeaderDiv, watchRaceDiv, analyzeRaceDiv, raceNotTrackedDiv, raceNotScheduledDiv, raceFeaturesDiv, legProgressDiv, raceFlagDiv, windStatusDiv }; if(fleet.getColor() != null) { @@ -127,7 +128,20 @@ public class EventRegattaRacesRace extends UIObject { SimpleRaceStates simpleRaceState = SimpleRaceStates.NOT_TRACKED; if(race != null && race.trackedRace != null) { - simpleRaceState = isLive() ? SimpleRaceStates.TRACKED_AND_LIVE : SimpleRaceStates.TRACKED_AND_NOT_LIVE; + if(isLive()) { + simpleRaceState = SimpleRaceStates.TRACKED_AND_RUNNING; + if(race.startOfRace == null) { + simpleRaceState = SimpleRaceStates.TRACKED_BUT_NOT_SCHEDULED; + } else if (race.endOfRace != null) { + simpleRaceState = SimpleRaceStates.TRACKED_AND_FINISHED; + } + } else { + if(race.startOfRace == null) { + simpleRaceState = SimpleRaceStates.TRACKED_BUT_NOT_SCHEDULED; + } else if (race.endOfRace != null) { + simpleRaceState = SimpleRaceStates.TRACKED_AND_FINISHED; + } + } } return simpleRaceState; } @@ -147,7 +161,10 @@ public class EventRegattaRacesRace extends UIObject { case NOT_TRACKED: showElement(raceNotTrackedDiv); break; - case TRACKED_AND_LIVE: + case TRACKED_BUT_NOT_SCHEDULED: + showElement(raceNotScheduledDiv); + break; + case TRACKED_AND_RUNNING: showElement(watchRaceDiv); if(race.startOfRace != null) { @@ -164,7 +181,7 @@ public class EventRegattaRacesRace extends UIObject { } break; - case TRACKED_AND_NOT_LIVE: + case TRACKED_AND_FINISHED: showElement(analyzeRaceDiv); if(race.trackedRaceStatistics.hasLeaderData && race.trackedRaceStatistics.leaderOrWinner != null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.ui.xml index 885f864fb87..69bc2435f9e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesRace.ui.xml @@ -41,6 +41,9 @@
+
+ +
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/AbstractEventsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/AbstractEventsView.java index 3b843f1430c..78ecd1a27fc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/AbstractEventsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/AbstractEventsView.java @@ -23,9 +23,9 @@ public abstract class AbstractEventsView extends Composite implements EventsView @Override public void setEvents(List events) { for(EventBaseDTO event: events) { - if(event.startDate != null) { - if(DateUtil.isDayInPast(event.startDate)) { - // recent event + if(event.startDate != null && event.endDate != null) { + if(DateUtil.isDayInPast(event.startDate) || event.isRunning()) { + // recent event or live event int year = DateUtil.getYear(event.startDate); List eventsOfYear = recentEventsOrderedByYear.get(year); if(eventsOfYear == null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/recentevent/RecentEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/recentevent/RecentEvent.java index b3dd8929caa..bb0ebaf59d5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/recentevent/RecentEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/recentevent/RecentEvent.java @@ -7,6 +7,7 @@ import com.google.gwt.dom.client.AnchorElement; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.ImageElement; import com.google.gwt.dom.client.SpanElement; +import com.google.gwt.dom.client.Style.Display; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; @@ -26,7 +27,8 @@ public class RecentEvent extends UIObject { @UiField SpanElement eventStartDate; @UiField AnchorElement eventOverviewLink; @UiField ImageElement eventImage; - + @UiField DivElement isLiveDiv; + private EventBaseDTO event; private final String defaultImageUrl = "http://static.sapsailing.com/ubilabsimages/default/default_event_photo.jpg"; @@ -64,6 +66,10 @@ public class RecentEvent extends UIObject { SafeHtml safeHtmlEventName = LongNamesUtil.breakLongName(event.getName()); eventName.setInnerSafeHtml(safeHtmlEventName); + if(!event.isRunning()) { + isLiveDiv.getStyle().setDisplay(Display.NONE); + } + venueName.setInnerText(event.venue.getName()); eventStartDate.setInnerText(EventDatesFormatterUtil.formatDateRangeWithoutYear(event.startDate, event.endDate)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/recentevent/RecentEvent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/recentevent/RecentEvent.ui.xml index 6184aa99929..2592bd30cfc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/recentevent/RecentEvent.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/recentevent/RecentEvent.ui.xml @@ -9,7 +9,7 @@