Merge remote-tracking branch 'origin/newhome' into newhome_with_leaderboard

This commit is contained in:
fmittag committed 2014-08-14 13:20:58 +02:00
commit bb48c3cc79
10 files changed
+49 -11

No files matched your search

+2 -1
View File
@@ -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]]
@@ -26,6 +26,7 @@ public interface TextMessages extends Messages {
String pleaseTryAgain();
String reloadPage();
String errorMessageLoadingData();
String raceNotScheduled();
String countdownDays();
String countdownHours();
@@ -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
@@ -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.
@@ -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<DivElement, EventRegattaRacesRace> {
}
@@ -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) {
@@ -41,6 +41,9 @@
<div ui:field="raceNotTrackedDiv" class="{local_res.css.eventregattarace_action} {local_res.css.eventregattarace_actiondisabled}">
<ui:text from='{i18n.eventRegattaRaceNotTracked}'/>
</div>
<div ui:field="raceNotScheduledDiv" class="{local_res.css.eventregattarace_action} {local_res.css.eventregattarace_actiondisabled}">
<ui:text from='{i18n.raceNotScheduled}'/>
</div>
<div ui:field="watchRaceDiv" class="{local_res.css.eventregattarace_action}">
<a ui:field="watchRaceLink" class="{res.mainCss.button} {local_res.css.eventregattarace_action_watch}"><ui:text from='{i18n.eventRegattaRaceWatch}'/></a>
</div>
@@ -23,9 +23,9 @@ public abstract class AbstractEventsView extends Composite implements EventsView
@Override
public void setEvents(List<EventBaseDTO> 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<EventBaseDTO> eventsOfYear = recentEventsOrderedByYear.get(year);
if(eventsOfYear == null) {
@@ -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));
@@ -9,7 +9,7 @@
<div class="{local_res.css.eventteasercontainer}">
<a href="javascript:;" ui:field="eventOverviewLink" class="{local_res.css.eventteaser}">
<figure class="{local_res.css.eventteaser_image}"><img ui:field="eventImage" />
<div class="{local_res.css.eventteaser_series} {res.mainCss.label}"></div>
<div ui:field="isLiveDiv" data-labeltype="live" class="{local_res.css.eventteaser_series} {res.mainCss.label}"><ui:text from='{i18n.live}'/></div>
</figure>
<div class="{local_res.css.eventteaser_name}"><span ui:field="eventName" /></div>
<div class="{local_res.css.eventteaser_location}">
@@ -52,6 +52,14 @@ public class EventBaseDTO extends NamedDTO implements IsSerializable {
this.leaderboardGroups = leaderboardGroups;
}
public boolean isRunning() {
Date now = new Date();
if(startDate != null && endDate != null && (now.after(startDate) && now.before(endDate))) {
return true;
}
return false;
}
public String getDescription() {
return description;
}