From ccc7747de4c7faa137b5ca764fbd0e1e4ba5500d Mon Sep 17 00:00:00 2001 From: Jan Bross Date: Wed, 18 Mar 2015 15:30:26 +0000 Subject: [PATCH 1/2] Updated api v1 (markdown) --- wiki/tracking-app/api-v1.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/wiki/tracking-app/api-v1.md b/wiki/tracking-app/api-v1.md index 9d75170d508..3b4c8e08c8b 100644 --- a/wiki/tracking-app/api-v1.md +++ b/wiki/tracking-app/api-v1.md @@ -371,6 +371,18 @@ The interface (apart from the path) is identical to [Send Measurements](#fixes). } ``` +**Response:** +If there is no existent GPS Fix for the Mark HTTP/200 will be returned. +If there is an existent GPS Fix the latest known Position of the Mark will be returned: +``` +{ +"type": "GPSFix", +"lat_deg": 54.325246, +"lon_deg": 10.148556, +"unixtime": 0 +} +``` + **Additional Notes:** * the path for this endpoint intentionally has the leaderboard as a parent item * each mark should have a unique ID (``SharedDomainFactory#getOrCreateMark(String toStringRepresentationOfID, String name)``) From 0ce619194c76155b9f35f127e7e8c148717408c7 Mon Sep 17 00:00:00 2001 From: Jens Rommel Date: Wed, 18 Mar 2015 17:18:44 +0100 Subject: [PATCH 2/2] Fixed some issues with media presentation: - added support for showing multiple videos at a time - assigned fixed size to HTML-based video - added colored style for in-/active video button - fixed state management when closing video window (used to not notify button state) --- java/com.sap.sailing.gwt.ui/RaceBoard.css | 10 +++++++--- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 3 ++- .../ui/client/StringMessages_de.properties | 1 + .../ui/client/StringMessages_ru.properties | 1 + .../media/MediaSingleSelectionControl.java | 19 ++++++++++++------- .../client/media/VideoFloatingContainer.java | 3 ++- .../gwt/ui/client/media/VideoHtmlPlayer.java | 10 ++++++++++ .../ui/client/media/VideoYoutubePlayer.java | 10 ++++++++++ .../client/media/shared/VideoSynchPlayer.java | 4 ++++ .../raceboard/SideBySideComponentViewer.java | 10 +++++----- 11 files changed, 55 insertions(+), 17 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/RaceBoard.css b/java/com.sap.sailing.gwt.ui/RaceBoard.css index f6092fd727f..14058bc77f3 100644 --- a/java/com.sap.sailing.gwt.ui/RaceBoard.css +++ b/java/com.sap.sailing.gwt.ui/RaceBoard.css @@ -567,13 +567,17 @@ img.openColumn { background-color: white; background-image: url(images/viewicons/@1x/img/SAP_RV_AudioVideo_INACTIVE.png); background-repeat: no-repeat, no-repeat; - background-position: 4% 50%, 96% 50% + background-position: 10% 50%, 90% 50% +} + +.gwt-SplitLayoutPanel-NorthSouthToggleButton-mediaplaying { + background-image: url(images/viewicons/@1x/img/SAP_RV_AudioVideo_GHOSTED.png); } .gwt-SplitLayoutPanel-NorthSouthToggleButton-Small-media { - background-position: 50% 50%, 100% 50% !important; + background-position: 5% 50%, 100% 50% !important; margin-left: 0px !important; - padding: 2px 20px !important; + padding: 2px 35px !important; } @external gwt-ToggleButton-up, gwt-ToggleButton-down, gwt-ToggleButton-up-hovering, gwt-ToggleButton-down-hovering; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index b2e5b8e5d84..859306a4672 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1091,6 +1091,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String raceIsInLiveTimePanelMode(); String backToLiveTimePanelMode(); String windChart(); + String mediaNoVideosCaption(); String mediaShowVideoCaption(); String mediaShowVideoTooltip(String title); String mediaHideVideoCaption(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index febb088ed3e..5137fb47267 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1071,12 +1071,13 @@ leaderboardGroupNotContainedInEvent=The leaderboard group {0} is not contained i raceIsInLiveTimePanelMode=Race is Live backToLiveTimePanelMode=Back to Live windChart=Wind Chart +mediaNoVideosCaption=No Videos mediaShowVideoCaption=Show Video mediaShowVideoTooltip=Click to show video: {0} mediaHideVideoCaption=Hide Video mediaHideVideoTooltip=Click to hide video mediaSelectVideoCaption={0} Videos -mediaSelectVideoTooltip=Click to select video +mediaSelectVideoTooltip=Click to select video mediaManageMediaCaption=Manage Media mediaManageMediaTooltip=Configure audio and video clips, synchronize times showAll=Show all diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 85c5b26a614..75bdb1dc30e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1066,6 +1066,7 @@ leaderboardGroupNotContainedInEvent=Die Wettfahrtgruppe {0} gehört nicht zur Ve raceIsInLiveTimePanelMode=Rennen ist live backToLiveTimePanelMode=Zurück zu live windChart=Wind Chart +mediaNoVideosCaption=Keine Videos mediaShowVideoCaption=Video ein mediaShowVideoTooltip=Video abspielen: {0} mediaHideVideoCaption=Video aus diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 128cc6b374a..d87b6b52cf1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1019,6 +1019,7 @@ leaderboardGroupNotContainedInEvent=The leaderboard group {0} is not contained i raceIsInLiveTimePanelMode=Race is Live backToLiveTimePanelMode=Back to Live windChart=Wind Chart +mediaNoVideosCaption=No Videos mediaShowVideoCaption=Show Video mediaShowVideoTooltip=Click to show video: {0} mediaHideVideoCaption=Hide Video diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/MediaSingleSelectionControl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/MediaSingleSelectionControl.java index 64ff211fbe4..6e39683e9a9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/MediaSingleSelectionControl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/MediaSingleSelectionControl.java @@ -58,11 +58,11 @@ public class MediaSingleSelectionControl extends AbstractMediaSelectionControl i private Button createMediaEntry(final MediaTrack mediaTrack) { Button mediaSelectButton = new Button(mediaTrack.title); mediaSelectButton.setStyleName("Media-Select-Button"); - if (mediaTrack.equals(mediaPlayerManager.getPlayingAudioTrack()) || mediaPlayerManager.getPlayingVideoTracks().contains(mediaTrack)) { + if (mediaPlayerManager.getPlayingVideoTracks().contains(mediaTrack)) { mediaSelectButton.setTitle(stringMessages.mediaHideVideoTooltip()); mediaSelectButton.addStyleName("Media-Select-Button-playing"); mediaSelectButton.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { if (mediaPlayerManager.getPlayingAudioTrack() == mediaTrack) { @@ -75,14 +75,19 @@ public class MediaSingleSelectionControl extends AbstractMediaSelectionControl i } else { mediaSelectButton.setTitle(stringMessages.mediaShowVideoTooltip(mediaTrack.title)); mediaSelectButton.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { - if (mediaTrack.mimeType.mediaType == MediaTrack.MediaType.video) { + if (/*event.isControlKeyDown() && */mediaTrack.mimeType.mediaType == MediaTrack.MediaType.video) { mediaPlayerManager.playFloatingVideo(mediaTrack); - } - if (mediaTrack.mimeType.mediaType == MediaTrack.MediaType.audio || mediaPlayerManager.getPlayingAudioTrack() == null) { - mediaPlayerManager.playAudio(mediaTrack); + } /*else if (mediaPlayerManager.getPlayingAudioTrack() != mediaTrack) { + mediaPlayerManager.stopAll(); + if (mediaTrack.mimeType.mediaType == MediaTrack.MediaType.video) { + mediaPlayerManager.playFloatingVideo(mediaTrack); + mediaPlayerManager.playAudio(mediaTrack); + } */else if (mediaTrack.mimeType.mediaType == MediaTrack.MediaType.audio) { + mediaPlayerManager.playAudio(mediaTrack); +// } } hide(); }; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoFloatingContainer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoFloatingContainer.java index 718b5a37f23..90c41e7b796 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoFloatingContainer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoFloatingContainer.java @@ -61,8 +61,9 @@ public class VideoFloatingContainer extends AbstractVideoContainer implements Vi dialogBox.show(); int absoluteTop = popupPositionProvider.getYPositionUiObject().getAbsoluteTop(); - int posY = absoluteTop -300; + int posY = absoluteTop - 300; dialogBox.setPopupPosition(5, posY); + dialogBox.setPixelSize(videoPlayer.getDefaultWidth(), videoPlayer.getDefaultHeight()); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoHtmlPlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoHtmlPlayer.java index d84ea1dd138..63d15735433 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoHtmlPlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoHtmlPlayer.java @@ -86,5 +86,15 @@ public class VideoHtmlPlayer extends AbstractHtmlMediaPlayer implements VideoSyn public void setEditFlag(EditFlag editFlag) { this.editFlag = editFlag; } + + @Override + public int getDefaultWidth() { + return 400; + } + + @Override + public int getDefaultHeight() { + return -1; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoYoutubePlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoYoutubePlayer.java index 316bf36cb58..769558aa9cf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoYoutubePlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/VideoYoutubePlayer.java @@ -259,4 +259,14 @@ public class VideoYoutubePlayer extends AbstractMediaPlayer implements VideoSync return editFlag != null && editFlag.isEditing(); } + @Override + public int getDefaultWidth() { + return -1; + } + + @Override + public int getDefaultHeight() { + return -1; + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/shared/VideoSynchPlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/shared/VideoSynchPlayer.java index 9e3cb83f3bb..03e6b0bfa98 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/shared/VideoSynchPlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/media/shared/VideoSynchPlayer.java @@ -6,4 +6,8 @@ public interface VideoSynchPlayer extends VideoPlayerWithWidget, MediaSynchAdapt void setEditFlag(EditFlag editFlag); + int getDefaultWidth(); + + int getDefaultHeight(); + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SideBySideComponentViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SideBySideComponentViewer.java index bec7fd090b2..d6bbb997bbb 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SideBySideComponentViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SideBySideComponentViewer.java @@ -3,7 +3,6 @@ package com.sap.sailing.gwt.ui.raceboard; import java.util.ArrayList; import java.util.List; -import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; @@ -84,7 +83,7 @@ public class SideBySideComponentViewer implements ComponentViewer { String tooltip; switch (mediaPlayerManagerComponent.getAssignedMediaTracks().size()) { case 0: - caption = "No Videos"; + caption = stringMessages.mediaNoVideosCaption(); tooltip = caption; mediaSelectionButton.setVisible(false); break; @@ -105,11 +104,12 @@ public class SideBySideComponentViewer implements ComponentViewer { tooltip = stringMessages.mediaSelectVideoTooltip(); break; } - if (Document.get().getClientWidth() <= 1024) { - mediaSelectionButton.setHTML(" "); + if (mediaPlayerManagerComponent.isPlaying()) { + mediaSelectionButton.addStyleDependentName("mediaplaying"); } else { - mediaSelectionButton.setText(caption); + mediaSelectionButton.removeStyleDependentName("mediaplaying"); } + mediaSelectionButton.setText(caption); mediaSelectionButton.setTitle(tooltip); mediaManagementButton.setVisible(mediaPlayerManagerComponent.allowsEditing()); }