factored all time-based settings into TimePanel

This commit is contained in:
Axel Uhl committed 2011-07-08 16:54:42 +02:00
1 parent 702cfb87f6
commit 6bb3cf7c8e
27 files changed
+55428 -32

No files matched your search

@@ -62,7 +62,7 @@ public class AdminConsole implements EntryPoint, ErrorReporter, EventRefresher {
raceMapPanel.setSize("90%", "90%");
tabPanel.add(raceMapPanel, stringConstants.map(), false);
tabPanel.selectTab(0);
fillEvents();
}
private DialogBox createErrorDialog() {
@@ -256,7 +256,6 @@ public class EventManagementPanel extends FormPanel implements EventDisplayer {
grid.getCellFormatter().setVerticalAlignment(8, 1, HasVerticalAlignment.ALIGN_TOP);
grid.getCellFormatter().setVerticalAlignment(8, 0, HasVerticalAlignment.ALIGN_TOP);
eventRefresher.fillEvents();
updatePortStoredData();
updateLiveURI();
updateStoredURI();
@@ -1,6 +1,7 @@
package com.sap.sailing.gwt.ui.client;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.google.gwt.event.dom.client.ChangeEvent;
@@ -22,9 +23,8 @@ import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.gwt.ui.shared.EventDAO;
import com.sap.sailing.gwt.ui.shared.RaceDAO;
import com.sap.sailing.gwt.ui.shared.RegattaDAO;
import com.sap.ui.commons.client.SliderWidget;
public class RaceMapPanel extends FormPanel implements EventDisplayer {
public class RaceMapPanel extends FormPanel implements EventDisplayer, TimeListener {
private final StringConstants stringConstants;
private final SailingServiceAsync sailingService;
private final ErrorReporter errorReporter;
@@ -32,7 +32,8 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer {
private MapWidget map;
private final List<RaceDAO> raceList;
private final ListBox raceListBox;
private final TimePanel timePanel;
private final String mapsAPIKey = "ABQIAAAAmvjPh3ZpHbnwuX3a66lDqRTB4YHzt9A9TZNGGB87gEPRa24TnRQjCq1hRMRvlUmR4K97fo_4LwER6A";
public RaceMapPanel(SailingServiceAsync sailingService, ErrorReporter errorReporter, StringConstants stringConstants) {
@@ -51,13 +52,8 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer {
vp.add(new Label(stringConstants.races()));
vp.add(raceListBox);
grid.setWidget(0, 0, vp);
SliderWidget slider = new SliderWidget();
slider.setMin(0);
slider.setMax(10000000);
slider.setStepLabels(true);
slider.setTitle(stringConstants.time());
slider.setTotalUnits(10);
grid.setWidget(0, 1, slider);
timePanel = new TimePanel(stringConstants);
grid.setWidget(0, 1, timePanel);
}
private void loadMapsAPI() {
@@ -82,7 +78,7 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer {
}
});
}
@Override
public void fillEvents(List<EventDAO> result) {
raceList.clear();
@@ -107,12 +103,18 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer {
updateMapFromSelectedRace();
}
});
updateMapFromSelectedRace();
}
private void updateMapFromSelectedRace() {
RaceDAO selectedRace = getSelectedRace();
updateSlider(selectedRace);
}
private void updateSlider(RaceDAO selectedRace) {
timePanel.setMin(selectedRace.startOfTracking);
timePanel.setMax(selectedRace.timePointOfNewestEvent);
}
private RaceDAO getSelectedRace() {
@@ -123,4 +125,9 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer {
}
return result;
}
@Override
public void timeChanged(Date date) {
// TODO implement timeChanged such that race display is advanced to date
}
}
@@ -19,4 +19,6 @@ public interface StringConstants extends Constants {
String races();
String tracked();
String time();
String acceleration();
String accelerationHelp();
}
@@ -13,4 +13,6 @@ dampeningInterval=Dampening Interval
map=Map
races=Races
tracked=tracked
time=Time
time=Time
acceleration=Acceleration
accelerationHelp=Use "1" for regular play-back speed, "2" for double-speed playback and so on
@@ -0,0 +1,7 @@
package com.sap.sailing.gwt.ui.client;
import java.util.Date;
public interface TimeListener {
void timeChanged(Date date);
}
@@ -0,0 +1,124 @@
package com.sap.sailing.gwt.ui.client;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DoubleBox;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.ui.commons.client.SliderWidget;
import com.sap.ui.core.client.event.Event;
import com.sap.ui.core.client.event.EventListener;
public class TimePanel extends FormPanel {
private final SliderWidget slider;
private final Set<TimeListener> listeners;
private final Button playPauseButton;
private final DoubleBox accelerationBox;
private final Label timeLabel;
private Date time;
private boolean playing;
public TimePanel(StringConstants stringConstants) {
listeners = new HashSet<TimeListener>();
VerticalPanel vp = new VerticalPanel();
vp.setSize("100%", "100%");
HorizontalPanel hp = new HorizontalPanel();
hp.setSize("100%", "100%");
vp.add(hp);
playPauseButton = new Button("&gt;");
playPauseButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
togglePlay();
}
});
hp.add(playPauseButton);
playing = false;
Button slowDownButton = new Button("-1");
slowDownButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
accelerationBox.setValue(accelerationBox.getValue() == null ? 0 : accelerationBox.getValue() - 1);
}
});
hp.add(slowDownButton);
accelerationBox = new DoubleBox();
accelerationBox.setValue(1.0);
accelerationBox.setTitle(stringConstants.accelerationHelp());
hp.add(new Label(stringConstants.acceleration()));
hp.add(accelerationBox);
Button speedUpButton = new Button("+1");
speedUpButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
accelerationBox.setValue(accelerationBox.getValue() == null ? 0 : accelerationBox.getValue() + 1);
}
});
hp.add(speedUpButton);
hp.add(new Label(stringConstants.time()));
timeLabel = new Label();
hp.add(timeLabel);
slider = new SliderWidget();
slider.setStepLabels(true);
slider.setTotalUnits(10);
EventListener sliderListener = new EventListener() {
@Override
public void onEvent(Event event) {
slider.setTitle(new Date((long) slider.getValue()).toString());
setTime((long) slider.getValue());
}
};
slider.attachChangeEvent(sliderListener);
slider.attachLiveChangeEvent(sliderListener);
vp.add(slider);
setWidget(vp);
}
public void addTimeListener(TimeListener listener) {
listeners.add(listener);
}
public void removeTimeListener(TimeListener listener) {
listeners.remove(listener);
}
private void setTime(long timePointAsMillis) {
time = new Date(timePointAsMillis);
timeLabel.setText(time.toString());
for (TimeListener listener : listeners) {
listener.timeChanged(time);
}
}
public void setMin(Date min) {
slider.setMin(min.getTime());
if (time == null || time.before(min)) {
slider.setValue((long) min.getTime());
setTime((long) min.getTime());
}
}
public void setMax(Date max) {
slider.setMax(max.getTime());
if (time == null || time.after(max)) {
slider.setValue((long) max.getTime());
setTime((long) max.getTime());
}
}
private void togglePlay() {
playing = !playing;
playPauseButton.setText(playing ? "||" : ">");
}
}
@@ -100,7 +100,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
}
List<RegattaDAO> result = new ArrayList<RegattaDAO>();
for (Map.Entry<BoatClass, Set<RaceDefinition>> e : racesByBoatClass.entrySet()) {
List<RaceDAO> raceDAOsInBoatClass = getRaceDAOs(e.getValue());
List<RaceDAO> raceDAOsInBoatClass = getRaceDAOs(event, e.getValue());
if (!raceDAOsInBoatClass.isEmpty()) {
RegattaDAO regatta = new RegattaDAO(new BoatClassDAO(e.getKey().getName()), raceDAOsInBoatClass);
result.add(regatta);
@@ -109,10 +109,18 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
return result;
}
private List<RaceDAO> getRaceDAOs(Set<RaceDefinition> races) {
private List<RaceDAO> getRaceDAOs(Event event, Set<RaceDefinition> races) {
List<RaceDAO> result = new ArrayList<RaceDAO>();
for (RaceDefinition r : races) {
result.add(new RaceDAO(r.getName(), getCompetitorDAOs(r.getCompetitors()), service.isRaceBeingTracked(r)));
RaceDAO raceDAO = new RaceDAO(r.getName(), getCompetitorDAOs(r.getCompetitors()), service.isRaceBeingTracked(r));
if (raceDAO.currentlyTracked) {
TrackedRace trackedRace = service.getTrackedRace(event, r);
raceDAO.startOfRace = trackedRace.getStart() == null ? null : trackedRace.getStart().asDate();
raceDAO.startOfTracking = trackedRace.getStartOfTracking() == null ? null : trackedRace.getStartOfTracking().asDate();
raceDAO.timePointOfLastEvent = trackedRace.getTimePointOfLastEvent() == null ? null : trackedRace.getTimePointOfLastEvent().asDate();
raceDAO.timePointOfNewestEvent = trackedRace.getTimePointOfNewestEvent() == null ? null : trackedRace.getTimePointOfNewestEvent().asDate();
}
result.add(raceDAO);
}
return result;
}
@@ -1,5 +1,7 @@
package com.sap.sailing.gwt.ui.shared;
import java.util.Date;
import com.google.gwt.user.client.rpc.IsSerializable;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tractracadapter.RaceTracker;
@@ -14,6 +16,11 @@ public class RaceDAO implements IsSerializable {
* accordingly.
*/
public boolean currentlyTracked;
public Date startOfRace;
public Date startOfTracking;
public Date timePointOfLastEvent;
public Date timePointOfNewestEvent;
public RaceDAO() {}
@@ -1,2 +1,3 @@
# Module com.sap.sailing.gwt.ui.AdminConsole
# RPC service class, partial path of RPC policy file
com.sap.sailing.gwt.ui.client.SailingService, 4F5B285D334CF9AF08B53D8597EA2EE4.gwt.rpc
@@ -0,0 +1,2 @@
serviceClass: com.sap.sailing.gwt.ui.client.SailingService
path: 4F5B285D334CF9AF08B53D8597EA2EE4.gwt.rpc
@@ -0,0 +1,94 @@
com.google.gwt.ajaxloader.client.Properties$TypeException, true, true, false, false, com.google.gwt.ajaxloader.client.Properties$TypeException/806639172, 806639172
com.google.gwt.event.shared.UmbrellaException, true, true, false, false, com.google.gwt.event.shared.UmbrellaException/3104463596, 3104463596
com.google.gwt.http.client.RequestException, true, true, false, false, com.google.gwt.http.client.RequestException/190587325, 190587325
com.google.gwt.i18n.client.impl.DateRecord, true, true, true, true, com.google.gwt.i18n.client.impl.DateRecord/3220471373, 3220471373
com.google.gwt.json.client.JSONException, true, true, false, false, com.google.gwt.json.client.JSONException/2941795468, 2941795468
com.google.gwt.jsonp.client.TimeoutException, true, true, false, false, com.google.gwt.jsonp.client.TimeoutException/1112787596, 1112787596
com.google.gwt.maps.jsio.client.JSONWrapperException, true, true, false, false, com.google.gwt.maps.jsio.client.JSONWrapperException/3422975972, 3422975972
com.google.gwt.maps.jsio.client.MultipleWrapperException, true, true, false, false, com.google.gwt.maps.jsio.client.MultipleWrapperException/1503780744, 1503780744
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException, true, true, true, true, com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533, 3936916533
com.google.gwt.user.client.rpc.InvocationException, true, false, false, false, com.google.gwt.user.client.rpc.InvocationException/1510557512, 1510557512
com.google.gwt.user.client.rpc.RpcTokenException, true, true, false, false, com.google.gwt.user.client.rpc.RpcTokenException/2345075298, 2345075298
com.google.gwt.user.client.rpc.SerializableException, true, true, false, false, com.google.gwt.user.client.rpc.SerializableException/3047383460, 3047383460
com.google.gwt.user.client.rpc.SerializationException, true, true, false, false, com.google.gwt.user.client.rpc.SerializationException/2836333220, 2836333220
com.google.gwt.user.client.rpc.ServiceDefTarget$NoServiceEntryPointSpecifiedException, true, true, false, false, com.google.gwt.user.client.rpc.ServiceDefTarget$NoServiceEntryPointSpecifiedException/3408313447, 3408313447
com.google.gwt.user.client.rpc.XsrfToken, false, false, true, true, com.google.gwt.user.client.rpc.XsrfToken/4254043109, 4254043109
com.google.web.bindery.event.shared.UmbrellaException, true, true, false, false, com.google.web.bindery.event.shared.UmbrellaException/1025846929, 1025846929
com.sap.sailing.gwt.ui.client.SailingService, false, false, false, false, _, 2610738066
com.sap.sailing.gwt.ui.shared.BoatClassDAO, true, true, false, false, com.sap.sailing.gwt.ui.shared.BoatClassDAO/876059280, 876059280
com.sap.sailing.gwt.ui.shared.CompetitorDAO, true, true, false, false, com.sap.sailing.gwt.ui.shared.CompetitorDAO/1117883818, 1117883818
[Lcom.sap.sailing.gwt.ui.shared.CompetitorDAO;, true, true, false, false, [Lcom.sap.sailing.gwt.ui.shared.CompetitorDAO;/681863127, 681863127
com.sap.sailing.gwt.ui.shared.EventDAO, true, true, false, false, com.sap.sailing.gwt.ui.shared.EventDAO/4067968685, 4067968685
[Lcom.sap.sailing.gwt.ui.shared.EventDAO;, true, true, false, false, [Lcom.sap.sailing.gwt.ui.shared.EventDAO;/887606509, 887606509
com.sap.sailing.gwt.ui.shared.PositionDAO, true, true, true, true, com.sap.sailing.gwt.ui.shared.PositionDAO/1710885173, 1710885173
com.sap.sailing.gwt.ui.shared.RaceDAO, true, true, false, false, com.sap.sailing.gwt.ui.shared.RaceDAO/2800322377, 2800322377
[Lcom.sap.sailing.gwt.ui.shared.RaceDAO;, true, true, false, false, [Lcom.sap.sailing.gwt.ui.shared.RaceDAO;/3022915435, 3022915435
com.sap.sailing.gwt.ui.shared.RaceRecordDAO, true, true, true, true, com.sap.sailing.gwt.ui.shared.RaceRecordDAO/3506849265, 3506849265
[Lcom.sap.sailing.gwt.ui.shared.RaceRecordDAO;, true, true, false, false, [Lcom.sap.sailing.gwt.ui.shared.RaceRecordDAO;/2905316035, 2905316035
com.sap.sailing.gwt.ui.shared.RegattaDAO, true, true, false, false, com.sap.sailing.gwt.ui.shared.RegattaDAO/1020702142, 1020702142
[Lcom.sap.sailing.gwt.ui.shared.RegattaDAO;, true, true, false, false, [Lcom.sap.sailing.gwt.ui.shared.RegattaDAO;/821437198, 821437198
com.sap.sailing.gwt.ui.shared.TracTracConfigurationDAO, true, true, false, false, com.sap.sailing.gwt.ui.shared.TracTracConfigurationDAO/1734357729, 1734357729
[Lcom.sap.sailing.gwt.ui.shared.TracTracConfigurationDAO;, true, true, false, false, [Lcom.sap.sailing.gwt.ui.shared.TracTracConfigurationDAO;/3836669265, 3836669265
com.sap.sailing.gwt.ui.shared.WindDAO, true, true, true, true, com.sap.sailing.gwt.ui.shared.WindDAO/2495348243, 2495348243
[Lcom.sap.sailing.gwt.ui.shared.WindDAO;, true, true, false, false, [Lcom.sap.sailing.gwt.ui.shared.WindDAO;/3396906051, 3396906051
com.sap.sailing.gwt.ui.shared.WindInfoForRaceDAO, true, true, false, false, com.sap.sailing.gwt.ui.shared.WindInfoForRaceDAO/4066190718, 4066190718
com.sap.sailing.gwt.ui.shared.WindTrackInfoDAO, true, true, false, false, com.sap.sailing.gwt.ui.shared.WindTrackInfoDAO/1217996872, 1217996872
java.io.IOException, true, true, false, false, java.io.IOException/1159940531, 1159940531
java.io.UnsupportedEncodingException, true, true, false, false, java.io.UnsupportedEncodingException/1526756933, 1526756933
java.lang.ArithmeticException, true, true, false, false, java.lang.ArithmeticException/1539622151, 1539622151
java.lang.ArrayIndexOutOfBoundsException, true, true, false, false, java.lang.ArrayIndexOutOfBoundsException/600550433, 600550433
java.lang.ArrayStoreException, true, true, false, false, java.lang.ArrayStoreException/3540507190, 3540507190
java.lang.AssertionError, true, true, false, false, java.lang.AssertionError/3490171458, 3490171458
java.lang.Boolean, true, true, false, false, java.lang.Boolean/476441737, 476441737
java.lang.ClassCastException, true, true, false, false, java.lang.ClassCastException/702295179, 702295179
java.lang.Double, true, true, true, true, java.lang.Double/858496421, 858496421
java.lang.Error, true, true, false, false, java.lang.Error/1331973429, 1331973429
java.lang.Exception, true, true, true, false, java.lang.Exception/1920171873, 1920171873
java.lang.IllegalArgumentException, true, true, false, false, java.lang.IllegalArgumentException/1755012560, 1755012560
java.lang.IllegalStateException, true, true, false, false, java.lang.IllegalStateException/1972187323, 1972187323
java.lang.IndexOutOfBoundsException, true, true, false, false, java.lang.IndexOutOfBoundsException/2489527753, 2489527753
java.lang.Long, true, true, true, true, java.lang.Long/4227064769, 4227064769
java.lang.NegativeArraySizeException, true, true, false, false, java.lang.NegativeArraySizeException/3846860241, 3846860241
java.lang.NullPointerException, true, true, false, false, java.lang.NullPointerException/1463492344, 1463492344
java.lang.Number, true, false, true, false, java.lang.Number/300033342, 300033342
java.lang.NumberFormatException, true, true, false, false, java.lang.NumberFormatException/3305228476, 3305228476
java.lang.RuntimeException, true, true, true, false, java.lang.RuntimeException/515124647, 515124647
java.lang.String, true, true, true, true, java.lang.String/2004016611, 2004016611
java.lang.StringIndexOutOfBoundsException, true, true, false, false, java.lang.StringIndexOutOfBoundsException/500777603, 500777603
java.lang.Throwable, true, true, true, false, java.lang.Throwable/2953622131, 2953622131
java.lang.UnsupportedOperationException, true, true, false, false, java.lang.UnsupportedOperationException/3744010015, 3744010015
java.lang.annotation.AnnotationFormatError, true, true, false, false, java.lang.annotation.AnnotationFormatError/2257184627, 2257184627
java.lang.annotation.AnnotationTypeMismatchException, true, true, false, false, java.lang.annotation.AnnotationTypeMismatchException/976205828, 976205828
java.security.DigestException, true, true, false, false, java.security.DigestException/629316798, 629316798
java.security.GeneralSecurityException, true, true, false, false, java.security.GeneralSecurityException/2669239907, 2669239907
java.security.NoSuchAlgorithmException, true, true, false, false, java.security.NoSuchAlgorithmException/2892037213, 2892037213
java.sql.Date, true, true, true, true, java.sql.Date/730999118, 730999118
java.sql.Time, true, true, true, true, java.sql.Time/1816797103, 1816797103
java.sql.Timestamp, true, true, true, true, java.sql.Timestamp/3040052672, 3040052672
java.util.ArrayList, true, true, false, false, java.util.ArrayList/4159755760, 4159755760
java.util.Arrays$ArrayList, true, true, false, false, java.util.Arrays$ArrayList/2507071751, 2507071751
java.util.Collections$EmptyList, true, true, false, false, java.util.Collections$EmptyList/4157118744, 4157118744
java.util.Collections$EmptyMap, true, true, false, false, java.util.Collections$EmptyMap/4174664486, 4174664486
java.util.Collections$EmptySet, true, true, false, false, java.util.Collections$EmptySet/3523698179, 3523698179
java.util.Collections$SingletonList, true, true, false, false, java.util.Collections$SingletonList/1586180994, 1586180994
java.util.ConcurrentModificationException, true, true, false, false, java.util.ConcurrentModificationException/2717383897, 2717383897
java.util.Date, true, true, true, true, java.util.Date/3385151746, 3385151746
java.util.EmptyStackException, true, true, false, false, java.util.EmptyStackException/89438517, 89438517
java.util.HashMap, true, true, false, false, java.util.HashMap/1797211028, 1797211028
java.util.HashSet, true, true, false, false, java.util.HashSet/3273092938, 3273092938
java.util.IdentityHashMap, true, true, false, false, java.util.IdentityHashMap/1839153020, 1839153020
java.util.LinkedHashMap, true, true, false, false, java.util.LinkedHashMap/3008245022, 3008245022
java.util.LinkedHashSet, true, true, false, false, java.util.LinkedHashSet/1826081506, 1826081506
java.util.LinkedList, true, true, false, false, java.util.LinkedList/3953877921, 3953877921
java.util.NoSuchElementException, true, true, false, false, java.util.NoSuchElementException/1559248883, 1559248883
java.util.Stack, true, true, false, false, java.util.Stack/1346942793, 1346942793
java.util.TooManyListenersException, true, true, false, false, java.util.TooManyListenersException/2023078032, 2023078032
java.util.TreeMap, true, true, false, false, java.util.TreeMap/1493889780, 1493889780
java.util.TreeSet, true, true, false, false, java.util.TreeSet/4043497002, 4043497002
java.util.Vector, true, true, false, false, java.util.Vector/3057315478, 3057315478
javax.validation.ConstraintDeclarationException, true, true, false, false, javax.validation.ConstraintDeclarationException/3610544007, 3610544007
javax.validation.ConstraintDefinitionException, true, true, false, false, javax.validation.ConstraintDefinitionException/3732439488, 3732439488
javax.validation.ConstraintViolationException, true, true, false, false, javax.validation.ConstraintViolationException/173345760, 173345760
javax.validation.GroupDefinitionException, true, true, false, false, javax.validation.GroupDefinitionException/4024780846, 4024780846
javax.validation.UnexpectedTypeException, true, true, false, false, javax.validation.UnexpectedTypeException/593026390, 593026390
javax.validation.ValidationException, true, true, false, false, javax.validation.ValidationException/1570221831, 1570221831
@@ -1,16 +1,17 @@
function com_sap_sailing_gwt_ui_AdminConsole(){var N='',ub='" for "gwt:onLoadErrorFn"',sb='" for "gwt:onPropertyErrorFn"',gb='"><\/script>',X='#',Pb='.cache.html',Z='/',Ob=':',mb='::',Xb='<script defer="defer">com_sap_sailing_gwt_ui_AdminConsole.onInjectionDone(\'com.sap.sailing.gwt.ui.AdminConsole\')<\/script>',fb='<script id="',pb='=',Y='?',rb='Bad handler "',Wb='DOMContentLoaded',Nb="GWT module 'com.sap.sailing.gwt.ui.AdminConsole' may need to be (re)compiled",hb='SCRIPT',eb='__gwt_marker_com.sap.sailing.gwt.ui.AdminConsole',ib='base',ab='baseUrl',R='begin',Q='bootstrap',_='clear.cache.gif',O='com.sap.sailing.gwt.ui.AdminConsole',cb='com.sap.sailing.gwt.ui.AdminConsole.nocache.js',lb='com.sap.sailing.gwt.ui.AdminConsole::',ob='content',W='end',Hb='gecko',Ib='gecko1_8',S='gwt.codesvr=',T='gwt.hosted=',U='gwt.hybrid',Qb='gwt/clean/clean.css',tb='gwt:onLoadErrorFn',qb='gwt:onPropertyErrorFn',nb='gwt:property',Vb='head',Lb='hosted.html?com_sap_sailing_gwt_ui_AdminConsole',Ub='href',Gb='ie6',Fb='ie8',Eb='ie9',vb='iframe',$='img',wb="javascript:''",Rb='link',Kb='loadExternalRefs',jb='meta',yb='moduleRequested',V='moduleStartup',Db='msie',kb='name',Ab='opera',xb='position:absolute;width:0;height:0;border:none',Sb='rel',Cb='safari',bb='script',Mb='selectingPermutation',P='startup',Tb='stylesheet',db='undefined',Jb='unknown',zb='user.agent',Bb='webkit';var l=window,m=document,n=l.__gwtStatsEvent?function(a){return l.__gwtStatsEvent(a)}:null,o=l.__gwtStatsSessionId?l.__gwtStatsSessionId:null,p,q,r,s=N,t={},u=[],v=[],w=[],x=0,y,z;n&&n({moduleName:O,sessionId:o,subSystem:P,evtGroup:Q,millis:(new Date).getTime(),type:R});if(!l.__gwt_stylesLoaded){l.__gwt_stylesLoaded={}}if(!l.__gwt_scriptsLoaded){l.__gwt_scriptsLoaded={}}function A(){var b=false;try{var c=l.location.search;return (c.indexOf(S)!=-1||(c.indexOf(T)!=-1||l.external&&l.external.gwtOnLoad))&&c.indexOf(U)==-1}catch(a){}A=function(){return b};return b}
function B(){if(p&&q){var b=m.getElementById(O);var c=b.contentWindow;if(A()){c.__gwt_getProperty=function(a){return F(a)}}com_sap_sailing_gwt_ui_AdminConsole=null;c.gwtOnLoad(y,O,s,x);n&&n({moduleName:O,sessionId:o,subSystem:P,evtGroup:V,millis:(new Date).getTime(),type:W})}}
function C(){function e(a){var b=a.lastIndexOf(X);if(b==-1){b=a.length}var c=a.indexOf(Y);if(c==-1){c=a.length}var d=a.lastIndexOf(Z,Math.min(c,b));return d>=0?a.substring(0,d+1):N}
function f(a){if(a.match(/^\w+:\/\//)){}else{var b=m.createElement($);b.src=a+_;a=e(b.src)}return a}
function g(){var a=E(ab);if(a!=null){return a}return N}
function h(){var a=m.getElementsByTagName(bb);for(var b=0;b<a.length;++b){if(a[b].src.indexOf(cb)!=-1){return e(a[b].src)}}return N}
function i(){var a;if(typeof isBodyLoaded==db||!isBodyLoaded()){var b=eb;var c;m.write(fb+b+gb);c=m.getElementById(b);a=c&&c.previousSibling;while(a&&a.tagName!=hb){a=a.previousSibling}if(c){c.parentNode.removeChild(c)}if(a&&a.src){return e(a.src)}}return N}
function j(){var a=m.getElementsByTagName(ib);if(a.length>0){return a[a.length-1].href}return N}
var k=g();if(k==N){k=h()}if(k==N){k=i()}if(k==N){k=j()}if(k==N){k=e(m.location.href)}k=f(k);s=k;return k}
function D(){var b=document.getElementsByTagName(jb);for(var c=0,d=b.length;c<d;++c){var e=b[c],f=e.getAttribute(kb),g;if(f){f=f.replace(lb,N);if(f.indexOf(mb)>=0){continue}if(f==nb){g=e.getAttribute(ob);if(g){var h,i=g.indexOf(pb);if(i>=0){f=g.substring(0,i);h=g.substring(i+1)}else{f=g;h=N}t[f]=h}}else if(f==qb){g=e.getAttribute(ob);if(g){try{z=eval(g)}catch(a){alert(rb+g+sb)}}}else if(f==tb){g=e.getAttribute(ob);if(g){try{y=eval(g)}catch(a){alert(rb+g+ub)}}}}}}
function com_sap_sailing_gwt_ui_AdminConsole(){var O='',vb='" for "gwt:onLoadErrorFn"',tb='" for "gwt:onPropertyErrorFn"',hb='"><\/script>',Y='#',Vb='.cache.html',$='/',Ob='332753DC2ECB81699CA4C18939B133BD',Pb='395BB43E90B6339F0F2B4DBBD73E40E8',Qb='3EF6CA5CC182F5D191C3856EC2756909',Rb='872232C854464B053667043E6BFCDAA2',Ub=':',nb='::',bc='<script defer="defer">com_sap_sailing_gwt_ui_AdminConsole.onInjectionDone(\'com.sap.sailing.gwt.ui.AdminConsole\')<\/script>',gb='<script id="',qb='=',Z='?',Sb='BF460066049DA38B910BEA58A073207E',sb='Bad handler "',Tb='DA1B2877428116D529F7E42F3AFE1246',ac='DOMContentLoaded',ib='SCRIPT',fb='__gwt_marker_com.sap.sailing.gwt.ui.AdminConsole',jb='base',bb='baseUrl',S='begin',R='bootstrap',ab='clear.cache.gif',P='com.sap.sailing.gwt.ui.AdminConsole',db='com.sap.sailing.gwt.ui.AdminConsole.nocache.js',mb='com.sap.sailing.gwt.ui.AdminConsole::',pb='content',X='end',Ib='gecko',Jb='gecko1_8',T='gwt.codesvr=',U='gwt.hosted=',V='gwt.hybrid',Wb='gwt/clean/clean.css',ub='gwt:onLoadErrorFn',rb='gwt:onPropertyErrorFn',ob='gwt:property',_b='head',Mb='hosted.html?com_sap_sailing_gwt_ui_AdminConsole',$b='href',Hb='ie6',Gb='ie8',Fb='ie9',wb='iframe',_='img',xb="javascript:''",Xb='link',Lb='loadExternalRefs',kb='meta',zb='moduleRequested',W='moduleStartup',Eb='msie',lb='name',Bb='opera',yb='position:absolute;width:0;height:0;border:none',Yb='rel',Db='safari',cb='script',Nb='selectingPermutation',Q='startup',Zb='stylesheet',eb='undefined',Kb='unknown',Ab='user.agent',Cb='webkit';var l=window,m=document,n=l.__gwtStatsEvent?function(a){return l.__gwtStatsEvent(a)}:null,o=l.__gwtStatsSessionId?l.__gwtStatsSessionId:null,p,q,r,s=O,t={},u=[],v=[],w=[],x=0,y,z;n&&n({moduleName:P,sessionId:o,subSystem:Q,evtGroup:R,millis:(new Date).getTime(),type:S});if(!l.__gwt_stylesLoaded){l.__gwt_stylesLoaded={}}if(!l.__gwt_scriptsLoaded){l.__gwt_scriptsLoaded={}}function A(){var b=false;try{var c=l.location.search;return (c.indexOf(T)!=-1||(c.indexOf(U)!=-1||l.external&&l.external.gwtOnLoad))&&c.indexOf(V)==-1}catch(a){}A=function(){return b};return b}
function B(){if(p&&q){var b=m.getElementById(P);var c=b.contentWindow;if(A()){c.__gwt_getProperty=function(a){return G(a)}}com_sap_sailing_gwt_ui_AdminConsole=null;c.gwtOnLoad(y,P,s,x);n&&n({moduleName:P,sessionId:o,subSystem:Q,evtGroup:W,millis:(new Date).getTime(),type:X})}}
function C(){function e(a){var b=a.lastIndexOf(Y);if(b==-1){b=a.length}var c=a.indexOf(Z);if(c==-1){c=a.length}var d=a.lastIndexOf($,Math.min(c,b));return d>=0?a.substring(0,d+1):O}
function f(a){if(a.match(/^\w+:\/\//)){}else{var b=m.createElement(_);b.src=a+ab;a=e(b.src)}return a}
function g(){var a=E(bb);if(a!=null){return a}return O}
function h(){var a=m.getElementsByTagName(cb);for(var b=0;b<a.length;++b){if(a[b].src.indexOf(db)!=-1){return e(a[b].src)}}return O}
function i(){var a;if(typeof isBodyLoaded==eb||!isBodyLoaded()){var b=fb;var c;m.write(gb+b+hb);c=m.getElementById(b);a=c&&c.previousSibling;while(a&&a.tagName!=ib){a=a.previousSibling}if(c){c.parentNode.removeChild(c)}if(a&&a.src){return e(a.src)}}return O}
function j(){var a=m.getElementsByTagName(jb);if(a.length>0){return a[a.length-1].href}return O}
var k=g();if(k==O){k=h()}if(k==O){k=i()}if(k==O){k=j()}if(k==O){k=e(m.location.href)}k=f(k);s=k;return k}
function D(){var b=document.getElementsByTagName(kb);for(var c=0,d=b.length;c<d;++c){var e=b[c],f=e.getAttribute(lb),g;if(f){f=f.replace(mb,O);if(f.indexOf(nb)>=0){continue}if(f==ob){g=e.getAttribute(pb);if(g){var h,i=g.indexOf(qb);if(i>=0){f=g.substring(0,i);h=g.substring(i+1)}else{f=g;h=O}t[f]=h}}else if(f==rb){g=e.getAttribute(pb);if(g){try{z=eval(g)}catch(a){alert(sb+g+tb)}}}else if(f==ub){g=e.getAttribute(pb);if(g){try{y=eval(g)}catch(a){alert(sb+g+vb)}}}}}}
function E(a){var b=t[a];return b==null?null:b}
function F(a){var b=v[a](),c=u[a];if(b in c){return b}var d=[];for(var e in c){d[c[e]]=e}if(z){z(a,d,b)}throw null}
var G;function H(){if(!G){G=true;var a=m.createElement(vb);a.src=wb;a.id=O;a.style.cssText=xb;a.tabIndex=-1;m.body.appendChild(a);n&&n({moduleName:O,sessionId:o,subSystem:P,evtGroup:V,millis:(new Date).getTime(),type:yb});a.contentWindow.location.replace(s+J)}}
v[zb]=function(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(Ab)!=-1}())return Ab;if(function(){return b.indexOf(Bb)!=-1}())return Cb;if(function(){return b.indexOf(Db)!=-1&&m.documentMode>=9}())return Eb;if(function(){return b.indexOf(Db)!=-1&&m.documentMode>=8}())return Fb;if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return Gb;if(function(){return b.indexOf(Hb)!=-1}())return Ib;return Jb};u[zb]={gecko1_8:0,ie6:1,ie8:2,ie9:3,opera:4,safari:5};com_sap_sailing_gwt_ui_AdminConsole.onScriptLoad=function(){if(G){q=true;B()}};com_sap_sailing_gwt_ui_AdminConsole.onInjectionDone=function(){p=true;n&&n({moduleName:O,sessionId:o,subSystem:P,evtGroup:Kb,millis:(new Date).getTime(),type:W});B()};D();C();var I;var J;if(A()){if(l.external&&(l.external.initModule&&l.external.initModule(O))){l.location.reload();return}J=Lb;I=N}n&&n({moduleName:O,sessionId:o,subSystem:P,evtGroup:Q,millis:(new Date).getTime(),type:Mb});if(!A()){try{alert(Nb);return;var K=I.indexOf(Ob);if(K!=-1){x=Number(I.substring(K+1));I=I.substring(0,K)}J=I+Pb}catch(a){return}}var L;function M(){if(!r){r=true;if(!__gwt_stylesLoaded[Qb]){var a=m.createElement(Rb);__gwt_stylesLoaded[Qb]=a;a.setAttribute(Sb,Tb);a.setAttribute(Ub,s+Qb);m.getElementsByTagName(Vb)[0].appendChild(a)}B();if(m.removeEventListener){m.removeEventListener(Wb,M,false)}if(L){clearInterval(L)}}}
if(m.addEventListener){m.addEventListener(Wb,function(){H();M()},false)}var L=setInterval(function(){if(/loaded|complete/.test(m.readyState)){H();M()}},50);n&&n({moduleName:O,sessionId:o,subSystem:P,evtGroup:Q,millis:(new Date).getTime(),type:W});n&&n({moduleName:O,sessionId:o,subSystem:P,evtGroup:Kb,millis:(new Date).getTime(),type:R});m.write(Xb)}
function F(a,b){var c=w;for(var d=0,e=a.length-1;d<e;++d){c=c[a[d]]||(c[a[d]]=[])}c[a[e]]=b}
function G(a){var b=v[a](),c=u[a];if(b in c){return b}var d=[];for(var e in c){d[c[e]]=e}if(z){z(a,d,b)}throw null}
var H;function I(){if(!H){H=true;var a=m.createElement(wb);a.src=xb;a.id=P;a.style.cssText=yb;a.tabIndex=-1;m.body.appendChild(a);n&&n({moduleName:P,sessionId:o,subSystem:Q,evtGroup:W,millis:(new Date).getTime(),type:zb});a.contentWindow.location.replace(s+K)}}
v[Ab]=function(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(Bb)!=-1}())return Bb;if(function(){return b.indexOf(Cb)!=-1}())return Db;if(function(){return b.indexOf(Eb)!=-1&&m.documentMode>=9}())return Fb;if(function(){return b.indexOf(Eb)!=-1&&m.documentMode>=8}())return Gb;if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return Hb;if(function(){return b.indexOf(Ib)!=-1}())return Jb;return Kb};u[Ab]={gecko1_8:0,ie6:1,ie8:2,ie9:3,opera:4,safari:5};com_sap_sailing_gwt_ui_AdminConsole.onScriptLoad=function(){if(H){q=true;B()}};com_sap_sailing_gwt_ui_AdminConsole.onInjectionDone=function(){p=true;n&&n({moduleName:P,sessionId:o,subSystem:Q,evtGroup:Lb,millis:(new Date).getTime(),type:X});B()};D();C();var J;var K;if(A()){if(l.external&&(l.external.initModule&&l.external.initModule(P))){l.location.reload();return}K=Mb;J=O}n&&n({moduleName:P,sessionId:o,subSystem:Q,evtGroup:R,millis:(new Date).getTime(),type:Nb});if(!A()){try{F([Hb],Ob);F([Jb],Pb);F([Gb],Qb);F([Db],Rb);F([Bb],Sb);F([Fb],Tb);J=w[G(Ab)];var L=J.indexOf(Ub);if(L!=-1){x=Number(J.substring(L+1));J=J.substring(0,L)}K=J+Vb}catch(a){return}}var M;function N(){if(!r){r=true;if(!__gwt_stylesLoaded[Wb]){var a=m.createElement(Xb);__gwt_stylesLoaded[Wb]=a;a.setAttribute(Yb,Zb);a.setAttribute($b,s+Wb);m.getElementsByTagName(_b)[0].appendChild(a)}B();if(m.removeEventListener){m.removeEventListener(ac,N,false)}if(M){clearInterval(M)}}}
if(m.addEventListener){m.addEventListener(ac,function(){I();N()},false)}var M=setInterval(function(){if(/loaded|complete/.test(m.readyState)){I();N()}},50);n&&n({moduleName:P,sessionId:o,subSystem:Q,evtGroup:R,millis:(new Date).getTime(),type:X});n&&n({moduleName:P,sessionId:o,subSystem:Q,evtGroup:Lb,millis:(new Date).getTime(),type:S});m.write(bc)}
com_sap_sailing_gwt_ui_AdminConsole();
@@ -126,4 +126,6 @@ public interface RacingEventService {
boolean isRaceBeingTracked(RaceDefinition r);
TrackedRace getTrackedRace(Event event, RaceDefinition r);
}
@@ -20,6 +20,7 @@ import java.util.logging.Logger;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.WindStore;
import com.sap.sailing.domain.tracking.WindTracker;
import com.sap.sailing.domain.tracking.WindTrackerFactory;
@@ -211,5 +212,10 @@ public class RacingEventServiceImpl implements RacingEventService {
}
return result;
}
@Override
public TrackedRace getTrackedRace(Event e, RaceDefinition r) {
return getDomainFactory().getTrackedEvent(e).getTrackedRace(r);
}
}