mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-07 12:51:02 +00:00
Merge remote-tracking branch 'origin/newhome'
This commit is contained in:
commit
5ae5d6a4d4
6 files changed
+98
-61
No files matched your search
+1
@@ -26,6 +26,7 @@ public interface TextMessages extends Messages {
|
||||
String pleaseTryAgain();
|
||||
String reloadPage();
|
||||
String errorMessageLoadingData();
|
||||
String raceNotScheduled();
|
||||
|
||||
String countdownDays();
|
||||
String countdownHours();
|
||||
|
||||
+1
@@ -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
|
||||
|
||||
+1
@@ -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.
|
||||
|
||||
+70
-56
@@ -32,22 +32,19 @@ public class EventActivity extends AbstractActivity {
|
||||
private final RegattaRaceStatesSettings raceStatesSettings;
|
||||
|
||||
private EventView view;
|
||||
private EventDTO event;
|
||||
|
||||
public EventActivity(EventPlace place, EventClientFactory clientFactory) {
|
||||
this.clientFactory = clientFactory;
|
||||
this.eventPlace = place;
|
||||
|
||||
this.view = null;
|
||||
this.event = null;
|
||||
|
||||
timerForClientServerOffset = new Timer(PlayModes.Replay);
|
||||
serverUpdateTimer = new Timer(PlayModes.Live, serverUpdateRateInMs);
|
||||
|
||||
raceStatesSettings = new RegattaRaceStatesSettings();
|
||||
serverUpdateTimer.addTimeListener(new TimeListener() {
|
||||
|
||||
@Override
|
||||
public void timeChanged(Date newTime, Date oldTime) {
|
||||
// loadAndUpdateEventRaceStatesLog();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,32 +56,7 @@ public class EventActivity extends AbstractActivity {
|
||||
clientFactory.getSailingService().getEventById(eventUUID, true, new AsyncCallback<EventDTO>() {
|
||||
@Override
|
||||
public void onSuccess(final EventDTO event) {
|
||||
if(event.getLeaderboardGroups().size() > 0) {
|
||||
clientFactory.getSailingService().getRegattaStructureOfEvent(event.id, new AsyncCallback<List<RaceGroupDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(List<RaceGroupDTO> raceGroups) {
|
||||
if(raceGroups.size() > 0) {
|
||||
for(LeaderboardGroupDTO leaderboardGroupDTO: event.getLeaderboardGroups()) {
|
||||
final long clientTimeWhenResponseWasReceived = System.currentTimeMillis();
|
||||
if (leaderboardGroupDTO.getAverageDelayToLiveInMillis() != null) {
|
||||
timerForClientServerOffset.setLivePlayDelayInMillis(leaderboardGroupDTO.getAverageDelayToLiveInMillis());
|
||||
}
|
||||
timerForClientServerOffset.adjustClientServerOffset(clientTimeWhenRequestWasSent, leaderboardGroupDTO.getCurrentServerTime(), clientTimeWhenResponseWasReceived);
|
||||
}
|
||||
createEventView(event, raceGroups, panel);
|
||||
} else {
|
||||
createEventWithoutRegattasView(event, panel);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
createErrorView("Error while loading the regatta structure with service getRegattaStructureOfEvent()", caught, panel);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
createEventWithoutRegattasView(event, panel);
|
||||
}
|
||||
loadRegattaStructure(panel, clientTimeWhenRequestWasSent, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -94,6 +66,47 @@ public class EventActivity extends AbstractActivity {
|
||||
});
|
||||
}
|
||||
|
||||
private void loadRegattaStructure(final AcceptsOneWidget panel, final long clientTimeWhenRequestWasSent, final EventDTO event) {
|
||||
this.event = event;
|
||||
if(event.getLeaderboardGroups().size() > 0) {
|
||||
clientFactory.getSailingService().getRegattaStructureOfEvent(event.id, new AsyncCallback<List<RaceGroupDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(List<RaceGroupDTO> raceGroups) {
|
||||
if(raceGroups.size() > 0) {
|
||||
for(LeaderboardGroupDTO leaderboardGroupDTO: event.getLeaderboardGroups()) {
|
||||
final long clientTimeWhenResponseWasReceived = System.currentTimeMillis();
|
||||
if (leaderboardGroupDTO.getAverageDelayToLiveInMillis() != null) {
|
||||
timerForClientServerOffset.setLivePlayDelayInMillis(leaderboardGroupDTO.getAverageDelayToLiveInMillis());
|
||||
}
|
||||
timerForClientServerOffset.adjustClientServerOffset(clientTimeWhenRequestWasSent, leaderboardGroupDTO.getCurrentServerTime(), clientTimeWhenResponseWasReceived);
|
||||
}
|
||||
createEventView(event, raceGroups, panel);
|
||||
|
||||
if(event.isRunning()) {
|
||||
// create update time for race states only for running events
|
||||
serverUpdateTimer.addTimeListener(new TimeListener() {
|
||||
@Override
|
||||
public void timeChanged(Date newTime, Date oldTime) {
|
||||
loadAndUpdateEventRaceStatesLog();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
createEventWithoutRegattasView(event, panel);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
createErrorView("Error while loading the regatta structure with service getRegattaStructureOfEvent()", caught, panel);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
createEventWithoutRegattasView(event, panel);
|
||||
}
|
||||
}
|
||||
|
||||
private void createErrorView(String errorMessage, Throwable errorReason, AcceptsOneWidget panel) {
|
||||
ErrorView view = clientFactory.createErrorView(errorMessage, errorReason);
|
||||
panel.setWidget(view.asWidget());
|
||||
@@ -111,31 +124,32 @@ public class EventActivity extends AbstractActivity {
|
||||
}
|
||||
|
||||
protected void loadAndUpdateEventRaceStatesLog() {
|
||||
final long clientTimeWhenRequestWasSent = System.currentTimeMillis();
|
||||
UUID eventUUID = UUID.fromString(eventPlace.getEventUuidAsString());
|
||||
if(view != null && event != null) {
|
||||
final long clientTimeWhenRequestWasSent = System.currentTimeMillis();
|
||||
|
||||
clientFactory.getSailingService().getRaceStateEntriesForRaceGroup(eventUUID, raceStatesSettings.getVisibleCourseAreas(),
|
||||
raceStatesSettings.getVisibleRegattas(), raceStatesSettings.isShowOnlyCurrentlyRunningRaces(), raceStatesSettings.isShowOnlyRacesOfSameDay(),
|
||||
new MarkedAsyncCallback<List<RegattaOverviewEntryDTO>>(
|
||||
new AsyncCallback<List<RegattaOverviewEntryDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable cause) {
|
||||
Window.setStatus("Error while loading the race states with service getRaceStateEntriesForRaceGroup()");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<RegattaOverviewEntryDTO> result) {
|
||||
final long clientTimeWhenResponseWasReceived = System.currentTimeMillis();
|
||||
Date serverTimeDuringRequest = null;
|
||||
for (RegattaOverviewEntryDTO entryDTO : result) {
|
||||
if (entryDTO.currentServerTime != null) {
|
||||
serverTimeDuringRequest = entryDTO.currentServerTime;
|
||||
}
|
||||
clientFactory.getSailingService().getRaceStateEntriesForRaceGroup(event.id, raceStatesSettings.getVisibleCourseAreas(),
|
||||
raceStatesSettings.getVisibleRegattas(), raceStatesSettings.isShowOnlyCurrentlyRunningRaces(), raceStatesSettings.isShowOnlyRacesOfSameDay(),
|
||||
new MarkedAsyncCallback<List<RegattaOverviewEntryDTO>>(
|
||||
new AsyncCallback<List<RegattaOverviewEntryDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable cause) {
|
||||
Window.setStatus("Error while loading the race states with service getRaceStateEntriesForRaceGroup()");
|
||||
}
|
||||
view.updateEventRaceStates(result);
|
||||
timerForClientServerOffset.adjustClientServerOffset(clientTimeWhenRequestWasSent, serverTimeDuringRequest, clientTimeWhenResponseWasReceived);
|
||||
}
|
||||
}));
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<RegattaOverviewEntryDTO> result) {
|
||||
final long clientTimeWhenResponseWasReceived = System.currentTimeMillis();
|
||||
Date serverTimeDuringRequest = null;
|
||||
for (RegattaOverviewEntryDTO entryDTO : result) {
|
||||
if (entryDTO.currentServerTime != null) {
|
||||
serverTimeDuringRequest = entryDTO.currentServerTime;
|
||||
}
|
||||
}
|
||||
view.updateEventRaceStates(result);
|
||||
timerForClientServerOffset.adjustClientServerOffset(clientTimeWhenRequestWasSent, serverTimeDuringRequest, clientTimeWhenResponseWasReceived);
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+22
-5
@@ -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) {
|
||||
|
||||
+3
@@ -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>
|
||||
|
||||
Reference in new issue
Block a user