From f5bb81c387aa459385dcf721bbce00f49bbbeb0b Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 14 Jan 2016 14:07:45 +0100 Subject: [PATCH 01/43] added ManifestLinker to com.sap.sse.gwt and using it now in dashboard bundle --- .../META-INF/MANIFEST.MF | 4 +- .../RibDashboard.html | 2 +- .../WEB-INF/web.xml | 5 + .../gwt/client/RibDashboardEntryPoint.java | 4 - .../linker/DashboardManifestLinker.java | 22 +++ .../gwt/client/linker/cache.manifest.template | 14 ++ .../dashboards/gwt/RibDashboard.gwt.xml | 4 + java/com.sap.sse.gwt/META-INF/MANIFEST.MF | 9 +- .../sse/gwt/client/linker/ManifestLinker.java | 135 ++++++++++++++++++ 9 files changed, 191 insertions(+), 8 deletions(-) create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/linker/DashboardManifestLinker.java create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/linker/cache.manifest.template create mode 100644 java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/linker/ManifestLinker.java diff --git a/java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF b/java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF index 7af263e912b..53b9b480d53 100644 --- a/java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF @@ -25,10 +25,12 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sse.gwt.adminconsole, org.apache.commons.math;bundle-version="2.1.0" Bundle-ActivationPolicy: lazy -Import-Package: com.sap.sse.util, +Import-Package: com.google.gwt.core.ext.linker, + com.sap.sse.util, javax.servlet;version="3.1.0", javax.servlet.descriptor;version="3.1.0", javax.servlet.http;version="3.1.0", + org.apache.commons.io, org.osgi.framework;version="1.5.0", org.osgi.util.tracker Web-ContextPath: /dashboards diff --git a/java/com.sap.sailing.dashboards.gwt/RibDashboard.html b/java/com.sap.sailing.dashboards.gwt/RibDashboard.html index d1f7fa68c2b..44d3171f5e4 100644 --- a/java/com.sap.sailing.dashboards.gwt/RibDashboard.html +++ b/java/com.sap.sailing.dashboards.gwt/RibDashboard.html @@ -5,7 +5,7 @@ - + diff --git a/java/com.sap.sailing.dashboards.gwt/WEB-INF/web.xml b/java/com.sap.sailing.dashboards.gwt/WEB-INF/web.xml index c6c14b60dbb..9f1d66d19d6 100644 --- a/java/com.sap.sailing.dashboards.gwt/WEB-INF/web.xml +++ b/java/com.sap.sailing.dashboards.gwt/WEB-INF/web.xml @@ -48,4 +48,9 @@ /com.sap.sailing.dashboards.gwt.RibDashboard/remote_logging + + manifest + text/cache-manifest + + diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardEntryPoint.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardEntryPoint.java index d1ca55aa36a..82aabb4338f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardEntryPoint.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardEntryPoint.java @@ -3,7 +3,6 @@ package com.sap.sailing.dashboards.gwt.client; import com.google.gwt.user.client.ui.RootLayoutPanel; import com.googlecode.mgwt.ui.client.MGWT; import com.googlecode.mgwt.ui.client.MGWTSettings; -import com.googlecode.mgwt.ui.client.MGWTSettings.StatusBarStyle; import com.googlecode.mgwt.ui.client.MGWTSettings.ViewPort; import com.googlecode.mgwt.ui.client.MGWTStyle; import com.sap.sailing.dashboards.gwt.client.dashboardpanel.DashboardPanel; @@ -34,9 +33,6 @@ public class RibDashboardEntryPoint extends AbstractEntryPoint { viewPort.setUserScaleAble(false).setMinimumScale(1.0).setMinimumScale(1.0).setMaximumScale(1.0); MGWTSettings settings = new MGWTSettings(); settings.setViewPort(viewPort); - settings.setFullscreen(true); - settings.setPreventScrolling(true); - settings.setStatusBarStyle(StatusBarStyle.BLACK_TRANSLUCENT); MGWT.applySettings(settings); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/linker/DashboardManifestLinker.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/linker/DashboardManifestLinker.java new file mode 100644 index 00000000000..a630e5cbe1b --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/linker/DashboardManifestLinker.java @@ -0,0 +1,22 @@ +package com.sap.sailing.dashboards.gwt.client.linker; + +import com.google.gwt.core.ext.linker.Shardable; +import com.sap.sse.gwt.client.linker.ManifestLinker; + +/** + * @author Alexander Ries (D062114) + * + */ + +@Shardable +public class DashboardManifestLinker extends ManifestLinker { + + @Override + protected String[] staticCachedFiles() { + return new String[] { "/dashboards/RibDashboard.html", + "/dashboards/RibDashboard.css", + "/dashboards/images/dashboardicon.png", + "/dashboards/js/jquery-1.5.2.min.js", + "/sailing-fontface-1.0.cache.css"}; + } +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/linker/cache.manifest.template b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/linker/cache.manifest.template new file mode 100644 index 00000000000..dd838fa13be --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/linker/cache.manifest.template @@ -0,0 +1,14 @@ +CACHE MANIFEST +# Unique id #$UNIQUEID$ +# Build version $BUILDVERSION$ +# Change this every time for cache to invalidate. +# Do not delete the sections, as safari requires this file structure!!! + +NETWORK: +* + +CACHE: +$STATICAPPFILES$ +$GENAPPFILES$ + +FALLBACK: \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/RibDashboard.gwt.xml b/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/RibDashboard.gwt.xml index 8dfe25e1e71..e445bf428b1 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/RibDashboard.gwt.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/RibDashboard.gwt.xml @@ -57,6 +57,10 @@ + + + + diff --git a/java/com.sap.sse.gwt/META-INF/MANIFEST.MF b/java/com.sap.sse.gwt/META-INF/MANIFEST.MF index 0d827bce8f4..febe9d19157 100644 --- a/java/com.sap.sse.gwt/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.gwt/META-INF/MANIFEST.MF @@ -9,9 +9,13 @@ Require-Bundle: com.google.gwt.osgi;bundle-version="2.7.0", com.sap.sse.common, com.sap.sse.filestorage Bundle-ActivationPolicy: lazy -Import-Package: javax.servlet;version="2.6.0", - javax.servlet.http;version="2.6.0", +Import-Package: com.google.gwt.core.ext, + com.google.gwt.core.ext.linker, + com.google.gwt.core.ext.linker.impl, + javax.servlet;version="2.6.0", javax.servlet.descriptor;version="2.6.0", + javax.servlet.http;version="2.6.0", + org.apache.commons.io, org.json.simple, org.json.simple.parser, org.osgi.framework, @@ -30,6 +34,7 @@ Export-Package: com.google.gwt.user.client.rpc.core.java.util, com.sap.sse.gwt.client.dialog, com.sap.sse.gwt.client.event, com.sap.sse.gwt.client.filestorage, + com.sap.sse.gwt.client.linker, com.sap.sse.gwt.client.media, com.sap.sse.gwt.client.mutationobserver, com.sap.sse.gwt.client.mvp, diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/linker/ManifestLinker.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/linker/ManifestLinker.java new file mode 100644 index 00000000000..2e26ee6790c --- /dev/null +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/linker/ManifestLinker.java @@ -0,0 +1,135 @@ +package com.sap.sse.gwt.client.linker; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Date; + +import org.apache.commons.io.IOUtils; + +import com.google.gwt.core.ext.LinkerContext; +import com.google.gwt.core.ext.TreeLogger; +import com.google.gwt.core.ext.UnableToCompleteException; +import com.google.gwt.core.ext.linker.AbstractLinker; +import com.google.gwt.core.ext.linker.Artifact; +import com.google.gwt.core.ext.linker.ArtifactSet; +import com.google.gwt.core.ext.linker.EmittedArtifact; +import com.google.gwt.core.ext.linker.LinkerOrder; +import com.google.gwt.core.ext.linker.impl.SelectionInformation; + +/** + * This class creates an application manifest file for HTML 5 Offline Application Caching in the + * output folder of your client side gwt compilation results.

+ * Follow those steps to use HTML 5 Offline Application Caching in your bundle: + *
    + *
  1. Add {@code manifest="YOURMODULENAME/appcache.manifest"} to the {@code } tag in your base html file.
  2. + *
  3. Subclass {@link ManifestLinker} and override the method {@link #staticCachedFiles()}.
  4. + *
  5. Define a mime type mapping for the manifest extension in your web.xml file. + *
    + * {@code 
    + * manifest
    + * text/cache-manifest
    + * 
    + * }
    + *
  6. + *
  7. Define the subclassed linker in your gwt.xml file and add the linker.
  8. + *
    + * {@code 
    + * 
    + * }
    + *
  9. Make sure to import the those packages into your MANIFEST.MF file.
  10. + * com.google.gwt.core.ext
    + * com.google.gwt.core.ext.linker
    + * com.google.gwt.core.ext.linker.impl + *
+ * + * @author Alexander Ries + * + */ +@LinkerOrder(LinkerOrder.Order.POST) +public class ManifestLinker extends AbstractLinker { + + private static final String MANIFEST = "appcache.manifest"; + private static final String MANIFESTTEMPLATE = "cache.manifest.template"; + + @Override + public String getDescription() { + return ManifestLinker.class.getName(); + } + + @Override + public ArtifactSet link(TreeLogger logger, LinkerContext context, ArtifactSet artifacts, boolean onePermutation) throws UnableToCompleteException { + ArtifactSet result = new ArtifactSet(artifacts); + if (onePermutation) { + return result; + } + if (result.find(SelectionInformation.class).isEmpty()) { + logger.log(TreeLogger.INFO, "Warning: Clobbering " + MANIFEST + " to allow debugging. " + "Recompile before deploying your app!"); + artifacts = null; + } else { + result.add(emitLandingPageCacheManifest(context, logger, artifacts)); + } + return result; + } + + private Artifact emitLandingPageCacheManifest(LinkerContext context, TreeLogger logger, ArtifactSet artifacts) throws UnableToCompleteException { + StringBuilder publicSourcesSb = new StringBuilder(); + StringBuilder staticResoucesSb = new StringBuilder(); + if (artifacts != null) { + for (@SuppressWarnings("rawtypes") + Artifact artifact : artifacts) { + if (artifact instanceof EmittedArtifact) { + EmittedArtifact ea = (EmittedArtifact) artifact; + String pathName = ea.getPartialPath(); + if (pathName.endsWith("symbolMap") || + pathName.endsWith(".xml.gz") || + pathName.endsWith("rpc.log") || + pathName.endsWith("gwt.rpc") || + pathName.endsWith("manifest.txt") || + pathName.startsWith("rpcPolicyManifest")) { + } else { + publicSourcesSb.append(pathName + "\n"); + } + } + } + String[] cacheExtraFiles = getCacheExtraFiles(); + for (int i = 0; i < cacheExtraFiles.length; i++) { + staticResoucesSb.append(cacheExtraFiles[i]); + staticResoucesSb.append("\n"); + } + } + String cacheManifestString = createCache(logger, context, publicSourcesSb, staticResoucesSb); + return emitString(logger, cacheManifestString, MANIFEST); + } + + protected String createCache(TreeLogger logger, LinkerContext context, StringBuilder publicSourcesSb, StringBuilder staticResoucesSb) throws UnableToCompleteException { + try { + String manifest = IOUtils.toString(getClass().getResourceAsStream(appCacheManifestTemplate())); + manifest = manifest.replace("$UNIQUEID$", (new Date()).getTime() + "." + Math.random()).toString(); + manifest = manifest.replace("$STATICAPPFILES$", staticResoucesSb.toString()); + manifest = manifest.replace("$GENAPPFILES$", publicSourcesSb.toString()); + return manifest; + } catch (IOException e) { + //logger.log(TreeLogger.ERROR, "Could not read cache manifest template.", e); + throw new UnableToCompleteException(); + } + } + + private String[] getCacheExtraFiles() { + String[] cacheExtraFiles = staticCachedFiles(); + return cacheExtraFiles == null ? new String[0] : Arrays.copyOf(cacheExtraFiles, cacheExtraFiles.length); + } + + /** + * Override this method to provide static files for caching. + * Include at least your root HTML and CSS file. + * Also include all files referenced in your root HTML file. + * See {@link DashboardManifestLinker} as an example. + * */ + protected String[] staticCachedFiles() { + return null; + } + + protected String appCacheManifestTemplate() { + return MANIFESTTEMPLATE; + } +} From 214eee1a8b191718ce41d0260b01e4054421c385 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 21 Jan 2016 11:14:11 +0100 Subject: [PATCH 02/43] added com.google.gwt.dev bundle to all server launch configs --- .../SailingServer (No Proxy OSX).launch | 76 +++++++++--------- .../SailingServer (No Proxy).launch | 76 +++++++++--------- ...ailingServer (No Proxy, Cached MTB).launch | 74 +++++++++--------- ...ingServer (No Proxy, Jetty on 8889).launch | 64 +++++++-------- ...o Proxy, Jetty on 8889, Cached MTB).launch | 64 +++++++-------- ... Jetty on 8889, auto-replicate dev).launch | 64 +++++++-------- ...oxy, Jetty on 8889, auto-replicate).launch | 64 +++++++-------- ...ingServer (No Proxy, Jetty on 8890).launch | 64 +++++++-------- ...ver (No Proxy, Remote Debug SAP VM).launch | 62 +++++++-------- ...ailingServer (No Proxy, winddbTest).launch | 74 +++++++++--------- .../SailingServer (Proxy).launch | 78 +++++++++---------- ...ailingServer (Proxy, Jetty on 8889).launch | 64 +++++++-------- ...Server (Proxy, Remote Debug SAP VM).launch | 62 +++++++-------- ...Proxy, SwissTiming Live Simulation).launch | 60 +++++++------- .../SailingServer (Proxy, winddbTest).launch | 66 ++++++++-------- 15 files changed, 506 insertions(+), 506 deletions(-) diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch index b8211bfa0d2..2217121d561 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch @@ -1,38 +1,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index 790dcb1a1c5..09c759bda2d 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -1,38 +1,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch index dc9901f3bf7..7a5bbc57d9a 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch @@ -1,37 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch index 0007ae993b9..cb07deee6ea 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch index 60f49469bef..720eedcd593 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch index 1a60f889076..9b54cb00101 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch index 8d5f888b611..5048c693862 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch index f4451bddc7d..e8e6d52d62b 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch index 66bd4d05cb0..6e159f15d9f 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch @@ -1,31 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch index 17ea3e4ef7f..6f8377174d7 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch @@ -1,37 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index 011e7e3e70a..ea51bff4a8f 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch index 0b77ad158db..e34b9f30d0d 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch index 28cd75d3397..dbf6beabd4f 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch @@ -1,31 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch index 5e511ea26f0..bec5b9c7745 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch @@ -1,30 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch index 9559877b5e8..1be4a23d4fd 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch @@ -1,33 +1,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 50b3926546911673235bc6118151c8117ea97013 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Mon, 25 Jan 2016 15:10:35 +0100 Subject: [PATCH 03/43] implemented redesign of startanalysis --- .../dashboards/gwt/client/theme/Colors.java | 6 +- .../dashboards/gwt/client/theme/Sizes.java | 16 ++- .../dashboards/gwt/client/theme/theme.gss | 18 +++ .../DashboardRaceMapResources.java | 18 +++ .../StartAnalysisCombinedWindPanel.gss | 43 +++---- .../startanalysis/StartAnalysisWidget.gss | 105 ++++++++++++------ .../startanalysis/StartAnalysisWidget.java | 54 +++++---- .../startanalysis/StartAnalysisWidget.ui.xml | 22 ++-- .../StartAnalysisWidgetResources.java | 18 ++- .../startanalysis/card/StartAnalysisCard.java | 28 +++-- .../card/StartAnalysisCard.ui.xml | 5 +- .../StartAnalysisStartRankTable.java | 17 +-- ...ysisStartRankTableRankAtFirstMarkCell.java | 14 +-- .../StartAnalysisStartRankTableStyle.css | 67 ++++++----- .../StartAnalysisStartRankTableTeamCell.java | 23 ---- ...tartAnalysisStartRankTableTeamCollumn.java | 16 --- .../StartAnalysisStartRankTableTextCell.java | 22 ++++ ...StartAnalysisStartRankTableTextColumn.java | 21 ++++ .../dashboards/gwt/client/images/left.png | Bin 0 -> 1260 bytes .../gwt/client/images/left_disabled.png | Bin 0 -> 462 bytes .../gwt/client/images/leftarrow.png | Bin 1395 -> 0 bytes .../gwt/client/images/leftarrow_disabled.png | Bin 585 -> 0 bytes .../dashboards/gwt/client/images/right.png | Bin 0 -> 1212 bytes .../gwt/client/images/right_disabled.png | Bin 0 -> 418 bytes .../gwt/client/images/rightarrow.png | Bin 1409 -> 0 bytes .../gwt/client/images/rightarrow_disabled.png | Bin 626 -> 0 bytes .../gwt/client/images/windarrow.png | Bin 3550 -> 3407 bytes .../shared/racemap/CombinedWindPanel.css | 6 +- .../shared/racemap/CombinedWindPanel.java | 1 + .../racemap/CombinedWindPanelStyle.java | 1 + .../gwt/ui/client/shared/racemap/RaceMap.java | 11 +- .../shared/racemap/RaceMapImageManager.java | 5 +- .../racemap/TrueNorthIndicatorPanel.java | 1 + .../EmbeddedMapAndWindChartEntryPoint.java | 2 +- .../gwt/ui/raceboard/RaceBoardPanel.java | 8 +- 35 files changed, 333 insertions(+), 215 deletions(-) create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/DashboardRaceMapResources.java delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTeamCell.java delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTeamCollumn.java create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTextCell.java create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTextColumn.java create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/left.png create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/left_disabled.png delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/leftarrow.png delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/leftarrow_disabled.png create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/right.png create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/right_disabled.png delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/rightarrow.png delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/rightarrow_disabled.png diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java index e74d80c2ed6..41dbe204da8 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java @@ -6,9 +6,9 @@ package com.sap.sailing.dashboards.gwt.client.theme; */ public class Colors { public static final String WHITE = "#FFFFFF"; - public static final String LIGHT_GREY = "#FFFFFF"; - public static final String DARK_GREY = "#FFFFFF"; - public static final String LIGHT_TEXT_COLOR = "#FFFFFF"; + public static final String LIGHT_GREY = "#F3F2F4"; + public static final String DARK_GREY = "#E0E0E0"; + public static final String LIGHT_TEXT_COLOR = "#848484"; public static final String DARK_TEXT_COLOR = "#FFFFFF"; public static final String DARK_BLUE = "#FFFFFF"; public static final String LIGHT_BLUE = "#FFFFFF"; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java index a539e9021a4..4ba46c50bfc 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java @@ -5,9 +5,15 @@ package com.sap.sailing.dashboards.gwt.client.theme; * */ public class Sizes { - public static final String DASHBOARD_FONT_SIZE_VERY_SMALL = "12px"; - public static final String DASHBOARD_FONT_SIZE_SMALL = "12px"; - public static final String DASHBOARD_FONT_SIZE_MEDIUM = "12px"; - public static final String DASHBOARD_FONT_SIZE_BIG = "12px"; - public static final String DASHBOARD_FONT_SIZE_VERY_BIG = "12px"; + public static final String DASHBOARD_FONT_SIZE_VERY_SMALL = "10px"; + public static final String DASHBOARD_FONT_SIZE_SMALL = "13px"; + public static final String DASHBOARD_FONT_SIZE_MEDIUM = "14px"; + public static final String DASHBOARD_FONT_SIZE_LARGE = "16px"; + public static final String DASHBOARD_FONT_SIZE_VERY_LARGE = "25px"; + + public static final String DASHBOARD_SPACE_VERY_SMALL = "10px"; + public static final String DASHBOARD_SPACE_SMALL = "30px"; + public static final String DASHBOARD_SPACE_MEDIUM = "40px"; + public static final String DASHBOARD_SPACE_LARGE = "50px"; + public static final String DASHBOARD_SPACE_VERY_LARGE = "70px"; } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss index 168c9ab59aa..9ec6f724a40 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss @@ -2,6 +2,24 @@ /*Colors*/ @def WHITE eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.WHITE"); +@def LIGHT_GREY eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.LIGHT_GREY"); +@def DARK_GREY eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.DARK_GREY"); +@def LIGHT_TEXT_COLOR eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.LIGHT_TEXT_COLOR"); +@def DARK_TEXT_COLOR eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.DARK_TEXT_COLOR"); +@def DARK_BLUE eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.DARK_BLUE"); +@def LIGHT_BLUE eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.LIGHT_GREY"); +@def YELLOW eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.YELLOW"); /*Fonts*/ @def DASHBOARD_FONT_FAMILY eval("com.sap.sailing.dashboards.gwt.client.theme.Fonts.DASHBOARD_FONT_FAMILY"); + +/*Sizes*/ +@def DASHBOARD_FONT_SIZE_SMALL eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_FONT_SIZE_SMALL"); +@def DASHBOARD_FONT_SIZE_MEDIUM eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_FONT_SIZE_MEDIUM"); +@def DASHBOARD_FONT_SIZE_LARGE eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_FONT_SIZE_LARGE"); + +@def DASHBOARD_SPACE_VERY_SMALL eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_VERY_SMALL"); +@def DASHBOARD_SPACE_SMALL eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_SMALL"); +@def DASHBOARD_SPACE_MEDIUM eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_MEDIUM"); +@def DASHBOARD_SPACE_LARGE eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_LARGE"); +@def DASHBOARD_SPACE_VERY_LARGE eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_VERY_LARGE"); \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/DashboardRaceMapResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/DashboardRaceMapResources.java new file mode 100644 index 00000000000..86362637283 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/DashboardRaceMapResources.java @@ -0,0 +1,18 @@ +package com.sap.sailing.dashboards.gwt.client.widgets.startanalysis; + +import com.google.gwt.resources.client.ImageResource; +import com.sap.sailing.gwt.ui.client.shared.racemap.CombinedWindPanelStyle; +import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; + +/** + * @author Alexander Ries (D062114) + * + */ +public interface DashboardRaceMapResources extends RaceMapResources { + + @Source("com/sap/sailing/dashboards/gwt/client/images/windarrow.png") + ImageResource combinedWindIcon(); + + @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "StartAnalysisCombinedWindPanel.gss"}) + CombinedWindPanelStyle combinedWindPanelStyle(); +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisCombinedWindPanel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisCombinedWindPanel.gss index d4843d25e1b..ada72c4b4f0 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisCombinedWindPanel.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisCombinedWindPanel.gss @@ -1,30 +1,35 @@ @require 'theme'; .combinedWindPanel { - margin-top: 10pt; - margin-left: 10pt; - right: 0pt; - width: 45pt; - height: 45pt; - border-radius: 22.5pt; + margin-top: DASHBOARD_SPACE_VERY_SMALL; + margin-left: DASHBOARD_SPACE_VERY_SMALL; + right: 0px; + width: 50px; + height: 50px; + border-radius: 50px; background-color: white; } .combinedWindPanelTextLabel { - margin-top: 15pt; - width: 45pt; - height: 25pt; - background-color: white; - line-height: 25pt; - vertical-align: middle; - font-size: 11pt; - font-family: DASHBOARD_FONT_FAMILY; - text-align: center; +margin-top: DASHBOARD_SPACE_VERY_SMALL; +width: 50px; +height: DASHBOARD_SPACE_SMALL; +line-height: DASHBOARD_SPACE_SMALL; +vertical-align: middle; +font-size: DASHBOARD_FONT_SIZE_SMALL; +font-weight: bold; +font-family: DASHBOARD_FONT_FAMILY; +text-align: center; +color: white; } .combinedWindPanelCanvas { - width: 35pt; - height: 35pt; - margin-top: 5pt; - margin-left: 5pt; + width: 30px !important; + height: 30px !important; + margin-top: 10px; + margin-left: 10px; +} + +.trueNorthIndicator { + opacity: 0.0; } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss index 4e60c3bae9d..77e4ab8a8cf 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss @@ -3,7 +3,7 @@ .startanalysis { position: absolute; overflow: hidden; - background-color: white; + background-color: LIGHT_GREY; left: 0pt; right: 0pt; top: 0pt; @@ -11,42 +11,71 @@ } .panel_header { - height: 100%; + height: DASHBOARD_SPACE_MEDIUM; margin-top: 0; - line-height: 30pt; + line-height: DASHBOARD_SPACE_MEDIUM; vertical-align: middle; - font-size: 14pt; + font-size: DASHBOARD_FONT_SIZE_LARGE; font-family: DASHBOARD_FONT_FAMILY; width: 100%; text-align: center; font-weight: bold; overflow: visible; - background-color: white; + background-color: WHITE; +} + +.current_start_panel { + height: DASHBOARD_SPACE_MEDIUM; + top: DASHBOARD_SPACE_MEDIUM; + line-height: DASHBOARD_SPACE_MEDIUM; + vertical-align: middle; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; + font-family: DASHBOARD_FONT_FAMILY; + width: 100%; + text-align: center; + font-weight: bold; + z-index: 3; } .controll_header_button { position: absolute; - top: 10pt; - height: 17.5pt; - width: 17.5pt; + height: DASHBOARD_SPACE_VERY_LARGE; + width: DASHBOARD_SPACE_VERY_LARGE; + top: 50%; + background-color: WHITE; + z-index: 1; + opacity: 0.9; +} + +.controll_header_button:active { + background-color: LIGHT_GREY; +} + +.controll_header_button_image { + position: absolute; + width: 18px; + height: DASHBOARD_SPACE_SMALL; + top: 20px; + left: 27px; } .controll_header_button_left { - left: 10%; + left: 31px; } .controll_header_button_right { - right: 10%; + right: 31px; } .card_container { position: absolute; overflow: visible; - top: 33.5pt; - bottom: 10pt; + top: DASHBOARD_SPACE_MEDIUM; + bottom: 70px; + padding-top: DASHBOARD_SPACE_MEDIUM; + padding-bottom: DASHBOARD_SPACE_SMALL; width: 100%; left: 0%; - background-color: white; -webkit-transition: left 0.7s ease-in-out; /* For Safari 3.1 to 6.0 */ transition: left 0.7s ease-in-out; } @@ -54,67 +83,69 @@ .card { position: absolute; display: inline; - width: 80%; + width: 75%; height: 100%; - /*#4293DB old water color*/ - background-color: #004384; margin-top: 1px; /*Shows otherwise small line at top edge*/ overflow: hidden; } +.card_map_container { + position: absolute; + margin-top: 29px; + /*#4293DB old water color*/ + background-color: #004384; + width: 100%; + height: 100%; +} + .card_table { position: absolute; bottom: 0pt; right: 0pt; left: 0pt; - padding-left:10pt; - padding-right:10pt; - padding-bottom: 10pt; - background-color: #004384;; + background-color: WHITE; z-index: 2; } .card_wind_line_data_container { position: absolute; - top: 10pt; - left: 10pt; - width: 45pt; - height: 80pt; + top: 0pt; + left: 0; + width: 100%; + height: 30px; z-index: 1; + background-color: WHITE; + color: LIGHT_TEXT_COLOR; } .card_data { position: absolute; right: 0pt; width: 45pt; - height: 25pt; - line-height: 25pt; + height: DASHBOARD_SPACE_SMALL; + line-height: DASHBOARD_SPACE_SMALL; vertical-align: middle; - font-size: 11pt; + font-size: DASHBOARD_FONT_SIZE_SMALL; font-family: DASHBOARD_FONT_FAMILY; + font-weight: bold; text-align: center; } .card_line_advantage { top: 0pt; - left: 55pt; + left: 10px; width: 215pt; text-align: left; - padding-left: 7pt; - background-color: white; } .card_race_time{ position: absolute; - top: 10pt; - right: 10pt; + right: 10px; width: 200px; text-align: right; - color: white; - line-height: 25pt; - font-size: 11pt; + line-height: DASHBOARD_SPACE_SMALL; + font-size: DASHBOARD_FONT_SIZE_SMALL; font-family: DASHBOARD_FONT_FAMILY; - z-index: 1; } .card_line_data_geo { @@ -141,4 +172,4 @@ width: 50%; height: 100%; z-index: 2; -} \ No newline at end of file +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java index 29a7dc12220..4037fbc8293 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java @@ -12,7 +12,6 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.resources.client.CssResource; -import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.Cookies; @@ -40,6 +39,7 @@ import com.sap.sailing.dashboards.gwt.shared.dto.LeaderboardCompetitorsDTO; import com.sap.sailing.dashboards.gwt.shared.dto.StartAnalysesDTO; import com.sap.sailing.dashboards.gwt.shared.dto.StartAnalysisDTO; import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; /** * The class contains an collection of {@link StartAnalysisCard}s that are displayed in horizontal aligned pages. It @@ -63,12 +63,21 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @UiField HTMLPanel header; + + @UiField + HTMLPanel currentStartPanel; @UiField - Image rightButton; + HTMLPanel rightButton; @UiField - Image leftButton; + HTMLPanel leftButton; + + @UiField + Image rightButtonImage; + + @UiField + Image leftButtonImage; @UiField FocusPanel left_focus_panel; @@ -110,19 +119,22 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL private static final String SELECTED_COMPETITOR_ID_COOKIE_KEY = "selectedCompetitorId"; private static final int SELECTED_COMPETITOR_ID_COOKIE_KEY_EXPIRE_TIME_IN_MILLIS = 60 * 1000 * 60 * 5; - private static final int SCROLL_OFFSET_STARTANALYSIS_CARDS = 83; + private static final int SCROLL_OFFSET_STARTANALYSIS_CARDS = 80; + private static final double MARGIN_LEFT_STARTANALYSIS_CARD = 12.5; private static final Logger logger = Logger.getLogger(StartAnalysisWidget.class.getName()); + private static final RaceMapResources raceMapResources = GWT.create(DashboardRaceMapResources.class); /** * Component that contains handles, displays and loads startanalysis cards. * */ public StartAnalysisWidget(DashboardClientFactory dashboardClientFactory) { StartAnalysisWidgetResources.INSTANCE.gss().ensureInjected(); - StartAnalysisWidgetResources.INSTANCE.combinedWindPanelStyle().ensureInjected(); + raceMapResources.combinedWindPanelStyle().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; pageChangeListener = new ArrayList(); starts = new ArrayList(); initWidget(uiBinder.createAndBindUi(this)); + header.getElement().setInnerText("Start Analysis"); initCompetitorSelectionPopupAndAddCompetitorSelectionListener(); initLeftRightButtons(); initAndAddBottomNotification(); @@ -132,14 +144,14 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } private void initLeftRightButtons() { - leftButton.setResource(StartAnalysisWidgetResources.INSTANCE.leftdisabled()); + leftButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.leftdisabled()); left_focus_panel.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { clickedArrowButton(false); } }); - rightButton.setResource(StartAnalysisWidgetResources.INSTANCE.rightdisabled()); + rightButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.rightdisabled()); right_focus_panel.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { @@ -268,14 +280,14 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL startanalysis_card_container.getElement().getStyle().setLeft(currentScrollPosition, Unit.PCT); notifyStartAnalysisPageChangeListener(page); int displayPage = page + 1; - header.getElement().setInnerHTML("Start " + starts.get(displayPage - 1).raceName); + currentStartPanel.getElement().setInnerHTML(starts.get(displayPage - 1).raceName); if (page != numberOfStartAnalysisCards - 1) { - rightButton.setResource(StartAnalysisWidgetResources.INSTANCE.right()); + rightButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.right()); rightButton.getElement().getStyle().setProperty("disabled", "false"); } if (page == 0) { - leftButton.setResource(StartAnalysisWidgetResources.INSTANCE.leftdisabled()); - leftButton.getElement().getStyle().setProperty("disabled", "true"); + leftButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.leftdisabled()); + leftButtonImage.getElement().getStyle().setProperty("disabled", "true"); } } } else { @@ -285,13 +297,13 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL startanalysis_card_container.getElement().getStyle().setLeft(currentScrollPosition, Unit.PCT); notifyStartAnalysisPageChangeListener(page); int displayPage = page + 1; - header.getElement().setInnerHTML("Start " + starts.get(displayPage - 1).raceName); + currentStartPanel.getElement().setInnerHTML(starts.get(displayPage - 1).raceName); if (page >= 0) { - leftButton.setResource(StartAnalysisWidgetResources.INSTANCE.left()); + leftButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.left()); leftButton.getElement().getStyle().setProperty("disabled", "false"); } if (page == numberOfStartAnalysisCards - 1) { - rightButton.setResource(StartAnalysisWidgetResources.INSTANCE.rightdisabled()); + rightButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.rightdisabled()); rightButton.getElement().getStyle().setProperty("disabled", "true"); } } @@ -305,11 +317,11 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL * SCROLL_OFFSET_STARTANALYSIS_CARDS; page = numberOfStartAnalysisCards - 1; startanalysis_card_container.getElement().getStyle().setLeft(currentScrollPosition, Unit.PCT); - header.getElement().setInnerHTML("Start " + starts.get(page).raceName); + currentStartPanel.getElement().setInnerHTML(starts.get(page).raceName); notifyStartAnalysisPageChangeListener(page); - rightButton.setResource(StartAnalysisWidgetResources.INSTANCE.rightdisabled()); + rightButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.rightdisabled()); rightButton.getElement().getStyle().setProperty("disabled", "true"); - leftButton.setResource(StartAnalysisWidgetResources.INSTANCE.left()); + leftButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.left()); leftButton.getElement().getStyle().setProperty("disabled", "false"); } } @@ -318,14 +330,14 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL logger.log(Level.INFO, "Adding Startanalysis Card"); if (displaysCards == false) { displaysCards = true; - header.getElement().setInnerHTML("Start " + SafeHtmlUtils.fromString(startAnalysisDTO.raceName)); + currentStartPanel.getElement().setInnerHTML(startAnalysisDTO.raceName); } if (numberOfStartAnalysisCards > 0) { - rightButton.setResource(StartAnalysisWidgetResources.INSTANCE.right()); + rightButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.right()); } final StartAnalysisCard startlineAnalysisCard = new StartAnalysisCard(numberOfStartAnalysisCards - * SCROLL_OFFSET_STARTANALYSIS_CARDS + 10, numberOfStartAnalysisCards, startAnalysisDTO, - dashboardClientFactory.getSailingService()); + * SCROLL_OFFSET_STARTANALYSIS_CARDS + MARGIN_LEFT_STARTANALYSIS_CARD, numberOfStartAnalysisCards, startAnalysisDTO, + dashboardClientFactory.getSailingService(), raceMapResources); startanalysis_card_container.add(startlineAnalysisCard); startlineAnalysisCard.startAnalysisComponentPageChangedToIndexAndStartAnalysis(page, startAnalysisDTO); registerPageChangeListener(startlineAnalysisCard); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml index 3ede34ebdf6..1a8e8709578 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml @@ -2,18 +2,26 @@ - + - No Starts Available - - + + + + + + + + + - + diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidgetResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidgetResources.java index 7a0aab98c25..6bd752440b1 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidgetResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidgetResources.java @@ -4,41 +4,37 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; import com.google.gwt.resources.client.ImageResource; -import com.sap.sailing.gwt.ui.client.shared.racemap.CombinedWindPanelStyle; public interface StartAnalysisWidgetResources extends ClientBundle { public static final StartAnalysisWidgetResources INSTANCE = GWT.create(StartAnalysisWidgetResources.class); - @Source("com/sap/sailing/dashboards/gwt/client/images/leftarrow.png") + @Source("com/sap/sailing/dashboards/gwt/client/images/left.png") ImageResource left(); - @Source("com/sap/sailing/dashboards/gwt/client/images/rightarrow.png") + @Source("com/sap/sailing/dashboards/gwt/client/images/right.png") ImageResource right(); - @Source("com/sap/sailing/dashboards/gwt/client/images/leftarrow_disabled.png") + @Source("com/sap/sailing/dashboards/gwt/client/images/left_disabled.png") ImageResource leftdisabled(); - @Source("com/sap/sailing/dashboards/gwt/client/images/rightarrow_disabled.png") + @Source("com/sap/sailing/dashboards/gwt/client/images/right_disabled.png") ImageResource rightdisabled(); - - @Source("com/sap/sailing/dashboards/gwt/client/images/windarrow.png") - ImageResource combinedWindIcon(); @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "StartAnalysisWidget.gss"}) StartAnalysisGSS gss(); - - @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "StartAnalysisCombinedWindPanel.gss"}) - CombinedWindPanelStyle combinedWindPanelStyle(); public interface StartAnalysisGSS extends CssResource { String startanalysis(); String panel_header(); + String current_start_panel(); String controll_header_button(); + String controll_header_button_image(); String controll_header_button_left(); String controll_header_button_right(); String card_container(); String card(); + String card_map_container(); String card_table(); String card_wind_line_data_container(); String card_data(); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/card/StartAnalysisCard.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/card/StartAnalysisCard.java index 8d997ca6d63..e278f49ac5b 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/card/StartAnalysisCard.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/card/StartAnalysisCard.java @@ -20,7 +20,6 @@ import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.StartAnalysisPageChangeListener; -import com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.StartAnalysisWidgetResources; import com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.rankingtable.StartAnalysisStartRankTable; import com.sap.sailing.dashboards.gwt.shared.StartlineAdvantageType; import com.sap.sailing.dashboards.gwt.shared.dto.StartAnalysisDTO; @@ -34,6 +33,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMap; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapHelpLinesSettings; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapHelpLinesSettings.HelpLineTypes; +import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapZoomSettings; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapZoomSettings.ZoomTypes; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; @@ -52,6 +52,9 @@ public class StartAnalysisCard extends Composite implements HasWidgets, StartAna @UiField HTMLPanel startanalysis_card; + @UiField + HTMLPanel card_map_container; + @UiField HTMLPanel startanalysis_card_table; @@ -72,12 +75,14 @@ public class StartAnalysisCard extends Composite implements HasWidgets, StartAna private final double WIND_LINE_ADVANTAGE_DIV_WIDTH_IN_PT = 185; private final double GEOMETRIC_LINE_ADVANTAGE_DIV_WIDTH_IN_PT = 210; - private final int TABLE_MARGIN_IN_PT = 10; private final String RACE_TIME_START = "00:00:00"; - public StartAnalysisCard(double leftCSSProperty, int cardId, StartAnalysisDTO startAnalysisDTO, SailingServiceAsync sailingServiceAsync) { + private RaceMapResources raceMapResources; + + public StartAnalysisCard(double leftCSSProperty, int cardId, StartAnalysisDTO startAnalysisDTO, SailingServiceAsync sailingServiceAsync, RaceMapResources raceMapResources) { stringMessages = StringMessages.INSTANCE; this.sailingServiceAsync = sailingServiceAsync; + this.raceMapResources = raceMapResources; colorProvider = new CompetitorColorProviderImpl(); competitorSelectionModel = new CompetitorSelectionModel(/* hasMultiSelection */true, colorProvider); competitorSelectionModel.setCompetitors(startAnalysisDTO.getCompetitorDTOsFromStartAnaylsisCompetitorDTOs(), @@ -133,7 +138,7 @@ public class StartAnalysisCard extends Composite implements HasWidgets, StartAna } } - private void addMap(final int cardID, final StartAnalysisDTO startAnalysisDTO) { + private void addMap(final int cardID, final StartAnalysisDTO startAnalysisDTO, RaceMapResources raceMapResources) { com.sap.sse.gwt.client.player.Timer timer = new com.sap.sse.gwt.client.player.Timer(PlayModes.Live, 1000l); timer.pause(); ArrayList zoomTypes = new ArrayList(); @@ -149,13 +154,14 @@ public class StartAnalysisCard extends Composite implements HasWidgets, StartAna asyncActionsExecutor, null, Collections.singletonList(startAnalysisDTO.regattaAndRaceIdentifier), 5000l /* requestInterval */); raceMap = new RaceMap(sailingServiceAsync, asyncActionsExecutor, null, timer, competitorSelectionModel, StringMessages.INSTANCE, false, false, false, false, startAnalysisDTO.regattaAndRaceIdentifier, - StartAnalysisWidgetResources.INSTANCE.combinedWindPanelStyle(), /* showHeaderPanel */ true); + raceMapResources, /* showHeaderPanel */ true); raceMap.getSettings().setZoomSettings(new RaceMapZoomSettings(zoomTypes, false)); raceMap.getSettings().setHelpLinesSettings(getHelpLineSettings()); raceMap.getSettings().setTailLengthInMilliseconds(startAnalysisDTO.tailLenghtInMilliseconds); raceTimesInfoProvider.addRaceTimesInfoProviderListener(raceMap); - raceMap.setSize("100%", getHeightForRaceMapInPixels()+"px"); - startanalysis_card.add(raceMap); + raceMap.setSize("100%", "100%"); + card_map_container.getElement().getStyle().setHeight(getHeightForRaceMapInPixels(), Unit.PX); + card_map_container.add(raceMap); /** * Executes onResize() after the reflow of the DOM. Otherwise it has no effect. * Needs to resize the map because google maps are not shown loaded fully when they are hidden. @@ -169,8 +175,8 @@ public class StartAnalysisCard extends Composite implements HasWidgets, StartAna }); } - private int getHeightForRaceMapInPixels(){ - return this.getElement().getOffsetHeight() - startanalysis_card_table.getElement().getOffsetHeight() + (TABLE_MARGIN_IN_PT*3); + private double getHeightForRaceMapInPixels(){ + return this.getElement().getOffsetHeight() - startanalysis_card_table.getElement().getOffsetHeight() - 30; } private RaceMapHelpLinesSettings getHelpLineSettings() { @@ -184,7 +190,7 @@ public class StartAnalysisCard extends Composite implements HasWidgets, StartAna private void removeMap() { if (raceMap != null && raceMap.isAttached() == true) { - startanalysis_card.remove(raceMap); + card_map_container.remove(raceMap); } } @@ -201,7 +207,7 @@ public class StartAnalysisCard extends Composite implements HasWidgets, StartAna @Override public void execute() { - addMap(newPageIndex, startAnalysisDTO); + addMap(newPageIndex, startAnalysisDTO, raceMapResources); } }); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/card/StartAnalysisCard.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/card/StartAnalysisCard.ui.xml index fbb57deff27..5c90d570e6c 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/card/StartAnalysisCard.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/card/StartAnalysisCard.ui.xml @@ -5,11 +5,12 @@ -
+
+
Time: 00:05:00
-
Time: 00:05:00
+ diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTable.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTable.java index 34ac687aae1..82018b339b9 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTable.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTable.java @@ -7,7 +7,6 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.user.cellview.client.CellTable; import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy; -import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.client.ui.AbsolutePanel; import com.sap.sailing.dashboards.gwt.shared.dto.StartAnalysisCompetitorDTO; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; @@ -47,31 +46,27 @@ public class StartAnalysisStartRankTable extends AbsolutePanel { } }; - StartAnalysisStartRankTableTeamCollumn teamColumn = new StartAnalysisStartRankTableTeamCollumn() { + StartAnalysisStartRankTableTextColumn teamColumn = new StartAnalysisStartRankTableTextColumn() { @Override - public Pair getValue(StartAnalysisCompetitorDTO saCompetitor) { - String competitorColorAsHTML = competitorSelectionModel.getColor(saCompetitor.competitorDTO).getAsHtml(); - if(competitorColorAsHTML == null){ - competitorColorAsHTML = "#121212"; - } - return new Pair(saCompetitor.rankingTableEntryDTO.teamName, competitorColorAsHTML); + public String getValue(StartAnalysisCompetitorDTO saCompetitor) { + return saCompetitor.rankingTableEntryDTO.teamName; } }; - TextColumn speedColumn = new TextColumn() { + StartAnalysisStartRankTableTextColumn speedColumn = new StartAnalysisStartRankTableTextColumn() { @Override public String getValue(StartAnalysisCompetitorDTO saCompetitor) { return "" + NumberFormat.getFormat("#0.0").format(saCompetitor.rankingTableEntryDTO.speedAtStartTime); } }; - TextColumn distanceColumn = new TextColumn() { + StartAnalysisStartRankTableTextColumn distanceColumn = new StartAnalysisStartRankTableTextColumn() { @Override public String getValue(StartAnalysisCompetitorDTO saCompetitor) { return "" + NumberFormat.getFormat("#0.0").format(saCompetitor.rankingTableEntryDTO.distanceToLineAtStartTime); } }; - + table.addColumn(rankColumn, stringConstants.dashboardRankAtFirstMark()); table.setColumnWidth(rankColumn, 18.0, Unit.PCT); table.addColumn(teamColumn, stringConstants.dashboardTeam()); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableRankAtFirstMarkCell.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableRankAtFirstMarkCell.java index 3169789147f..9b9f3cdbf7f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableRankAtFirstMarkCell.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableRankAtFirstMarkCell.java @@ -3,6 +3,7 @@ package com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.rankingtable import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.cell.client.Cell; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.sap.sailing.dashboards.gwt.client.theme.Fonts; import com.sap.sse.common.Util.Pair; public class StartAnalysisStartRankTableRankAtFirstMarkCell extends AbstractCell> implements Cell> { @@ -12,19 +13,18 @@ public class StartAnalysisStartRankTableRankAtFirstMarkCell extends AbstractCell @Override public void render(com.google.gwt.cell.client.Cell.Context context, Pair value, SafeHtmlBuilder sb) { - String borderColor = "white"; String textColor = "white"; - String width = "20pt"; - String height = "20pt"; + String width = "22px"; + String height = "22px"; + String fontFamily = Fonts.DASHBOARD_FONT_FAMILY; if(value.getB().equals("#FFFFFF")){ borderColor = "black"; textColor = "black"; - width = "19pt"; - height = "19pt"; + width = "22px"; + height = "22px"; } - - sb.appendHtmlConstant("
"); + sb.appendHtmlConstant("
"); if (value != null) { sb.appendHtmlConstant(value.getA()); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableStyle.css b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableStyle.css index beddf87f241..6fa2b7a3807 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableStyle.css +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableStyle.css @@ -1,37 +1,52 @@ @CHARSET "UTF-8"; .cellTableHeader { -padding-left: 10px; -color: black; -font-size: 9pt; -background-image: none; -background-color: white; -height: 30px; -vertical-align: middle; -font-weight: bold; -text-shadow: 0 1px 1px rgba(255,255,255,.7); + padding: 7px; + padding-left: 10px; + color: black; + background-image: none; + background-color: white; + font-family: 'Open Sans' !important; + font-size: 13px; + font-weight: bold; + text-shadow: 0 1px 1px rgba(255, 255, 255, .7); + border-bottom-color: lightgrey !important; + border: none !important; + vertical-align: bottom; } .cellTableCell { -padding: 5px; -overflow: hidden; -font-size: 10pt; -height: 20px; -color: black; -background-color: white; -border:none; + padding-bottom: 8px; + padding-left: 10px; + overflow: hidden; + font-family: 'Open Sans' !important; + font-size: 13px; + color: #848484; + background-color: white; + border: none !important; + margin: 100px !important; + border-spacing: 0px !important; } -.cellTableEvenRow { -background-color: white; -border:none; +.cellTableOddRowCell { + background-color: white; + border: none !important; + padding: 0px; + padding-left: 10px; + padding-bottom: 10px; + margin: 0px !important; + border-spacing: 0px !important; + font-family: 'Open Sans' !important; } -.cellTableOddRow { -background-color: white; -border:none; + +.cellTableEvenRowCell { + background-color: white; + border: none !important; + padding: 0px; + padding-left: 10px; + padding-bottom: 10px; + maring: 0px !important; + border-spacing: 0px !important; + font-family: 'Open Sans' !important; } -cellTableOddRowCell{ -background-color: white; -border:none; -} \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTeamCell.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTeamCell.java deleted file mode 100644 index 20baef7dfe9..00000000000 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTeamCell.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.rankingtable; - -import com.google.gwt.cell.client.AbstractCell; -import com.google.gwt.cell.client.Cell; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.sap.sse.common.Util.Pair; - -public class StartAnalysisStartRankTableTeamCell extends AbstractCell> implements Cell> { - - public StartAnalysisStartRankTableTeamCell() { - } - - @Override - public void render(com.google.gwt.cell.client.Cell.Context context, Pair value, SafeHtmlBuilder sb) { - - sb.appendHtmlConstant("
"); - if (value != null) { - sb.appendHtmlConstant(value.getA()); - sb.appendHtmlConstant("
"); - } - sb.appendHtmlConstant("
"); - } -} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTeamCollumn.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTeamCollumn.java deleted file mode 100644 index 9ad2d1c776f..00000000000 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTeamCollumn.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.rankingtable; - -import com.google.gwt.user.cellview.client.Column; -import com.sap.sse.common.Util.Pair; - -public abstract class StartAnalysisStartRankTableTeamCollumn extends Column> { - - public StartAnalysisStartRankTableTeamCollumn() { - super(new StartAnalysisStartRankTableTeamCell()); - } - - @Override - public Pair getValue(T object) { - return null; - } -} \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTextCell.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTextCell.java new file mode 100644 index 00000000000..67644eb9686 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTextCell.java @@ -0,0 +1,22 @@ +package com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.rankingtable; + +import com.google.gwt.cell.client.AbstractCell; +import com.google.gwt.cell.client.Cell; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.sap.sailing.dashboards.gwt.client.theme.Fonts; + +public class StartAnalysisStartRankTableTextCell extends AbstractCell implements Cell { + + public StartAnalysisStartRankTableTextCell() { + } + + @Override + public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) { + String fontFamily = Fonts.DASHBOARD_FONT_FAMILY; + sb.appendHtmlConstant("
"); + if (value != null) { + sb.appendHtmlConstant(value); + } + sb.appendHtmlConstant("
"); + } +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTextColumn.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTextColumn.java new file mode 100644 index 00000000000..d585946773a --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/rankingtable/StartAnalysisStartRankTableTextColumn.java @@ -0,0 +1,21 @@ +package com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.rankingtable; + +import com.google.gwt.user.cellview.client.Column; + +/** + * @author Alexander Ries (D062114) + * + */ + +public abstract class StartAnalysisStartRankTableTextColumn extends Column { + + public StartAnalysisStartRankTableTextColumn() { + super(new StartAnalysisStartRankTableTextCell()); + } + + @Override + public String getValue(T object) { + return null; + } +} + diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/left.png b/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/left.png new file mode 100644 index 0000000000000000000000000000000000000000..383af6aeac219798be3c7c6bb4a461c897a7500a GIT binary patch literal 1260 zcmV{$aB00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY79{`x79{~mQY7#I000McNliru-~ky87#qq*LSX;^1bInB zK~!koy_ri->QEGg*D1!_nFIfTiE*G20}@4~3Y3>%G{%IPzt4daqo{~bd6ie8h{8bs zhBJBXJK{#J+JnkrCrl`iuY0YvIXwqNglWIx@i;v{Khyv3OPF${(`jln8aO>YMZ4Xm z_t&Nhb9Z+~#bOZ_iv_c@vp73D!^_LdKOja#QvtcUx}t}N2T0QB{Sy&RPEN3}u)wAQ zlT0S5R;z(A_UZM0zmMbNWAQSns!EkgS&d5y-Oq<%eb_G0>{j>R28brsk{qm1lU9b(oq+Br=kkujYz6Db# z6eyq1e^`%vHqgxC`)iq!$t3BzZVEy~@Or&J1{td}s;W}0Rx<_ZbUN_)e7^$W!f2XC z#bVLaBi(KnilY3;BV)^y&1NZ=%W>m7To_H_Z)N7IRlKh2rXamuZ>$mjE1AZftcs#w zcXxMUARk}~g#u->S#Eq4MZwO_&O|{*Jd;Qys9vvgt$eMX%R0HFTrVKs+8Np)deox7%4T7&HZv zBngj?kI3b6Buu9F)o3&*kw|bQb2^;}27^o}%+Ny@7Z=>v+iW%*92|&STn#-G2n4v2 zHJeSSs!Bp(0KnyPv0yL=vo1=KgmSrzd_GUYWO`q%R*Nn#FS#CCUtdQw8Ws1b0svO4 zm4!kfZtM-iKq8SKp)dfjv9ZDYen0yCzNut}VL;O~5+>98s@Ln3OeVRKxm+&z{eC7C z1^}APCdK1%ZtNWn$5B6 zWhTq=$a5JH;qdSf%gf7bDxUejs?{o`QYrNNeZ*ohtgNhvk2Y`lF*i4drKP12SN{d} W7V}%nS@pdD0000{$aB00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY79{`x79{~mQY7#I000McNliru-~ky8B_(0b7jyss0b5B# zK~!ko&Dp_{!ypI-VBo6m`@iS5hfH>2Pu*$FZVLK?_S8ua`AUSKaIKZ1Kez9DB_hft z@#}S&1!=#BW7?ay*JLK7{f#5m%oQZ`F=-+07z-qq#Ig#+Eiye27fde%j?qGDttSXH zwMQZXjSK<;!Jr_+7$jr}gNAftJRn^dFNhiA2{B>3A!V}#902VC5qjVSp_6L>%j{oy$jR>BqJGv2FYj& zBSC_wDJYPjiW~y;vFJsDR24W1q<$SlfK2bEToND0;RfnDpIK&m`@F%nZE*O|$<;DP zA|8u+xVb`tAe|lx1Zz7HAZQOf3W7J}xg>RlhD_qhSLXd^H-lVJ-yH4UPY419T)1>{g{b-~00D0#c&$Lwu)Bpeg07*qoM6N<$ Ef}4xCTmS$7 literal 0 HcmV?d00001 diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/leftarrow.png b/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/leftarrow.png deleted file mode 100644 index de562344f94145a43e4e22824f759a92e631ab25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1395 zcmV-(1&sQMP)`+nbhKc`l!5x0ynPk0FrY5-p3%j-Z#@V}=op9HQ% zCAj)~B~H8xP_0%S;I`;PC%Ri>%vE4t?8ESm6CZjpZ+{NVc%d&kfa_7){wJ^G`~GXd zWa74sF@FK2M)uUgF8X)LBPSB=h%v(j{s6kXMP8f(K1<`6FM$J%ggKQ;r60HktRm$K zyT<{(1$L(XQOq`<11@L!QAEIc;J3gBsa+nJ;AVJv0l49%cySx>W8&FFPW@M)FD~Vx zFTVr)9ep`2yLSTLHQHj36>Y#Tz^27)D*3*D8Tb@foyJ=(@G9_oGjTNqd;vI_V#*lv zF>o?d5DG7T2FjTN&=|81_&U7Jv=Mtz&LImxc)+zx;hkj}W3~d9fO#)x!SfP4&=9dQ z3cVS49e4rgY#8Sm1rGu515=9yU}_~o%9Fs`z{X}QPGa|Uz7&NxfiO$!g%NXGwS)a7syD_ADsatEzEF zE_@OZzCmblDqQ~OqQn?e0-gabBq2kq%s4Ir+uaBSycR<967X~`%oq{g2^jJEnwFR` zLBRx21%`8>--z&yz4X5HJUQD|4G^9Has7mkl8m<2A1J6c}RhGes%=FvP+AZTKG zfLBDd-FZVz$@l%kz$d_CK)VgVbb)DL5R1#LR;w>-{PGoW!)o0n4mhrZUvIVUGRE`@ zHlEKi%V@T^+pdCOGLM6gUDay!d*G0w?kDRNr1I#TT-a?zNl4kS;O1bIVsot^MYprS z2Wi`lrt2=%Q~^qN*{+2Lfj5DpNiNK#f|LuVRk3WhT5zjzIs?22++wY&54D9Clw+RF z*@_EH0Oze%^_Dj8XvA_i@Gx)$81M>Yz#8CwU|xZIE6|pE<6vp?gPKJh1@2K&xViTY z7B=1k42i_%wE0xj?5%*!_W^rV%#TsO-Eym{gR<`IY6VC zyM`^)r;5j9#HOY4daJXJ4khZOuze)U#AewHQOK;NJ~uqBguQbmcs+K~qB%w4PPz(Bq zjOtxV?y+$>>I(Vx0FP_RQO44s-0D0irm)jf$C_jHSGO(HSGO(weGNAo%_CTz0U1!?We@{ghF=WknfHG6dO>$Z}IyB zB+rkFE{~8L6h@cvY3hcKd1}aci0vNMOA<3#-WyKR=w*;RJe(hLdr9Cy>M0b@ymSIV zx>Ue@T|I^umPu6LVy&f~ns~*sy!2_NXn9K-I|9uN%-R(*gHDTRA|iSW$`Y{{xGQ2k z@bsypjwYTos#DEO#8OlhR-}T{v5O;U9w60mepWC<1U&~==K`8JLC?X>L^w+ryam)G z(jAYUgNxlY6Cm@>coqYwckdLD!L9(Di%R!!CX>~1YsAURtp%wX+p-PlYQ~sNh1yrtxO@X}t X7&7n{$aB00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY79{`x79{~mQY7#I000McNliru-~ky87cLuYnvDPe1W8Fm zK~!koy_w5S`dk#n*J+E+dI`j>lG1C|?r7fj}VvNxsQ4?e03pjA5 z33PvhFBsInJs>SB=>QVKkG=NVoC_l&jOyv>iQeAckWQx=W-Mv+#r^#~)oL|}qKLs@ zK&q3`hWghlhtRAOIi;0({?x@B1_}nCItb zs?};=K!y@U5sgLz*VorG0TNzcUm*y>?>;hy)6>(LR7g-1h2`^kgkcy7WLXv*$Dzb~ zM%Q(wC`u%dBuVgnKT*rr=$vsJhgz-HKl^7?<#HK{qOe3^03ZkgvMehSXfPPSFbo)m z!D6>*RGCbMZEkL2Fc|#$AyE|Jx-NnsphRH+pj0Zcjg1X_uiAGY+qQ9gdrOJgG^$ps zMULY{T1G@D6bi^@vn-Ly43*7h+1Az;H}>^<9iHb=qA&np7zUGNnH&2?qcOE*kv5IW zvMdUMfE)WtrSj+H$Jj6c;QKx`8Vzpji^U>zU1zb|G%8)!xt58d2+Oi?b#+CF!T>Pk&1RFD%_cYY#bObfrm;jSGgK~@W0_2b8++3<$DY)} zG*R5%-e#+-tK8Vv>veRyT}sTRQJJPmmzS5^*jKAntgo-LL}38HbzSm2FA}KV@1tBU z|Jp+WVv=DPY-MGIYnf@9xVgEZL@P7Y$;k=b+}v<2+uz^E^71lE6lUBNV;F`gl}gBD zGAwqRMpY;jxNB-b5O98ej!vgTiNXND&dv^7T3U((N~KaTO%uIdj}o)#udx@9uu`cM zct3bB7~uW=Jy{snb;)s@$Q>&YLDzL?n#K}?X}8BG<{}d%%kt+*hm=%BT-Svt zijmW}SS(^|Yb&{Ed!9$OZAXHHVTgP_{{$=>N2US(a zitnGJ9RvY6j>C;_)QFG8Cg1nz^z<|mgovPNS}Y*H!dzZnl5N}E_{y@3a=9GaS@4gZ z8Rvwv-|s`yv{*rYR3-=ly12ODHft`Iiyh<(OsCVKv$Hd9eADUl#FKR*o5sB_P!t8b zySs^96H4uNn@rQ>uF(EE;wQ3cVPS!LF1NY4nK;O&O)oDmba;6911bzdtgWqKZ*OlV zH@E@-EG{mxgM$Nne0+SdMpf0Bf&7>=yHGV$ ac>V)}c-*Y82Vi9Y0000)^mS!_z$nS9E?DH#=*+;tsPF0G7?N@C?5%@B%?dm$7bdL! z^`|0+*_5PxQk=vJY?9Al;^xx)Uk;R{u_RrDTzZ`NOy^v=iFwpt1pnhc(VvSRlx_b78Plmv?l#9Mcc;M+QhG@iPn1;MYJuaX(LP z_M>$GH9-)hJ`%XOkn+#BC2a(Ve;G=;Axr^4Qcc=(Yr-%+Vd_B;bf;}e6k`myN74{wpxDHomGp7eL2b*df@Q^yNU>ux>73hDE~(_I zt&-H1bwh`MJ0(rdd01n(6_{|&?Vj)Mua&}k>cSst|nkt{yk`2w}=G8Zn9xIho z0OP=2l7@@rQykAo`m9s}0vwU_RI#VT2TTIXC5_HC$7sOQk{ZiRz8Rny*Z_3I&vRZ# z+w2R#W?+w`>%M}-aSiwY*b-H8A3@>>f$xErEXhJ2L6W!(Yyoyjy5=iL9MeEOP$#L! zSCAzB0A2)+N(y}iiKC(5;h`b$KJc2PE9F$6a?uOCB56;lnv!+4r-0`qb(Z>ZmLOBW z4q&sSkt{PR6{H(jFKPcm)-oAn2KWkCE9q=rnNR=*fo;GxNn>7;I0%9VvpAXgd}@If z=Ukn0?iOFCu@<-;cn3J;oO{AokO&V0&Ca<`oOAd2Rz`qP;7wqsq^mxaF|=y>D$uYH z?Vrn^)c_9x`+<7r+yjdtzazkQJ5R&Df<)*6UI3aT%`9}eis4@10C3DXx6-$f0GI%F z0$U@2@@XV`fK9;ev@Fb9~Sm7(k zG|&jVEa{w&Aio0va3b3LJcA4YZvi_bP2}OblGVBaSSRU1p5`vXFF+k|Y%VF7Z;%nY zeQnLd+$C`x_!QV6=~7+}GPyL*OFEUOGRBw20guclKq)3Owlo_h_2%h?Bb+fm+@6;g zPTpu=m!v#PKp~bjAKKCkj16HtuPY zf|EeMq^W8nl01fkz^`_L`~v7oszfyqNxQ&znW;KvsrYYN1HRIUBwfe=&}yW<2F~Zz zt6WSXN&heobl6SeIPhE6wo4@tNlU?A;HVXhHsJDNq@YhbKW*ywBeN~mR-oHg!B~tg zYLtRw%=Z5en`U*CdaY53MACNaJhMI01I)f1?ORB}SSlh(T(J~v1`Yv#W=+9LAreo) zYo=KztYG|PniWDm6*^)?;A~unDxFB5Y0W-!2K~jfrqYN^m{1DgR(Iu$GR{czt zZv0Xc83WFlAv*-LReBq>5X<*VmNExTS$mecSCy5>yLM-80!Dpx%YEZN?_%H1jLyUB P00000NkvXXu0mjfVVr|9 diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/rightarrow_disabled.png b/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/rightarrow_disabled.png deleted file mode 100644 index 38f2eaef9dbb5e1339947e54d524b3f14749f803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)0RTYK%iBnLdD~Hn$O2Gu zzsXPJR^=sfy1m32pDLH*x~@{2ftr!zZEpZ-MXBkx#-4+yJ5^Jm)v(D)HG{1sVqP}p zrPS=8?TFf7b~~t7e6J%~qR!04)WMWj;&RmF6%8j~FA33_v1Ba{e=3Tl<4`EHRVXap zQGl)rX9Xp%cNUfuG3Px%iq0fyS`m`1DomnGy{mZ!4UdT?l__grGstLpp{#+cAQ=_d zrDQx0T7-<(P@`c&L9$q(MP!A8M1rZS@CcAuHG05Y`-v57Xw%XH4eyK^R$<$33oLw( zcOPO#ISm`TueOL46^~|YvJ^Be6%LU zY=9q-ELHz=fs=ZKNHog4x0z04M^dKhIC9~&6p@vq6{aC(lS)xsGg6S=n5{RWMQ^7- z7Acy!KqFIdDv`)&Ek$G`TFVl#Mr#`)JyKf|kw_u@6Wcl>u8&z(bbhOdxISds&G{vX zq+STE?D$k7ndcJP+4)o=v(E0cv-875R=nS$ot;+`+360Lc6R=0AG*P<{-iKx+W-In M07*qoM6N<$f|e++<0GsgdPJ=QN+5?q;grW?!|5&8?>zW{B&W+>( z0I*qXtpqsYp*gju~9dzKZkF_ME!N! zvZ)LY5H*sM*{~L@|6Bvzgh{i0gZVn?>CP9?En9b!Qj_=uDH2v^Km8fs%4$zryoiyd zx<*{;ftB9=PES#I@7iqiPIM%oKo(*~^=jQ12-jJFd4y7@rrJ)Y2gk8H+##WFty1o#z6bCFs4;Pam zG%y8&P!LbFq+^8(v$L<*ONI+4lL1IF4LEyXX*u}=yENq#f04P|^KTC6{{8!LnY^k| zzm7|EGmBrn`Vc^+Jw86p4OS>viw{vitncn33tLGP3Wf7)x4c9`dRp37ZW!bdJn9#( z1{4ON6BQNByStrmg_dkLKR<7fS7yjAu(-WF%nGFsFce$FVz0@_$TTOttjJ|kV%1*K z)YKGHQd0WVY~y9h`Zziwf>nwzG>wcqGMJ=RS=Cw2c1Pk{kF62GmdeV?k-3r%TrWku zV+bxBrDbLN?Bdq^`E0n_nwmKs_}fQCEc7%jEiE&%YAHy^ZYTgq6U0-=&)bEggJ;p`kKw`}>hRJUpv;(L?L&BJyf#abBUJ&C%%2jt<4S!NI|;-RQ_j^^lN| z&KcC{{_3C`Qr<4`svGD-&m87o}NyLRGHtZd_Qe5slpo&78DfJZU;<#{+wW2 z^RJf-SFE@n#Z%_AV&WS?R#vw5dUxDK6dX!l6*#-!a|O|_&JVA)eI3^mtw$Xk+|;!4 zqzI5?4Bb>!RSoo+bG*KM+t_d!lkq$Fz7z&X{x~{v^hdpk3YvKMbN|7YZxdBh_Ed^E z+a{flOMjzmdfzFDDD2?qsHR(K(O8q!R9T&k7Vhfqj=>Jn`m|6V_xASkw(i&0)zzh1 zRynNWNXNSisbn%a0w?4bwg5%po`S;3+3{|d<5<-B$(=8O3TKK4qkn3sTF^w>8aeyU z(2ZH->vPw9IX~Ivy&kxC@AM7^7QG` zd*R{7I=N4ls8m}3FsYh|er`}UoJcUZ3Hn5}ELQO^1w}UY zS^=*YChbE7!(l#OtVLKQLkJx6?Lo_I^-a^Su2&^)e*2~n)uT2xPXe*Awidf=u~=Ix zSy55pTruGtA5B*^;eDBw#-L+mm3xpNc;f~?5{ZNWUlT6;j2s;u4Yaf#g$O%1IbGIn z^jIB9UrVJsJUrZ0G8~(#Rh2MTRZ(g5H5GquZV(X>;Z8W(HgSGo0^Q!;=Jb`DVL`Zq z*woXbswu*%R2~7w{|316gp!0iu;kOz(~qsKtvcmz>oYS)cFAOnUlE&?eo_3dNYK6V zB5C{KLQ*L%#({{;i<9L{KBXZFBO@b!Hu@*M`iU}?0-`?AEKXB1d0D9N`E%%t7cVUR zTI~u#0}&dUnpVO$Zz{>9TunM*Q5dM+m~mbF_|d3WBJ5UqK`1=w_gu4_h{NIL)YR0f zcp4TtMq*-P)rFXE*V=akQv`T*pxghh>zL|tXqzU$soQW=TXQqL9?|Ts$M4f?R{6P( zNE9aRkZNjb{yd54&23syX|4Tw@YC_PV(Z%M+}y=Yb+~w7BNILO+s;nh_zsCxyC(46 zx$=CBf$3+4E}BeK#ALNi6fPIS?^>y)Dl6Y3&J++v1yxZT{Xy-qXRWQ3 zm6c>s)a8$HV*mi})j~!|e>XP-cat{BXRD99~bINDM-x{>d(RP8}T$qP!C4VPk8ZB(&^Wq~+Jw*SA>q?G4~>c?5UN%99MA z4zBhF?XL_F*l3)(!WbbCNKA%~TX7e_o$-#8m`Jl=<={{N2ctkEBI1O>!++AIUXf;L zX-UlS;X|f;_v~z!%{j(L@Cpmj`u^Ih*yT?%Gx>KOpf2|)*8u=LTe;NWaApB|+ZxLv zJRbjW?PH-DjN%(7O*GpuGlw)Kn46g`ZcR7s{sDm`)kw=|Kv^03YKn`C+e%)(6xF_A zs*p@x|FjY6T!lxE%g{q0Z>F0(7K~9SLSAWVN{Vlo7+s1>0=&~`yjkk*-PZ^2vjq3% zqjxvj{O39!y{z!=aSRyW@bdH&@j>HmqHwpe(VD&wJu#jh3S&efO|p@fF^LrKnc3`rMMak$ zKmwVp4uv7&bE+yTMEt$HZo{C^`aYgRr6m3wK9z{QyO>C8qS>$@YHU2ONkv8FDLpND z@{Tp|9DcM!Nqv@|f5w?V>3^7KZO~yKObw}ElkE;g;?wxPXv@JvvQ?t>lqm?AA z>_>O$k*&F|#^umEJNW|JZ#Bh#f|B|`%^ zr~p`@@L|)^sFCZRUa%-CDwPxwk|yv9Y-dW(X=BAeNyc$p6UmZ%tZ|wZFg5 zW(Y;_^70O1nr<16uxis7jt9rbUuuJ~=5%;`Oz8+&+cKkhfWcrN?8Qqu^{NaxOYw)4 zOUUJCq^73!WB;6;pT};7b_zXr-^>w0nN(V|Y26r28&Nx}W(SD2`2nf8m zB`qC{MH9WtyrRb1%e=U}TBxN*M`7o}i;a!a_Ei%Q!qQwyZEbBIn6KM<&vukkCprlP z!rmg8?!RU)^M&ur{mUL73#QekcT3?K#p4@EA3l88%Pk{fvDl7<_{)onC+OC!ET**n z7-jv*|4^o^zW>!P$!BF{UH>&g0jq$H zWt6)(3k!WiPjNB-Ujkaw%P#ch4Iq&VSp2WSEgCH9FljG8Rdw5&o8!;y$Fj4t0ibx) zv$6kRXSqL9*VWaPL0?~gWO8bX1u*9GU1SLRbsh;a`>)`H_?3%*(@8>!KRjtZf!4X*A#YHVygN@qtV_3$lVGW@0+g+-KS`Xqo{J4|Uj2}r4Av9}pS=(3kSRCu z1CPLTzp{1*!Oos5m-F>@8ZFVx2CRku8d^IbPE1VrH@Fe-c+G&h&coOJnS4$pcWL3W zPcnv@_V)H%0AT6p_|Zd(<4+o3C0KE&P`S-ioGk!cEru3&mXib7abJizV7wUB<@4j_ z;(A37P)k=FtU-=0csoEJG+193Nz-6>{DrQ;+TQa1{l{_v^9ITJGdpu#;q>(M=ZDiD z;Ls!}<;|NnIUiPoW#WIuWLb+#(gDw})fdH`-Y!rG`XZ)QR8(mqat{nIPtSGc_ah^h zgSk#|Ka~MMx3&P`Qf_?r;x*^!=xCClE>`8XxcIqp%*EkUoZA_CeDobAHzy}&F)1l& b=8~>Cz|QX}zC#fF^#M@YMq0HR&Po3VZbE;1 literal 3550 zcmV<44I%Q0P)X+uL$Nkc;* zP;zf(X>4Tx07wm;mUmQB*%pV-y*Itk5+Wca^cs2zAksTX6$DXM^`x7XQc?|s+0 z08spb1j2M!0f022SQPH-!CVp(%f$Br7!UytSOLJ{W@ZFO_(THK{JlMynW#v{v-a*T zfMmPdEWc1DbJqWVks>!kBnAKqMb$PuekK>?0+ds;#ThdH1j_W4DKdsJG8Ul;qO2n0 z#IJ1jr{*iW$(WZWsE0n`c;fQ!l&-AnmjxZO1uWyz`0VP>&nP`#itsL#`S=Q!g`M=rU9)45( zJ;-|dRq-b5&z?byo>|{)?5r=n76A4nTALlSzLiw~v~31J<>9PP?;rs31pu_(obw)r zY+jPY;tVGXi|p)da{-@gE-UCa`=5eu%D;v=_nFJ?`&K)q7e9d`Nfk3?MdhZarb|T3 z%nS~f&t(1g5dY)AIcd$w!z`Siz!&j_=v7hZlnI21XuE|xfmo0(WD10T)!}~_HYW!e zew}L+XmwuzeT6wtxJd`dZ#@7*BLgIEKY9Xv>st^p3dp{^Xswa2bB{85{^$B13tWnB z;Y>jyQ|9&zk7RNsqAVGs--K+z0uqo1bf5|}fi5rtEMN^BfHQCd-XH*kfJhJnmIE$G z0%<@5vOzxB0181d*a3EfYH$G5fqKvcPJ%XY23!PJzzuK<41h;K3WmW;Fah3yX$XSw z5EY_9s*o0>51B&N5F1(uc|$=^I1~fLLy3?Ol0f;;Ca4%HgQ}rJP(Ab`bQ-z{U4#0d z2hboi2K@njgb|nm(_szR0JebHusa+GN5aeCM0gdP2N%HG;Yzp`J`T6S7vUT504#-H z!jlL<$Or?`Mpy_N@kBz9SR?@vA#0H$qyni$nvf2p8@Y{0k#Xb$28W?xm>3qu8RLgp zjNxKdVb)?wFx8l2m{v>|<~C*!GlBVnrDD~wrdTJeKXwT=5u1%I#8zOBU|X=4u>;s) z>^mF|$G{ol9B_WP7+f-LHLe7=57&&lfa}8z;U@8Tyei%l?}87(bMRt(A-)QK9Dg3) zj~~XrCy)tR1Z#p1A(kK{Y$Q|=8VKhI{e%(1G*N-5Pjn)N5P8I0VkxnX*g?EW941ba z6iJ387g8iCnY4jaNopcpCOsy-A(P2EWJhusSwLP-t|XrzUnLKcKTwn?CKOLf97RIe zPB}`sKzTrUL#0v;sBY9)s+hW+T2H-1eM)^VN0T#`^Oxhvt&^*fYnAJldnHel*Ozyf zUoM{~Um<@={-*r60#U(0!Bc^wuvVc);k3d%g-J!4qLpHZVwz%!VuRu}#Ze`^l7W)9 z5>Kf>>9Eozr6C$Z)1`URxU@~QI@)F0FdauXr2Es8>BaOP=)Lp_WhG@>R;lZ?BJkMlIuMhw8ApiF&yDYW2hFJ?fJhni{?u z85&g@mo&yT8JcdI$(rSw=QPK(Xj%)k1X|@<=e1rim6`6$RAwc!i#egKuI;BS(LSWz zt39n_sIypSqfWEV6J3%nTQ@-4i zi$R;gsG*9XzhRzXqv2yCs*$VFDx+GXJH|L;wsDH_KI2;^u!)^Xl1YupO;gy^-c(?^ z&$Q1BYvyPsG^;hc$D**@Sy`+`)}T4VJji^bd7Jqw3q6Zii=7tT7GEswEK@D(EFW1Z zSp`^awCb?>!`j4}Yh7b~$A)U-W3$et-R8BesV(1jzwLcHnq9En7Q0Tn&-M=XBKs!$ zF$X<|c!#|X_tWYh)GZit z(Q)Cp9CDE^WG;+fcyOWARoj*0TI>4EP1lX*cEoMO-Pk?Z{kZ!p4@(b`M~lalr<3Oz z&kJ6Nm#vN_+kA5{dW4@^Vjg_`q%qU1ULk& z3Fr!>1V#i_2R;ij2@(Z$1jE4r!MlPVFVbHmT+|iPIq0wy5aS{>yK?9ZAjVh%SOwMWgFjair&;wpi!{CU}&@N=Eg#~ zLQ&zpEzVmGY{hI9Z0+4-0xS$$Xe-OToc?Y*V;rTcf_ zb_jRe-RZjXSeas3UfIyD;9afd%<`i0x4T#DzE)vdabOQ=k7SRuGN`h>O0Q~1)u-yD z>VX=Mn&!Rgd$;YK+Q-}1zu#?t(*cbG#Ronf6db&N$oEidtwC+YVcg-Y!_VuY>bk#Y ze_ww@?MU&F&qswvrN_dLb=5o6*Egs)ls3YRlE$&)amR1{;Ppd$6RYV^Go!iq1UMl% z@#4q$AMc(FJlT1QeX8jv{h#)>&{~RGq1N2iiMFIRX?sk2-|2wUogK~{EkB$8eDsX= znVPf8XG_nK&J~=SIiGia@9y}|z3FhX{g&gcj=lwb=lWgyFW&aLedUh- zof`v-2Kw$UzI*>(+&$@i-u=-BsSjR1%z8NeX#HdC`Hh-Z(6xI-`hmHDqv!v)W&&nrf>M(RhcN6(D;jNN*%^u_SYjF;2ng}*8Ow)d6M ztDk;%`@Lsk$;9w$(d(H%O5UixIr`T2ZRcd@7J6G0ruvztUveBeQfXOSX`2SGfDh>8}W9z68s)ruk>y!bcx2MD56DpadN zU$$y(eM9g?QPG1Q)M$&Zs%Q&pb+hZ|7ZOO~COf;+G>Oc>mzkZN`OWY1o5xNPi!wu8POwU(sM9k!YcAKC&7T42V|bF3}w@*Wbn7W6Hzqu~Ely?os}wV_OMC2FSsTP+XuhV41!S_5GG*bpZ8<@)sm^ z%1Id{XK^k2<}T%Gz~r6&$!xvjp_e6iid+tiz!VlF#=UGk16;-O(m?C8&;Y13GbJbB zNG6jRCI94SHZ+JB0cHa*Vsw$8(JI%;is%ID7WrG0-CL1B=qyPtn)k_T0VCsQ&=k4} z)Zxh23pW2Urd{Vq7H6WS?{t(?v>%8El8KZp{&R-_~t=PAynGy&PTNqG|+u69Li}Uiq>te~AAeX3X zUnB#UR&FK+G$F)M*`Q~LdWt-aLR~>-U`ED!vahD^ayhGaoMl zs&MK+B>+2af8c!|+KZ{W{71zq10hRh5_QXEF(3}Le+|SzoOMuk`SAP{9m2C_B>z0t zf5PD-08FC+%KPznMg4nS?4f)|nmHz)aYQbrto>msHgBFx1WW`>1WW`>1WW`>1foRX YFT(FNeBNY9)&Kwi07*qoM6N<$f_z%b#sB~S diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.css b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.css index 2a333cf891c..067c30871cd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.css +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.css @@ -18,8 +18,12 @@ text-align: center; } -.combinedWindPanelCanvas{ +.combinedWindPanelCanvas { width: 55px; margin-left: 6px; cursor: pointer; +} + +.trueNorthIndicator { + opacity: 1.0; } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java index 40d5bcbc314..d54f544d80d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java @@ -28,6 +28,7 @@ public class CombinedWindPanel extends FlowPanel { public CombinedWindPanel(RaceMapImageManager theRaceMapResources, CombinedWindPanelStyle combinedWindPanelStyle, StringMessages stringMessages, CoordinateSystem coordinateSystem) { + combinedWindPanelStyle.ensureInjected(); this.stringMessages = stringMessages; this.coordinateSystem = coordinateSystem; this.raceMapResources = theRaceMapResources; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanelStyle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanelStyle.java index a1d84ffb09d..75a3abf8c16 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanelStyle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanelStyle.java @@ -8,4 +8,5 @@ public interface CombinedWindPanelStyle extends CssResource { public String combinedWindPanel(); public String combinedWindPanelTextLabel(); public String combinedWindPanelCanvas(); + public String trueNorthIndicator(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java index 932bb243576..3d55b4f3b07 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java @@ -406,7 +406,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe public RaceMap(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, ErrorReporter errorReporter, Timer timer, CompetitorSelectionProvider competitorSelection, StringMessages stringMessages, boolean showMapControls, boolean showViewStreamlets, boolean showViewStreamletColors, boolean showViewSimulation, - RegattaAndRaceIdentifier raceIdentifier, CombinedWindPanelStyle combinedWindPanelStyle, boolean showHeaderPanel) { + RegattaAndRaceIdentifier raceIdentifier, RaceMapResources raceMapResources, boolean showHeaderPanel) { this.setSize("100%", "100%"); this.showMapControls = showMapControls; this.stringMessages = stringMessages; @@ -416,7 +416,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe this.errorReporter = errorReporter; this.timer = timer; timer.addTimeListener(this); - raceMapImageManager = new RaceMapImageManager(); + raceMapImageManager = new RaceMapImageManager(raceMapResources); markDTOs = new HashMap(); courseSidelines = new HashMap<>(); courseMiddleLines = new HashMap<>(); @@ -443,9 +443,9 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe panelForLeftHeaderLabels = new AbsolutePanel(); panelForRightHeaderLabels = new AbsolutePanel(); initializeData(showMapControls, showHeaderPanel); - combinedWindPanel = new CombinedWindPanel(raceMapImageManager, combinedWindPanelStyle, stringMessages, coordinateSystem); + combinedWindPanel = new CombinedWindPanel(raceMapImageManager, raceMapResources.combinedWindPanelStyle(), stringMessages, coordinateSystem); combinedWindPanel.setVisible(false); - trueNorthIndicatorPanel = new TrueNorthIndicatorPanel(this, raceMapImageManager, combinedWindPanelStyle, stringMessages, coordinateSystem); + trueNorthIndicatorPanel = new TrueNorthIndicatorPanel(this, raceMapImageManager, raceMapResources.combinedWindPanelStyle(), stringMessages, coordinateSystem); trueNorthIndicatorPanel.setVisible(true); orientationChangeInProgress = false; mapFirstZoomDone = false; @@ -629,8 +629,9 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe if (showHeaderPanel) { createHeaderPanel(map); } + if (showMapControls) { createSettingsButton(map); - + } // Data has been initialized RaceMap.this.isMapInitialized = true; RaceMap.this.redraw(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java index 84cb09b3ca6..db621626ba8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java @@ -4,7 +4,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import com.google.gwt.core.client.GWT; import com.google.gwt.maps.client.MapWidget; import com.google.gwt.maps.client.base.Point; import com.google.gwt.maps.client.overlays.Marker; @@ -33,9 +32,7 @@ public class RaceMapImageManager { protected Map, Marker> maneuverIconsForTypeAndTargetTack; - private static RaceMapResources resources = GWT.create(RaceMapResources.class); - - public RaceMapImageManager() { + public RaceMapImageManager(RaceMapResources resources) { maneuverIconsForTypeAndTargetTack = new HashMap, Marker>(); trueNorthIndicatorIconTransformer = new ImageTransformer(resources.trueNorthIndicatorIcon()); combinedWindIconTransformer = new ImageTransformer(resources.combinedWindIcon()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java index 28da66d7f61..d7b5356b357 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java @@ -36,6 +36,7 @@ public class TrueNorthIndicatorPanel extends FlowPanel { this.raceMapResources = theRaceMapResources; this.combinedWindPanelStyle = combinedWindPanelStyle; addStyleName(combinedWindPanelStyle.combinedWindPanel()); + addStyleName(combinedWindPanelStyle.trueNorthIndicator()); transformer = raceMapResources.getTrueNorthIndicatorIconTransformer(); canvas = transformer.getCanvas(); canvas.addStyleName(this.combinedWindPanelStyle.combinedWindPanelCanvas()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/EmbeddedMapAndWindChartEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/EmbeddedMapAndWindChartEntryPoint.java index 127cb23ee23..b912cd31338 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/EmbeddedMapAndWindChartEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/EmbeddedMapAndWindChartEntryPoint.java @@ -165,7 +165,7 @@ public class EmbeddedMapAndWindChartEntryPoint extends AbstractSailingEntryPoint } final RaceMap raceMap = new RaceMap(sailingService, asyncActionsExecutor, /* errorReporter */ EmbeddedMapAndWindChartEntryPoint.this, timer, competitorSelection, getStringMessages(), showMapControls, showViewStreamlets, showViewStreamletColors, - showViewSimulation, selectedRaceIdentifier, raceMapResources.combinedWindPanelStyle(), /* showHeaderPanel */ false) { + showViewSimulation, selectedRaceIdentifier, raceMapResources, /* showHeaderPanel */ false) { @Override protected void showAdditionalControls(MapWidget map) { backToLivePlayButton.removeFromParent(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 32f83a70e7a..180ce52abc2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -115,8 +115,8 @@ public class RaceBoardPanel extends SimplePanel implements LeaderboardUpdateList private final FlowPanel raceInformationHeader; private final FlowPanel regattaAndRaceTimeInformationHeader; private boolean currentRaceHasBeenSelectedOnce; - - private static final RaceMapResources raceMapResources = GWT.create(RaceMapResources.class); + + private final RaceMapResources raceMapResource = GWT.create(RaceMapResources.class); /** * @param eventId @@ -158,11 +158,9 @@ public class RaceBoardPanel extends SimplePanel implements LeaderboardUpdateList componentViewers = new ArrayList(); final CompetitorColorProvider colorProvider = new CompetitorColorProviderImpl(selectedRaceIdentifier, competitorsAndTheirBoats); competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true, colorProvider); - - raceMapResources.combinedWindPanelStyle().ensureInjected(); raceMap = new RaceMap(sailingService, asyncActionsExecutor, errorReporter, timer, competitorSelectionProvider, stringMessages, showMapControls, getConfiguration().isShowViewStreamlets(), getConfiguration().isShowViewStreamletColors(), getConfiguration().isShowViewSimulation(), - selectedRaceIdentifier, raceMapResources.combinedWindPanelStyle(), /* showHeaderPanel */ true) { + selectedRaceIdentifier, raceMapResource, /* showHeaderPanel */ true) { private static final String INDENT_SMALL_CONTROL_STYLE = "indentsmall"; private static final String INDENT_BIG_CONTROL_STYLE = "indentbig"; @Override From 1e40022f81fed8ed51ae60d23031ffab29c34fab Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 28 Jan 2016 15:36:28 +0100 Subject: [PATCH 04/43] added no data message to start analyses widget --- .../dashboards/gwt/client/theme/Colors.java | 2 +- .../dashboards/gwt/client/theme/Sizes.java | 4 ++- .../dashboards/gwt/client/theme/theme.gss | 4 ++- .../startanalysis/StartAnalysisWidget.gss | 31 +++++++++++++++++++ .../startanalysis/StartAnalysisWidget.java | 28 ++++++++++++++++- .../startanalysis/StartAnalysisWidget.ui.xml | 7 ++++- .../StartAnalysisWidgetResources.java | 4 +++ .../sailing/gwt/ui/client/StringMessages.java | 4 ++- .../gwt/ui/client/StringMessages.properties | 3 ++ .../ui/client/StringMessages_de.properties | 5 ++- .../ui/client/StringMessages_ru.properties | 3 ++ .../ui/client/StringMessages_zh.properties | 3 ++ 12 files changed, 91 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java index 41dbe204da8..4f781c60960 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java @@ -9,7 +9,7 @@ public class Colors { public static final String LIGHT_GREY = "#F3F2F4"; public static final String DARK_GREY = "#E0E0E0"; public static final String LIGHT_TEXT_COLOR = "#848484"; - public static final String DARK_TEXT_COLOR = "#FFFFFF"; + public static final String DARK_TEXT_COLOR = "#000000"; public static final String DARK_BLUE = "#FFFFFF"; public static final String LIGHT_BLUE = "#FFFFFF"; public static final String YELLOW = "#FFFFFF"; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java index 4ba46c50bfc..e9d98961573 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java @@ -8,7 +8,7 @@ public class Sizes { public static final String DASHBOARD_FONT_SIZE_VERY_SMALL = "10px"; public static final String DASHBOARD_FONT_SIZE_SMALL = "13px"; public static final String DASHBOARD_FONT_SIZE_MEDIUM = "14px"; - public static final String DASHBOARD_FONT_SIZE_LARGE = "16px"; + public static final String DASHBOARD_FONT_SIZE_LARGE = "18px"; public static final String DASHBOARD_FONT_SIZE_VERY_LARGE = "25px"; public static final String DASHBOARD_SPACE_VERY_SMALL = "10px"; @@ -16,4 +16,6 @@ public class Sizes { public static final String DASHBOARD_SPACE_MEDIUM = "40px"; public static final String DASHBOARD_SPACE_LARGE = "50px"; public static final String DASHBOARD_SPACE_VERY_LARGE = "70px"; + + public static final String DASHBOARD_LINE_HEIGHT = "20px"; } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss index 9ec6f724a40..543289a5a7e 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss @@ -22,4 +22,6 @@ @def DASHBOARD_SPACE_SMALL eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_SMALL"); @def DASHBOARD_SPACE_MEDIUM eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_MEDIUM"); @def DASHBOARD_SPACE_LARGE eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_LARGE"); -@def DASHBOARD_SPACE_VERY_LARGE eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_VERY_LARGE"); \ No newline at end of file +@def DASHBOARD_SPACE_VERY_LARGE eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_VERY_LARGE"); + +@def DASHBOARD_LINE_HEIGHT eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_LINE_HEIGHT"); \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss index 77e4ab8a8cf..1952c25e644 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss @@ -24,6 +24,33 @@ background-color: WHITE; } +.no_data_message_container { + position: absolute; + top: DASHBOARD_SPACE_MEDIUM; + bottom: 0px; + width: 100%; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; + font-family: DASHBOARD_FONT_FAMILY; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + line-height: DASHBOARD_LINE_HEIGHT; +} + +.no_data_message_header { + color: DARK_TEXT_COLOR; + font-weight: bold; + text-align: center; +} + +.no_data_message { + color: LIGHT_TEXT_COLOR; + max-width: 230px; + margin: auto; + font-weight: normal; +} + .current_start_panel { height: DASHBOARD_SPACE_MEDIUM; top: DASHBOARD_SPACE_MEDIUM; @@ -44,6 +71,10 @@ top: 50%; background-color: WHITE; z-index: 1; + opacity: 0.0; +} + +.controll_header_button_visible { opacity: 0.9; } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java index 4037fbc8293..940468b9ede 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java @@ -8,6 +8,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; @@ -39,6 +40,7 @@ import com.sap.sailing.dashboards.gwt.shared.dto.LeaderboardCompetitorsDTO; import com.sap.sailing.dashboards.gwt.shared.dto.StartAnalysesDTO; import com.sap.sailing.dashboards.gwt.shared.dto.StartAnalysisDTO; import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; /** @@ -91,6 +93,12 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL * */ @UiField HTMLPanel startanalysis_card_container; + + @UiField + DivElement noDataMessageHeader; + + @UiField + DivElement noDataMessage; /** * The CSS "left" property from the {@link #startanalysis_card_container}. @@ -134,7 +142,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL pageChangeListener = new ArrayList(); starts = new ArrayList(); initWidget(uiBinder.createAndBindUi(this)); - header.getElement().setInnerText("Start Analysis"); + header.getElement().setInnerText(StringMessages.INSTANCE.dashboardStartAnalysesHeader()); initCompetitorSelectionPopupAndAddCompetitorSelectionListener(); initLeftRightButtons(); initAndAddBottomNotification(); @@ -173,6 +181,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL public void onSuccess(StartAnalysesDTO result) { logger.log(Level.INFO, "Received startanalysis list"); if (result != null && !result.getStartAnalyses().isEmpty()) { + hideNoDataMessage(); if (displayedStartAnalysisCompetitorDifferentToRequestedOne()) { removeAllStartAnalysisCards(); } @@ -181,9 +190,11 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } logger.log(Level.INFO, "Updating UI with startanalysis list"); addNewStartAnalysisCards(result.getStartAnalyses()); + showControllHeaderButtons(); settingsButtonWithSelectionIndicationLabel.setSelectionIndicationTextOnLabel(result.getStartAnalyses().get(0).competitor.getName()); } else { logger.log(Level.INFO, "Received startanalysis list is null or empty"); + showNoDataMessageWithHeaderAndMessage(null, null); } } }); @@ -310,6 +321,11 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } } } + + private void showControllHeaderButtons() { + leftButton.getElement().addClassName(StartAnalysisWidgetResources.INSTANCE.gss().controll_header_button_visible()); + rightButton.getElement().addClassName(StartAnalysisWidgetResources.INSTANCE.gss().controll_header_button_visible()); + } private void scrollToLast() { if (numberOfStartAnalysisCards > 1) { @@ -397,6 +413,16 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } } + private void showNoDataMessageWithHeaderAndMessage(String header, String message) { + noDataMessageHeader.setInnerHTML(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader()); + noDataMessage.setInnerHTML(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); + } + + private void hideNoDataMessage() { + noDataMessageHeader.setInnerHTML(""); + noDataMessage.setInnerHTML(""); + } + @Override public void timeChanged(Date newTime, Date oldTime) { String selectedCompetitorId = Cookies.getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml index 1a8e8709578..a3513c52c4a 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml @@ -8,8 +8,13 @@ +
+ +
+
+
+
- diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidgetResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidgetResources.java index 6bd752440b1..a9470aa1be4 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidgetResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidgetResources.java @@ -27,8 +27,12 @@ public interface StartAnalysisWidgetResources extends ClientBundle { public interface StartAnalysisGSS extends CssResource { String startanalysis(); String panel_header(); + String no_data_message_container(); + String no_data_message_header(); + String no_data_message(); String current_start_panel(); String controll_header_button(); + String controll_header_button_visible(); String controll_header_button_image(); String controll_header_button_left(); String controll_header_button_right(); 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 100aa7e5a99..f62ab6105a6 100644 --- 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 @@ -1270,8 +1270,10 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String dashboardAverageWindMinutes(int minutes); String dashboardWindChartHint(); + String dashboardStartAnalysesHeader(); String dashboardNewStartAnalysisAvailable(); - + String dashboardNoStartAnalysesAvailableHeader(); + String dashboardNoStartAnalysesAvailableMessage(); String dashboardStartlineAdvantagesByWind(); String dashboardStartlineAdvantageByGeometry(); String dashboardRankAtFirstMark(); 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 957de470771..5e30fbad445 100644 --- 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 @@ -1232,7 +1232,10 @@ dashboardLiveWind=live dashboardAverageWind=average dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Tap on chart to change interval +dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available +dashboardNoStartAnalysesAvailableHeader=No Start Analyses available yet. +dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. dashboardStartlineAdvantagesByWind=Startline advantage by wind dashboardStartlineAdvantageByGeometry=Startline advantage by geometry dashboardRankAtFirstMark=Rank at first mark 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 86208c32137..b2ca7810c73 100644 --- 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 @@ -1223,7 +1223,10 @@ dashboardLiveWind=live dashboardAverageWind=average dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Auf Chart drücken um Interval zu ändern -dashboardNewStartAnalysisAvailable=Neue Startanalyse verfügbar +dashboardStartAnalysesHeader=Start Analysen +dashboardNewStartAnalysisAvailable=Neue Start Analyse verfügbar. +dashboardNoStartAnalysesAvailableHeader=Noch keine Start Analysen verfügbar. +dashboardNoStartAnalysesAvailableMessage=Es wird eine Start Analyse für jeden Renn Start erstellt. Bitte warten bis die Rennen starten. dashboardStartlineAdvantagesByWind=Startlininien Vorteil nach Wind dashboardStartlineAdvantageByGeometry=Startlininien Vorteil nach Geometrie dashboardRankAtFirstMark=Position an erster Bahnmarke 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 a29a04b8fe7..1e57e64dc87 100644 --- 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 @@ -1166,7 +1166,10 @@ dashboardLiveWind=live dashboardAverageWind=average dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Tap on chart to change interval +dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available +dashboardNoStartAnalysesAvailableHeader=No Start Analyses available yet. +dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. dashboardStartlineAdvantagesByWind=Startline advantage by wind dashboardStartlineAdvantageByGeometry=Startline advantage by geometry dashboardRankAtFirstMark=Rank at first mark diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index dbd13fad0d2..cc45bd7e235 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -350,7 +350,10 @@ raceIsRunning=正在进行 starboardSide=右舷 polarSheetMinimumWindConfidence=Minimum wind confidence value group=分组 +dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available +dashboardNoStartAnalysesAvailableHeader=No Start Analyses available yet. +dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. actionAddWindData=Add wind data competitorSearchFilter=Competitor Search Filter dataCount=Data Size From 15982503edc6206e3029e593f9e2d7ac02ee2b42 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Fri, 29 Jan 2016 11:51:13 +0100 Subject: [PATCH 05/43] added degreesunit to ui bundle StringMessages --- .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../java/com/sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_zh.properties | 1 + 5 files changed, 5 insertions(+) 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 f62ab6105a6..e70709da649 100644 --- 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 @@ -176,6 +176,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String secondsUnit(); String secondsPerNauticalMileUnit(); String metersUnit(); + String degreesUnit(); @Override String close(); String compareCompetitors(); 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 5e30fbad445..76aad56ba6f 100644 --- 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 @@ -178,6 +178,7 @@ in=in secondsUnit=s secondsPerNauticalMileUnit=s/NM metersUnit=m +degreesUnit=° close=Close compareCompetitors=Compare competitors description=Description 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 b2ca7810c73..8b325ec77c0 100644 --- 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 @@ -180,6 +180,7 @@ in=in secondsUnit=s secondsPerNauticalMileUnit=s/sm metersUnit=m +degreesUnit=° close=Schließen compareCompetitors=Teilnehmer vergleichen description=Beschreibung 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 1e57e64dc87..d307334d96b 100644 --- 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 @@ -176,6 +176,7 @@ in=в secondsUnit=с secondsPerNauticalMileUnit=с/NM metersUnit=м +degreesUnit=° close=Закрыть compareCompetitors=Сравнить участников description=Описание diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index cc45bd7e235..73545c4df53 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -863,6 +863,7 @@ selectAFilterCriteria=Select a filter criteria errorWhileTryingToSetWindSourceForRace=Error while trying to set "wind starts upwind" flag pleaseEnterASailNumber=Please enter a sail number metersUnit=m +degreesUnit=° isPublic=Is public speedOverGroundWhenPassingStartTooltip=参赛队越过起航线时的实际速度 successfullyUpdatedSailingServers=Successfully updated SailingServer instances From bfc45b50a5dea8a4ffc997bef434fa0b4d2802c3 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Tue, 2 Feb 2016 15:57:48 +0100 Subject: [PATCH 06/43] adoption of sizes, fonts, and colors to all widgets to new dashboard design --- .../client/dashboardpanel/DashboardPanel.gss | 29 +++--- .../client/dashboardpanel/DashboardPanel.java | 10 +- .../dashboardpanel/DashboardPanel.ui.xml | 2 +- .../dashboards/gwt/client/theme/Sizes.java | 2 +- .../dashboards/gwt/client/theme/theme.gss | 2 + .../DashboardWidgetHeaderAndNoDataMessage.gss | 44 +++++++++ ...DashboardWidgetHeaderAndNoDataMessage.java | 88 +++++++++++++++++ ...shboardWidgetHeaderAndNoDataMessage.ui.xml | 17 ++++ ...WidgetHeaderAndNoDataMessageResources.java | 24 +++++ .../startanalysis/StartAnalysisWidget.gss | 41 -------- .../startanalysis/StartAnalysisWidget.java | 34 +++---- .../startanalysis/StartAnalysisWidget.ui.xml | 17 +--- .../StartAnalysisWidgetResources.java | 4 - .../startanalysis/card/StartAnalysisCard.java | 4 +- .../StartLineAdvantageByGeometryWidget.gss | 32 ++---- .../StartLineAdvantageByGeometryWidget.java | 99 ++++++++++++++----- ...neAdvantageByGeometryWidgetRessources.java | 14 +-- .../StartlineAdvantageByGeometryWidget.ui.xml | 17 ++++ .../util/LiveAverageComponent.gss | 55 ++++------- .../util/LiveAverageComponent.java | 7 +- .../util/LiveAverageComponent.ui.xml | 37 +++---- .../util/LiveAverageComponentResources.java | 2 - .../wind/StartlineAdvantagesByWindWidget.gss | 17 ++-- .../wind/StartlineAdvantagesByWindWidget.java | 27 ++++- .../StartlineAdvantagesByWindWidget.ui.xml | 19 ++-- .../client/widgets/windbot/WindBotWidget.gss | 46 ++++----- .../client/widgets/windbot/WindBotWidget.java | 81 ++++++++------- .../widgets/windbot/WindBotWidget.ui.xml | 12 +-- .../windbot/WindBotWidgetResources.java | 3 +- .../windbot/charts/VerticalWindChart.java | 16 +-- .../compass/LocationPointerCompass.gss | 33 ++++--- .../compass/LocationPointerCompass.java | 86 ++++++++-------- .../compass/LocationPointerCompass.ui.xml | 12 +++ .../LocationPointerCompassRessources.java | 5 +- .../sailing/gwt/ui/client/StringMessages.java | 8 +- .../gwt/ui/client/StringMessages.properties | 8 +- .../ui/client/StringMessages_de.properties | 8 +- .../ui/client/StringMessages_ru.properties | 8 +- .../ui/client/StringMessages_zh.properties | 8 +- 39 files changed, 585 insertions(+), 393 deletions(-) create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.gss create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.ui.xml create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessageResources.java create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.ui.xml create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.ui.xml diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss index 14b3eef2b2f..84f44d767e1 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss @@ -47,44 +47,41 @@ .collumnthree { left: 66.8%; - right: 0pt; + right: 0px; } .left { - left: 0pt; + left: 0px; right: 50%; } .right { left: 50%; - right: 0pt; + right: 0px; } .startline_advantage_by_wind_container { position: absolute; - background-color: white; - top: 27%; - right: 0pt; - left: 0pt; + top: 163px; + right: 0px; + left: 0px; bottom: 0%; } .startline_advantage_by_geometry_container { position: absolute; - background-color: white; - top: 0%; - right: 0pt; - left: 0pt; - bottom: 73%; - margin-bottom: 10pt; + top: 0px; + right: 0px; + left: 0px; + height: 150px } .windcharthint { position: absolute; - bottom: 0pt; + bottom: 0px; height: 15pt; line-height: 15pt; - margin-top: 0pt; + margin-top: 0px; vertical-align: middle; font-size: 12pt; font-family: DASHBOARD_FONT_FAMILY; @@ -105,7 +102,7 @@ .windloadinghinttext { position: absolute; - bottom: 0pt; + bottom: 0px; height: 15pt; line-height: 15pt; margin-top: 0pt; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java index bde0b1d2608..b5683d75e0b 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java @@ -26,7 +26,7 @@ import com.sap.sailing.dashboards.gwt.client.eventlogo.EventLogo; import com.sap.sailing.dashboards.gwt.client.notifications.orientation.WrongDeviceOrientationNotification; import com.sap.sailing.dashboards.gwt.client.widgets.PollsLiveDataEvery5Seconds; import com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.StartAnalysisWidget; -import com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.course.StartLineAdvantageByGeometryWidget; +import com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.course.StartlineAdvantageByGeometryWidget; import com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.wind.StartlineAdvantagesByWindWidget; import com.sap.sailing.dashboards.gwt.client.widgets.windbot.WindBotWidget; import com.sap.sailing.dashboards.gwt.shared.DashboardURLParameters; @@ -81,7 +81,7 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL public StartAnalysisWidget startanalysisComponent; @UiField(provided = true) - public StartLineAdvantageByGeometryWidget startlineAdvantageByGeometryComponent; + public StartlineAdvantageByGeometryWidget startlineAdvantageByGeometryWidget; private List windBotComponents; private StringMessages stringConstants; @@ -94,7 +94,7 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL windBotComponents = new ArrayList(); startanalysisComponent = new StartAnalysisWidget(this.dashboardClientFactory); startlineAdvantagesByWindComponent = new StartlineAdvantagesByWindWidget(this.dashboardClientFactory); - startlineAdvantageByGeometryComponent = new StartLineAdvantageByGeometryWidget(this.dashboardClientFactory); + startlineAdvantageByGeometryWidget = new StartlineAdvantageByGeometryWidget(this.dashboardClientFactory); stringConstants = StringMessages.INSTANCE; initWidget(uiBinder.createAndBindUi(this)); initLogos(); @@ -136,12 +136,12 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL windBotComponents.clear(); for (String windBotID : windBotIDs) { if (windBotAddedCounterTOConsiderForPanels == 0) { - WindBotWidget leftwindBotComponent = new WindBotWidget(windBotID); + WindBotWidget leftwindBotComponent = new WindBotWidget(windBotID, dashboardClientFactory); leftwindbotcontainer.add(leftwindBotComponent); windBotComponents.add(leftwindBotComponent); windloadinghintleft.getStyle().setOpacity(0.0); } else if (windBotAddedCounterTOConsiderForPanels == 1) { - WindBotWidget rightwindBotComponent = new WindBotWidget(windBotID); + WindBotWidget rightwindBotComponent = new WindBotWidget(windBotID, dashboardClientFactory); rightwindbotcontainer.add(rightwindBotComponent); windBotComponents.add(rightwindBotComponent); windloadinghintright.getStyle().setOpacity(0.0); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml index 9016ead477b..49c3d51e003 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml @@ -36,7 +36,7 @@ - + { + } + + @UiField + HTMLPanel header; + + @UiField + DivElement noDataMessageHeader; + + @UiField + DivElement noDataMessage; + + public DashboardWidgetHeaderAndNoDataMessage() { + DashboardWidgetHeaderAndNoDataMessageResources.INSTANCE.gss().ensureInjected(); + initWidget(uiBinder.createAndBindUi(this)); + } + + public void setHeaderText(String headerText) { + this.header.getElement().setInnerHTML(headerText); + } + + public void showNoDataMessageWithHeaderAndMessage(String header, String message) { + noDataMessageHeader.setInnerText(header); + noDataMessage.setInnerText(message); + noDataMessage.getStyle().setWidth(noDataMessageHeader.getClientWidth()+EXTRA_WIDTH_MESSAGE, Unit.PX); + + } + + public void hideNoDataMessage() { + noDataMessageHeader.setInnerHTML(""); + noDataMessage.setInnerHTML(""); + } + + public void adaptSizeOfNoDataMessageDiv() { +// Scheduler.get().scheduleDeferred(new Command() { +// public void execute () { + double widthOfNoDataMessageHeader = Double.parseDouble(noDataMessageHeader.getStyle().getWidth()); + Window.alert("asdfasdfasfd"); + Window.alert("widthOfNoDataMessageHeader "+widthOfNoDataMessageHeader); + noDataMessage.getStyle().setWidth(widthOfNoDataMessageHeader, Unit.PX); +// } +// }); + } + + @Override + public void add(Widget w) { + throw new UnsupportedOperationException("The method add(Widget w) is not supported."); + } + + @Override + public void clear() { + throw new UnsupportedOperationException("The method clear() is not supported."); + } + + @Override + public Iterator iterator() { + return null; + } + + @Override + public boolean remove(Widget w) { + return false; + } +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.ui.xml new file mode 100644 index 00000000000..293102124f9 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.ui.xml @@ -0,0 +1,17 @@ + + + + + + + + +
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessageResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessageResources.java new file mode 100644 index 00000000000..b5032dbfecc --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessageResources.java @@ -0,0 +1,24 @@ +package com.sap.sailing.dashboards.gwt.client.widgets.header; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +/** + * @author Alexander Ries (D062114) + * + */ +public interface DashboardWidgetHeaderAndNoDataMessageResources extends ClientBundle { + + public static final DashboardWidgetHeaderAndNoDataMessageResources INSTANCE = GWT.create(DashboardWidgetHeaderAndNoDataMessageResources.class); + + @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "DashboardWidgetHeaderAndNoDataMessage.gss"}) + DashboardWidgetHeaderAndNoDataMessageGSS gss(); + + public interface DashboardWidgetHeaderAndNoDataMessageGSS extends CssResource { + String dashboard_widget_header(); + String dashboard_widget_no_data_message_container(); + String dashboard_widget_no_data_message_header(); + String dashboard_widget_no_data_message(); + } +} \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss index 1952c25e644..7f329d28696 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss @@ -10,47 +10,6 @@ bottom: 0pt; } -.panel_header { - height: DASHBOARD_SPACE_MEDIUM; - margin-top: 0; - line-height: DASHBOARD_SPACE_MEDIUM; - vertical-align: middle; - font-size: DASHBOARD_FONT_SIZE_LARGE; - font-family: DASHBOARD_FONT_FAMILY; - width: 100%; - text-align: center; - font-weight: bold; - overflow: visible; - background-color: WHITE; -} - -.no_data_message_container { - position: absolute; - top: DASHBOARD_SPACE_MEDIUM; - bottom: 0px; - width: 100%; - font-size: DASHBOARD_FONT_SIZE_MEDIUM; - font-family: DASHBOARD_FONT_FAMILY; - display: flex; - align-items: center; - justify-content: center; - text-align: center; - line-height: DASHBOARD_LINE_HEIGHT; -} - -.no_data_message_header { - color: DARK_TEXT_COLOR; - font-weight: bold; - text-align: center; -} - -.no_data_message { - color: LIGHT_TEXT_COLOR; - max-width: 230px; - margin: auto; - font-weight: normal; -} - .current_start_panel { height: DASHBOARD_SPACE_MEDIUM; top: DASHBOARD_SPACE_MEDIUM; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java index 940468b9ede..a74248fe2e5 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java @@ -8,7 +8,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; @@ -34,6 +33,7 @@ import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.Competit import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.CompetitorSelectionPopup; import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.SettingsButtonWithSelectionIndicationLabel; import com.sap.sailing.dashboards.gwt.client.widgets.PollsLiveDataEvery5Seconds; +import com.sap.sailing.dashboards.gwt.client.widgets.header.DashboardWidgetHeaderAndNoDataMessage; import com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.card.StartAnalysisCard; import com.sap.sailing.dashboards.gwt.shared.DashboardURLParameters; import com.sap.sailing.dashboards.gwt.shared.dto.LeaderboardCompetitorsDTO; @@ -62,9 +62,9 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL interface StartlineAnalysis extends CssResource { } - - @UiField - HTMLPanel header; + + @UiField(provided = true) + DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; @UiField HTMLPanel currentStartPanel; @@ -93,12 +93,6 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL * */ @UiField HTMLPanel startanalysis_card_container; - - @UiField - DivElement noDataMessageHeader; - - @UiField - DivElement noDataMessage; /** * The CSS "left" property from the {@link #startanalysis_card_container}. @@ -136,13 +130,14 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL * Component that contains handles, displays and loads startanalysis cards. * */ public StartAnalysisWidget(DashboardClientFactory dashboardClientFactory) { + dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); StartAnalysisWidgetResources.INSTANCE.gss().ensureInjected(); raceMapResources.combinedWindPanelStyle().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; pageChangeListener = new ArrayList(); starts = new ArrayList(); initWidget(uiBinder.createAndBindUi(this)); - header.getElement().setInnerText(StringMessages.INSTANCE.dashboardStartAnalysesHeader()); + dashboardWidgetHeaderAndNoDataMessage.setHeaderText(StringMessages.INSTANCE.dashboardStartAnalysesHeader()); initCompetitorSelectionPopupAndAddCompetitorSelectionListener(); initLeftRightButtons(); initAndAddBottomNotification(); @@ -175,13 +170,14 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @Override public void onFailure(Throwable caught) { logger.log(Level.INFO, "Failed to received startanalysis list, "+caught.getMessage()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); } @Override public void onSuccess(StartAnalysesDTO result) { logger.log(Level.INFO, "Received startanalysis list"); if (result != null && !result.getStartAnalyses().isEmpty()) { - hideNoDataMessage(); + dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); if (displayedStartAnalysisCompetitorDifferentToRequestedOne()) { removeAllStartAnalysisCards(); } @@ -194,7 +190,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL settingsButtonWithSelectionIndicationLabel.setSelectionIndicationTextOnLabel(result.getStartAnalyses().get(0).competitor.getName()); } else { logger.log(Level.INFO, "Received startanalysis list is null or empty"); - showNoDataMessageWithHeaderAndMessage(null, null); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); } } }); @@ -255,12 +251,14 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } } else { logger.log(Level.INFO, "Received competitors are null or empty"); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); } } @Override public void onFailure(Throwable caught) { logger.log(Level.INFO, "Failed to received competitors for leaderboard name, "+caught.getMessage()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); } }); } @@ -413,16 +411,6 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } } - private void showNoDataMessageWithHeaderAndMessage(String header, String message) { - noDataMessageHeader.setInnerHTML(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader()); - noDataMessage.setInnerHTML(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); - } - - private void hideNoDataMessage() { - noDataMessageHeader.setInnerHTML(""); - noDataMessage.setInnerHTML(""); - } - @Override public void timeChanged(Date newTime, Date oldTime) { String selectedCompetitorId = Cookies.getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml index a3513c52c4a..ae5cb4f953f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml @@ -1,19 +1,12 @@ - - + xmlns:g="urn:import:com.google.gwt.user.client.ui" + xmlns:header="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.header"> + + - - -
- -
-
-
-
+ { + } - private static StringMessages stringConstants = StringMessages.INSTANCE; - private static final Logger logger = Logger.getLogger(StartLineAdvantageByGeometryWidget.class.getName()); + @UiField(provided = true) + DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; - public StartLineAdvantageByGeometryWidget(DashboardClientFactory dashboardClientFactory) { - super(stringConstants.dashboardStartlineAdvantageByGeometry(), "m"); - this.dashboardClientFactory = dashboardClientFactory; + @UiField(provided = true) + LiveAverageComponent advantageMaximumLiveAverage; + + @UiField + HTMLPanel contentContainer; + + public DashboardClientFactory dashboardClientFactory; + private static final Logger logger = Logger.getLogger(StartlineAdvantagesByWindWidget.class.getName()); + + public StartlineAdvantageByGeometryWidget(DashboardClientFactory dashboardClientFactory) { StartLineAdvantageByGeometryWidgetRessources.INSTANCE.gss().ensureInjected(); - this.header.setInnerText(stringConstants.dashboardStartlineAdvantageByGeometry()); - this.header.addClassName(StartLineAdvantageByGeometryWidgetRessources.INSTANCE.gss().startLineAdvantageComponent_header()); - liveAveragePanel.getElement().addClassName(StartLineAdvantageByGeometryWidgetRessources.INSTANCE.gss().startLineAdvantageComponent_liveAveragePanel()); - livePanel.getElement().addClassName(StartLineAdvantageByGeometryWidgetRessources.INSTANCE.gss().startLineAdvantageComponent_livePanel()); - middleLine.getElement().addClassName(StartLineAdvantageByGeometryWidgetRessources.INSTANCE.gss().startLineAdvantageComponent_middleLine()); - averagePanel.getElement().addClassName(StartLineAdvantageByGeometryWidgetRessources.INSTANCE.gss().startLineAdvantageComponent_averagePanel()); - this.liveLabel.setInnerHTML(stringConstants.dashboardLiveWind()); - this.averageLabel.setInnerHTML(stringConstants.dashboardAverageWind()+"
"+stringConstants.dashboardAverageWindMinutes(15)); + this.dashboardClientFactory = dashboardClientFactory; + dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); + advantageMaximumLiveAverage = new LiveAverageComponent(StringMessages.INSTANCE.metersUnit()); + advantageMaximumLiveAverage.liveLabel.setInnerHTML(StringMessages.INSTANCE.dashboardLiveWind()); + advantageMaximumLiveAverage.averageLabel.setInnerHTML("

"+StringMessages.INSTANCE.dashboardAverageWind()+"

"+StringMessages.INSTANCE.dashboardAverageWindMinutes(15)+"

"); + initWidget(uiBinder.createAndBindUi(this)); + hideDataDisplayContainer(); + dashboardWidgetHeaderAndNoDataMessage.setHeaderText(StringMessages.INSTANCE.dashboardStartlineAdvantageByGeometryHeader()); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } + private void showDataDisplayContainer(){ + contentContainer.getElement().getStyle().setOpacity(1.0); + } + + private void hideDataDisplayContainer(){ + contentContainer.getElement().getStyle().setOpacity(0.0); + } + @Override public void timeChanged(Date newTime, Date oldTime) { String leaderboardNameParameterValue = DashboardURLParameters.LEADERBOARD_NAME.getValue(); @@ -57,26 +80,52 @@ public class StartLineAdvantageByGeometryWidget extends LiveAverageComponent imp @Override public void onFailure(Throwable caught) { logger.log(Level.INFO, "Failed to received startline advantage by geometry"); + hideDataDisplayContainer(); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); } @Override public void onSuccess(StartLineAdvantageDTO result) { if (result.startLineAdvantage != null) { logger.log(Level.INFO, "Updating UI with RibDashboardRaceInfoDTO.startLineAdvantageDTO"); - setLiveValue(NumberFormat.getFormat("#0.0").format(result.startLineAdvantage.doubleValue())); - setAverageValue(NumberFormat.getFormat("#0.0").format(result.average.doubleValue())); + advantageMaximumLiveAverage.setLiveValue(NumberFormat.getFormat("#0.0").format(result.startLineAdvantage.doubleValue())); + advantageMaximumLiveAverage.setAverageValue(NumberFormat.getFormat("#0.0").format(result.average.doubleValue())); + showDataDisplayContainer(); + dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); } else { logger.log(Level.INFO, "RibDashboardRaceInfoDTO.startLineAdvantageDTO is 0"); + hideDataDisplayContainer(); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); } } }); } } - + @Override public void registerForDashboardFiveSecondsTimer(DashboardClientFactory dashboardClientFactory) { if (dashboardClientFactory != null) { dashboardClientFactory.getDashboardFiveSecondsTimer().addTimeListener(this); } } -} + + @Override + public void add(Widget w) { + throw new UnsupportedOperationException("The method add(Widget w) is not supported."); + } + + @Override + public void clear() { + throw new UnsupportedOperationException("The method clear() is not supported."); + } + + @Override + public Iterator iterator() { + return null; + } + + @Override + public boolean remove(Widget w) { + return false; + } +} \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidgetRessources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidgetRessources.java index ccbc0fe1578..f29cf4f5887 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidgetRessources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidgetRessources.java @@ -14,16 +14,8 @@ public interface StartLineAdvantageByGeometryWidgetRessources extends ClientBund @Shared public interface StartLineAdvantageByGeometryGss extends CssResource { - public String startLineAdvantageComponent_liveAveragePanel(); - - public String startLineAdvantageComponent_header(); - - public String startLineAdvantageComponent_livePanel(); - - public String startLineAdvantageComponent_averagePanel(); - - public String startLineAdvantageComponent_middleLine(); - - public String startLineAdvantageComponent_wrapper(); + + String start_line_advantage_by_geometry_widget(); + String advantage_maximum_live_average(); } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.ui.xml new file mode 100644 index 00000000000..afb9f8b28c2 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.ui.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.gss index cdeb1373791..4a26d8200e3 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.gss @@ -5,33 +5,14 @@ left: 0px; right: 0px; top: 0px; - bottom: 0px; -} - -.header_container { - position: absolute; - left: 0px; - right: 0px; - top: 0px; - height: 35%; -} - -.header { - height: 100%; - margin-top: 5pt; - line-height: 15pt; - vertical-align: middle; - font-size: 13pt; - font-family: DASHBOARD_FONT_FAMILY; - width: 100%; - text-align: center; - overflow: visible; - font-weight: bold; + height: 110px; + background-color: WHITE; + z-index: 2; } .live_container { position: absolute; - top: 35%; + top: DASHBOARD_SPACE_VERY_SMALL; bottom: 30%; right: 52%; left: 0%; @@ -39,7 +20,7 @@ .average_container { position: absolute; - top: 35%; + top: DASHBOARD_SPACE_VERY_SMALL; bottom: 30%; right: 0%; left: 52%; @@ -47,7 +28,7 @@ .middle_line { position: absolute; - top: 35%; + top: 13px; height: 30pt; width: 1px; left: 50%; @@ -57,12 +38,13 @@ .panel_value_number { font-family: DASHBOARD_FONT_FAMILY; - font-size: 26pt; + font-size: DASHBOARD_FONT_SIZE_VERY_LARGE; + height: DASHBOARD_FONT_SIZE_VERY_LARGE; } .panel_value_unit { font-family: DASHBOARD_FONT_FAMILY; - font-size: 15pt; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; } .panel_value_unit_degrees { @@ -74,7 +56,6 @@ .value_panel { margin: 0px; width: 100%; - height: 90%; text-align: center; font-family: DASHBOARD_FONT_FAMILY; font-weight: bolder; @@ -85,23 +66,27 @@ width: 100%; height: 100%; text-align: center; - font-size: 11pt; - color: grey; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; + color: LIGHT_TEXT_COLOR; font-family: DASHBOARD_FONT_FAMILY; } .live_label_container { position: absolute; - bottom: 0px; + top: 56px; left: 0px; right: 50%; - height: 35%; + height: 14px; + padding-left: DASHBOARD_SPACE_VERY_SMALL; + padding-right: DASHBOARD_SPACE_VERY_SMALL; } .average_label_container { position: absolute; - bottom: 0px; - right: 0px; + top: 56px; left: 50%; - height: 35%; + right: 0px; + height: 14px; + padding-left: DASHBOARD_SPACE_VERY_SMALL; + padding-right: DASHBOARD_SPACE_VERY_SMALL; } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.java index dd976dc9f0a..5ec96b8befc 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.java @@ -11,7 +11,6 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.course.StartLineAdvantageByGeometryWidget; import com.sap.sailing.dashboards.gwt.client.widgets.windbot.WindBotWidget; import com.sap.sailing.dashboards.gwt.client.widgets.windbot.charts.VerticalWindChartClickListener; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -34,9 +33,6 @@ public class LiveAverageComponent extends Composite implements HasWidgets, Verti @UiField public HTMLPanel liveAveragePanel; - @UiField - public DivElement header; - @UiField SpanElement liveNumber; @@ -78,12 +74,11 @@ public class LiveAverageComponent extends Composite implements HasWidgets, Verti * sets a special size * * */ - public LiveAverageComponent(String header, String unit) { + public LiveAverageComponent(String unit) { LiveAverageComponentResources.INSTANCE.gss().ensureInjected(); stringConstants = StringMessages.INSTANCE; initWidget(uiBinder.createAndBindUi(this)); liveAveragePanel.getElement().getStyle().setProperty("backgroundColor", "white"); - this.header.setInnerText(header); this.liveUnit.setInnerText(unit); this.averageUnit.setInnerText(unit); // Lifts the degrees unit string "°". Otherwise it would be too small. diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.ui.xml index 907458fd311..4780e7128cb 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponent.ui.xml @@ -2,40 +2,29 @@ - - + + - - -
-
- -
- - -
+
+ + +
- - - -
- - -
+
+ + +
- -
+
- -
+
-
-
\ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponentResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponentResources.java index 2809a676b98..16f81f74f6b 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponentResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/util/LiveAverageComponentResources.java @@ -17,8 +17,6 @@ public interface LiveAverageComponentResources extends ClientBundle { interface LiveAverageComponentGss extends CssResource { String live_average_component(); - String header(); - String header_container(); String live_container(); String average_container(); String middle_line(); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss index 3d15fb8ff12..a6f7d53219f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss @@ -1,21 +1,22 @@ @require 'theme'; -.start_line_advantages_by_wind_component{ +.start_line_advantages_by_wind_component { position: absolute; height: 100%; width: 100%; + background-color: LIGHT_GREY; } -.advantage_maximum_live_average{ +.advantage_maximum_live_average { position: absolute; - height: 30%; width: 100%; - top: 4pt; + top: DASHBOARD_SPACE_MEDIUM; + height: auto; } -.advantages_on_line_chart_container{ - position: absolute; - height: 70%; - top: 30%; +.advantages_on_line_chart_container { + position: absolute; + top: 150px; width: 100%; + bottom: 0px; } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java index c54b0cc2482..e59caf0363a 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java @@ -6,18 +6,19 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.dashboards.gwt.client.DashboardClientFactory; import com.sap.sailing.dashboards.gwt.client.actions.GetStartlineAdvantagesByWindAction; import com.sap.sailing.dashboards.gwt.client.widgets.PollsLiveDataEvery5Seconds; +import com.sap.sailing.dashboards.gwt.client.widgets.header.DashboardWidgetHeaderAndNoDataMessage; import com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.util.LiveAverageComponent; import com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.wind.charts.StartlineAdvantagesOnLineChart; import com.sap.sailing.dashboards.gwt.shared.DashboardURLParameters; @@ -40,24 +41,33 @@ public class StartlineAdvantagesByWindWidget extends Composite implements HasWid } + @UiField(provided = true) + DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; + @UiField(provided = true) LiveAverageComponent advantageMaximumLiveAverage; @UiField(provided = true) StartlineAdvantagesOnLineChart startlineAdvantagesOnLineChart; + @UiField + HTMLPanel dataDisplayContainer; + public DashboardClientFactory dashboardClientFactory; private static final Logger logger = Logger.getLogger(StartlineAdvantagesByWindWidget.class.getName()); public StartlineAdvantagesByWindWidget(DashboardClientFactory dashboardClientFactory) { StartlineAdvantagesByWindWidgetResources.INSTANCE.gss().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; + dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); + advantageMaximumLiveAverage = new LiveAverageComponent(StringMessages.INSTANCE.metersUnit()); startlineAdvantagesOnLineChart = new StartlineAdvantagesOnLineChart(); - advantageMaximumLiveAverage = new LiveAverageComponent(StringMessages.INSTANCE.dashboardStartlineAdvantagesByWind(), "m"); - advantageMaximumLiveAverage.header.getStyle().setFontSize(14, Unit.PT); advantageMaximumLiveAverage.liveLabel.setInnerHTML("advantage max."); advantageMaximumLiveAverage.averageLabel.setInnerHTML("advantage max. average "+StringMessages.INSTANCE.dashboardAverageWindMinutes(15)); initWidget(uiBinder.createAndBindUi(this)); + hideDataDisplayContainer(); + dashboardWidgetHeaderAndNoDataMessage.setHeaderText(StringMessages.INSTANCE.dashboardStartlineAdvantagesByWindHeader()); + dataDisplayContainer.getElement().getStyle().setOpacity(0.0); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } @@ -79,8 +89,10 @@ public class StartlineAdvantagesByWindWidget extends Composite implements HasWid result.maximum.doubleValue())); advantageMaximumLiveAverage.setAverageValue(NumberFormat.getFormat("#0.0").format( result.average.doubleValue())); + showDataDisplayContainer(); } else { logger.log(Level.INFO, "StartlineAdvantagesWithMaxAndAverageDTO is null"); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByWindAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByWindAvailableMessage()); } } @@ -88,11 +100,20 @@ public class StartlineAdvantagesByWindWidget extends Composite implements HasWid public void onFailure(Throwable caught) { logger.log(Level.INFO, "Failed to received StartlineAdvantagesWithMaxAndAverageDTO, " + caught.getMessage()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByWindAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByWindAvailableMessage()); } }); } } + private void showDataDisplayContainer(){ + dataDisplayContainer.getElement().getStyle().setOpacity(1.0); + } + + private void hideDataDisplayContainer(){ + dataDisplayContainer.getElement().getStyle().setOpacity(0.0); + } + @Override public void timeChanged(Date newTime, Date oldTime) { loadData(); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.ui.xml index 4b8cd97fb6b..2a7f23688ce 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.ui.xml @@ -2,16 +2,21 @@ + xmlns:chart="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.wind.charts" + xmlns:header="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.header"> - + - - - - - + + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss index 3443715463a..f3611f6e51b 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss @@ -7,17 +7,18 @@ z-index: 5; } -.name_panel { - height: 45pt; - line-height: 45pt; +.live_average_header { + position: absolute; + height: 60px; + top: DASHBOARD_SPACE_MEDIUM; + line-height: 60px; vertical-align: middle; - font-size: 14pt; + font-size: DASHBOARD_FONT_SIZE_LARGE; font-family: DASHBOARD_FONT_FAMILY; - width: 100%; text-align: center; font-weight: bold; overflow: visible; - background-color: white; + background-color: WHITE; } .live_average_container { @@ -25,41 +26,34 @@ border: none; border-radius: 0pt; background-color: white; - top: 45pt; - bottom: 65%; + top: 90px; } .left { - left: 0pt; + left: 0px; right: 50%; } .right { left: 50%; - right: 0pt; + right: 0px; } .windchart_container { position: absolute; border: none; - border-radius: 0pt; + border-radius: 0px; background-color: white; - top: 35%; - bottom: 0pt; + top: 190px; + bottom: 0px; + padding-bottom: 10px; } .windchart{ - position: absolute; - left: 0pt; - right: 0pt; - top: 0pt; - bottom: 0pt; -} - -.compass_container{ position: absolute; - height: 45pt; - width: 45pt; - top: 5pt; - right: 5pt; -} \ No newline at end of file + left: 0px; + right: 0px; + top: 0px; + bottom: 0px; + padding-bottom: 10px; +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.java index 5794821f6ff..ec77457a5ca 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.java @@ -7,15 +7,17 @@ import java.util.logging.Logger; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.dom.client.DivElement; import com.google.gwt.i18n.client.NumberFormat; -import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.dashboards.gwt.client.DashboardClientFactory; import com.sap.sailing.dashboards.gwt.client.dataretriever.WindBotDataRetrieverListener; +import com.sap.sailing.dashboards.gwt.client.widgets.header.DashboardWidgetHeaderAndNoDataMessage; import com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.util.LiveAverageComponent; import com.sap.sailing.dashboards.gwt.client.widgets.windbot.charts.VerticalWindChart; import com.sap.sailing.dashboards.gwt.client.widgets.windbot.compass.LocationPointerCompass; @@ -49,18 +51,18 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR interface WindBotWidgetUiBinder extends UiBinder { } - - interface WindBotComponentStyle extends CssResource { - } @UiField public HTMLPanel windBotComponent; - - /** - * The header of the widget displaying the name of the wind bot. - * */ + + @UiField(provided = true) + DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; + @UiField - public HTMLPanel windBotNamePanel; + DivElement totalWindSpeedHeader; + + @UiField + DivElement totalWindDirectionHeader; /** * One of two {@link LiveAverageComponent}s that display in big font the live and the average value of the measured @@ -97,24 +99,28 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR @UiField public LocationPointerCompass locationPointerCompass; + public DashboardClientFactory dashboardClientFactory; private String windBotId; private StringMessages stringConstants; - private final static String UNIT_WIND_DIRECTION = "°"; - public WindBotWidget(String windBotId) { + public WindBotWidget(String windBotId, DashboardClientFactory dashboardClientFactory) { WindBotWidgetResources.INSTANCE.gss().ensureInjected(); + this.dashboardClientFactory = dashboardClientFactory; + dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); this.windBotId = windBotId; stringConstants = StringMessages.INSTANCE; movingAverageSpeed = new MovingAverage(500); movingAverageDirection = new MovingAverage(500); - trueWindSpeedLiveAverageComponent = new LiveAverageComponent(stringConstants.dashboardTrueWindSpeed(), stringConstants.dashboardTrueWindSpeedUnit()); - trueWindDirectionLiveAverageComponent = new LiveAverageComponent(stringConstants.dashboardTrueWindDirection(), UNIT_WIND_DIRECTION); + trueWindSpeedLiveAverageComponent = new LiveAverageComponent(stringConstants.dashboardTrueWindSpeedUnit()); + trueWindDirectionLiveAverageComponent = new LiveAverageComponent(stringConstants.degreesUnit()); trueWindSpeedVerticalWindChart = new VerticalWindChart("#008FFF", "#6ADBFF"); trueWindDirectionVerticalWindChart = new VerticalWindChart("#008FFF", "#6ADBFF"); initWidget(uiBinder.createAndBindUi(this)); - windBotNamePanel.getElement().setInnerText(stringConstants.dashboardWindBot()+" "+ windBotId); - trueWindSpeedVerticalWindChart.addVerticalWindChartClickListener(trueWindSpeedLiveAverageComponent); - trueWindDirectionVerticalWindChart.addVerticalWindChartClickListener(trueWindDirectionLiveAverageComponent); + dashboardWidgetHeaderAndNoDataMessage.setHeaderText(stringConstants.dashboardWindBot()+" "+ windBotId); + totalWindSpeedHeader.setInnerHTML(stringConstants.dashboardTrueWindSpeed()); + totalWindDirectionHeader.setInnerHTML(stringConstants.dashboardTrueWindDirection()); + trueWindSpeedVerticalWindChart.addVerticalWindChartClickListener(trueWindSpeedLiveAverageComponent); + trueWindDirectionVerticalWindChart.addVerticalWindChartClickListener(trueWindDirectionLiveAverageComponent); } public WindTrackInfoDTO getWindTrackInfoDTOFromAndWindBotID(WindInfoForRaceDTO windInfoForRaceDTO, String id) { @@ -128,26 +134,6 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR return windTrackInfo; } - @Override - public void add(Widget w) { - throw new UnsupportedOperationException("The method add(Widget w) is not supported."); - } - - @Override - public void clear() { - throw new UnsupportedOperationException("The method clear() is not supported."); - } - - @Override - public Iterator iterator() { - return null; - } - - @Override - public boolean remove(Widget w) { - return false; - } - /** * Updates the classes {@link LiveAverageComponent}s and {@link VerticalWindChart}s with data AND updates the * {@link #locationPointerCompass} with a new wind bot position !!! @@ -220,8 +206,7 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR } private void updateLocationPointerCompass(final WindTrackInfoDTO windTrackInfoDTO) { - locationPointerCompass.windBotPositionChanged(windTrackInfoDTO.windFixes - .get(windTrackInfoDTO.windFixes.size() - 1).position); + locationPointerCompass.windBotPositionChanged(windTrackInfoDTO.windFixes.get(windTrackInfoDTO.windFixes.size() - 1).position); } private void updateMovingAverages(List windFixes) { @@ -230,4 +215,24 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR movingAverageDirection.add(windDTO.trueWindFromDeg); } } + + @Override + public void add(Widget w) { + throw new UnsupportedOperationException("The method add(Widget w) is not supported."); + } + + @Override + public void clear() { + throw new UnsupportedOperationException("The method clear() is not supported."); + } + + @Override + public Iterator iterator() { + return null; + } + + @Override + public boolean remove(Widget w) { + return false; + } } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.ui.xml index 7a9d59ee719..b8a85544567 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.ui.xml @@ -3,12 +3,16 @@ xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:client="urn:import:com.sap.sailing.dashboards.gwt.client" xmlns:util="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.util" xmlns:windchart="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.windbot.charts" - xmlns:compass="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.windbot.compass"> + xmlns:compass="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.windbot.compass" + xmlns:header="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.header"> - + + +
+
@@ -27,9 +31,5 @@ - - -
\ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidgetResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidgetResources.java index c4e600796ba..0eb49b7298c 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidgetResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidgetResources.java @@ -17,12 +17,11 @@ public interface WindBotWidgetResources extends ClientBundle { public interface WindBotComponentGss extends CssResource { String wind_bot_component(); - String name_panel(); + String live_average_header(); String live_average_container(); String left(); String right(); String windchart_container(); String windchart(); - String compass_container(); } } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/charts/VerticalWindChart.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/charts/VerticalWindChart.java index 01ea5d824aa..1a0a33ce2d0 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/charts/VerticalWindChart.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/charts/VerticalWindChart.java @@ -37,6 +37,9 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FocusPanel; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.dashboards.gwt.client.theme.Colors; +import com.sap.sailing.dashboards.gwt.client.theme.Fonts; +import com.sap.sailing.dashboards.gwt.client.theme.Sizes; import com.sap.sailing.dashboards.gwt.client.util.HighchartsUtil; import com.sap.sailing.dashboards.gwt.shared.WindType; import com.sap.sailing.gwt.ui.client.shared.charts.ChartPointRecalculator; @@ -138,9 +141,8 @@ public class VerticalWindChart extends Composite implements HasWidgets { .setType(Type.DATE_TIME) .setReversed(false) .setLabels( - new XAxisLabels().setStyle(new Style().setFontFamily("Arial").setFontSize("12") - .setColor("grey"))).setLineColor("grey").setTickWidth(0.5).setLineWidth(1) - .setTickWidth(1).setTickColor("grey").setOffset(0).setMinPadding(20).setGridLineColor("white") + new XAxisLabels().setStyle(new Style().setFontFamily(Fonts.DASHBOARD_FONT_FAMILY).setFontSize(Sizes.DASHBOARD_FONT_SIZE_SMALL).setColor(Colors.LIGHT_TEXT_COLOR))).setLineColor(Colors.LIGHT_TEXT_COLOR).setTickWidth(0.5).setLineWidth(1) + .setTickWidth(1).setTickColor(Colors.LIGHT_TEXT_COLOR).setOffset(0).setMinPadding(20).setGridLineColor(Colors.LIGHT_GREY) .setGridLineWidth(0) .setDateTimeLabelFormats(new DateTimeLabelFormats().setMonth("%e. %b").setYear("%b")); } @@ -148,12 +150,12 @@ public class VerticalWindChart extends Composite implements HasWidgets { private void setYAxisOptions() { verticalWindChart .getYAxis() - .setLineColor("grey") + .setLineColor(Colors.LIGHT_TEXT_COLOR) .setTickWidth(1) - .setTickColor("grey") + .setTickColor(Colors.LIGHT_TEXT_COLOR) .setAxisTitleText(null) .setGridLineWidth(0) - .setAlternateGridColor("#d4d4d4") + .setAlternateGridColor(Colors.LIGHT_GREY) .setLineWidth(1) .setEndOnTick(true) .setStartOnTick(true) @@ -163,7 +165,7 @@ public class VerticalWindChart extends Composite implements HasWidgets { .setMaxPadding(0) .setLabels( new YAxisLabels().setStyle( - new Style().setFontFamily("Arial").setFontSize("12").setColor("grey")).setFormatter( + new Style().setFontFamily(Fonts.DASHBOARD_FONT_FAMILY).setFontSize(Sizes.DASHBOARD_FONT_SIZE_SMALL).setColor(Colors.LIGHT_TEXT_COLOR)).setFormatter( new AxisLabelsFormatter() { @Override public String format(AxisLabelsData axisLabelsData) { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.gss index adbcad59e81..c58525afaf0 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.gss @@ -1,5 +1,16 @@ @require 'theme'; +.location_pointer_compass { + position: absolute; + width: 70px; + height: 85px; + background-color: LIGHT_GREY; + top: 0px; + right: 13px; + z-index: 5; + /*border-bottom-left-radius: 2em;*/ +} + .compass{ height: 100%; width: 100%; @@ -8,13 +19,13 @@ .needle{ position: absolute; - height: 100%; - width: 100%; - top: 0%; - left: 0%; + top: 10px; + left: 10px; + width: 50px; + height: 50px; } -.angleToLocationLabel{ +.angle_to_location { position: absolute; height: 10pt; width: 100%; @@ -23,22 +34,22 @@ text-align: center; vertical-align: middle; font-family: DASHBOARD_FONT_FAMILY; - font-size: 9pt; + font-size: DASHBOARD_FONT_SIZE_VERY_SMALL; font-weight: bold; color: white; } -.distanceToLocationLabel{ +.distance_to_location { position: absolute; - height: 15pt; + height: DASHBOARD_FONT_SIZE_SMALL; width: 100%; - bottom: -17pt; + top: 65px; text-align: center; vertical-align: middle; font-family: DASHBOARD_FONT_FAMILY; - line-height: 10pt; + line-height: DASHBOARD_FONT_SIZE_SMALL; font-weight: bold; - font-size: 9pt; + font-size: DASHBOARD_FONT_SIZE_SMALL; color: black; z-index: 10; } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.java index f92b6b3a1b9..e3eaaf0f2a2 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.java @@ -1,38 +1,45 @@ package com.sap.sailing.dashboards.gwt.client.widgets.windbot.compass; +import java.util.Iterator; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; import com.google.gwt.i18n.client.NumberFormat; -import com.google.gwt.user.client.ui.AbsolutePanel; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.Position; /** - * The class is an UI component that should be used to display the direction and the distance from the users device to a - * certain pointed GPS location. The class needs an {@link LocationPointerCompassAngleDistance} instance and registers - * as an listener to it. It furthermore notifies its {@link LocationPointerCompassAngleDistance} instance about wind bot - * GPS location changes. - * * @author Alexander Ries (D062114) * */ -public class LocationPointerCompass extends AbsolutePanel implements HasWidgets, - LocationPointerCompassAngleDistanceListener { +public class LocationPointerCompass extends Composite implements HasWidgets, LocationPointerCompassAngleDistanceListener { - private double angleOffset; + private static LocationPointerCompasssUiBinder uiBinder = GWT.create(LocationPointerCompasssUiBinder.class); + + interface LocationPointerCompasssUiBinder extends UiBinder { + } - private Image compassNeedle; + @UiField + Image compassNeedle; /** * The Label shows the distance the users device is away from the location it points to. * */ - private Label distanceToPointetLocationLabel; + @UiField + DivElement distanceToPointetLocation; /** * The Label shows the direction in degrees from north the users device is away from the location it points to. * */ - private Label angleToPointetLocationLabel; + @UiField + DivElement angleToPointetLocation; + private double angleOffset; /** * The {@link LocationPointerCompassAngleDistance} notifies the class about updates about angle and distance * changes. @@ -41,33 +48,10 @@ public class LocationPointerCompass extends AbsolutePanel implements HasWidgets, public LocationPointerCompass() { LocationPointerCompassRessources.INSTANCE.gss().ensureInjected(); - this.getElement().addClassName(LocationPointerCompassRessources.INSTANCE.gss().compass()); - initCompassNeedle(); - initAngleToPointetLocationLabel(); - initDistanceToPointedLocationLabel(); + initWidget(uiBinder.createAndBindUi(this)); + compassNeedle.setResource(LocationPointerCompassRessources.INSTANCE.compass()); locationPointerCompassAngleDistance = new LocationPointerCompassAngleDistance(); locationPointerCompassAngleDistance.addListener(this); - locationPointerCompassAngleDistance.triggerOrientationRead(); - } - - private void initCompassNeedle() { - compassNeedle = new Image(); - compassNeedle.setResource(LocationPointerCompassRessources.INSTANCE.compass()); - compassNeedle.getElement().addClassName(LocationPointerCompassRessources.INSTANCE.gss().needle()); - LocationPointerCompass.this.add(compassNeedle); - } - - private void initAngleToPointetLocationLabel() { - angleToPointetLocationLabel = new Label(); - angleToPointetLocationLabel.getElement().addClassName(LocationPointerCompassRessources.INSTANCE.gss().angleToLocationLabel()); - this.add(angleToPointetLocationLabel); - } - - private void initDistanceToPointedLocationLabel() { - distanceToPointetLocationLabel = new Label(); - distanceToPointetLocationLabel.getElement().addClassName(LocationPointerCompassRessources.INSTANCE.gss().distanceToLocationLabel()); - distanceToPointetLocationLabel.setText("m"); - this.add(distanceToPointetLocationLabel); } private void updateNeedleAngle(double newDirection) { @@ -79,19 +63,19 @@ public class LocationPointerCompass extends AbsolutePanel implements HasWidgets, compassNeedle.getElement().getStyle() .setProperty("webkitTransform", "rotate(" + winddirectionformatted + "deg)"); String winddirectionFormattedForLabel = NumberFormat.getFormat("#0").format((newAngle < 0) ? 360+newAngle : newAngle); - angleToPointetLocationLabel.setText(winddirectionFormattedForLabel+"°"); + angleToPointetLocation.setInnerHTML(winddirectionFormattedForLabel+"°"); } } private void updateDistanceToPointedLocationLabel(double distance, double angle) { String distanceFormatted = NumberFormat.getFormat("#0").format(distance); - distanceToPointetLocationLabel.setText(distanceFormatted + " m"); + distanceToPointetLocation.setInnerHTML(distanceFormatted + " m"); } public void windBotPositionChanged(Position positionDTO) { locationPointerCompassAngleDistance.windBotPositionChanged(positionDTO); } - + @Override public void angleChanged(double angle) { updateNeedleAngle(angle); @@ -107,4 +91,24 @@ public class LocationPointerCompass extends AbsolutePanel implements HasWidgets, public void setAngleOffset(double offset) { angleOffset = offset; } + + @Override + public void add(Widget w) { + throw new UnsupportedOperationException("The method add(Widget w) is not supported."); + } + + @Override + public void clear() { + throw new UnsupportedOperationException("The method clear() is not supported."); + } + + @Override + public Iterator iterator() { + return null; + } + + @Override + public boolean remove(Widget w) { + return false; + } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.ui.xml new file mode 100644 index 00000000000..9b84f404930 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.ui.xml @@ -0,0 +1,12 @@ + + + + + + + +
+
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompassRessources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompassRessources.java index b38b91e3b57..2b6ae32897f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompassRessources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompassRessources.java @@ -18,9 +18,10 @@ public interface LocationPointerCompassRessources extends ClientBundle { @Shared public interface LocationPointerCompassGSS extends CssResource { + public String location_pointer_compass(); public String compass(); public String needle(); - public String angleToLocationLabel(); - public String distanceToLocationLabel(); + public String angle_to_location(); + public String distance_to_location(); } } 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 e70709da649..3c2c9fac4bd 100644 --- 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 @@ -1275,8 +1275,12 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String dashboardNewStartAnalysisAvailable(); String dashboardNoStartAnalysesAvailableHeader(); String dashboardNoStartAnalysesAvailableMessage(); - String dashboardStartlineAdvantagesByWind(); - String dashboardStartlineAdvantageByGeometry(); + String dashboardNoStartlineAdvantagesByWindAvailableHeader(); + String dashboardNoStartlineAdvantagesByWindAvailableMessage(); + String dashboardNoStartlineAdvantagesByGeometryAvailableHeader(); + String dashboardNoStartlineAdvantagesByGeometryAvailableMessage(); + String dashboardStartlineAdvantagesByWindHeader(); + String dashboardStartlineAdvantageByGeometryHeader(); String dashboardRankAtFirstMark(); String dashboardTeam(); String dashboardDistanceToLineInM(); 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 76aad56ba6f..b4259dfcd62 100644 --- 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 @@ -1237,8 +1237,12 @@ dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available dashboardNoStartAnalysesAvailableHeader=No Start Analyses available yet. dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. -dashboardStartlineAdvantagesByWind=Startline advantage by wind -dashboardStartlineAdvantageByGeometry=Startline advantage by geometry +dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available yet. +dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available yet. +dashboardNoStartlineAdvantagesByGeometryAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. +dashboardStartlineAdvantagesByWindHeader=Startline Advantages by Wind +dashboardStartlineAdvantageByGeometryHeader=Startline Advantage by Geometry dashboardRankAtFirstMark=Rank at first mark dashboardTeam=Team dashboardDistanceToLineInM=Distance to line in m 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 8b325ec77c0..85c0912137d 100644 --- 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 @@ -1228,8 +1228,12 @@ dashboardStartAnalysesHeader=Start Analysen dashboardNewStartAnalysisAvailable=Neue Start Analyse verfügbar. dashboardNoStartAnalysesAvailableHeader=Noch keine Start Analysen verfügbar. dashboardNoStartAnalysesAvailableMessage=Es wird eine Start Analyse für jeden Renn Start erstellt. Bitte warten bis die Rennen starten. -dashboardStartlineAdvantagesByWind=Startlininien Vorteil nach Wind -dashboardStartlineAdvantageByGeometry=Startlininien Vorteil nach Geometrie +dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available yet. +dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available yet. +dashboardNoStartlineAdvantagesByGeometryAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. +dashboardStartlineAdvantagesByWindHeader=Startline Advantages by Wind +dashboardStartlineAdvantageByGeometryHeader=Startline Advantage by Geometry dashboardRankAtFirstMark=Position an erster Bahnmarke dashboardTeam=Team dashboardDistanceToLineInM=Distanz zur Linie in m 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 d307334d96b..b568ec4a658 100644 --- 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 @@ -1171,8 +1171,12 @@ dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available dashboardNoStartAnalysesAvailableHeader=No Start Analyses available yet. dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. -dashboardStartlineAdvantagesByWind=Startline advantage by wind -dashboardStartlineAdvantageByGeometry=Startline advantage by geometry +dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available yet. +dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available yet. +dashboardNoStartlineAdvantagesByGeometryAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. +dashboardStartlineAdvantagesByWindHeader=Startline Advantages by Wind +dashboardStartlineAdvantageByGeometryHeader=Startline Advantage by Geometry dashboardRankAtFirstMark=Rank at first mark dashboardTeam=Team dashboardDistanceToLineInM=Distance to line in m diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 73545c4df53..9e81613748f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -159,7 +159,6 @@ explainReplicationServletPort=Servlet port number that is used to connect to reg numberOfManeuvers=操作 successfullyAllowedCompetitorReset=Successfully allowed reload of competitor(s) {0}. pleaseEnterAName=Please enter a name -dashboardStartlineAdvantageByGeometry=Startline advantage by geometry confidence=Confidence from=从 start=起航 @@ -1098,7 +1097,8 @@ windwardDistanceToGoInMetersTooltip=迎/顺风航段时参赛队的位置离开 papaDisplayed=Start mode flag - four minutes till start sheetNameTooltip=You can name your polar sheet using the text field.nA name will be generated using the boat classnif no name is provided. competitorsFilter=参赛队过滤 -dashboardStartlineAdvantagesByWind=Startline advantage by wind +dashboardStartlineAdvantagesByWindHeader=Startline Advantages by Wind +dashboardStartlineAdvantageByGeometryHeader=Startline Advantage by Geometry dashboardSecondsAbreviation=s pleaseEnterNonEmptyDescription=Please enter a non-empty description polarSheetChart=Polar Sheet @@ -1257,6 +1257,10 @@ courseAreaName=Course area: {0} competitorsCount[one]={0,number} competitor� dashboardWindBotLoadingText=Loading wind bot data ... dashboardWindBotLoadingMessage=Depending on your connection this operation might take some minutes to complete the first time. +dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available yet. +dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available yet. +dashboardNoStartlineAdvantagesByGeometryAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. currentOfTotalLegs=航段 {0,number}/{1,number} clone=Clone changed=Changed From 1bcbb72525430b51084ab0094676ca29564a8e91 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Tue, 2 Feb 2016 16:12:40 +0100 Subject: [PATCH 07/43] changed dashboard no data headers and messages for all widgets --- .../gwt/ui/client/StringMessages.properties | 6 +++--- .../gwt/ui/client/StringMessages_de.properties | 14 +++++++------- .../gwt/ui/client/StringMessages_ru.properties | 6 +++--- .../gwt/ui/client/StringMessages_zh.properties | 6 +++--- 4 files changed, 16 insertions(+), 16 deletions(-) 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 b4259dfcd62..09c41726ee9 100644 --- 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 @@ -1235,11 +1235,11 @@ dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Tap on chart to change interval dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available -dashboardNoStartAnalysesAvailableHeader=No Start Analyses available yet. +dashboardNoStartAnalysesAvailableHeader=No Start Analyses available. dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. -dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available yet. +dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available. dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. -dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available yet. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available. dashboardNoStartlineAdvantagesByGeometryAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. dashboardStartlineAdvantagesByWindHeader=Startline Advantages by Wind dashboardStartlineAdvantageByGeometryHeader=Startline Advantage by Geometry 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 85c0912137d..e217a26038b 100644 --- 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 @@ -1226,14 +1226,14 @@ dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Auf Chart drücken um Interval zu ändern dashboardStartAnalysesHeader=Start Analysen dashboardNewStartAnalysisAvailable=Neue Start Analyse verfügbar. -dashboardNoStartAnalysesAvailableHeader=Noch keine Start Analysen verfügbar. +dashboardNoStartAnalysesAvailableHeader=Keine Start Analysen verfügbar. dashboardNoStartAnalysesAvailableMessage=Es wird eine Start Analyse für jeden Renn Start erstellt. Bitte warten bis die Rennen starten. -dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available yet. -dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. -dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available yet. -dashboardNoStartlineAdvantagesByGeometryAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. -dashboardStartlineAdvantagesByWindHeader=Startline Advantages by Wind -dashboardStartlineAdvantageByGeometryHeader=Startline Advantage by Geometry +dashboardNoStartlineAdvantagesByWindAvailableHeader=Kein Startlinien Vorteil verfügbar. +dashboardNoStartlineAdvantagesByWindAvailableMessage=Um den Startlinien Vorteil zu berrechnen muss die Regattaleitung einen Kurs in im Race Manager gesetzt haben. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=Keine Startlinien Vorteile verfügbar. +dashboardNoStartlineAdvantagesByGeometryAvailableMessage=Um den Startlinien Vorteile zu berrechnen muss die Regattaleitung einen Kurs in im Race Manager gesetzt haben. +dashboardStartlineAdvantagesByWindHeader=Startlinien Vorteile nach Wind +dashboardStartlineAdvantageByGeometryHeader=Startlinien Vorteile nach Geometrie dashboardRankAtFirstMark=Position an erster Bahnmarke dashboardTeam=Team dashboardDistanceToLineInM=Distanz zur Linie in m 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 b568ec4a658..9a2fc64daea 100644 --- 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 @@ -1169,11 +1169,11 @@ dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Tap on chart to change interval dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available -dashboardNoStartAnalysesAvailableHeader=No Start Analyses available yet. +dashboardNoStartAnalysesAvailableHeader=No Start Analyses available. dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. -dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available yet. +dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available. dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. -dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available yet. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available. dashboardNoStartlineAdvantagesByGeometryAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. dashboardStartlineAdvantagesByWindHeader=Startline Advantages by Wind dashboardStartlineAdvantageByGeometryHeader=Startline Advantage by Geometry diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 9e81613748f..fa030acbd6b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -351,7 +351,7 @@ polarSheetMinimumWindConfidence=Minimum wind confidence value group=分组 dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available -dashboardNoStartAnalysesAvailableHeader=No Start Analyses available yet. +dashboardNoStartAnalysesAvailableHeader=No Start Analyses available. dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. actionAddWindData=Add wind data competitorSearchFilter=Competitor Search Filter @@ -1257,9 +1257,9 @@ courseAreaName=Course area: {0} competitorsCount[one]={0,number} competitor� dashboardWindBotLoadingText=Loading wind bot data ... dashboardWindBotLoadingMessage=Depending on your connection this operation might take some minutes to complete the first time. -dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available yet. +dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available. dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. -dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available yet. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available. dashboardNoStartlineAdvantagesByGeometryAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. currentOfTotalLegs=航段 {0,number}/{1,number} clone=Clone From 0d4bca5d4e4f7c5a26f422ea4b127ef575f2bce9 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Tue, 2 Feb 2016 17:15:23 +0100 Subject: [PATCH 08/43] formatting in StartAnalysisWidget.ui.xml --- .../widgets/startanalysis/StartAnalysisWidget.ui.xml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml index ae5cb4f953f..f8637e2ff30 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml @@ -9,19 +9,15 @@ - + - + - - + + From d01d3a0ee6a504149d2bbc74e7a6f500bc818dba Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 3 Feb 2016 13:09:08 +0100 Subject: [PATCH 09/43] added no wind data message to wind bot widget --- .../client/dashboardpanel/DashboardPanel.java | 122 ++++++++---------- .../dashboardpanel/DashboardPanel.ui.xml | 21 +-- .../NumberOfWindBotsChangeListener.java | 1 - .../dataretriever/WindBotDataRetriever.java | 9 -- ...DashboardWidgetHeaderAndNoDataMessage.java | 50 ++++--- .../client/widgets/windbot/WindBotWidget.gss | 3 +- .../client/widgets/windbot/WindBotWidget.java | 32 +++-- .../widgets/windbot/WindBotWidget.ui.xml | 4 +- .../windbot/WindBotWidgetResources.java | 2 +- .../sailing/gwt/ui/client/StringMessages.java | 5 +- .../gwt/ui/client/StringMessages.properties | 5 +- .../ui/client/StringMessages_de.properties | 5 +- .../ui/client/StringMessages_ru.properties | 5 +- .../ui/client/StringMessages_zh.properties | 5 +- 14 files changed, 123 insertions(+), 146 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java index b5683d75e0b..a6af70ed2dc 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java @@ -1,13 +1,11 @@ package com.sap.sailing.dashboards.gwt.client.dashboardpanel; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Document; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; @@ -56,21 +54,15 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL @UiField Carousel carousel; - @UiField - HTMLPanel leftwindbotcontainer; - - @UiField - HTMLPanel rightwindbotcontainer; + @UiField(provided = true) + WindBotWidget leftWindBotWidget; + + @UiField(provided = true) + WindBotWidget rightWindBotWidget; @UiField(provided = true) StartlineAdvantagesByWindWidget startlineAdvantagesByWindComponent; - @UiField - public DivElement windloadinghintleft; - - @UiField - public DivElement windloadinghintright; - @UiField public HTMLPanel bottombar; @@ -83,7 +75,6 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL @UiField(provided = true) public StartlineAdvantageByGeometryWidget startlineAdvantageByGeometryWidget; - private List windBotComponents; private StringMessages stringConstants; DashboardClientFactory dashboardClientFactory; private static final Logger logger = Logger.getLogger(DashboardPanel.class.getName()); @@ -91,7 +82,8 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL public DashboardPanel(DashboardClientFactory dashboardClientFactory) { DashboardPanelResources.INSTANCE.style().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; - windBotComponents = new ArrayList(); + leftWindBotWidget = new WindBotWidget(dashboardClientFactory); + rightWindBotWidget = new WindBotWidget(dashboardClientFactory); startanalysisComponent = new StartAnalysisWidget(this.dashboardClientFactory); startlineAdvantagesByWindComponent = new StartlineAdvantagesByWindWidget(this.dashboardClientFactory); startlineAdvantageByGeometryWidget = new StartlineAdvantageByGeometryWidget(this.dashboardClientFactory); @@ -99,8 +91,6 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL initWidget(uiBinder.createAndBindUi(this)); initLogos(); windcharthint.getElement().setInnerText(stringConstants.dashboardWindChartHint()); - windloadinghintleft.setInnerHTML(stringConstants.dashboardWindBotLoadingText()+"
"+stringConstants.dashboardWindBotLoadingMessage()); - windloadinghintright.setInnerHTML(stringConstants.dashboardWindBotLoadingText()+"
"+stringConstants.dashboardWindBotLoadingMessage()); loadAndAddEventLogo(dashboardClientFactory.getSailingService()); initAndAddWrongOrientationNotification(); registerForDashboardFiveSecondsTimer(dashboardClientFactory); @@ -128,47 +118,19 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL Document.get().getBody().appendChild(wrongDeviceOrientationNotification.getElement()); } - private void initWindBotComponents(List windBotIDs, - WindBotDataRetrieverProvider windBotDataRetrieverProvider) { - int windBotAddedCounterTOConsiderForPanels = 0; - leftwindbotcontainer.clear(); - removeWindBotComponentsAsDataRetrieverListener(windBotDataRetrieverProvider); - windBotComponents.clear(); - for (String windBotID : windBotIDs) { - if (windBotAddedCounterTOConsiderForPanels == 0) { - WindBotWidget leftwindBotComponent = new WindBotWidget(windBotID, dashboardClientFactory); - leftwindbotcontainer.add(leftwindBotComponent); - windBotComponents.add(leftwindBotComponent); - windloadinghintleft.getStyle().setOpacity(0.0); - } else if (windBotAddedCounterTOConsiderForPanels == 1) { - WindBotWidget rightwindBotComponent = new WindBotWidget(windBotID, dashboardClientFactory); - rightwindbotcontainer.add(rightwindBotComponent); - windBotComponents.add(rightwindBotComponent); - windloadinghintright.getStyle().setOpacity(0.0); - } - windBotAddedCounterTOConsiderForPanels++; - if (windloadinghintleft.getStyle().getOpacity() != "0.0" - || windloadinghintright.getStyle().getOpacity() != "0.0") { - windloadinghintleft.setInnerHTML(stringConstants.dashboardWindBotNotAvailable()); - windloadinghintright.setInnerHTML(stringConstants.dashboardWindBotNotAvailable()); - } - } - addWindBotComponentsAsDataRetrieverListener(windBotDataRetrieverProvider); - } - - private void addWindBotComponentsAsDataRetrieverListener(WindBotDataRetrieverProvider windBotDataRetrieverProvider) { - for (WindBotWidget windBotComponent : windBotComponents) { - logger.log(Level.INFO, "Registering WindBotDataRetrieverListener"); - windBotDataRetrieverProvider.addWindBotDataRetrieverListener(windBotComponent); - } - } - - private void removeWindBotComponentsAsDataRetrieverListener( - WindBotDataRetrieverProvider windBotDataRetrieverProvider) { - for (WindBotWidget windBotComponent : windBotComponents) { - windBotDataRetrieverProvider.removeWindBotDataRetrieverListener(windBotComponent); - } - } +// private void addWindBotComponentsAsDataRetrieverListener(WindBotDataRetrieverProvider windBotDataRetrieverProvider) { +// for (WindBotWidget windBotComponent : windBotComponents) { +// logger.log(Level.INFO, "Registering WindBotDataRetrieverListener"); +// windBotDataRetrieverProvider.addWindBotDataRetrieverListener(windBotComponent); +// } +// } +// +// private void removeWindBotComponentsAsDataRetrieverListener( +// WindBotDataRetrieverProvider windBotDataRetrieverProvider) { +// for (WindBotWidget windBotComponent : windBotComponents) { +// windBotDataRetrieverProvider.removeWindBotDataRetrieverListener(windBotComponent); +// } +// } private void setHeaderText(String raceName) { this.header.getElement().setInnerText(raceName); @@ -207,19 +169,41 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL } @Override - public void numberOfWindBotsReceivedChanged(List windBotIDs, - WindBotDataRetrieverProvider windBotDataRetrieverProvider) { - if(windBotIDs != null) { - logger.log(Level.INFO, "Number of available windbots changed to "+windBotIDs.size()); + public void numberOfWindBotsReceivedChanged(List windBotIDs, WindBotDataRetrieverProvider windBotDataRetrieverProvider) { + if (windBotIDs != null) { + logger.log(Level.INFO, "Number of available windbots changed to " + windBotIDs.size()); + for (int i = 0; i < windBotIDs.size(); i++) { + if (i == 0) { + leftWindBotWidget.setWindBotId(windBotIDs.get(i)); + windBotDataRetrieverProvider.addWindBotDataRetrieverListener(leftWindBotWidget); + } + if (i == 1) { + rightWindBotWidget.setWindBotId(windBotIDs.get(i)); + windBotDataRetrieverProvider.addWindBotDataRetrieverListener(rightWindBotWidget); + } + } } else { logger.log(Level.INFO, "Number of available windbots changed. WindBots List is null"); } - initWindBotComponents(windBotIDs, windBotDataRetrieverProvider); - } - - @Override - public void numberOfWindBotsReceivedIsZero() { - windloadinghintleft.setInnerText(stringConstants.dashboardWindBotNotAvailable()); - windloadinghintright.setInnerText(stringConstants.dashboardWindBotNotAvailable()); } +// +// private void initWindBotComponents(List windBotIDs, +// WindBotDataRetrieverProvider windBotDataRetrieverProvider) { +// int windBotAddedCounterTOConsiderForPanels = 0; +// removeWindBotComponentsAsDataRetrieverListener(windBotDataRetrieverProvider); +// windBotComponents.clear(); +// for (String windBotID : windBotIDs) { +// if (windBotAddedCounterTOConsiderForPanels == 0) { +// WindBotWidget leftwindBotComponent = new WindBotWidget(windBotID, dashboardClientFactory); +// leftwindbotcontainer.add(leftwindBotComponent); +// windBotComponents.add(leftwindBotComponent); +// } else if (windBotAddedCounterTOConsiderForPanels == 1) { +// WindBotWidget rightwindBotComponent = new WindBotWidget(windBotID, dashboardClientFactory); +// rightwindbotcontainer.add(rightwindBotComponent); +// windBotComponents.add(rightwindBotComponent); +// } +// windBotAddedCounterTOConsiderForPanels++; +// } +// addWindBotComponentsAsDataRetrieverListener(windBotDataRetrieverProvider); +// } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml index 49c3d51e003..f524089f0cd 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml @@ -1,6 +1,7 @@ -
-
-
+
- -
-
-
+ +
- + - + - - + diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/NumberOfWindBotsChangeListener.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/NumberOfWindBotsChangeListener.java index e85672afaaf..17b803da303 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/NumberOfWindBotsChangeListener.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/NumberOfWindBotsChangeListener.java @@ -4,5 +4,4 @@ import java.util.List; public interface NumberOfWindBotsChangeListener { public void numberOfWindBotsReceivedChanged(List windBotIDs, WindBotDataRetrieverProvider windBotDataRetrieverProvider); - public void numberOfWindBotsReceivedIsZero(); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/WindBotDataRetriever.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/WindBotDataRetriever.java index 440951f64b8..f7827b0725e 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/WindBotDataRetriever.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/WindBotDataRetriever.java @@ -76,7 +76,6 @@ public class WindBotDataRetriever implements PollsLiveDataEvery5Seconds, WindBot } notifyWindBotDataRetrieverListeners(result); } else { - notifyListenersAboutNumberOfWindBotsReceivedIsZero(); logger.log(Level.INFO, "WindInfoForRaceDTO is not containing wind from windbots"); } } else { @@ -115,12 +114,6 @@ public class WindBotDataRetriever implements PollsLiveDataEvery5Seconds, WindBot } } - private void notifyListenersAboutNumberOfWindBotsReceivedIsZero() { - for (NumberOfWindBotsChangeListener numberOfWindBotsChangeListener : numberOfWindBotsChangeListeners) { - numberOfWindBotsChangeListener.numberOfWindBotsReceivedIsZero(); - } - } - @Override public void addWindBotDataRetrieverListener(WindBotDataRetrieverListener windBotDataRetrieverListener) { windBotDataRetrieverListeners.add(windBotDataRetrieverListener); @@ -156,7 +149,6 @@ public class WindBotDataRetriever implements PollsLiveDataEvery5Seconds, WindBot logger.log(Level.INFO, "Received RegattaAndRaceIdentifier from race that takes wind fixes now"); loadWindBotData(finaloldTime, finalNewTime, raceId); } else { - notifyListenersAboutNumberOfWindBotsReceivedIsZero(); logger.log(Level.INFO, "Can´t load wind data because RegattaAndRaceIdentifier for race which takes wind is null"); } } @@ -164,7 +156,6 @@ public class WindBotDataRetriever implements PollsLiveDataEvery5Seconds, WindBot @Override public void onFailure(Throwable caught) { - notifyListenersAboutNumberOfWindBotsReceivedIsZero(); logger.log(Level.INFO, "Failed to received RegattaAndRaceIdentifier from race that takes wind fixes now"); logger.log(Level.INFO, caught.getMessage()); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java index 021346195b5..d131ba6ede7 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java @@ -3,11 +3,12 @@ package com.sap.sailing.dashboards.gwt.client.widgets.header; import java.util.Iterator; import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.Scheduler; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.Command; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasWidgets; @@ -19,18 +20,20 @@ import com.google.gwt.user.client.ui.Widget; */ public class DashboardWidgetHeaderAndNoDataMessage extends Composite implements HasWidgets { - private static DashboardWidgetHeaderAndNoDataMessageUiBinder uiBinder = GWT.create(DashboardWidgetHeaderAndNoDataMessageUiBinder.class); + private static DashboardWidgetHeaderAndNoDataMessageUiBinder uiBinder = GWT + .create(DashboardWidgetHeaderAndNoDataMessageUiBinder.class); private static final int EXTRA_WIDTH_MESSAGE = 10; - - interface DashboardWidgetHeaderAndNoDataMessageUiBinder extends UiBinder { + + interface DashboardWidgetHeaderAndNoDataMessageUiBinder extends + UiBinder { } - + @UiField HTMLPanel header; - + @UiField DivElement noDataMessageHeader; - + @UiField DivElement noDataMessage; @@ -38,34 +41,27 @@ public class DashboardWidgetHeaderAndNoDataMessage extends Composite implements DashboardWidgetHeaderAndNoDataMessageResources.INSTANCE.gss().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); } - + public void setHeaderText(String headerText) { this.header.getElement().setInnerHTML(headerText); } - - public void showNoDataMessageWithHeaderAndMessage(String header, String message) { - noDataMessageHeader.setInnerText(header); - noDataMessage.setInnerText(message); - noDataMessage.getStyle().setWidth(noDataMessageHeader.getClientWidth()+EXTRA_WIDTH_MESSAGE, Unit.PX); - + + public void showNoDataMessageWithHeaderAndMessage(final String header, final String message) { + Scheduler.get().scheduleDeferred(new Command() { + public void execute() { + noDataMessageHeader.setInnerText(header); + noDataMessage.setInnerText(message); + noDataMessage.getStyle().setWidth(noDataMessageHeader.getClientWidth() + EXTRA_WIDTH_MESSAGE, Unit.PX); + } + }); + } - + public void hideNoDataMessage() { noDataMessageHeader.setInnerHTML(""); noDataMessage.setInnerHTML(""); } - - public void adaptSizeOfNoDataMessageDiv() { -// Scheduler.get().scheduleDeferred(new Command() { -// public void execute () { - double widthOfNoDataMessageHeader = Double.parseDouble(noDataMessageHeader.getStyle().getWidth()); - Window.alert("asdfasdfasfd"); - Window.alert("widthOfNoDataMessageHeader "+widthOfNoDataMessageHeader); - noDataMessage.getStyle().setWidth(widthOfNoDataMessageHeader, Unit.PX); -// } -// }); - } - + @Override public void add(Widget w) { throw new UnsupportedOperationException("The method add(Widget w) is not supported."); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss index f3611f6e51b..30eb28e2bcd 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss @@ -1,9 +1,10 @@ @require 'theme'; -.wind_bot_component{ +.wind_bot_widget{ position: absolute; height: 100%; width: 100%; + background-color: LIGHT_GREY; z-index: 5; } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.java index ec77457a5ca..734750e5663 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.java @@ -53,7 +53,7 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR } @UiField - public HTMLPanel windBotComponent; + HTMLPanel contentContainer; @UiField(provided = true) DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; @@ -103,11 +103,10 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR private String windBotId; private StringMessages stringConstants; - public WindBotWidget(String windBotId, DashboardClientFactory dashboardClientFactory) { + public WindBotWidget(DashboardClientFactory dashboardClientFactory) { WindBotWidgetResources.INSTANCE.gss().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); - this.windBotId = windBotId; stringConstants = StringMessages.INSTANCE; movingAverageSpeed = new MovingAverage(500); movingAverageDirection = new MovingAverage(500); @@ -116,14 +115,29 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR trueWindSpeedVerticalWindChart = new VerticalWindChart("#008FFF", "#6ADBFF"); trueWindDirectionVerticalWindChart = new VerticalWindChart("#008FFF", "#6ADBFF"); initWidget(uiBinder.createAndBindUi(this)); - dashboardWidgetHeaderAndNoDataMessage.setHeaderText(stringConstants.dashboardWindBot()+" "+ windBotId); + hideContentContainer(); + dashboardWidgetHeaderAndNoDataMessage.setHeaderText(stringConstants.dashboardWindBot()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(stringConstants.dashboardNoWindBotAvailableHeader(), stringConstants.dashboardNoWindBotAvailableMessage()); totalWindSpeedHeader.setInnerHTML(stringConstants.dashboardTrueWindSpeed()); totalWindDirectionHeader.setInnerHTML(stringConstants.dashboardTrueWindDirection()); - trueWindSpeedVerticalWindChart.addVerticalWindChartClickListener(trueWindSpeedLiveAverageComponent); - trueWindDirectionVerticalWindChart.addVerticalWindChartClickListener(trueWindDirectionLiveAverageComponent); + trueWindSpeedVerticalWindChart.addVerticalWindChartClickListener(trueWindSpeedLiveAverageComponent); + trueWindDirectionVerticalWindChart.addVerticalWindChartClickListener(trueWindDirectionLiveAverageComponent); } - - public WindTrackInfoDTO getWindTrackInfoDTOFromAndWindBotID(WindInfoForRaceDTO windInfoForRaceDTO, String id) { + + public void setWindBotId(String windBotId) { + this.windBotId = windBotId; + dashboardWidgetHeaderAndNoDataMessage.setHeaderText(stringConstants.dashboardWindBot() + " " + windBotId); + } + + private void showContentContainer(){ + contentContainer.getElement().getStyle().setOpacity(1.0); + } + + private void hideContentContainer(){ + contentContainer.getElement().getStyle().setOpacity(0.0); + } + + private WindTrackInfoDTO getWindTrackInfoDTOFromAndWindBotID(WindInfoForRaceDTO windInfoForRaceDTO, String id) { WindTrackInfoDTO windTrackInfo = null; for (WindSource windSource : windInfoForRaceDTO.windTrackInfoByWindSource.keySet()) { if (windSource.getType().equals(WindSourceType.EXPEDITION) && windSource.getId() != null) { @@ -147,6 +161,7 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR logger.log(Level.INFO, "WindInfoForRaceDTO contains WindTrackInfoDTO for Windbot id " + windBotId); if (windTrackInfoDTO.windFixes != null) { if (windTrackInfoDTO.windFixes.size() > 0) { + dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); logger.log(Level.INFO, "Upating UI with Wind Fixes for WindBot id " + windBotId); SplitScheduler.get().schedule(new ScheduledCommand() { @@ -176,6 +191,7 @@ public class WindBotWidget extends Composite implements HasWidgets, WindBotDataR updateLocationPointerCompass(windTrackInfoDTO); } }); + showContentContainer(); } else { logger.log(Level.INFO, "WindTrackInfoDTO.windFixes is empty"); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.ui.xml index b8a85544567..be7b9f0b8ec 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.ui.xml @@ -8,8 +8,9 @@ - + +
@@ -31,5 +32,6 @@
+
\ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidgetResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidgetResources.java index 0eb49b7298c..fe2c852ec8a 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidgetResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidgetResources.java @@ -16,7 +16,7 @@ public interface WindBotWidgetResources extends ClientBundle { WindBotComponentGss gss(); public interface WindBotComponentGss extends CssResource { - String wind_bot_component(); + String wind_bot_widget(); String live_average_header(); String live_average_container(); String left(); 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 3c2c9fac4bd..58549155051 100644 --- 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 @@ -1258,9 +1258,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String valueDescending(); String sortBy(); - String dashboardWindBotLoadingText(); - String dashboardWindBotLoadingMessage(); - String dashboardWindBotNotAvailable(); + String dashboardNoWindBotAvailableHeader(); + String dashboardNoWindBotAvailableMessage(); String dashboardWindBot(); String dashboardTrueWindSpeed(); String dashboardTrueWindDirection(); 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 09c41726ee9..f83388faeb0 100644 --- 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 @@ -1221,9 +1221,8 @@ groupName=Group Name valueAscending=Value (Ascending) valueDescending=Value (Descending) sortBy=Sort by -dashboardWindBotLoadingText=Waiting for wind bot data... -dashboardWindBotLoadingMessage=Depending on your connection this operation might take some minutes to complete the first time. It can also take some time if there is no data available right now. -dashboardWindBotNotAvailable=Wind bot not available. +dashboardNoWindBotAvailableHeader=Wind Bot is not available. +dashboardNoWindBotAvailableMessage=To receive live wind data from wind measurement units, ensure that the wind bot is switched on and connected to the SAP Sailing Analytics. dashboardWindBot=Wind Bot dashboardTrueWindSpeed=TWS dashboardTrueWindDirection=TWD 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 e217a26038b..244bd4c493d 100644 --- 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 @@ -1212,9 +1212,8 @@ groupName=Gruppename valueAscending=Wert (Aufsteigend) valueDescending=Wert (Absteigend) sortBy=Sortiert nach -dashboardWindBotLoadingText=Lade Windmesser Daten ... -dashboardWindBotLoadingMessage=Je nach Qualität Ihrer Verbindung kann dieser Vorgang ein paar Minuten dauern. -dashboardWindBotNotAvailable=Keine Verbindung zu Windmesser. +dashboardNoWindBotAvailableHeader=Wind Bot nicht verfügbar. +dashboardNoWindBotAvailableMessage=Um live Daten von Wind Messgeräten zu empfangen, muss der Wind Bot mit der SAP Sailing Analytics verknüpft sein. dashboardWindBot=Windmesser dashboardTrueWindSpeed=Wind Geschwindigkeit dashboardTrueWindDirection=Wind Richtung 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 9a2fc64daea..2192e70d88e 100644 --- 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 @@ -1155,9 +1155,8 @@ groupName=Group Name valueAscending=Value (Ascending) valueDescending=Value (Descending) sortBy=Sort by -dashboardWindBotLoadingText=Loading wind bot data ... -dashboardWindBotLoadingMessage=Depending on your connection this operation might take some minutes to complete the first time. -dashboardWindBotNotAvailable=Wind bot not available. +dashboardNoWindBotAvailableHeader=Wind Bot not available. +dashboardNoWindBotAvailableMessage=To receive live wind data from wind measurement units, ensure that the wind bot is switched on and connected to the SAP Sailing Analytics. dashboardWindBot=Wind Bot dashboardTrueWindSpeed=TWS dashboardTrueWindDirection=TWD diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index fa030acbd6b..f5ef19a5919 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -984,7 +984,6 @@ overallStandings=总排名 setClosingTimePoint=Set Timepoint that closes open time range registeredCompetitors=Registered Competitors timePointMustBeBeforeEndOfTracking=Time point must be before end of tracking. -dashboardWindBotNotAvailable=Wind bot not available. untracked=Untracked scoringSchemeWinnerGetsEightAndInterpolation=High Point System, Winner 8 Points, Interpolated export=Export @@ -1255,8 +1254,8 @@ eventsCount[one]={0,number} event competitorsCount={0,number} competitors courseAreaName=Course area: {0} competitorsCount[one]={0,number} competitor� -dashboardWindBotLoadingText=Loading wind bot data ... -dashboardWindBotLoadingMessage=Depending on your connection this operation might take some minutes to complete the first time. +dashboardNoWindBotAvailableHeader=Wind Bot not available. +dashboardNoWindBotAvailableMessage=To receive live wind data from wind measurement units, ensure that the wind bot is switched on and connected to the SAP Sailing Analytics. dashboardNoStartlineAdvantagesByWindAvailableHeader=No Startline Advantages available. dashboardNoStartlineAdvantagesByWindAvailableMessage=For calculating the startline advantage there needs to be a course set by the race commitee. dashboardNoStartlineAdvantagesByGeometryAvailableHeader=No Startline Advantage available. From 782d0e4ea87a2a5e9bea6f924d11039cc10cf11f Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 3 Feb 2016 13:16:47 +0100 Subject: [PATCH 10/43] fixed start analysis header gss bug --- .../gwt/client/widgets/startanalysis/StartAnalysisWidget.gss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss index 7f329d28696..ce4c85784f8 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss @@ -11,6 +11,7 @@ } .current_start_panel { + position: absolute; height: DASHBOARD_SPACE_MEDIUM; top: DASHBOARD_SPACE_MEDIUM; line-height: DASHBOARD_SPACE_MEDIUM; @@ -20,7 +21,7 @@ width: 100%; text-align: center; font-weight: bold; - z-index: 3; + z-index: 4; } .controll_header_button { From 1f5be89e897bc0ab46632fa862bb09d025c28220 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 3 Feb 2016 15:42:10 +0100 Subject: [PATCH 11/43] adapted BottomNotification height to standart dashboard design --- .../notifications/bottom/BottomNotification.gss | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/bottom/BottomNotification.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/bottom/BottomNotification.gss index 627f472867f..656cd57794a 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/bottom/BottomNotification.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/bottom/BottomNotification.gss @@ -4,12 +4,12 @@ position: absolute !important; opacity: 0.9; background-color: #F0AB00; - height: 0pt; + height: 0px; width: 100%; - bottom: 0pt; + bottom: 0px; text-align: center; - font-size: 15pt; - line-height: 30pt; + font-size: DASHBOARD_FONT_SIZE_LARGE; + line-height: DASHBOARD_SPACE_MEDIUM; color: black; font-family: DASHBOARD_FONT_FAMILY; z-index: 2; @@ -20,8 +20,8 @@ -moz-transition: all 700ms cubic-bezier(0.480, -0.035, 0.000, 2.650); -o-transition: all 700ms cubic-bezier(0.480, -0.035, 0.000, 2.650); transition: all 700ms cubic-bezier(0.480, -0.035, 0.000, 2.650); - height: 30pt; - line-height: 30pt; + height: DASHBOARD_SPACE_MEDIUM; + line-height: DASHBOARD_SPACE_MEDIUM; } .hidden { @@ -29,6 +29,6 @@ -moz-transition: all 700ms cubic-bezier(0.480, -0.035, 0.000, 1.650); -o-transition: all 700ms cubic-bezier(0.480, -0.035, 0.000, 1.650); transition: all 700ms cubic-bezier(0.480, -0.035, 0.000, 1.650); - height: 0pt; - line-height: 0pt; + height: 0px; + line-height: 0px; } \ No newline at end of file From 9cb2d3fbe259e9714f515ba2ca5346259a2af271 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 3 Feb 2016 16:38:17 +0100 Subject: [PATCH 12/43] changed dashboard_size_medium to 35px --- .../dashboards/gwt/client/dashboardpanel/DashboardPanel.gss | 4 ++-- .../com/sap/sailing/dashboards/gwt/client/theme/Sizes.java | 4 ++-- .../wind/StartlineAdvantagesByWindWidget.gss | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss index 84f44d767e1..8cc12af0cc7 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss @@ -62,7 +62,7 @@ .startline_advantage_by_wind_container { position: absolute; - top: 163px; + top: 160px; right: 0px; left: 0px; bottom: 0%; @@ -73,7 +73,7 @@ top: 0px; right: 0px; left: 0px; - height: 150px + height: 145px } .windcharthint { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java index 134bb68f8b9..294a38ae9f9 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java @@ -8,12 +8,12 @@ public class Sizes { public static final String DASHBOARD_FONT_SIZE_VERY_SMALL = "10px"; public static final String DASHBOARD_FONT_SIZE_SMALL = "13px"; public static final String DASHBOARD_FONT_SIZE_MEDIUM = "14px"; - public static final String DASHBOARD_FONT_SIZE_LARGE = "18px"; + public static final String DASHBOARD_FONT_SIZE_LARGE = "16px"; public static final String DASHBOARD_FONT_SIZE_VERY_LARGE = "33px"; public static final String DASHBOARD_SPACE_VERY_SMALL = "10px"; public static final String DASHBOARD_SPACE_SMALL = "30px"; - public static final String DASHBOARD_SPACE_MEDIUM = "40px"; + public static final String DASHBOARD_SPACE_MEDIUM = "35px"; public static final String DASHBOARD_SPACE_LARGE = "50px"; public static final String DASHBOARD_SPACE_VERY_LARGE = "70px"; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss index a6f7d53219f..8b7cf56675d 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss @@ -16,7 +16,7 @@ .advantages_on_line_chart_container { position: absolute; - top: 150px; + top: 145px; width: 100%; bottom: 0px; } \ No newline at end of file From 2c0e06868fc1e2cdb70ce6c5c1e451f2bac026f8 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 4 Feb 2016 13:45:38 +0100 Subject: [PATCH 13/43] moved SettingsButtonWithSelectionIndicationLabel visually to StartAnalysisWidget --- ...ingsButtonWithSelectionIndicationLabel.css | 27 ------------- ...sButtonWithSelectionIndicationLabel.ui.xml | 13 ------- ...ingsButtonWithSelectionIndicationLabel.gss | 30 +++++++++++++++ ...ngsButtonWithSelectionIndicationLabel.java | 38 +++++++++++++++---- ...sButtonWithSelectionIndicationLabel.ui.xml | 13 +++++++ ...WithSelectionIndicationLabelResources.java | 23 +++++++++++ ...DashboardWidgetHeaderAndNoDataMessage.java | 3 +- .../startanalysis/StartAnalysisWidget.java | 29 +++++++------- .../startanalysis/StartAnalysisWidget.ui.xml | 8 +++- ...=> StartlineAdvantageByGeometryWidget.gss} | 0 ...> StartlineAdvantageByGeometryWidget.java} | 2 +- .../StartlineAdvantageByGeometryWidget.ui.xml | 2 +- ...eAdvantageByGeometryWidgetRessources.java} | 7 ++-- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 1 + .../ui/client/StringMessages_de.properties | 1 + .../ui/client/StringMessages_ru.properties | 1 + .../ui/client/StringMessages_zh.properties | 1 + 18 files changed, 127 insertions(+), 73 deletions(-) delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.css delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.ui.xml create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/{ => util}/SettingsButtonWithSelectionIndicationLabel.java (64%) create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabelResources.java rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/{StartLineAdvantageByGeometryWidget.gss => StartlineAdvantageByGeometryWidget.gss} (100%) rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/{StartLineAdvantageByGeometryWidget.java => StartlineAdvantageByGeometryWidget.java} (99%) rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/{StartLineAdvantageByGeometryWidgetRessources.java => StartlineAdvantageByGeometryWidgetRessources.java} (72%) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.css b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.css deleted file mode 100644 index 3231255779b..00000000000 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.css +++ /dev/null @@ -1,27 +0,0 @@ -@CHARSET "UTF-8"; - -.settings_button { - position: absolute !important; - height: 23.5pt; - width: 23.5pt; - right: 10pt; - top: 17.5pt; - z-index: 2; -} - -.settings_button_image { - height: 23.5pt; - width: 23.5pt; -} - -.settings_indication_label { - position: absolute; - width: 200pt; - height: 23.5pt; - margin-top: 17.5pt; - right: 43.5pt; - font-size: 12pt; - font-color: black; - text-align: right; - line-height: 23.5pt; -} \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.ui.xml deleted file mode 100644 index 865b2a2a998..00000000000 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.ui.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss new file mode 100644 index 00000000000..13b8a05581c --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss @@ -0,0 +1,30 @@ +@require 'theme'; + +.settings_button { + position: absolute !important; + height: DASHBOARD_SPACE_MEDIUM; + right: 0px; + top: 0px; + z-index: 3; +} + +.settings_button_image { + position: absolute; + height: 20px; + width: 20px; + top: 7.5px; + right: DASHBOARD_SPACE_VERY_SMALL; +} + +.settings_indication_label { + position: absolute; + width: 200px; + height: DASHBOARD_SPACE_MEDIUM; + top: 0px; + right: DASHBOARD_SPACE_MEDIUM; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; + font-color: black; + text-align: right; + line-height: DASHBOARD_SPACE_MEDIUM; + z-index: 3; +} \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.java similarity index 64% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.java rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.java index 05a92598d1c..ae42a596871 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/SettingsButtonWithSelectionIndicationLabel.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.java @@ -1,18 +1,22 @@ -package com.sap.sailing.dashboards.gwt.client.popups.competitorselection; +package com.sap.sailing.dashboards.gwt.client.popups.competitorselection.util; + +import java.util.Iterator; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FocusPanel; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.dashboards.gwt.client.dashboardpanel.DashboardPanelResources; -public class SettingsButtonWithSelectionIndicationLabel extends Composite { +public class SettingsButtonWithSelectionIndicationLabel extends Composite implements HasWidgets { private static SettingsButtonWithSelectionIndicationLabelUiBinder uiBinder = GWT .create(SettingsButtonWithSelectionIndicationLabelUiBinder.class); @@ -24,9 +28,6 @@ public class SettingsButtonWithSelectionIndicationLabel extends Composite { interface SettingsButtonWithSelectionIndicationLabelStyle extends CssResource { } - @UiField - SettingsButtonWithSelectionIndicationLabelStyle style; - @UiField FocusPanel settingsButton; @@ -34,9 +35,10 @@ public class SettingsButtonWithSelectionIndicationLabel extends Composite { Image settingsButtonImage; @UiField - Label settingsIndicationLabel; + HTMLPanel settingsIndicationLabel; public SettingsButtonWithSelectionIndicationLabel() { + SettingsButtonWithSelectionIndicationLabelResources.INSTANCE.gss().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); settingsButtonImage.setResource(DashboardPanelResources.INSTANCE.settings()); } @@ -46,6 +48,26 @@ public class SettingsButtonWithSelectionIndicationLabel extends Composite { } public void setSelectionIndicationTextOnLabel(String selectionIndicationText) { - settingsIndicationLabel.setText(selectionIndicationText); + settingsIndicationLabel.getElement().setInnerHTML(""+selectionIndicationText); + } + + @Override + public void add(Widget w) { + throw new UnsupportedOperationException("The method add(Widget w) is not supported."); + } + + @Override + public void clear() { + throw new UnsupportedOperationException("The method clear() is not supported."); + } + + @Override + public Iterator iterator() { + return null; + } + + @Override + public boolean remove(Widget w) { + return false; } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml new file mode 100644 index 00000000000..f861b9e6f43 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabelResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabelResources.java new file mode 100644 index 00000000000..82d55a42b68 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabelResources.java @@ -0,0 +1,23 @@ +package com.sap.sailing.dashboards.gwt.client.popups.competitorselection.util; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +/** + * @author Alexander Ries (D062114) + * + */ +public interface SettingsButtonWithSelectionIndicationLabelResources extends ClientBundle { + + public static final SettingsButtonWithSelectionIndicationLabelResources INSTANCE = GWT.create(SettingsButtonWithSelectionIndicationLabelResources.class); + + @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "SettingsButtonWithSelectionIndicationLabel.gss"}) + StartlineAdvantagesOnLineChartGSS gss(); + + public interface StartlineAdvantagesOnLineChartGSS extends CssResource { + String settings_button(); + String settings_button_image(); + String settings_indication_label(); + } +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java index d131ba6ede7..7fc95e6c677 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.java @@ -20,8 +20,7 @@ import com.google.gwt.user.client.ui.Widget; */ public class DashboardWidgetHeaderAndNoDataMessage extends Composite implements HasWidgets { - private static DashboardWidgetHeaderAndNoDataMessageUiBinder uiBinder = GWT - .create(DashboardWidgetHeaderAndNoDataMessageUiBinder.class); + private static DashboardWidgetHeaderAndNoDataMessageUiBinder uiBinder = GWT.create(DashboardWidgetHeaderAndNoDataMessageUiBinder.class); private static final int EXTRA_WIDTH_MESSAGE = 10; interface DashboardWidgetHeaderAndNoDataMessageUiBinder extends diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java index a74248fe2e5..876ebd123c8 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java @@ -31,7 +31,7 @@ import com.sap.sailing.dashboards.gwt.client.notifications.bottom.BottomNotifica import com.sap.sailing.dashboards.gwt.client.notifications.bottom.BottomNotificationType; import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.CompetitorSelectionListener; import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.CompetitorSelectionPopup; -import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.SettingsButtonWithSelectionIndicationLabel; +import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.util.SettingsButtonWithSelectionIndicationLabel; import com.sap.sailing.dashboards.gwt.client.widgets.PollsLiveDataEvery5Seconds; import com.sap.sailing.dashboards.gwt.client.widgets.header.DashboardWidgetHeaderAndNoDataMessage; import com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.card.StartAnalysisCard; @@ -66,6 +66,9 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @UiField(provided = true) DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; + @UiField(provided = true) + SettingsButtonWithSelectionIndicationLabel settingsButtonWithSelectionIndicationLabel; + @UiField HTMLPanel currentStartPanel; @@ -115,7 +118,6 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL private BottomNotification bottomNotification; private CompetitorSelectionPopup competitorSelectionPopup; - private SettingsButtonWithSelectionIndicationLabel settingsButtonWithSelectionIndicationLabel; private DashboardClientFactory dashboardClientFactory; @@ -130,8 +132,11 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL * Component that contains handles, displays and loads startanalysis cards. * */ public StartAnalysisWidget(DashboardClientFactory dashboardClientFactory) { - dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); StartAnalysisWidgetResources.INSTANCE.gss().ensureInjected(); + dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); + settingsButtonWithSelectionIndicationLabel = new SettingsButtonWithSelectionIndicationLabel(); + settingsButtonWithSelectionIndicationLabel.setSelectionIndicationTextOnLabel(StringMessages.INSTANCE.dashboardSelectCompetitor()); + addClickListenerToSettingsButtonAndLabel(); raceMapResources.combinedWindPanelStyle().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; pageChangeListener = new ArrayList(); @@ -142,10 +147,10 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL initLeftRightButtons(); initAndAddBottomNotification(); getCachedSelectedCompetitorOrAskForWithPopup(); - initAndAddSettingsButtonWithSelectionIndicationLabel(); + addClickListenerToSettingsButtonAndLabel(); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } - + private void initLeftRightButtons() { leftButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.leftdisabled()); left_focus_panel.addClickHandler(new ClickHandler() { @@ -216,11 +221,9 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL public void didClickOKWithSelectedCompetitor(CompetitorDTO competitor) { if (competitor != null) { Cookies.removeCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); - Cookies.setCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY, competitor.getIdAsString(), new Date( - new Date().getTime() + SELECTED_COMPETITOR_ID_COOKIE_KEY_EXPIRE_TIME_IN_MILLIS)); + Cookies.setCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY, competitor.getIdAsString(), new Date(new Date().getTime() + SELECTED_COMPETITOR_ID_COOKIE_KEY_EXPIRE_TIME_IN_MILLIS)); if (settingsButtonWithSelectionIndicationLabel != null) { - settingsButtonWithSelectionIndicationLabel.setSelectionIndicationTextOnLabel(competitor - .getName()); + settingsButtonWithSelectionIndicationLabel.setSelectionIndicationTextOnLabel(competitor.getName()); } loadStartAnalysisDTOsForCompetitorID(competitor.getIdAsString()); } @@ -263,8 +266,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL }); } - private void initAndAddSettingsButtonWithSelectionIndicationLabel() { - settingsButtonWithSelectionIndicationLabel = new SettingsButtonWithSelectionIndicationLabel(); + private void addClickListenerToSettingsButtonAndLabel() { settingsButtonWithSelectionIndicationLabel.addClickHandlerToSettingsButton(new ClickHandler() { @Override @@ -272,7 +274,6 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL loadCompetitorsAndShowCompetitorSelectionPopup(); } }); - RootPanel.get().add(settingsButtonWithSelectionIndicationLabel); } /** @@ -402,9 +403,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL private boolean displayedStartAnalysisCompetitorDifferentToRequestedOne() { String competitorIDFromDispalyedStartAnalysisDTOs = getCompetitorIdAsStringFromDisplayedStartAnalysisDTOs(); - if (competitorIDFromDispalyedStartAnalysisDTOs != null - && !(competitorIDFromDispalyedStartAnalysisDTOs.equals(Cookies - .getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY)))) { + if (competitorIDFromDispalyedStartAnalysisDTOs != null && !(competitorIDFromDispalyedStartAnalysisDTOs.equals(Cookies.getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY)))) { return true; } else { return false; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml index f8637e2ff30..3b54c554c6d 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml @@ -1,12 +1,16 @@ + xmlns:header="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.header" + xmlns:competitorselection="urn:import:com.sap.sailing.dashboards.gwt.client.popups.competitorselection.util"> - + + + + diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.gss similarity index 100% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidget.gss rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.gss diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java similarity index 99% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidget.java rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java index a7a0ac9961a..69e04669e74 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java @@ -49,7 +49,7 @@ public class StartlineAdvantageByGeometryWidget extends Composite implements Has private static final Logger logger = Logger.getLogger(StartlineAdvantagesByWindWidget.class.getName()); public StartlineAdvantageByGeometryWidget(DashboardClientFactory dashboardClientFactory) { - StartLineAdvantageByGeometryWidgetRessources.INSTANCE.gss().ensureInjected(); + StartlineAdvantageByGeometryWidgetRessources.INSTANCE.gss().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); advantageMaximumLiveAverage = new LiveAverageComponent(StringMessages.INSTANCE.metersUnit()); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.ui.xml index afb9f8b28c2..ae191af9880 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.ui.xml @@ -4,7 +4,7 @@ xmlns:util="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.startlineadvantage.util" xmlns:header="urn:import:com.sap.sailing.dashboards.gwt.client.widgets.header"> - + diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidgetRessources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidgetRessources.java similarity index 72% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidgetRessources.java rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidgetRessources.java index f29cf4f5887..f45bb80527e 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartLineAdvantageByGeometryWidgetRessources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidgetRessources.java @@ -5,16 +5,15 @@ import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; import com.google.gwt.resources.client.CssResource.Shared; -public interface StartLineAdvantageByGeometryWidgetRessources extends ClientBundle { +public interface StartlineAdvantageByGeometryWidgetRessources extends ClientBundle { - public static final StartLineAdvantageByGeometryWidgetRessources INSTANCE = GWT.create(StartLineAdvantageByGeometryWidgetRessources.class); + public static final StartlineAdvantageByGeometryWidgetRessources INSTANCE = GWT.create(StartlineAdvantageByGeometryWidgetRessources.class); - @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "StartLineAdvantageByGeometryWidget.gss"}) + @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "StartlineAdvantageByGeometryWidget.gss"}) StartLineAdvantageByGeometryGss gss(); @Shared public interface StartLineAdvantageByGeometryGss extends CssResource { - String start_line_advantage_by_geometry_widget(); String advantage_maximum_live_average(); } 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 9809fd0f657..422d4e598e1 100644 --- 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 @@ -1274,6 +1274,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String dashboardAverageWindMinutes(int minutes); String dashboardWindChartHint(); + String dashboardSelectCompetitor(); String dashboardStartAnalysesHeader(); String dashboardNewStartAnalysisAvailable(); String dashboardNoStartAnalysesAvailableHeader(); 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 df64153e4c8..da8eb9da5c9 100644 --- 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 @@ -1236,6 +1236,7 @@ dashboardLiveWind=live dashboardAverageWind=average dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Tap on chart to change interval +dashboardSelectCompetitor=Select Competitor dashboardStartAnalysesHeader=Start Analyses dashboardNewStartAnalysisAvailable=New start analysis available dashboardNoStartAnalysesAvailableHeader=No Start Analyses available. 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 f6b8d3ec4ef..b09c59ed465 100644 --- 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 @@ -1223,6 +1223,7 @@ dashboardLiveWind=live dashboardAverageWind=average dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Auf Chart drücken um Interval zu ändern +dashboardSelectCompetitor=Segler auswählen dashboardStartAnalysesHeader=Start Analysen dashboardNewStartAnalysisAvailable=Neue Start Analyse verfügbar. dashboardNoStartAnalysesAvailableHeader=Keine Start Analysen verfügbar. 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 774b52f1397..1aaded53a75 100644 --- 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 @@ -1167,6 +1167,7 @@ dashboardAverageWind=average dashboardAverageWindMinutes=({0} minutes) dashboardWindChartHint=Tap on chart to change interval dashboardStartAnalysesHeader=Start Analyses +dashboardSelectCompetitor=Select Competitor dashboardNewStartAnalysisAvailable=New start analysis available dashboardNoStartAnalysesAvailableHeader=No Start Analyses available. dashboardNoStartAnalysesAvailableMessage=There is a Start Analysis created from each race start. Please stand by till racing has been started. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 00b3061a573..a7b60160190 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -128,6 +128,7 @@ legend=Legend courseDesignerMode=Course designer configureLeaderboardUrlDescription=Configure a leaderboard and obtain the resulting URL from the link dashboardAverageWind=average +dashboardSelectCompetitor=Select Competitor welcomeToSailingAnalytics=Welcome to SAP Sailing Analytics courseOverGroundTrueDegreesTooltip=实际航向角度 mediaSelectVideoCaption={0} Videos From 0ca2187ae5a6422d359ebb5580fa6eb06c75c880 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 11 Feb 2016 09:48:01 +0100 Subject: [PATCH 14/43] start analysis does not require competitor selection --- .../actions/GetStartAnalysesAction.java | 14 +++- .../DashboardPanelResources.java | 3 - ...ingsButtonWithSelectionIndicationLabel.gss | 7 +- ...ngsButtonWithSelectionIndicationLabel.java | 34 +++++--- ...sButtonWithSelectionIndicationLabel.ui.xml | 17 ++-- ...WithSelectionIndicationLabelResources.java | 8 ++ .../gwt/client/widgets/ActionPanel.java | 64 +++++++++++++++ .../startanalysis/StartAnalysisWidget.java | 76 +++++++++++------- .../startanalysis/StartAnalysisWidget.ui.xml | 2 +- .../StartAnalysisCreationController.java | 20 ++--- .../StartAnalysisDTOFactory.java | 18 +++-- .../gwt/client/images/settings_disabled.png | Bin 0 -> 358 bytes 12 files changed, 187 insertions(+), 76 deletions(-) create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/ActionPanel.java create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/settings_disabled.png diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartAnalysesAction.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartAnalysesAction.java index d0446002a28..f10004dff49 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartAnalysesAction.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartAnalysesAction.java @@ -2,6 +2,8 @@ package com.sap.sailing.dashboards.gwt.client.actions; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; import com.google.gwt.core.shared.GwtIncompatible; import com.sap.sailing.dashboards.gwt.server.util.actions.startanalysis.StartAnalysisCreationController; @@ -24,6 +26,8 @@ public class GetStartAnalysesAction implements DashboardAction private String leaderboarName; private String competitorIdAsString; + + private static final Logger logger = Logger.getLogger(GetStartAnalysesAction.class.getName()); @SuppressWarnings("unused") private GetStartAnalysesAction() { @@ -39,10 +43,12 @@ public class GetStartAnalysesAction implements DashboardAction public StartAnalysesDTO execute(DashboardDispatchContext dashboardDispatchContext) throws DispatchException { StartAnalysesDTO result = new StartAnalysesDTO(); List startanalyses = new ArrayList(); - if (competitorIdAsString != null && leaderboarName != null) { + if (leaderboarName != null) { try { - Competitor competitor = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory().getCompetitorStore().getExistingCompetitorByIdAsString( - competitorIdAsString); + Competitor competitor = null; + if(competitorIdAsString != null) { + competitor = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory().getCompetitorStore().getExistingCompetitorByIdAsString(competitorIdAsString); + } Leaderboard leaderboard = dashboardDispatchContext.getRacingEventService().getLeaderboardByName(this.leaderboarName); if (leaderboard != null) { for (RaceColumn column : leaderboard.getRaceColumns()) { @@ -59,7 +65,7 @@ public class GetStartAnalysesAction implements DashboardAction } } catch (NullPointerException e) { - // logger.log(Level.INFO, "", e); + logger.log(Level.INFO, "", e); } } result.setStartAnalyses(startanalyses); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java index e3b7a8dddc4..600ec586c4a 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java @@ -16,9 +16,6 @@ public interface DashboardPanelResources extends ClientBundle { @Source("com/sap/sailing/dashboards/gwt/client/images/logo_sap.png") ImageResource logo_sap(); - @Source("com/sap/sailing/dashboards/gwt/client/images/settings.png") - ImageResource settings(); - @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "DashboardPanel.gss"}) DashboardGSS style(); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss index 13b8a05581c..a0a01d81059 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss @@ -5,6 +5,7 @@ height: DASHBOARD_SPACE_MEDIUM; right: 0px; top: 0px; + width: 200px; z-index: 3; } @@ -23,8 +24,12 @@ top: 0px; right: DASHBOARD_SPACE_MEDIUM; font-size: DASHBOARD_FONT_SIZE_MEDIUM; - font-color: black; + color: black; text-align: right; line-height: DASHBOARD_SPACE_MEDIUM; z-index: 3; +} + +.settings_indication_label_disabled { + color: DARK_GREY; } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.java index ae42a596871..04b6001a7ea 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.java @@ -3,18 +3,17 @@ package com.sap.sailing.dashboards.gwt.client.popups.competitorselection.util; import java.util.Iterator; import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.FocusPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.dashboards.gwt.client.dashboardpanel.DashboardPanelResources; +import com.sap.sailing.dashboards.gwt.client.widgets.ActionPanel; +import com.sap.sailing.dashboards.gwt.client.widgets.ActionPanel.ActionPanelListener; public class SettingsButtonWithSelectionIndicationLabel extends Composite implements HasWidgets { @@ -28,27 +27,40 @@ public class SettingsButtonWithSelectionIndicationLabel extends Composite implem interface SettingsButtonWithSelectionIndicationLabelStyle extends CssResource { } - @UiField - FocusPanel settingsButton; + @UiField(provided = true) + ActionPanel settingsButton; @UiField Image settingsButtonImage; - + @UiField HTMLPanel settingsIndicationLabel; public SettingsButtonWithSelectionIndicationLabel() { SettingsButtonWithSelectionIndicationLabelResources.INSTANCE.gss().ensureInjected(); + settingsButton = new ActionPanel(Event.TOUCHEVENTS, Event.ONCLICK); initWidget(uiBinder.createAndBindUi(this)); - settingsButtonImage.setResource(DashboardPanelResources.INSTANCE.settings()); + settingsButtonImage.setResource(SettingsButtonWithSelectionIndicationLabelResources.INSTANCE.settings()); } - public void addClickHandlerToSettingsButton(ClickHandler clickHandler){ - settingsButton.addClickHandler(clickHandler); + public void addActionListener(ActionPanelListener actionPanelListener) { + settingsButton.addActionPanelListener(actionPanelListener); } public void setSelectionIndicationTextOnLabel(String selectionIndicationText) { - settingsIndicationLabel.getElement().setInnerHTML(""+selectionIndicationText); + settingsIndicationLabel.getElement().setInnerHTML("" + selectionIndicationText); + } + + public void disable() { + settingsButton.disable(); + settingsButtonImage.setResource(SettingsButtonWithSelectionIndicationLabelResources.INSTANCE.settingsDisabled()); + settingsIndicationLabel.getElement().addClassName(SettingsButtonWithSelectionIndicationLabelResources.INSTANCE.gss().settings_indication_label_disabled()); + } + + public void enable() { + settingsButton.enable(); + settingsButtonImage.setResource(SettingsButtonWithSelectionIndicationLabelResources.INSTANCE.settings()); + settingsIndicationLabel.getElement().removeClassName(SettingsButtonWithSelectionIndicationLabelResources.INSTANCE.gss().settings_indication_label_disabled()); } @Override diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml index f861b9e6f43..e66b9729a24 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml @@ -1,13 +1,14 @@ - - - + xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:widget="urn:import:com.sap.sailing.dashboards.gwt.client.widgets"> + + + - - - - + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabelResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabelResources.java index 82d55a42b68..11e7703e8a6 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabelResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabelResources.java @@ -3,6 +3,7 @@ package com.sap.sailing.dashboards.gwt.client.popups.competitorselection.util; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; +import com.google.gwt.resources.client.ImageResource; /** * @author Alexander Ries (D062114) @@ -12,6 +13,12 @@ public interface SettingsButtonWithSelectionIndicationLabelResources extends Cli public static final SettingsButtonWithSelectionIndicationLabelResources INSTANCE = GWT.create(SettingsButtonWithSelectionIndicationLabelResources.class); + @Source("com/sap/sailing/dashboards/gwt/client/images/settings.png") + ImageResource settings(); + + @Source("com/sap/sailing/dashboards/gwt/client/images/settings_disabled.png") + ImageResource settingsDisabled(); + @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "SettingsButtonWithSelectionIndicationLabel.gss"}) StartlineAdvantagesOnLineChartGSS gss(); @@ -19,5 +26,6 @@ public interface SettingsButtonWithSelectionIndicationLabelResources extends Cli String settings_button(); String settings_button_image(); String settings_indication_label(); + String settings_indication_label_disabled(); } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/ActionPanel.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/ActionPanel.java new file mode 100644 index 00000000000..78d6d344820 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/ActionPanel.java @@ -0,0 +1,64 @@ +package com.sap.sailing.dashboards.gwt.client.widgets; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.ui.AbsolutePanel; + +/** + * @author Alexander Ries (D062114) + * + */ +public class ActionPanel extends AbsolutePanel { + + private List listeners; + private List eventsList; + + public ActionPanel(int... events) { + super(); + listeners = new ArrayList(); + eventsList = new ArrayList(); + for (int event : events) { + sinkEvents(event); + eventsList.add(Integer.valueOf(event)); + } + this.getElement().setAttribute("style", "-webkit-tap-highlight-color: rgba(0,0,0,0);"); + } + + public void enable() { + for(Integer eventAsInteger : eventsList) { + sinkEvents(eventAsInteger.intValue()); + } + } + + public void disable() { + for(Integer eventAsInteger : eventsList) { + unsinkEvents(eventAsInteger.intValue()); + } + } + + public void addActionPanelListener(ActionPanelListener actionPanelListener) { + listeners.add(actionPanelListener); + } + + public void removeActionPanelListener(ActionPanelListener actionPanelListener) { + listeners.remove(actionPanelListener); + } + + private void notifyActionPanelListenerAboutTriggeredEvent(Event event) { + for (ActionPanelListener actionPanelListener : listeners) { + actionPanelListener.eventTriggered(event); + } + } + + @Override + public void onBrowserEvent(Event event) { + notifyActionPanelListenerAboutTriggeredEvent(event); + super.onBrowserEvent(event); + } + + public interface ActionPanelListener { + public void eventTriggered(Event event); + } +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java index 876ebd123c8..46b6af8e038 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java @@ -15,6 +15,8 @@ import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.Cookies; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Event; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FocusPanel; @@ -32,6 +34,7 @@ import com.sap.sailing.dashboards.gwt.client.notifications.bottom.BottomNotifica import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.CompetitorSelectionListener; import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.CompetitorSelectionPopup; import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.util.SettingsButtonWithSelectionIndicationLabel; +import com.sap.sailing.dashboards.gwt.client.widgets.ActionPanel; import com.sap.sailing.dashboards.gwt.client.widgets.PollsLiveDataEvery5Seconds; import com.sap.sailing.dashboards.gwt.client.widgets.header.DashboardWidgetHeaderAndNoDataMessage; import com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.card.StartAnalysisCard; @@ -67,7 +70,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; @UiField(provided = true) - SettingsButtonWithSelectionIndicationLabel settingsButtonWithSelectionIndicationLabel; + SettingsButtonWithSelectionIndicationLabel selectedCompetitorWithSettingsButton; @UiField HTMLPanel currentStartPanel; @@ -134,8 +137,9 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL public StartAnalysisWidget(DashboardClientFactory dashboardClientFactory) { StartAnalysisWidgetResources.INSTANCE.gss().ensureInjected(); dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); - settingsButtonWithSelectionIndicationLabel = new SettingsButtonWithSelectionIndicationLabel(); - settingsButtonWithSelectionIndicationLabel.setSelectionIndicationTextOnLabel(StringMessages.INSTANCE.dashboardSelectCompetitor()); + selectedCompetitorWithSettingsButton = new SettingsButtonWithSelectionIndicationLabel(); + selectedCompetitorWithSettingsButton.disable(); + selectedCompetitorWithSettingsButton.setSelectionIndicationTextOnLabel(StringMessages.INSTANCE.dashboardSelectCompetitor()); addClickListenerToSettingsButtonAndLabel(); raceMapResources.combinedWindPanelStyle().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; @@ -146,11 +150,20 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL initCompetitorSelectionPopupAndAddCompetitorSelectionListener(); initLeftRightButtons(); initAndAddBottomNotification(); - getCachedSelectedCompetitorOrAskForWithPopup(); - addClickListenerToSettingsButtonAndLabel(); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } + private String getCachedSelectedCompetitorId() { + String result = null; + String selectedCompetitorId = Cookies.getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); + if(selectedCompetitorId == null || "undefined".equals(selectedCompetitorId)) { + result = null; + }else { + result = selectedCompetitorId; + } + return result; + } + private void initLeftRightButtons() { leftButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.leftdisabled()); left_focus_panel.addClickHandler(new ClickHandler() { @@ -175,6 +188,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @Override public void onFailure(Throwable caught) { logger.log(Level.INFO, "Failed to received startanalysis list, "+caught.getMessage()); + selectedCompetitorWithSettingsButton.disable(); dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); } @@ -183,7 +197,8 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL logger.log(Level.INFO, "Received startanalysis list"); if (result != null && !result.getStartAnalyses().isEmpty()) { dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); - if (displayedStartAnalysisCompetitorDifferentToRequestedOne()) { + selectedCompetitorWithSettingsButton.enable(); + if (displayedStartAnalysisForDifferentCompetitorToRequestedOne()) { removeAllStartAnalysisCards(); } if (result.getStartAnalyses().size() != starts.size()) { @@ -192,7 +207,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL logger.log(Level.INFO, "Updating UI with startanalysis list"); addNewStartAnalysisCards(result.getStartAnalyses()); showControllHeaderButtons(); - settingsButtonWithSelectionIndicationLabel.setSelectionIndicationTextOnLabel(result.getStartAnalyses().get(0).competitor.getName()); + selectedCompetitorWithSettingsButton.setSelectionIndicationTextOnLabel(result.getStartAnalyses().get(0).competitor.getName()); } else { logger.log(Level.INFO, "Received startanalysis list is null or empty"); dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); @@ -220,10 +235,12 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @Override public void didClickOKWithSelectedCompetitor(CompetitorDTO competitor) { if (competitor != null) { + selectedCompetitorWithSettingsButton.enable(); Cookies.removeCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); Cookies.setCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY, competitor.getIdAsString(), new Date(new Date().getTime() + SELECTED_COMPETITOR_ID_COOKIE_KEY_EXPIRE_TIME_IN_MILLIS)); - if (settingsButtonWithSelectionIndicationLabel != null) { - settingsButtonWithSelectionIndicationLabel.setSelectionIndicationTextOnLabel(competitor.getName()); + if (selectedCompetitorWithSettingsButton != null) { + selectedCompetitorWithSettingsButton.setSelectionIndicationTextOnLabel(competitor.getName()); + selectedCompetitorWithSettingsButton.enable(); } loadStartAnalysisDTOsForCompetitorID(competitor.getIdAsString()); } @@ -231,13 +248,6 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL }); } - private void getCachedSelectedCompetitorOrAskForWithPopup() { - String selectedCompetitorIdFromCookie = Cookies.getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); - if (selectedCompetitorIdFromCookie == null) { - loadCompetitorsAndShowCompetitorSelectionPopup(); - } - } - private void loadCompetitorsAndShowCompetitorSelectionPopup() { logger.log(Level.INFO, "Requesting Competitors in Leaderboard"); dashboardClientFactory.getDispatch().execute(new GetCompetitorInLeaderboardAction(DashboardURLParameters.LEADERBOARD_NAME.getValue()), new AsyncCallback() { @@ -255,6 +265,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } else { logger.log(Level.INFO, "Received competitors are null or empty"); dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); + selectedCompetitorWithSettingsButton.disable(); } } @@ -262,16 +273,26 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL public void onFailure(Throwable caught) { logger.log(Level.INFO, "Failed to received competitors for leaderboard name, "+caught.getMessage()); dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); + selectedCompetitorWithSettingsButton.disable(); } }); } private void addClickListenerToSettingsButtonAndLabel() { - settingsButtonWithSelectionIndicationLabel.addClickHandlerToSettingsButton(new ClickHandler() { + selectedCompetitorWithSettingsButton.addActionListener(new ActionPanel.ActionPanelListener() { @Override - public void onClick(ClickEvent event) { - loadCompetitorsAndShowCompetitorSelectionPopup(); + public void eventTriggered(Event event) { + switch (DOM.eventGetType(event)) { + case Event.ONTOUCHEND: { + loadCompetitorsAndShowCompetitorSelectionPopup(); + break; + } + case Event.ONCLICK: { + loadCompetitorsAndShowCompetitorSelectionPopup(); + return; + } + } } }); } @@ -391,8 +412,8 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } } - private String getCompetitorIdAsStringFromDisplayedStartAnalysisDTOs() { - String result = ""; + private String getCompetitorIdAsStringFromFirstDisplayedStartAnalysis() { + String result = null; if (starts != null && starts.size() > 0) { CompetitorDTO competitor = starts.get(0).competitor; if (competitor != null) @@ -401,9 +422,9 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL return result; } - private boolean displayedStartAnalysisCompetitorDifferentToRequestedOne() { - String competitorIDFromDispalyedStartAnalysisDTOs = getCompetitorIdAsStringFromDisplayedStartAnalysisDTOs(); - if (competitorIDFromDispalyedStartAnalysisDTOs != null && !(competitorIDFromDispalyedStartAnalysisDTOs.equals(Cookies.getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY)))) { + private boolean displayedStartAnalysisForDifferentCompetitorToRequestedOne() { + String competitorIDFromDispalyedStartAnalysisDTOs = getCompetitorIdAsStringFromFirstDisplayedStartAnalysis(); + if (competitorIDFromDispalyedStartAnalysisDTOs != null && !(competitorIDFromDispalyedStartAnalysisDTOs == getCachedSelectedCompetitorId())) { return true; } else { return false; @@ -412,12 +433,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @Override public void timeChanged(Date newTime, Date oldTime) { - String selectedCompetitorId = Cookies.getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); - if (selectedCompetitorId != null) { - loadStartAnalysisDTOsForCompetitorID(selectedCompetitorId); - } else { - loadCompetitorsAndShowCompetitorSelectionPopup(); - } + loadStartAnalysisDTOsForCompetitorID(getCachedSelectedCompetitorId()); } @Override diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml index 3b54c554c6d..d2893aa1d9e 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.ui.xml @@ -10,7 +10,7 @@ - + diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startanalysis/StartAnalysisCreationController.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startanalysis/StartAnalysisCreationController.java index c424e122404..cf6dc65b73a 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startanalysis/StartAnalysisCreationController.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startanalysis/StartAnalysisCreationController.java @@ -14,20 +14,20 @@ public final class StartAnalysisCreationController extends AbstractStartAnalysis private static final Logger logger = Logger.getLogger(StartAnalysisCreationController.class.getName()); - private StartAnalysisCreationController(DashboardDispatchContext ctx) { - - } - public static StartAnalysisDTO checkStartAnalysisForCompetitorInTrackedRace(DashboardDispatchContext dashboardDispatchContext, Competitor competitor, TrackedRace trackedRace) { StartAnalysisDTO result = null; - if (competitor != null && trackedRace != null) { - if (threeCompetitorsPassedSecondWayPoint(trackedRace) && raceProgressedFarEnough(competitor, trackedRace)) { - logger.log(Level.INFO, "Creating startanalysis for race " + trackedRace.getRace().getName() + " and competitor: " + competitor.getName()); - result = StartAnalysisDTOFactory.createStartAnalysisForCompetitorAndTrackedRace(dashboardDispatchContext, competitor, trackedRace); + if(trackedRace != null) { + if (competitor != null) { + if (threeCompetitorsPassedSecondWayPoint(trackedRace) && raceProgressedFarEnough(competitor, trackedRace)) { + logger.log(Level.INFO, "Creating startanalysis for race " + trackedRace.getRace().getName() + " and competitor: " + competitor.getName()); + result = StartAnalysisDTOFactory.createStartAnalysisForCompetitorAndTrackedRace(dashboardDispatchContext, competitor, trackedRace); + } else { + logger.log(Level.INFO, "Waiting to create startanalysis for race " + trackedRace.getRace().getName() + " and competitor: " + competitor.getName()); + } } else { - logger.log(Level.INFO, "Waiting to create startanalysis for race " + trackedRace.getRace().getName() + " and competitor: " + competitor.getName()); + result = StartAnalysisDTOFactory.createStartAnalysisForCompetitorAndTrackedRace(dashboardDispatchContext, competitor, trackedRace); } - } + } return result; } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startanalysis/StartAnalysisDTOFactory.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startanalysis/StartAnalysisDTOFactory.java index a2de29ccd6d..13dbb033026 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startanalysis/StartAnalysisDTOFactory.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startanalysis/StartAnalysisDTOFactory.java @@ -45,19 +45,22 @@ public final class StartAnalysisDTOFactory extends AbstractStartAnalysisCreation List competitors = new ArrayList(); Waypoint secondWaypoint = trackedRace.getRace().getCourse().getFirstLeg().getTo(); List markPassingsInOrder = convertMarkpPassingsIteratorToList(trackedRace.getMarkPassingsInOrder(secondWaypoint).iterator()); - boolean isCompetitorOneOfFirstThree = false; + boolean isCompetitorNullOrOneOfFirstThreeCompetitors = false; for (int i = 0; i < MINIMUM_MARKPASSIINGS_AT_FIRST_MARK; i++) { competitors.add(createStartAnalysisCompetitorDTO(dashboardDispatchContext, trackedRace, i + 1, markPassingsInOrder.get(i).getCompetitor())); - if (markPassingsInOrder.get(i).getCompetitor().equals(competitor)) { - isCompetitorOneOfFirstThree = true; + if (competitor == null || markPassingsInOrder.get(i).getCompetitor().equals(competitor)) { + isCompetitorNullOrOneOfFirstThreeCompetitors = true; } } - if (!isCompetitorOneOfFirstThree) { + if (competitor != null && !isCompetitorNullOrOneOfFirstThreeCompetitors) { int rankOfCompetitorWhilePassingSecondWaypoint = getRankOfCompetitorWhilePassingSecondWaypoint(competitor, trackedRace); competitors.add(createStartAnalysisCompetitorDTO(dashboardDispatchContext, trackedRace, rankOfCompetitorWhilePassingSecondWaypoint, competitor)); } - startAnalysisDTO.competitor = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory().getCompetitorStore().convertToCompetitorDTO(competitor); + if (competitor != null) { + startAnalysisDTO.competitor = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory().getCompetitorStore().convertToCompetitorDTO(competitor); + logger.log(Level.INFO, "Created startanalysis for competitor"+competitor); + } startAnalysisDTO.startAnalysisCompetitorDTOs = competitors; final Boolean isGateStart = trackedRace.isGateStart(); if(isGateStart == Boolean.TRUE){ @@ -77,7 +80,7 @@ public final class StartAnalysisDTOFactory extends AbstractStartAnalysisCreation startAnalysisDTO.tailLenghtInMilliseconds = ONE_MINUTE_INTERVALL_IN_MILLISECONDS; } startAnalysisDTO.regattaAndRaceIdentifier = trackedRace.getRaceIdentifier(); - logger.log(Level.INFO, "Created startanalysis for competitor " + competitor.getName() + " and "+ trackedRace.getRace().getName()); + logger.log(Level.INFO, "Created startanalysis for "+ trackedRace.getRace().getName()); return startAnalysisDTO; } @@ -185,8 +188,7 @@ public final class StartAnalysisDTOFactory extends AbstractStartAnalysisCreation } } - private static StartAnalysisCompetitorDTO createStartAnalysisCompetitorDTO(DashboardDispatchContext dashboardDispatchContext, TrackedRace trackedRace, int rank, - Competitor competitor) { + private static StartAnalysisCompetitorDTO createStartAnalysisCompetitorDTO(DashboardDispatchContext dashboardDispatchContext, TrackedRace trackedRace, int rank, Competitor competitor) { StartAnalysisCompetitorDTO startAnalysisCompetitorDTOsForRace = new StartAnalysisCompetitorDTO(); startAnalysisCompetitorDTOsForRace.competitorDTO = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory().getCompetitorStore() .convertToCompetitorDTO(competitor); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/settings_disabled.png b/java/com.sap.sailing.dashboards.gwt/src/main/resources/com/sap/sailing/dashboards/gwt/client/images/settings_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..559e4f252f631354fee2186ef913080a3d0bd3d5 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&pIsiG^2`K_H$1WYlL*7srr@!%xE<`Hm=X=p1SP@IU)W)p!$^U1#bnV8LG-hi{{&uMl;E6>OWD)v|=NV@k31^+n5;6Z+h$e zoX&C!%{Xd*BKD+ww~^S@3(m)6h5Wg1-F#PT^|tZ;eb#zM1+;*JbxwIQjtK$^=4nvns@N}S2!F#bor?Jj32#^q`pn$?rgbOtv_o+s`V^k+XA`8 w=Nbj0S8JL2pZ1@(`f8KlK5m6y?=4~)`TNaR8{9bl3lt&@p00i_>zopr02X40y#N3J literal 0 HcmV?d00001 From b3c79cce78d20d58167de60ebc9204b06e703f75 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 11 Feb 2016 11:36:40 +0100 Subject: [PATCH 15/43] introduced DashboardHeader --- .../gwt/client/header/DashboardHeader.gss | 44 +++++++++++++ .../gwt/client/header/DashboardHeader.java | 66 +++++++++++++++++++ .../gwt/client/header/DashboardHeader.ui.xml | 14 ++++ .../header/DashboardHeaderResources.java | 28 ++++++++ 4 files changed, 152 insertions(+) create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.ui.xml create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeaderResources.java diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss new file mode 100644 index 00000000000..6d75db35172 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss @@ -0,0 +1,44 @@ +@require 'theme'; + +.sap_logo { + position: absolute; + height: DASHBOARD_SPACE_MEDIUM; + width: auto; + top: 0px; + left: 0px; + z-index: 1; +} + +.event_race_container { + position: absolute; + height: DASHBOARD_FONT_SIZE_MEDIUM; + width: 100%; + top: 0px; + color: LIGHT_TEXT_COLOR; +} + +.event { + width: 100%; + height: DASHBOARD_FONT_SIZE_MEDIUM; + top: DASHBOARD_SPACE_VERY_SMALL; + line-height: DASHBOARD_FONT_SIZE_MEDIUM; + vertical-align: middle; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; + font-family: DASHBOARD_FONT_FAMILY; + text-align: center; + font-weight: bold; + overflow: visible; +} + +.race { + width: 100%; + height: DASHBOARD_FONT_SIZE_SMALL; + margin-top: DASHBOARD_SPACE_VERY_SMALL; + line-height: DASHBOARD_FONT_SIZE_SMALL; + vertical-align: middle; + font-size: DASHBOARD_FONT_SIZE_SMALL; + font-family: DASHBOARD_FONT_FAMILY; + text-align: center; + font-weight: bold; + overflow: visible; +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java new file mode 100644 index 00000000000..f8c801e5957 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java @@ -0,0 +1,66 @@ +package com.sap.sailing.dashboards.gwt.client.header; + +import java.util.Iterator; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.resources.client.CssResource; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HasWidgets; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.Widget; + +public class DashboardHeader extends Composite implements HasWidgets { + + private static DashboardHeaderUiBinder uiBinder = GWT.create(DashboardHeaderUiBinder.class); + + interface DashboardHeaderUiBinder extends UiBinder { + } + + interface SettingsButtonWithSelectionIndicationLabelStyle extends CssResource { + } + @UiField + Image sapLogo; + + @UiField + DivElement event; + + @UiField + DivElement race; + + public DashboardHeader() { + DashboardHeaderResources.INSTANCE.gss().ensureInjected(); + initWidget(uiBinder.createAndBindUi(this)); + sapLogo.setResource(DashboardHeaderResources.INSTANCE.sapLogo()); + } + + public void setEventText(String eventName) { + event.setInnerHTML(eventName); + } + + public void setRaceText(String raceName) { + race.setInnerHTML(raceName); + } + + @Override + public void add(Widget w) { + throw new UnsupportedOperationException("The method add(Widget w) is not supported."); + } + + @Override + public void clear() { + throw new UnsupportedOperationException("The method clear() is not supported."); + } + + @Override + public Iterator iterator() { + return null; + } + + @Override + public boolean remove(Widget w) { + return false; + } +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.ui.xml new file mode 100644 index 00000000000..cd7a0ab64d9 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.ui.xml @@ -0,0 +1,14 @@ + + + + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeaderResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeaderResources.java new file mode 100644 index 00000000000..8f573fd6dba --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeaderResources.java @@ -0,0 +1,28 @@ +package com.sap.sailing.dashboards.gwt.client.header; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; +import com.google.gwt.resources.client.ImageResource; + +/** + * @author Alexander Ries (D062114) + * + */ +public interface DashboardHeaderResources extends ClientBundle { + + public static final DashboardHeaderResources INSTANCE = GWT.create(DashboardHeaderResources.class); + + @Source("com/sap/sailing/dashboards/gwt/client/images/logo_sap.png") + ImageResource sapLogo(); + + @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "DashboardHeader.gss"}) + DashboardHeaderGSS gss(); + + public interface DashboardHeaderGSS extends CssResource { + String sap_logo(); + String event_race_container(); + String event(); + String race(); + } +} From 2d32db5c7136e15cb56a33c80300740cb76d746d Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 11 Feb 2016 13:39:23 +0100 Subject: [PATCH 16/43] deleted event logo class and moved dashboard header logic with logo and header in seperate class --- .../RibDashboard.css | 8 -- .../client/dashboardpanel/DashboardPanel.gss | 31 +++--- .../client/dashboardpanel/DashboardPanel.java | 101 ++++++++---------- .../dashboardpanel/DashboardPanel.ui.xml | 13 ++- .../DashboardPanelResources.java | 8 +- .../gwt/client/eventlogo/EventLogo.java | 60 ----------- .../gwt/client/header/DashboardHeader.gss | 3 +- ...ingsButtonWithSelectionIndicationLabel.gss | 4 +- ...sButtonWithSelectionIndicationLabel.ui.xml | 3 +- 9 files changed, 73 insertions(+), 158 deletions(-) delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/eventlogo/EventLogo.java diff --git a/java/com.sap.sailing.dashboards.gwt/RibDashboard.css b/java/com.sap.sailing.dashboards.gwt/RibDashboard.css index 12a90199883..a3e0db5e436 100644 --- a/java/com.sap.sailing.dashboards.gwt/RibDashboard.css +++ b/java/com.sap.sailing.dashboards.gwt/RibDashboard.css @@ -26,11 +26,3 @@ width: 100% !important; height: 100% !important; } - -.eventLogo { - position: absolute; - right: 12.5px; - bottom: 10px; - height: 22.5pt; - z-index: 1; -} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss index 8cc12af0cc7..4b39cf8682b 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss @@ -1,18 +1,5 @@ @require 'theme'; -.bar { - height: 100%; - margin-top: 20pt; - line-height: 15pt; - vertical-align: middle; - font-size: 15pt; - font-family: DASHBOARD_FONT_FAMILY; - width: 100%; - text-align: center; - font-weight: bold; - overflow: visible; -} - .page { position: absolute; border: none; @@ -22,15 +9,12 @@ top: 0; bottom: 30pt; margin: 5pt; + margin-top: 0px; } -.logo { - position: absolute; - width: 48pt; - height: 23.5pt; - margin-top: 17.5pt; +.header { + margin-top:20px; margin-left: 10pt; - z-index: 1; } .collumn { @@ -113,3 +97,12 @@ text-align: center; top: 50%; } + +.event_logo { + position: absolute; + height: DASHBOARD_SPACE_MEDIUM; + width: auto; + right: 10pt; + bottom: 10pt; + z-index: 1; +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java index a6af70ed2dc..ebf3c73257e 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java @@ -2,13 +2,17 @@ package com.sap.sailing.dashboards.gwt.client.dashboardpanel; import java.util.Date; import java.util.List; +import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Document; +import com.google.gwt.dom.client.Style.Visibility; +import com.google.gwt.safehtml.shared.UriUtils; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; @@ -20,7 +24,7 @@ import com.sap.sailing.dashboards.gwt.client.DashboardClientFactory; import com.sap.sailing.dashboards.gwt.client.actions.GetIDFromRaceThatIsLiveAction; import com.sap.sailing.dashboards.gwt.client.dataretriever.NumberOfWindBotsChangeListener; import com.sap.sailing.dashboards.gwt.client.dataretriever.WindBotDataRetrieverProvider; -import com.sap.sailing.dashboards.gwt.client.eventlogo.EventLogo; +import com.sap.sailing.dashboards.gwt.client.header.DashboardHeader; import com.sap.sailing.dashboards.gwt.client.notifications.orientation.WrongDeviceOrientationNotification; import com.sap.sailing.dashboards.gwt.client.widgets.PollsLiveDataEvery5Seconds; import com.sap.sailing.dashboards.gwt.client.widgets.startanalysis.StartAnalysisWidget; @@ -31,6 +35,8 @@ import com.sap.sailing.dashboards.gwt.shared.DashboardURLParameters; import com.sap.sailing.dashboards.gwt.shared.dto.RaceIdDTO; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.EventDTO; +import com.sap.sse.gwt.client.media.ImageDTO; /** * This class contains all components of the Dashboard and the basic UI Elements of the Dashboard, like top and bottom @@ -47,9 +53,9 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL @UiField LayoutPanel root; - + @UiField - HTMLPanel header; + DashboardHeader header; @UiField Carousel carousel; @@ -69,6 +75,9 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL @UiField public HTMLPanel windcharthint; + @UiField + public Image eventLogo; + @UiField(provided = true) public StartAnalysisWidget startanalysisComponent; @@ -89,26 +98,46 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL startlineAdvantageByGeometryWidget = new StartlineAdvantageByGeometryWidget(this.dashboardClientFactory); stringConstants = StringMessages.INSTANCE; initWidget(uiBinder.createAndBindUi(this)); - initLogos(); windcharthint.getElement().setInnerText(stringConstants.dashboardWindChartHint()); - loadAndAddEventLogo(dashboardClientFactory.getSailingService()); + loadEventLogoAndName(dashboardClientFactory.getSailingService()); initAndAddWrongOrientationNotification(); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } - - private void initLogos() { - Image logo = new Image(); - logo.setResource(DashboardPanelResources.INSTANCE.logo_sap()); - logo.getElement().addClassName(DashboardPanelResources.INSTANCE.style().logo()); - Document.get().getBody().appendChild(logo.getElement()); - } - private void loadAndAddEventLogo(SailingServiceAsync sailingServiceAsync){ + private void loadEventLogoAndName(SailingServiceAsync sailingServiceAsync){ String eventId = DashboardURLParameters.EVENT_ID.getValue(); if (eventId != null) { - EventLogo eventLogo = EventLogo.getEventLogoFromEventId(sailingServiceAsync, eventId); - if (eventLogo != null) { - Document.get().getBody().appendChild(eventLogo.getElement()); + try { + final UUID eventUUID = UUID.fromString(eventId); + logger.log(Level.INFO, "Loading EventDTO for id " + eventId); + sailingServiceAsync.getEventById(eventUUID, true, new AsyncCallback() { + @Override + public void onSuccess(final EventDTO event) { + logger.log(Level.INFO, "Received EventDTO"); + if (event != null) { + final ImageDTO logo = event.getLogoImage(); + if (logo != null) { + eventLogo.getElement().setAttribute("src", UriUtils.fromString(logo.getSourceRef()).asString()); + } else { + eventLogo.getElement().getStyle().setVisibility(Visibility.HIDDEN); + } + if (event.getName() != null) { + header.setEventText(event.getName()); + Window.setTitle("Dashboard - "+event.getName()); + } + } else { + logger.log(Level.INFO, "Received EventDTO is null"); + } + } + + @Override + public void onFailure(Throwable caught) { + logger.log(Level.INFO, "Failed to received EventDTO, "+caught.getMessage()); + eventLogo.getElement().getStyle().setVisibility(Visibility.HIDDEN); + } + }); + } catch (IllegalArgumentException e) { + eventLogo.getElement().getStyle().setVisibility(Visibility.HIDDEN); } } } @@ -117,24 +146,6 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL WrongDeviceOrientationNotification wrongDeviceOrientationNotification = new WrongDeviceOrientationNotification(); Document.get().getBody().appendChild(wrongDeviceOrientationNotification.getElement()); } - -// private void addWindBotComponentsAsDataRetrieverListener(WindBotDataRetrieverProvider windBotDataRetrieverProvider) { -// for (WindBotWidget windBotComponent : windBotComponents) { -// logger.log(Level.INFO, "Registering WindBotDataRetrieverListener"); -// windBotDataRetrieverProvider.addWindBotDataRetrieverListener(windBotComponent); -// } -// } -// -// private void removeWindBotComponentsAsDataRetrieverListener( -// WindBotDataRetrieverProvider windBotDataRetrieverProvider) { -// for (WindBotWidget windBotComponent : windBotComponents) { -// windBotDataRetrieverProvider.removeWindBotDataRetrieverListener(windBotComponent); -// } -// } - - private void setHeaderText(String raceName) { - this.header.getElement().setInnerText(raceName); - } @Override public void timeChanged(Date newTime, Date oldTime) { @@ -147,7 +158,7 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL public void onSuccess(RaceIdDTO result) { if (result != null && result.getRaceId() != null) { logger.log(Level.INFO, "Updating UI with live race id"); - setHeaderText(result.getRaceId().getRaceName()); + header.setRaceText(result.getRaceId().getRaceName()); } else { logger.log(Level.INFO, "Received null for live race id"); } @@ -186,24 +197,4 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL logger.log(Level.INFO, "Number of available windbots changed. WindBots List is null"); } } -// -// private void initWindBotComponents(List windBotIDs, -// WindBotDataRetrieverProvider windBotDataRetrieverProvider) { -// int windBotAddedCounterTOConsiderForPanels = 0; -// removeWindBotComponentsAsDataRetrieverListener(windBotDataRetrieverProvider); -// windBotComponents.clear(); -// for (String windBotID : windBotIDs) { -// if (windBotAddedCounterTOConsiderForPanels == 0) { -// WindBotWidget leftwindBotComponent = new WindBotWidget(windBotID, dashboardClientFactory); -// leftwindbotcontainer.add(leftwindBotComponent); -// windBotComponents.add(leftwindBotComponent); -// } else if (windBotAddedCounterTOConsiderForPanels == 1) { -// WindBotWidget rightwindBotComponent = new WindBotWidget(windBotID, dashboardClientFactory); -// rightwindbotcontainer.add(rightwindBotComponent); -// windBotComponents.add(rightwindBotComponent); -// } -// windBotAddedCounterTOConsiderForPanels++; -// } -// addWindBotComponentsAsDataRetrieverListener(windBotDataRetrieverProvider); -// } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml index f524089f0cd..94eb1010e74 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.ui.xml @@ -1,6 +1,7 @@ - - + + - + @@ -40,8 +41,10 @@ - - + + + + diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java index 600ec586c4a..e612a74c085 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java @@ -7,25 +7,20 @@ package com.sap.sailing.dashboards.gwt.client.dashboardpanel; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; -import com.google.gwt.resources.client.ImageResource; public interface DashboardPanelResources extends ClientBundle { public static final DashboardPanelResources INSTANCE = GWT.create(DashboardPanelResources.class); - @Source("com/sap/sailing/dashboards/gwt/client/images/logo_sap.png") - ImageResource logo_sap(); - @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "DashboardPanel.gss"}) DashboardGSS style(); public interface DashboardGSS extends CssResource { - String bar(); String page(); + String header(); String collumn(); String startanalysiscollumn(); String collumnthree(); - String logo(); String right(); String left(); String startline_advantage_by_wind_container(); @@ -33,5 +28,6 @@ public interface DashboardPanelResources extends ClientBundle { String windcharthint(); String windloadinghint(); String windloadinghinttext(); + String event_logo(); } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/eventlogo/EventLogo.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/eventlogo/EventLogo.java deleted file mode 100644 index bf051376afb..00000000000 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/eventlogo/EventLogo.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.sap.sailing.dashboards.gwt.client.eventlogo; - -import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.google.gwt.dom.client.Style.Visibility; -import com.google.gwt.safehtml.shared.UriUtils; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Image; -import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -import com.sap.sailing.gwt.ui.shared.EventDTO; -import com.sap.sse.gwt.client.media.ImageDTO; - -public class EventLogo extends Image { - - private static final Logger logger = Logger.getLogger(EventLogo.class.getName()); - - protected EventLogo() { - super(); - this.getElement().addClassName("eventLogo"); - } - - public static EventLogo getEventLogoFromEventId(SailingServiceAsync sailingServiceAsync, String eventId) { - final EventLogo eventLogo = new EventLogo(); - try { - final UUID eventUUID = UUID.fromString(eventId); - logger.log(Level.INFO, "Loading EventDTO for id " + eventId); - sailingServiceAsync.getEventById(eventUUID, true, new AsyncCallback() { - @Override - public void onSuccess(final EventDTO event) { - logger.log(Level.INFO, "Received EventDTO"); - if (event != null) { - final ImageDTO logo = event.getLogoImage(); - if (logo != null) { - eventLogo.getElement().setAttribute("src", UriUtils.fromString(logo.getSourceRef()).asString()); - } else { - eventLogo.getElement().getStyle().setVisibility(Visibility.HIDDEN); - } - if (event.getName() != null) { - Window.setTitle(event.getName() + " Dashboard"); - } - } else { - logger.log(Level.INFO, "Received EventDTO is null"); - } - } - - @Override - public void onFailure(Throwable caught) { - logger.log(Level.INFO, "Failed to received EventDTO, "+caught.getMessage()); - eventLogo.getElement().getStyle().setVisibility(Visibility.HIDDEN); - } - }); - } catch (IllegalArgumentException e) { - eventLogo.getElement().getStyle().setVisibility(Visibility.HIDDEN); - } - return eventLogo; - } -} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss index 6d75db35172..486b5d2f856 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss @@ -33,12 +33,11 @@ .race { width: 100%; height: DASHBOARD_FONT_SIZE_SMALL; - margin-top: DASHBOARD_SPACE_VERY_SMALL; + margin-top: 5px; line-height: DASHBOARD_FONT_SIZE_SMALL; vertical-align: middle; font-size: DASHBOARD_FONT_SIZE_SMALL; font-family: DASHBOARD_FONT_FAMILY; text-align: center; - font-weight: bold; overflow: visible; } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss index a0a01d81059..9f3787cb833 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss @@ -5,7 +5,7 @@ height: DASHBOARD_SPACE_MEDIUM; right: 0px; top: 0px; - width: 200px; + width: 300px; z-index: 3; } @@ -19,7 +19,7 @@ .settings_indication_label { position: absolute; - width: 200px; + width: 300px; height: DASHBOARD_SPACE_MEDIUM; top: 0px; right: DASHBOARD_SPACE_MEDIUM; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml index e66b9729a24..a3b023bd9b8 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.ui.xml @@ -1,6 +1,7 @@ + xmlns:g="urn:import:com.google.gwt.user.client.ui" + xmlns:widget="urn:import:com.sap.sailing.dashboards.gwt.client.widgets"> From d57485fcd0664735f81e5a1374eff328528e0f7d Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 11 Feb 2016 13:52:56 +0100 Subject: [PATCH 17/43] changed font-size of windchart hint --- .../client/dashboardpanel/DashboardPanel.gss | 34 +++---------------- .../DashboardPanelResources.java | 2 -- 2 files changed, 4 insertions(+), 32 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss index 4b39cf8682b..e7151291ce6 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.gss @@ -62,42 +62,16 @@ .windcharthint { position: absolute; - bottom: 0px; - height: 15pt; - line-height: 15pt; - margin-top: 0px; + height: DASHBOARD_FONT_SIZE_SMALL; + line-height: DASHBOARD_FONT_SIZE_SMALL; + bottom: 3px; vertical-align: middle; - font-size: 12pt; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; font-family: DASHBOARD_FONT_FAMILY; width: 100%; text-align: center; } -.windloadinghint { - position: absolute; - background-color: white; - opacity: 0.4; - width: 100%; - height: 100%; - vertical-align: middle; - text-align: center; - z-index: 0; -} - -.windloadinghinttext { - position: absolute; - bottom: 0px; - height: 15pt; - line-height: 15pt; - margin-top: 0pt; - vertical-align: middle; - font-size: 12pt; - font-family: DASHBOARD_FONT_FAMILY; - width: 100%; - text-align: center; - top: 50%; -} - .event_logo { position: absolute; height: DASHBOARD_SPACE_MEDIUM; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java index e612a74c085..c7e147925a4 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanelResources.java @@ -26,8 +26,6 @@ public interface DashboardPanelResources extends ClientBundle { String startline_advantage_by_wind_container(); String startline_advantage_by_geometry_container(); String windcharthint(); - String windloadinghint(); - String windloadinghinttext(); String event_logo(); } } From 2346ad97c8768d7a1014a7f23ff6c2985475fa69 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 11 Feb 2016 14:34:43 +0100 Subject: [PATCH 18/43] renamed blureffect to darkeningeffect --- .../WrongDeviceOrientationNotification.java | 6 ++-- .../gwt/client/visualeffects/BlurEffect.java | 34 ------------------- .../{BlurEffect.css => DarkeningEffect.css} | 4 +-- .../client/visualeffects/DarkeningEffect.java | 34 +++++++++++++++++++ ...ctStyle.java => DarkeningEffectStyle.java} | 6 ++-- .../visualeffects/VisualEffectsResources.java | 4 +-- 6 files changed, 44 insertions(+), 44 deletions(-) delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffect.java rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/{BlurEffect.css => DarkeningEffect.css} (83%) create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffect.java rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/{BlurEffectStyle.java => DarkeningEffectStyle.java} (61%) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.java index 6ae4e7f05d4..2226eec74e0 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.java @@ -7,7 +7,7 @@ import com.google.gwt.user.client.ui.RootLayoutPanel; import com.sap.sailing.dashboards.gwt.client.device.Orientation; import com.sap.sailing.dashboards.gwt.client.device.OrientationListener; import com.sap.sailing.dashboards.gwt.client.device.OrientationType; -import com.sap.sailing.dashboards.gwt.client.visualeffects.BlurEffect; +import com.sap.sailing.dashboards.gwt.client.visualeffects.DarkeningEffect; import com.sap.sse.common.Util.Pair; public class WrongDeviceOrientationNotification extends AbsolutePanel implements OrientationListener { @@ -37,13 +37,13 @@ public class WrongDeviceOrientationNotification extends AbsolutePanel implements public void show() { this.removeStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().hidden()); this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().shown()); - BlurEffect.getInstance().addToView(RootLayoutPanel.get()); + DarkeningEffect.getInstance().addToView(RootLayoutPanel.get()); } public void hide() { this.removeStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().shown()); this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().hidden()); - BlurEffect.getInstance().removeFromView(RootLayoutPanel.get()); + DarkeningEffect.getInstance().removeFromView(RootLayoutPanel.get()); } @Override diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffect.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffect.java deleted file mode 100644 index 17dbdb55da4..00000000000 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffect.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.sap.sailing.dashboards.gwt.client.visualeffects; - -import com.google.gwt.core.shared.GWT; -import com.google.gwt.user.client.ui.Widget; - - -public class BlurEffect { - - private static BlurEffect INSTANCE = null; - private VisualEffectsResources visualEffectsResources = GWT.create(VisualEffectsResources.class); - - private BlurEffect() { - visualEffectsResources.blurEffectStyle().ensureInjected(); - } - - public static BlurEffect getInstance() { - synchronized (BlurEffect.class) { - if (INSTANCE == null) { - INSTANCE = new BlurEffect(); - } - } - return INSTANCE; - } - - public void addToView(Widget widget){ - widget.removeStyleName(visualEffectsResources.blurEffectStyle().not_blurred()); - widget.addStyleName(visualEffectsResources.blurEffectStyle().blurred()); - } - - public void removeFromView(Widget widget){ - widget.removeStyleName(visualEffectsResources.blurEffectStyle().blurred()); - widget.addStyleName(visualEffectsResources.blurEffectStyle().not_blurred()); - } -} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffect.css b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffect.css similarity index 83% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffect.css rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffect.css index 7e1020ab331..8ac04b47d18 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffect.css +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffect.css @@ -1,11 +1,11 @@ @CHARSET "UTF-8"; -.blurred { +.darkened { -webkit-filter: brightness(0.7); filter: brightness(0.7); } -.not_blurred { +.not_darkened { -webkit-filter: brightness(1); filter: brightness(1); } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffect.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffect.java new file mode 100644 index 00000000000..5e04ce0f60c --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffect.java @@ -0,0 +1,34 @@ +package com.sap.sailing.dashboards.gwt.client.visualeffects; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.user.client.ui.Widget; + + +public class DarkeningEffect { + + private static DarkeningEffect INSTANCE = null; + private VisualEffectsResources visualEffectsResources = GWT.create(VisualEffectsResources.class); + + private DarkeningEffect() { + visualEffectsResources.darkeningEffectStyle().ensureInjected(); + } + + public static DarkeningEffect getInstance() { + synchronized (DarkeningEffect.class) { + if (INSTANCE == null) { + INSTANCE = new DarkeningEffect(); + } + } + return INSTANCE; + } + + public void addToView(Widget widget){ + widget.removeStyleName(visualEffectsResources.darkeningEffectStyle().not_darkened()); + widget.addStyleName(visualEffectsResources.darkeningEffectStyle().darkened()); + } + + public void removeFromView(Widget widget){ + widget.removeStyleName(visualEffectsResources.darkeningEffectStyle().darkened()); + widget.addStyleName(visualEffectsResources.darkeningEffectStyle().not_darkened()); + } +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffectStyle.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffectStyle.java similarity index 61% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffectStyle.java rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffectStyle.java index ec1306d820f..2d3709361d3 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/BlurEffectStyle.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/DarkeningEffectStyle.java @@ -4,10 +4,10 @@ import com.google.gwt.resources.client.CssResource; import com.google.gwt.resources.client.CssResource.Shared; @Shared -public interface BlurEffectStyle extends CssResource{ +public interface DarkeningEffectStyle extends CssResource{ - public String blurred(); + public String darkened(); - public String not_blurred(); + public String not_darkened(); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/VisualEffectsResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/VisualEffectsResources.java index f87efb9d50c..84c29f0f843 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/VisualEffectsResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/visualeffects/VisualEffectsResources.java @@ -4,6 +4,6 @@ import com.google.gwt.resources.client.ClientBundle; public interface VisualEffectsResources extends ClientBundle{ - @Source("BlurEffect.css") - BlurEffectStyle blurEffectStyle(); + @Source("DarkeningEffect.css") + DarkeningEffectStyle darkeningEffectStyle(); } From 631042e47ec47b22ae30304a049db8aa8cc61d3a Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 11 Feb 2016 16:27:21 +0100 Subject: [PATCH 19/43] added border radius to widgets and selected inner widget elements --- .../dashboards/gwt/client/theme/Sizes.java | 3 +-- .../dashboards/gwt/client/theme/theme.gss | 4 +++- .../DashboardWidgetHeaderAndNoDataMessage.gss | 2 +- .../startanalysis/StartAnalysisWidget.gss | 19 +++++++++++++++---- .../StartlineAdvantageByGeometryWidget.gss | 2 ++ .../wind/StartlineAdvantagesByWindWidget.gss | 2 ++ .../client/widgets/windbot/WindBotWidget.gss | 2 ++ .../compass/LocationPointerCompass.gss | 4 +++- 8 files changed, 29 insertions(+), 9 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java index 294a38ae9f9..358eebd3f13 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java @@ -10,12 +10,11 @@ public class Sizes { public static final String DASHBOARD_FONT_SIZE_MEDIUM = "14px"; public static final String DASHBOARD_FONT_SIZE_LARGE = "16px"; public static final String DASHBOARD_FONT_SIZE_VERY_LARGE = "33px"; - public static final String DASHBOARD_SPACE_VERY_SMALL = "10px"; public static final String DASHBOARD_SPACE_SMALL = "30px"; public static final String DASHBOARD_SPACE_MEDIUM = "35px"; public static final String DASHBOARD_SPACE_LARGE = "50px"; public static final String DASHBOARD_SPACE_VERY_LARGE = "70px"; - public static final String DASHBOARD_LINE_HEIGHT = "20px"; + public static final String DASHBOARD_BORDER_RADIUS = "5px"; } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss index 381bfb1aa43..521cb0321a5 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss @@ -26,4 +26,6 @@ @def DASHBOARD_SPACE_LARGE eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_LARGE"); @def DASHBOARD_SPACE_VERY_LARGE eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_SPACE_VERY_LARGE"); -@def DASHBOARD_LINE_HEIGHT eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_LINE_HEIGHT"); \ No newline at end of file +@def DASHBOARD_LINE_HEIGHT eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_LINE_HEIGHT"); + +@def DASHBOARD_BORDER_RADIUS eval("com.sap.sailing.dashboards.gwt.client.theme.Sizes.DASHBOARD_BORDER_RADIUS"); \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.gss index 375f05dd36a..adb86fb010e 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/header/DashboardWidgetHeaderAndNoDataMessage.gss @@ -14,7 +14,7 @@ overflow: visible; background-color: WHITE; border-bottom:solid LIGHT_GREY 1px; - z-index: 3; + z-index: 4; } .dashboard_widget_no_data_message_container { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss index ce4c85784f8..8fcf048eeb0 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss @@ -2,12 +2,14 @@ .startanalysis { position: absolute; - overflow: hidden; background-color: LIGHT_GREY; left: 0pt; right: 0pt; top: 0pt; bottom: 0pt; + border-radius: DASHBOARD_BORDER_RADIUS; + overflow: hidden; + z-index: 5; } .current_start_panel { @@ -32,6 +34,7 @@ background-color: WHITE; z-index: 1; opacity: 0.0; + border-radius: DASHBOARD_BORDER_RADIUS; } .controll_header_button_visible { @@ -73,11 +76,19 @@ .card { position: absolute; - display: inline; width: 75%; height: 100%; - margin-top: 1px; /*Shows otherwise small line at top edge*/ - overflow: hidden; +/* margin-top: 1px; Shows otherwise small line at top edge */ + border-radius: DASHBOARD_BORDER_RADIUS !important; + overflow: hidden !important; + /* + Chrome and Safari are having problems with border radius and animation. + http://stackoverflow.com/questions/14383632/webkit-border-radius-and-overflow-bug-when-using-any-animation-transition + */ + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0) } .card_map_container { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.gss index a99fab8a986..b8fccaeba4b 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.gss @@ -5,6 +5,8 @@ height: 100%; width: 100%; background-color: LIGHT_GREY; + border-radius: DASHBOARD_BORDER_RADIUS; + overflow: hidden; } .advantage_maximum_live_average { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss index 8b7cf56675d..0a0fe674631 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.gss @@ -5,6 +5,8 @@ height: 100%; width: 100%; background-color: LIGHT_GREY; + border-radius: DASHBOARD_BORDER_RADIUS; + overflow: hidden; } .advantage_maximum_live_average { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss index 30eb28e2bcd..12939789ba7 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/WindBotWidget.gss @@ -6,6 +6,8 @@ width: 100%; background-color: LIGHT_GREY; z-index: 5; + border-radius: DASHBOARD_BORDER_RADIUS; + overflow: hidden; } .live_average_header { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.gss index c58525afaf0..c75ec51b3cb 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.gss @@ -8,7 +8,9 @@ top: 0px; right: 13px; z-index: 5; - /*border-bottom-left-radius: 2em;*/ + border-bottom-left-radius: DASHBOARD_BORDER_RADIUS; + border-bottom-right-radius: DASHBOARD_BORDER_RADIUS; + overflow:hidden; } .compass{ From 4f51bb7a6f89544b4176998b01b677bdfe55a96b Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Mon, 15 Feb 2016 13:57:57 +0100 Subject: [PATCH 20/43] adapted WrongOrienationNotification to new dashboard design --- .../WrongDeviceOrientationNotification.gss | 26 ++++++++++++++-- .../WrongDeviceOrientationNotification.java | 30 +++++++++++-------- ...eviceOrientationNotificationResources.java | 3 ++ 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.gss index 948368c90ee..4a5a8fcfbd3 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.gss @@ -1,11 +1,33 @@ @require 'theme'; +.notification_background { + position: absolute !important; + top: 0px; + bottom: 0px; + right: 0px; + left: 0px; + background-color: DARK_GREY; + -webkit-transition: all 300ms; + -moz-transition: all 300ms; + -o-transition: all 300ms; + transition: all 300ms; + z-index: 7; +} + +.notification_background_shown { + opacity: 1.0; +} + +.notification_background_hidden { + opacity: 0.0; +} + .notification { position: absolute !important; top: 50%; right: 50%; - background-color: white; - z-index: 2; + background-color: WHITE; + z-index: 8; } .shown { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.java index 2226eec74e0..c4944053911 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.java @@ -3,47 +3,53 @@ package com.sap.sailing.dashboards.gwt.client.notifications.orientation; import com.google.gwt.user.client.ui.AbsolutePanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.RootLayoutPanel; import com.sap.sailing.dashboards.gwt.client.device.Orientation; import com.sap.sailing.dashboards.gwt.client.device.OrientationListener; import com.sap.sailing.dashboards.gwt.client.device.OrientationType; -import com.sap.sailing.dashboards.gwt.client.visualeffects.DarkeningEffect; import com.sap.sse.common.Util.Pair; public class WrongDeviceOrientationNotification extends AbsolutePanel implements OrientationListener { private Label rotateDeviceLabel; + private AbsolutePanel notification; public WrongDeviceOrientationNotification() { super(); WrongDeviceOrientationNotificationResources.INSTANCE.gss().ensureInjected(); - this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().notification()); - this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().hidden()); + this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().notification_background()); + this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().notification_background_hidden()); + notification = new AbsolutePanel(); + notification.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().notification()); + notification.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().hidden()); Image rotateDeviceIcon = new Image(); rotateDeviceIcon.setResource(WrongDeviceOrientationNotificationResources.INSTANCE.rotatedevice()); rotateDeviceIcon.getElement().addClassName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().logo()); - add(rotateDeviceIcon); + notification.add(rotateDeviceIcon); rotateDeviceLabel = new Label(); rotateDeviceLabel.getElement().addClassName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().text()); rotateDeviceLabel.setText("Rotate Device"); - add(rotateDeviceLabel); + notification.add(rotateDeviceLabel); + + this.add(notification); Orientation.getInstance().addListener(this); Orientation.getInstance().triggerDeviceOrientationRead(); } public void show() { - this.removeStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().hidden()); - this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().shown()); - DarkeningEffect.getInstance().addToView(RootLayoutPanel.get()); + this.removeStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().notification_background_hidden()); + this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().notification_background_shown()); + notification.removeStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().hidden()); + notification.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().shown()); } public void hide() { - this.removeStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().shown()); - this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().hidden()); - DarkeningEffect.getInstance().removeFromView(RootLayoutPanel.get()); + this.removeStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().notification_background_shown()); + this.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().notification_background_hidden()); + notification.removeStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().shown()); + notification.addStyleName(WrongDeviceOrientationNotificationResources.INSTANCE.gss().hidden()); } @Override diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotificationResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotificationResources.java index 43b88ebcfed..b341950f9ab 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotificationResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotificationResources.java @@ -20,6 +20,9 @@ public interface WrongDeviceOrientationNotificationResources extends ClientBundl WrongDeviceNotificationGSS gss(); public interface WrongDeviceNotificationGSS extends CssResource { + public String notification_background(); + public String notification_background_shown(); + public String notification_background_hidden(); public String notification(); public String shown(); public String hidden(); From 89ceea126efc6fd55befc4173c9efd69401d5660 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Mon, 15 Feb 2016 15:49:51 +0100 Subject: [PATCH 21/43] fixed bug with wrong orientation notification --- .../orientation/WrongDeviceOrientationNotification.gss | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.gss index 4a5a8fcfbd3..a6b8e377386 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/notifications/orientation/WrongDeviceOrientationNotification.gss @@ -3,22 +3,20 @@ .notification_background { position: absolute !important; top: 0px; - bottom: 0px; - right: 0px; left: 0px; background-color: DARK_GREY; - -webkit-transition: all 300ms; - -moz-transition: all 300ms; - -o-transition: all 300ms; - transition: all 300ms; z-index: 7; } .notification_background_shown { + width: 100%; + height: 100%; opacity: 1.0; } .notification_background_hidden { + width: 0px; + height: 0px; opacity: 0.0; } From 52f1f9cc68a976c655fe2c6220bd3d69c834b660 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Mon, 15 Feb 2016 16:17:19 +0100 Subject: [PATCH 22/43] changed design of page indicator dots --- .../com.sap.sailing.dashboards.gwt/RibDashboard.css | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/RibDashboard.css b/java/com.sap.sailing.dashboards.gwt/RibDashboard.css index a3e0db5e436..f256d2a1b33 100644 --- a/java/com.sap.sailing.dashboards.gwt/RibDashboard.css +++ b/java/com.sap.sailing.dashboards.gwt/RibDashboard.css @@ -1,10 +1,11 @@ + .mgwt-Carousel-Indicator { - width: 12.5pt; - height: 12.5pt; + width: 10px; + height: 10px; background-color: #666666; - border-radius: 0pt; - margin: 5pt; - margin-bottom: 12.5pt; + border-radius: 5px; + margin: 5px; + margin-bottom: 20px; } .mgwt-Carousel-Indicator-active { @@ -25,4 +26,4 @@ position: absolute !important; width: 100% !important; height: 100% !important; -} +} \ No newline at end of file From 6fbef3666e066c00eaec3b80bb48d8aa8478ea19 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Mon, 15 Feb 2016 18:19:21 +0100 Subject: [PATCH 23/43] added Dashboard as header for dashboard --- .../sailing/dashboards/gwt/client/header/DashboardHeader.java | 2 ++ .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_zh.properties | 1 + 6 files changed, 7 insertions(+) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java index f8c801e5957..06f11109183 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java @@ -11,6 +11,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.client.StringMessages; public class DashboardHeader extends Composite implements HasWidgets { @@ -34,6 +35,7 @@ public class DashboardHeader extends Composite implements HasWidgets { DashboardHeaderResources.INSTANCE.gss().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); sapLogo.setResource(DashboardHeaderResources.INSTANCE.sapLogo()); + setEventText(StringMessages.INSTANCE.dashboardHeader()); } public void setEventText(String eventName) { 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 422d4e598e1..9e5e5e760c2 100644 --- 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 @@ -1262,6 +1262,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String valueDescending(); String sortBy(); + String dashboardHeader(); String dashboardNoWindBotAvailableHeader(); String dashboardNoWindBotAvailableMessage(); String dashboardWindBot(); 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 da8eb9da5c9..52099fb0724 100644 --- 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 @@ -1225,6 +1225,7 @@ groupName=Group Name valueAscending=Value (Ascending) valueDescending=Value (Descending) sortBy=Sort by +dashboardHeader=Dashboard dashboardNoWindBotAvailableHeader=Wind Bot is not available. dashboardNoWindBotAvailableMessage=To receive live wind data from wind measurement units, ensure that the wind bot is switched on and connected to the SAP Sailing Analytics. dashboardWindBot=Wind Bot 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 b09c59ed465..dd1d95a756b 100644 --- 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 @@ -1212,6 +1212,7 @@ groupName=Gruppename valueAscending=Wert (Aufsteigend) valueDescending=Wert (Absteigend) sortBy=Sortiert nach +dashboardHeader=Dashboard dashboardNoWindBotAvailableHeader=Wind Bot nicht verfügbar. dashboardNoWindBotAvailableMessage=Um live Daten von Wind Messgeräten zu empfangen, muss der Wind Bot mit der SAP Sailing Analytics verknüpft sein. dashboardWindBot=Windmesser 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 1aaded53a75..06a74b1fdd9 100644 --- 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 @@ -1155,6 +1155,7 @@ groupName=Group Name valueAscending=Value (Ascending) valueDescending=Value (Descending) sortBy=Sort by +dashboardHeader=Dashboard dashboardNoWindBotAvailableHeader=Wind Bot not available. dashboardNoWindBotAvailableMessage=To receive live wind data from wind measurement units, ensure that the wind bot is switched on and connected to the SAP Sailing Analytics. dashboardWindBot=Wind Bot diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index a7b60160190..de5de2a2559 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -127,6 +127,7 @@ raceLogReloaded=Race log successfully reloaded from database legend=Legend courseDesignerMode=Course designer configureLeaderboardUrlDescription=Configure a leaderboard and obtain the resulting URL from the link +dashboardHeader=Dashboard dashboardAverageWind=average dashboardSelectCompetitor=Select Competitor welcomeToSailingAnalytics=Welcome to SAP Sailing Analytics From fe4601a873aa2d0d53d403daa39d8a6309a2c09f Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Mon, 15 Feb 2016 18:19:54 +0100 Subject: [PATCH 24/43] fixed logic bug with competitorselection and cookies at startanalysiswidget --- ...ingsButtonWithSelectionIndicationLabel.gss | 2 +- .../startanalysis/StartAnalysisWidget.java | 151 ++++++++++-------- 2 files changed, 85 insertions(+), 68 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss index 9f3787cb833..f7c5fdf100a 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/util/SettingsButtonWithSelectionIndicationLabel.gss @@ -6,7 +6,7 @@ right: 0px; top: 0px; width: 300px; - z-index: 3; + z-index: 5; } .settings_button_image { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java index 46b6af8e038..7677383f7fa 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java @@ -48,10 +48,9 @@ import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; /** * The class contains an collection of {@link StartAnalysisCard}s that are displayed in horizontal aligned pages. It - * shows only one {@link StartAnalysisCard} at a time and enables the user to switch between - * {@link StartAnalysisCard}s with left and right buttons represented by {@link #left_focus_panel} and - * {@link #right_focus_panel}. When a new {@link StartAnalysisCard} gets added to the component it shows a - * {@link BottomNotification}. + * shows only one {@link StartAnalysisCard} at a time and enables the user to switch between {@link StartAnalysisCard}s + * with left and right buttons represented by {@link #left_focus_panel} and {@link #right_focus_panel}. When a new + * {@link StartAnalysisCard} gets added to the component it shows a {@link BottomNotification}. * * @author Alexander Ries (D062114) * @@ -65,13 +64,13 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL interface StartlineAnalysis extends CssResource { } - + @UiField(provided = true) DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; - + @UiField(provided = true) SettingsButtonWithSelectionIndicationLabel selectedCompetitorWithSettingsButton; - + @UiField HTMLPanel currentStartPanel; @@ -80,10 +79,10 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @UiField HTMLPanel leftButton; - + @UiField Image rightButtonImage; - + @UiField Image leftButtonImage; @@ -114,23 +113,23 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL * Amount of {@link StartAnalysisCard}s in {@link #startanalysis_card_container}. * */ private int numberOfStartAnalysisCards = 0; - private boolean displaysCards; private List starts; private List pageChangeListener; private BottomNotification bottomNotification; - private CompetitorSelectionPopup competitorSelectionPopup; - private DashboardClientFactory dashboardClientFactory; - private static final String SELECTED_COMPETITOR_ID_COOKIE_KEY = "selectedCompetitorId"; + private final String cookieKeyForSelectedCompetitorInLeaderboard; + + private static final String SELECTED_COMPETITOR_IN_LEADERBOARD_COOKIE_KEY_FIRST_PART = "competitorId"; private static final int SELECTED_COMPETITOR_ID_COOKIE_KEY_EXPIRE_TIME_IN_MILLIS = 60 * 1000 * 60 * 5; private static final int SCROLL_OFFSET_STARTANALYSIS_CARDS = 80; private static final double MARGIN_LEFT_STARTANALYSIS_CARD = 12.5; private static final Logger logger = Logger.getLogger(StartAnalysisWidget.class.getName()); private static final RaceMapResources raceMapResources = GWT.create(DashboardRaceMapResources.class); + /** * Component that contains handles, displays and loads startanalysis cards. * */ @@ -145,6 +144,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL this.dashboardClientFactory = dashboardClientFactory; pageChangeListener = new ArrayList(); starts = new ArrayList(); + cookieKeyForSelectedCompetitorInLeaderboard = computeCookieKeyForSelectedCompetitorInLeaderboard(); initWidget(uiBinder.createAndBindUi(this)); dashboardWidgetHeaderAndNoDataMessage.setHeaderText(StringMessages.INSTANCE.dashboardStartAnalysesHeader()); initCompetitorSelectionPopupAndAddCompetitorSelectionListener(); @@ -152,18 +152,23 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL initAndAddBottomNotification(); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } - + + private String computeCookieKeyForSelectedCompetitorInLeaderboard() { + String result = SELECTED_COMPETITOR_IN_LEADERBOARD_COOKIE_KEY_FIRST_PART+DashboardURLParameters.LEADERBOARD_NAME.getValue(); + return result; + } + private String getCachedSelectedCompetitorId() { String result = null; - String selectedCompetitorId = Cookies.getCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); - if(selectedCompetitorId == null || "undefined".equals(selectedCompetitorId)) { + String selectedCompetitorId = Cookies.getCookie(cookieKeyForSelectedCompetitorInLeaderboard); + if (selectedCompetitorId == null || "undefined".equals(selectedCompetitorId)) { result = null; - }else { + } else { result = selectedCompetitorId; } return result; } - + private void initLeftRightButtons() { leftButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.leftdisabled()); left_focus_panel.addClickHandler(new ClickHandler() { @@ -181,39 +186,43 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL }); } - private void loadStartAnalysisDTOsForCompetitorID(String competitorIdAsString){ + private void loadStartAnalysisDTOsForCompetitorID(String competitorIdAsString) { logger.log(Level.INFO, "Loading startanalysis for competitor id " + competitorIdAsString); - dashboardClientFactory.getDispatch().execute(new GetStartAnalysesAction(DashboardURLParameters.LEADERBOARD_NAME.getValue(), competitorIdAsString), new AsyncCallback() { + dashboardClientFactory.getDispatch().execute( + new GetStartAnalysesAction(DashboardURLParameters.LEADERBOARD_NAME.getValue(), competitorIdAsString), + new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - logger.log(Level.INFO, "Failed to received startanalysis list, "+caught.getMessage()); - selectedCompetitorWithSettingsButton.disable(); - dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); - } + @Override + public void onFailure(Throwable caught) { + logger.log(Level.INFO, "Failed to received startanalysis list, "+caught.getMessage()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); + selectedCompetitorWithSettingsButton.disable(); + } - @Override - public void onSuccess(StartAnalysesDTO result) { - logger.log(Level.INFO, "Received startanalysis list"); - if (result != null && !result.getStartAnalyses().isEmpty()) { - dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); - selectedCompetitorWithSettingsButton.enable(); - if (displayedStartAnalysisForDifferentCompetitorToRequestedOne()) { - removeAllStartAnalysisCards(); - } - if (result.getStartAnalyses().size() != starts.size()) { - showNotificationForNewStartAnalysis(); - } - logger.log(Level.INFO, "Updating UI with startanalysis list"); - addNewStartAnalysisCards(result.getStartAnalyses()); - showControllHeaderButtons(); - selectedCompetitorWithSettingsButton.setSelectionIndicationTextOnLabel(result.getStartAnalyses().get(0).competitor.getName()); - } else { - logger.log(Level.INFO, "Received startanalysis list is null or empty"); - dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); - } - } - }); + @Override + public void onSuccess(StartAnalysesDTO result) { + logger.log(Level.INFO, "Received startanalysis list"); + if (result != null && !result.getStartAnalyses().isEmpty()) { + dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); + if (displayedStartAnalysisForDifferentCompetitorToRequestedOne()) { + removeAllStartAnalysisCards(); + } + if (result.getStartAnalyses().size() != starts.size()) { + showNotificationForNewStartAnalysis(); + } + logger.log(Level.INFO, "Updating UI with startanalysis list"); + addNewStartAnalysisCards(result.getStartAnalyses()); + showControllHeaderButtons(); + if (result.getStartAnalyses().get(0).competitor != null) { + selectedCompetitorWithSettingsButton.setSelectionIndicationTextOnLabel(result.getStartAnalyses().get(0).competitor.getName()); + } + selectedCompetitorWithSettingsButton.enable(); + } else { + logger.log(Level.INFO, "Received startanalysis list is null or empty"); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); + } + } + }); } private void initAndAddBottomNotification() { @@ -235,12 +244,10 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @Override public void didClickOKWithSelectedCompetitor(CompetitorDTO competitor) { if (competitor != null) { - selectedCompetitorWithSettingsButton.enable(); - Cookies.removeCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY); - Cookies.setCookie(SELECTED_COMPETITOR_ID_COOKIE_KEY, competitor.getIdAsString(), new Date(new Date().getTime() + SELECTED_COMPETITOR_ID_COOKIE_KEY_EXPIRE_TIME_IN_MILLIS)); + Cookies.removeCookie(cookieKeyForSelectedCompetitorInLeaderboard); + Cookies.setCookie(cookieKeyForSelectedCompetitorInLeaderboard, competitor.getIdAsString(), new Date(new Date().getTime()+SELECTED_COMPETITOR_ID_COOKIE_KEY_EXPIRE_TIME_IN_MILLIS)); if (selectedCompetitorWithSettingsButton != null) { selectedCompetitorWithSettingsButton.setSelectionIndicationTextOnLabel(competitor.getName()); - selectedCompetitorWithSettingsButton.enable(); } loadStartAnalysisDTOsForCompetitorID(competitor.getIdAsString()); } @@ -250,12 +257,15 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL private void loadCompetitorsAndShowCompetitorSelectionPopup() { logger.log(Level.INFO, "Requesting Competitors in Leaderboard"); - dashboardClientFactory.getDispatch().execute(new GetCompetitorInLeaderboardAction(DashboardURLParameters.LEADERBOARD_NAME.getValue()), new AsyncCallback() { + dashboardClientFactory.getDispatch().execute( + new GetCompetitorInLeaderboardAction(DashboardURLParameters.LEADERBOARD_NAME.getValue()), + new AsyncCallback() { @Override public void onSuccess(LeaderboardCompetitorsDTO result) { logger.log(Level.INFO, "Received competitors for leaderboard name"); if (result.getCompetitors() != null && result.getCompetitors().size() > 0) { + selectedCompetitorWithSettingsButton.enable(); if (!competitorSelectionPopup.isShown()) { logger.log(Level.INFO, "Showing CompetitorSelectionPopup with competitors"); competitorSelectionPopup.show(result.getCompetitors()); @@ -264,15 +274,20 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } } else { logger.log(Level.INFO, "Received competitors are null or empty"); - dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage( + StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), + StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); selectedCompetitorWithSettingsButton.disable(); } } - + @Override public void onFailure(Throwable caught) { - logger.log(Level.INFO, "Failed to received competitors for leaderboard name, "+caught.getMessage()); - dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); + logger.log(Level.INFO, + "Failed to received competitors for leaderboard name, " + caught.getMessage()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage( + StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableHeader(), + StringMessages.INSTANCE.dashboardNoStartAnalysesAvailableMessage()); selectedCompetitorWithSettingsButton.disable(); } }); @@ -341,10 +356,12 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL } } } - + private void showControllHeaderButtons() { - leftButton.getElement().addClassName(StartAnalysisWidgetResources.INSTANCE.gss().controll_header_button_visible()); - rightButton.getElement().addClassName(StartAnalysisWidgetResources.INSTANCE.gss().controll_header_button_visible()); + leftButton.getElement().addClassName( + StartAnalysisWidgetResources.INSTANCE.gss().controll_header_button_visible()); + rightButton.getElement().addClassName( + StartAnalysisWidgetResources.INSTANCE.gss().controll_header_button_visible()); } private void scrollToLast() { @@ -372,8 +389,8 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL rightButtonImage.setResource(StartAnalysisWidgetResources.INSTANCE.right()); } final StartAnalysisCard startlineAnalysisCard = new StartAnalysisCard(numberOfStartAnalysisCards - * SCROLL_OFFSET_STARTANALYSIS_CARDS + MARGIN_LEFT_STARTANALYSIS_CARD, numberOfStartAnalysisCards, startAnalysisDTO, - dashboardClientFactory.getSailingService(), raceMapResources); + * SCROLL_OFFSET_STARTANALYSIS_CARDS + MARGIN_LEFT_STARTANALYSIS_CARD, numberOfStartAnalysisCards, + startAnalysisDTO, dashboardClientFactory.getSailingService(), raceMapResources); startanalysis_card_container.add(startlineAnalysisCard); startlineAnalysisCard.startAnalysisComponentPageChangedToIndexAndStartAnalysis(page, startAnalysisDTO); registerPageChangeListener(startlineAnalysisCard); @@ -400,8 +417,8 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL public void notifyStartAnalysisPageChangeListener(int newPageIndex) { for (StartAnalysisPageChangeListener sO : pageChangeListener) { - if(starts.get(newPageIndex) != null) - sO.startAnalysisComponentPageChangedToIndexAndStartAnalysis(newPageIndex, starts.get(newPageIndex)); + if (starts.get(newPageIndex) != null) + sO.startAnalysisComponentPageChangedToIndexAndStartAnalysis(newPageIndex, starts.get(newPageIndex)); } } @@ -424,18 +441,18 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL private boolean displayedStartAnalysisForDifferentCompetitorToRequestedOne() { String competitorIDFromDispalyedStartAnalysisDTOs = getCompetitorIdAsStringFromFirstDisplayedStartAnalysis(); - if (competitorIDFromDispalyedStartAnalysisDTOs != null && !(competitorIDFromDispalyedStartAnalysisDTOs == getCachedSelectedCompetitorId())) { + if ((competitorIDFromDispalyedStartAnalysisDTOs != getCachedSelectedCompetitorId()) || (competitorIDFromDispalyedStartAnalysisDTOs == null && getCachedSelectedCompetitorId() != null)) { return true; } else { return false; } } - + @Override public void timeChanged(Date newTime, Date oldTime) { loadStartAnalysisDTOsForCompetitorID(getCachedSelectedCompetitorId()); } - + @Override public void registerForDashboardFiveSecondsTimer(DashboardClientFactory dashboardClientFactory) { if (dashboardClientFactory != null) { From b8a6aa28dad570437db9353452b8334b6327c4b9 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 18 Feb 2016 13:01:28 +0100 Subject: [PATCH 25/43] added RaceMapResource to RaceMapImageManager again --- .../gwt/ui/client/shared/racemap/RaceMapImageManager.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java index d6ca2a81102..a53702c893f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.google.gwt.core.client.GWT; import com.google.gwt.maps.client.MapWidget; import com.google.gwt.maps.client.base.Point; import com.google.gwt.maps.client.base.Size; @@ -38,6 +39,8 @@ public class RaceMapImageManager { protected Map, Marker> maneuverIconsForTypeAndDirectionIndicatingColor; + private static RaceMapResources resources = GWT.create(RaceMapResources.class); + public RaceMapImageManager(RaceMapResources resources) { maneuverIconsForTypeAndDirectionIndicatingColor = new HashMap, Marker>(); trueNorthIndicatorIconTransformer = new ImageTransformer(resources.trueNorthIndicatorIcon()); From 20c1f72509e0b51d6df5756c3f13d2f8df581c2a Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 18 Feb 2016 15:33:31 +0100 Subject: [PATCH 26/43] Statline Advantage Widgets show now no data message also when there is no leaderboard name param provided --- .../course/StartlineAdvantageByGeometryWidget.java | 1 + .../wind/StartlineAdvantagesByWindWidget.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java index 69e04669e74..332cfbd9d75 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java @@ -58,6 +58,7 @@ public class StartlineAdvantageByGeometryWidget extends Composite implements Has initWidget(uiBinder.createAndBindUi(this)); hideDataDisplayContainer(); dashboardWidgetHeaderAndNoDataMessage.setHeaderText(StringMessages.INSTANCE.dashboardStartlineAdvantageByGeometryHeader()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java index e59caf0363a..3b50febd7e5 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java @@ -67,6 +67,7 @@ public class StartlineAdvantagesByWindWidget extends Composite implements HasWid initWidget(uiBinder.createAndBindUi(this)); hideDataDisplayContainer(); dashboardWidgetHeaderAndNoDataMessage.setHeaderText(StringMessages.INSTANCE.dashboardStartlineAdvantagesByWindHeader()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByWindAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByWindAvailableMessage()); dataDisplayContainer.getElement().getStyle().setOpacity(0.0); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } @@ -83,6 +84,7 @@ public class StartlineAdvantagesByWindWidget extends Composite implements HasWid public void onSuccess(StartlineAdvantagesWithMaxAndAverageDTO result) { logger.log(Level.INFO, "Received StartlineAdvantagesWithMaxAndAverageDTO"); if (result != null && result.maximum != null && result.average != null) { + dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); logger.log(Level.INFO, "Updating UI with StartlineAdvantagesWithMaxAndAverageDTO"); startlineAdvantagesOnLineChart.setStartlineAdvantagesAndConfidences(result.distanceToRCBoatToStartlineAdvantage, result.distanceToRCBoatToConfidence); advantageMaximumLiveAverage.setLiveValue(NumberFormat.getFormat("#0.0").format( From f9ff5b062fae5a76a09be146e4903a1f5dc851d0 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 24 Feb 2016 10:37:22 +0100 Subject: [PATCH 27/43] Adapted Style of CompetitorSelectionPopup to new Dashboard Design and build in Action Panels --- .../CompetitorSelectionPopup.css | 85 ----------------- .../CompetitorSelectionPopup.gss | 91 ++++++++++++++++++ .../CompetitorSelectionPopup.java | 95 +++++++++++-------- .../CompetitorSelectionPopup.ui.xml | 36 +++---- .../CompetitorSelectionPopupResources.java | 30 ++++++ .../{ => table}/CompetitorTable.java | 2 +- .../CompetitorTableRowSelectionListener.java | 2 +- .../{ => table}/CompetitorTableStyle.css | 19 ++-- .../CompetitorTableStyleResource.java | 3 +- .../dashboards/gwt/client/theme/Colors.java | 9 +- .../dashboards/gwt/client/theme/Sizes.java | 1 + .../dashboards/gwt/client/theme/theme.gss | 3 + .../gwt/client/widgets/ActionPanel.java | 11 ++- .../startanalysis/StartAnalysisWidget.java | 17 +--- 14 files changed, 226 insertions(+), 178 deletions(-) delete mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.css create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.gss create mode 100644 java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopupResources.java rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/{ => table}/CompetitorTable.java (99%) rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/{ => table}/CompetitorTableRowSelectionListener.java (94%) rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/{ => table}/CompetitorTableStyle.css (53%) rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/{ => table}/CompetitorTableStyleResource.java (95%) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.css b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.css deleted file mode 100644 index 665596c0f8d..00000000000 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.css +++ /dev/null @@ -1,85 +0,0 @@ -@CHARSET "UTF-8"; - -.competitorselectionbackground { - position: absolute; - background-color: rgba(0, 0, 0, 0.6); - width: 100%; - height: 100%; - z-index: 1; -} - -.competitorselectionpopup { - position: absolute; - left: 50%; - top: 50%; - width: 200pt; - height: 200pt; - margin-top: -600pt; - margin-left: -100pt; - background-color: rgba(255, 255, 255, 1); - border-radius: 0px; - z-index: 2; -} - -.header { - position: absolute; - color: black; - font-size: 12pt; - background-color: white; - height: 30pt; - line-height: 30pt; - vertical-align: middle; - text-align: center; - font-weight: bold; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); - width: 100%; - z-index: 3; -} - -.scrollpanel { - position: absolute; - top: 30pt; - width: 100%; - bottom: 6pt; - overflow: hidden; - z-index: 2; -} - -.button { - position: absolute; - background-color: #2AB3E8; - box-shadow: none; - outline: none; - border-width: 0; - font-size: 12pt; - font-color: white; - color: white; - height: 0pt; - width: 100%; - top: 100%; - left: 0pt; -} - -.button:active { - background-color: #4192D9; -} - -.buttonshow { - transition: all ease-in-out 200ms; - height: 30pt; -} - -.popuphide { - transition: all ease-in-out 500ms; - height: 0pt; -} - -.popupshow { - transition: margin-top ease-in-out 500ms; - margin-top: -100pt; -} - -.popuphide { - transition: margin-top ease-in-out 500ms; - margin-top: -600pt; -} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.gss new file mode 100644 index 00000000000..7ddd775d473 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.gss @@ -0,0 +1,91 @@ +@require 'theme'; + +.competitorselectionbackground { + position: absolute; + background-color: rgba(0, 0, 0, 0.4); + width: 100%; + height: 100%; + z-index: 4; +} + +.competitorselectionpopup { + position: absolute; + left: 50%; + top: 50%; + width: 250px; + height: 300px; + margin-top: -150px; + margin-left: -125px; + background-color: WHITE; + border-radius: 5px; + overflow: hidden; + z-index: 7; +} + +.header { + position: absolute; + color: BLACK; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; + background-color: WHITE; + height: DASHBOARD_SPACE_MEDIUM; + line-height: DASHBOARD_SPACE_MEDIUM; + vertical-align: middle; + text-align: center; + font-weight: bold; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); + width: 100%; + z-index: 3; +} + +.scrollpanel { + position: absolute; + top: DASHBOARD_SPACE_MEDIUM; + width: 100%; + bottom: 42px; + overflow: hidden; + z-index: 2; +} + +.buttonSeparator { + position: absolute; + height: DASHBOARD_SPACE_MEDIUM; + width: 1px; + left: 49%; + bottom: 0px; + background-color: WHITE; +} + +.button { + position: absolute; + bottom: 0px; + background-color: BUTTON_BACKGROUND; + box-shadow: none; + outline: none; + border-width: 0; + font-size: DASHBOARD_FONT_SIZE_MEDIUM; + line-height: DASHBOARD_SPACE_MEDIUM; + text-align: center; + color: WHITE; + height: DASHBOARD_SPACE_MEDIUM; + width: 50%; +} + +.button:active { + background-color: BUTTON_BACKGROUND_ACTIVE; +} + +.cancelButton { + left:0px; +} + +.okButton { + right: 0px; +} + +.popupshow { +/* margin-top: -150pt; */ +} + +.popuphide { +/* margin-top: -600pt; */ +} diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.java index a41d2825551..743eb998187 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.java @@ -5,48 +5,42 @@ import java.util.Iterator; import java.util.List; import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.RootLayoutPanel; -import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.table.CompetitorTable; +import com.sap.sailing.dashboards.gwt.client.popups.competitorselection.table.CompetitorTableRowSelectionListener; +import com.sap.sailing.dashboards.gwt.client.widgets.ActionPanel; import com.sap.sailing.domain.common.dto.CompetitorDTO; public class CompetitorSelectionPopup extends Composite implements HasWidgets, CompetitorTableRowSelectionListener { - interface CompetitorSelectionPopupStyle extends CssResource { - String popupshow(); - String popuphide(); - String buttonshow(); - } + @UiField(provided = true) + ActionPanel competitorselectionbackground; @UiField - CompetitorSelectionPopupStyle style; + HTMLPanel competitorselectionpopup; - @UiField - HTMLPanel competitorselectionbackground; - - @UiField - VerticalPanel competitorselectionpopup; - @UiField HTMLPanel header; @UiField(provided = true) CompetitorTable competitortable; - @UiField - Button button; + @UiField(provided = true) + ActionPanel cancelButton; + + @UiField(provided = true) + ActionPanel okButton; private CompetitorDTO currentCompetitorSelected; private boolean isVisible; + private CompetitorSelectionPopupResources competitorSelectionPopupResources = CompetitorSelectionPopupResources.INSTANCE; private List competitorSelectionPopupListener; @@ -56,28 +50,34 @@ public class CompetitorSelectionPopup extends Composite implements HasWidgets, C } public CompetitorSelectionPopup() { + competitorSelectionPopupResources.gss().ensureInjected(); competitorSelectionPopupListener = new ArrayList(); competitortable = new CompetitorTable(this); isVisible = false; + competitorselectionbackground = new ActionPanel(Event.TOUCHEVENTS, Event.ONCLICK); + cancelButton = new ActionPanel(Event.TOUCHEVENTS, Event.ONCLICK); + okButton = new ActionPanel(Event.TOUCHEVENTS, Event.ONCLICK); + addActionListenerToActionPanels(); initWidget(uiBinder.createAndBindUi(this)); + cancelButton.getElement().setInnerText("CANCEL"); + okButton.getElement().setInnerText("OK"); } public void show(List competitorList) { competitortable.setTableContent(competitorList); RootLayoutPanel.get().add(this); - this.button.setText("OK"); - competitorselectionpopup.addStyleName(style.popupshow()); - competitorselectionpopup.removeStyleName(style.popuphide()); + competitorselectionpopup.addStyleName(competitorSelectionPopupResources.gss().popupshow()); + competitorselectionpopup.removeStyleName(competitorSelectionPopupResources.gss().popuphide()); isVisible = true; } public void hide() { - competitorselectionpopup.addStyleName(style.popuphide()); - competitorselectionpopup.removeStyleName(style.popupshow()); + competitorselectionpopup.addStyleName(competitorSelectionPopupResources.gss().popuphide()); + competitorselectionpopup.removeStyleName(competitorSelectionPopupResources.gss().popupshow()); RootLayoutPanel.get().remove(this); isVisible = false; } - + public void addListener(CompetitorSelectionListener o) { if (o != null && !competitorSelectionPopupListener.contains(o)) { this.competitorSelectionPopupListener.add(o); @@ -94,25 +94,42 @@ public class CompetitorSelectionPopup extends Composite implements HasWidgets, C } hide(); } - - public boolean isShown(){ + + public boolean isShown() { return isVisible; } - @UiHandler("button") - void handleClick(ClickEvent e) { - hide(); - if (currentCompetitorSelected != null) { - notifyListenerAboutOKButtonClickedWithSelectedCompetitorName(currentCompetitorSelected); - } - } - - @Override - public void didSelectedRowWithCompetitorName(CompetitorDTO competitor) { - button.getElement().addClassName(style.buttonshow()); - currentCompetitorSelected = competitor; + private void addActionListenerToActionPanels() { + competitorselectionbackground.addActionPanelListener(new ActionPanel.ActionPanelListener() { + + @Override + public void eventTriggered() { + hide(); + } + }); + cancelButton.addActionPanelListener(new ActionPanel.ActionPanelListener() { + + @Override + public void eventTriggered() { + hide(); + } + }); + okButton.addActionPanelListener(new ActionPanel.ActionPanelListener() { + + @Override + public void eventTriggered() { + hide(); + if (currentCompetitorSelected != null) { + notifyListenerAboutOKButtonClickedWithSelectedCompetitorName(currentCompetitorSelected); + } + } + }); } + @Override + public void didSelectedRowWithCompetitorName(CompetitorDTO competitor) { + currentCompetitorSelected = competitor; + } @Override public void add(Widget w) { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.ui.xml b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.ui.xml index 9c762ce1e0e..8980164e04d 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.ui.xml +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopup.ui.xml @@ -1,25 +1,25 @@ + xmlns:table="urn:import:com.sap.sailing.dashboards.gwt.client.popups.competitorselection.table" + xmlns:mgwts="urn:import:com.googlecode.mgwt.ui.client.widget.panel.scroll" + xmlns:action="urn:import:com.sap.sailing.dashboards.gwt.client.widgets"> - - - - Select your Team - - - - - - - + + + + + + Select your Team + + + + + + +
+ +
\ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopupResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopupResources.java new file mode 100644 index 00000000000..79330d81dd2 --- /dev/null +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorSelectionPopupResources.java @@ -0,0 +1,30 @@ +package com.sap.sailing.dashboards.gwt.client.popups.competitorselection; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +/** + * @author Alexander Ries (D062114) + * + */ +public interface CompetitorSelectionPopupResources extends ClientBundle { + + public static final CompetitorSelectionPopupResources INSTANCE = GWT.create(CompetitorSelectionPopupResources.class); + + @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "CompetitorSelectionPopup.gss"}) + CompetitorSelectionPopupGss gss(); + + public interface CompetitorSelectionPopupGss extends CssResource { + String competitorselectionbackground(); + String competitorselectionpopup(); + String header(); + String scrollpanel(); + String buttonSeparator(); + String button(); + String cancelButton(); + String okButton(); + String popuphide(); + String popupshow(); + } +} \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTable.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTable.java similarity index 99% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTable.java rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTable.java index 3fdae597126..bbde6d29807 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTable.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTable.java @@ -1,4 +1,4 @@ -package com.sap.sailing.dashboards.gwt.client.popups.competitorselection; +package com.sap.sailing.dashboards.gwt.client.popups.competitorselection.table; import java.util.List; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableRowSelectionListener.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableRowSelectionListener.java similarity index 94% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableRowSelectionListener.java rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableRowSelectionListener.java index 32bae21b54c..3087d8745b4 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableRowSelectionListener.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableRowSelectionListener.java @@ -1,4 +1,4 @@ -package com.sap.sailing.dashboards.gwt.client.popups.competitorselection; +package com.sap.sailing.dashboards.gwt.client.popups.competitorselection.table; import com.sap.sailing.domain.common.dto.CompetitorDTO; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableStyle.css b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableStyle.css similarity index 53% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableStyle.css rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableStyle.css index dbad0efc14d..62fa6469b9f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableStyle.css +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableStyle.css @@ -1,4 +1,3 @@ -@CHARSET "UTF-8"; .cellTableHeader { height: 0pt; @@ -10,25 +9,25 @@ .cellTableCell { padding: 10px; overflow: hidden; - font-size: 12pt; + font-size: 14px; color: black; - background-color: #d3d3d3; - border-width: 4px 8px 4px 8px; + background-color: #E0E0E0; + border-width: 0px 8px 8px 8px; border-color: white; } .cellTableSelectedRow { - background: grey !important; - backrgound-color: #d3d3d3 !important; + background: #848484 !important; + backrgound-color: #848484 !important; color: white !important; - border-width: 3pt 6pt 3pt 6pt; + border-width: 0px 8px 8px 8px; border-color: white; } .cellTableSelectedRowCell { - background: grey !important; - backrgound-color: #d3d3d3 !important; + background: #848484 !important; + backrgound-color: #848484 !important; color: white !important; - border-width: 3pt 6pt 3pt 6pt; + border-width: 0px 8px 8px 8px; border-color: white; } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableStyleResource.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableStyleResource.java similarity index 95% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableStyleResource.java rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableStyleResource.java index e9cb0af6c7b..d1a5fe46776 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/CompetitorTableStyleResource.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/popups/competitorselection/table/CompetitorTableStyleResource.java @@ -1,11 +1,10 @@ -package com.sap.sailing.dashboards.gwt.client.popups.competitorselection; +package com.sap.sailing.dashboards.gwt.client.popups.competitorselection.table; import com.google.gwt.user.cellview.client.CellTable; public interface CompetitorTableStyleResource extends CellTable.Resources { @Source({CellTable.Style.DEFAULT_CSS, "CompetitorTableStyle.css"}) - TableStyle cellTableStyle(); interface TableStyle extends CellTable.Style { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java index 4f781c60960..649f9a65987 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Colors.java @@ -6,11 +6,14 @@ package com.sap.sailing.dashboards.gwt.client.theme; */ public class Colors { public static final String WHITE = "#FFFFFF"; + public static final String BLACK = "#000000"; public static final String LIGHT_GREY = "#F3F2F4"; public static final String DARK_GREY = "#E0E0E0"; public static final String LIGHT_TEXT_COLOR = "#848484"; public static final String DARK_TEXT_COLOR = "#000000"; - public static final String DARK_BLUE = "#FFFFFF"; - public static final String LIGHT_BLUE = "#FFFFFF"; - public static final String YELLOW = "#FFFFFF"; + public static final String BUTTON_BACKGROUND = "#008FFF"; + public static final String BUTTON_BACKGROUND_ACTIVE = "#4192D9"; + public static final String DARK_BLUE = "#008FFF"; + public static final String LIGHT_BLUE = "#6ADBFF"; + public static final String YELLOW = "#F0AB00"; } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java index 358eebd3f13..9a43a5c9824 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/Sizes.java @@ -1,5 +1,6 @@ package com.sap.sailing.dashboards.gwt.client.theme; + /** * @author Alexander Ries (D062114) * diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss index 521cb0321a5..66eb9d3e990 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/theme/theme.gss @@ -2,11 +2,14 @@ /*Colors*/ @def WHITE eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.WHITE"); +@def BLACK eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.BLACK"); @def LIGHT_GREY eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.LIGHT_GREY"); @def DARK_GREY eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.DARK_GREY"); @def LIGHT_TEXT_COLOR eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.LIGHT_TEXT_COLOR"); @def DARK_TEXT_COLOR eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.DARK_TEXT_COLOR"); @def DARK_BLUE eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.DARK_BLUE"); +@def BUTTON_BACKGROUND eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.BUTTON_BACKGROUND"); +@def BUTTON_BACKGROUND_ACTIVE eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.BUTTON_BACKGROUND_ACTIVE"); @def LIGHT_BLUE eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.LIGHT_GREY"); @def YELLOW eval("com.sap.sailing.dashboards.gwt.client.theme.Colors.YELLOW"); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/ActionPanel.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/ActionPanel.java index 78d6d344820..7b87a2d7117 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/ActionPanel.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/ActionPanel.java @@ -46,19 +46,20 @@ public class ActionPanel extends AbsolutePanel { listeners.remove(actionPanelListener); } - private void notifyActionPanelListenerAboutTriggeredEvent(Event event) { + private void notifyActionPanelListenerAboutTriggeredEvent() { for (ActionPanelListener actionPanelListener : listeners) { - actionPanelListener.eventTriggered(event); + actionPanelListener.eventTriggered(); } } @Override public void onBrowserEvent(Event event) { - notifyActionPanelListenerAboutTriggeredEvent(event); - super.onBrowserEvent(event); + if (this.eventsList.contains(event.getTypeInt())) { + notifyActionPanelListenerAboutTriggeredEvent(); + } } public interface ActionPanelListener { - public void eventTriggered(Event event); + public void eventTriggered(); } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java index 7677383f7fa..30eccd85fd0 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java @@ -15,8 +15,6 @@ import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.Cookies; -import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.Event; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FocusPanel; @@ -202,7 +200,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL @Override public void onSuccess(StartAnalysesDTO result) { logger.log(Level.INFO, "Received startanalysis list"); - if (result != null && !result.getStartAnalyses().isEmpty()) { + if (result != null && !result.getStartAnalyses().isEmpty() && result.getStartAnalyses().size() > 0) { dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); if (displayedStartAnalysisForDifferentCompetitorToRequestedOne()) { removeAllStartAnalysisCards(); @@ -297,17 +295,8 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL selectedCompetitorWithSettingsButton.addActionListener(new ActionPanel.ActionPanelListener() { @Override - public void eventTriggered(Event event) { - switch (DOM.eventGetType(event)) { - case Event.ONTOUCHEND: { - loadCompetitorsAndShowCompetitorSelectionPopup(); - break; - } - case Event.ONCLICK: { - loadCompetitorsAndShowCompetitorSelectionPopup(); - return; - } - } + public void eventTriggered() { + loadCompetitorsAndShowCompetitorSelectionPopup(); } }); } From 911e9e2ad43886feb2a7ec8d411bc8a2fa474972 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 24 Feb 2016 11:08:32 +0100 Subject: [PATCH 28/43] Added comment to StartAnalysisWidget.gss --- .../gwt/client/widgets/startanalysis/StartAnalysisWidget.gss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss index 8fcf048eeb0..f91e0140c02 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.gss @@ -78,12 +78,12 @@ position: absolute; width: 75%; height: 100%; -/* margin-top: 1px; Shows otherwise small line at top edge */ border-radius: DASHBOARD_BORDER_RADIUS !important; overflow: hidden !important; /* Chrome and Safari are having problems with border radius and animation. http://stackoverflow.com/questions/14383632/webkit-border-radius-and-overflow-bug-when-using-any-animation-transition + Do not remove these 4 lines */ -webkit-backface-visibility: hidden; -moz-backface-visibility: hidden; From 271286d61c09cb6c8bdc31e9e7a71b4b30ea835d Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 24 Feb 2016 11:26:20 +0100 Subject: [PATCH 29/43] DashboardHeader react now to one property set visually --- .../client/dashboardpanel/DashboardPanel.java | 4 +-- .../gwt/client/header/DashboardHeader.gss | 14 +++++++--- .../gwt/client/header/DashboardHeader.java | 26 ++++++++++++++----- .../header/DashboardHeaderResources.java | 1 + 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java index ebf3c73257e..56c672e0951 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dashboardpanel/DashboardPanel.java @@ -122,7 +122,7 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL eventLogo.getElement().getStyle().setVisibility(Visibility.HIDDEN); } if (event.getName() != null) { - header.setEventText(event.getName()); + header.setEventName(event.getName()); Window.setTitle("Dashboard - "+event.getName()); } } else { @@ -158,7 +158,7 @@ public class DashboardPanel extends Composite implements NumberOfWindBotsChangeL public void onSuccess(RaceIdDTO result) { if (result != null && result.getRaceId() != null) { logger.log(Level.INFO, "Updating UI with live race id"); - header.setRaceText(result.getRaceId().getRaceName()); + header.setRaceName(result.getRaceId().getRaceName()); } else { logger.log(Level.INFO, "Received null for live race id"); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss index 486b5d2f856..59f5401a5e7 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.gss @@ -11,7 +11,7 @@ .event_race_container { position: absolute; - height: DASHBOARD_FONT_SIZE_MEDIUM; + height: DASHBOARD_SPACE_MEDIUM; width: 100%; top: 0px; color: LIGHT_TEXT_COLOR; @@ -19,9 +19,9 @@ .event { width: 100%; - height: DASHBOARD_FONT_SIZE_MEDIUM; - top: DASHBOARD_SPACE_VERY_SMALL; - line-height: DASHBOARD_FONT_SIZE_MEDIUM; + height: DASHBOARD_SPACE_MEDIUM; + top: 0px; + line-height: DASHBOARD_SPACE_MEDIUM; vertical-align: middle; font-size: DASHBOARD_FONT_SIZE_MEDIUM; font-family: DASHBOARD_FONT_FAMILY; @@ -30,6 +30,12 @@ overflow: visible; } +.event_shared_space { + height: DASHBOARD_FONT_SIZE_MEDIUM; + top: DASHBOARD_SPACE_VERY_SMALL; + line-height: DASHBOARD_FONT_SIZE_MEDIUM; +} + .race { width: 100%; height: DASHBOARD_FONT_SIZE_SMALL; diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java index 06f11109183..bf69cd0c277 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java @@ -22,6 +22,7 @@ public class DashboardHeader extends Composite implements HasWidgets { interface SettingsButtonWithSelectionIndicationLabelStyle extends CssResource { } + @UiField Image sapLogo; @@ -30,22 +31,33 @@ public class DashboardHeader extends Composite implements HasWidgets { @UiField DivElement race; + + private DashboardHeaderResources dashboardHeaderResources = DashboardHeaderResources.INSTANCE; + private String eventName; + private String raceName; public DashboardHeader() { - DashboardHeaderResources.INSTANCE.gss().ensureInjected(); + dashboardHeaderResources.gss().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); sapLogo.setResource(DashboardHeaderResources.INSTANCE.sapLogo()); - setEventText(StringMessages.INSTANCE.dashboardHeader()); + event.setInnerHTML(StringMessages.INSTANCE.dashboardHeader()); } - public void setEventText(String eventName) { + + + public void setEventName(String eventName) { + this.eventName = eventName; event.setInnerHTML(eventName); } - - public void setRaceText(String raceName) { - race.setInnerHTML(raceName); + + + + public void setRaceName(String raceName) { + this.event.addClassName(dashboardHeaderResources.gss().event_shared_space()); + this.raceName = raceName; + race.setInnerHTML(raceName); } - + @Override public void add(Widget w) { throw new UnsupportedOperationException("The method add(Widget w) is not supported."); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeaderResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeaderResources.java index 8f573fd6dba..ff75072020a 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeaderResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeaderResources.java @@ -23,6 +23,7 @@ public interface DashboardHeaderResources extends ClientBundle { String sap_logo(); String event_race_container(); String event(); + String event_shared_space(); String race(); } } From 530f91aa58544439a8c4d95694d8f9866e23d02a Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 24 Feb 2016 11:31:35 +0100 Subject: [PATCH 30/43] Prettified code in DashboardHeader --- .../dashboards/gwt/client/header/DashboardHeader.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java index bf69cd0c277..3f641a2b5b3 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/header/DashboardHeader.java @@ -33,9 +33,7 @@ public class DashboardHeader extends Composite implements HasWidgets { DivElement race; private DashboardHeaderResources dashboardHeaderResources = DashboardHeaderResources.INSTANCE; - private String eventName; - private String raceName; - + public DashboardHeader() { dashboardHeaderResources.gss().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); @@ -43,18 +41,12 @@ public class DashboardHeader extends Composite implements HasWidgets { event.setInnerHTML(StringMessages.INSTANCE.dashboardHeader()); } - - public void setEventName(String eventName) { - this.eventName = eventName; event.setInnerHTML(eventName); } - - public void setRaceName(String raceName) { this.event.addClassName(dashboardHeaderResources.gss().event_shared_space()); - this.raceName = raceName; race.setInnerHTML(raceName); } From 2ea235622f97c0cbb639e0bf74aa448aab8fea58 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 24 Feb 2016 22:23:11 +0100 Subject: [PATCH 31/43] Did some refactoring in Moving Averages Actions --- ...GetStartlineAdvantageByGeometryAction.java | 10 ++- .../GetStartlineAdvantagesByWindAction.java | 12 ++-- .../StartlineAdvantageByGeometryWidget.java | 64 ++++++++++++------- .../wind/StartlineAdvantagesByWindWidget.java | 15 +++-- ...sLiveRaceAndCachesMovingAverageAction.java | 9 +-- 5 files changed, 69 insertions(+), 41 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantageByGeometryAction.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantageByGeometryAction.java index a3d7de27f48..d1a4d0629c1 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantageByGeometryAction.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantageByGeometryAction.java @@ -1,5 +1,7 @@ package com.sap.sailing.dashboards.gwt.client.actions; +import java.util.UUID; + import com.google.gwt.core.shared.GwtIncompatible; import com.sap.sailing.dashboards.gwt.server.util.actions.startlineadvantage.StartlineAdvantageByGeometryCalculator; import com.sap.sailing.dashboards.gwt.shared.StartlineAdvantageType; @@ -20,6 +22,8 @@ public class GetStartlineAdvantageByGeometryAction extends RequiresLiveRaceAndCa public GetStartlineAdvantageByGeometryAction(String leaderboardName) { super(leaderboardName); } + + private static final String MOVING_AVERAGE_CACHE_KEY = UUID.randomUUID().toString(); @Override @GwtIncompatible @@ -35,14 +39,14 @@ public class GetStartlineAdvantageByGeometryAction extends RequiresLiveRaceAndCa Double average = null; if (startlineAdvantageByGeometry != null) { super.addValueToMovingAverage(startlineAdvantageByGeometry.doubleValue(), dashboardDispatchContext.getMovingAveragesCache()); - average = dashboardDispatchContext.getMovingAveragesCache().getValueForKey(getKeyForMovingAverage()); + average = dashboardDispatchContext.getMovingAveragesCache().getValueForKey(uniqueMovingAverageCacheKey()); } result.average = average; return result; } @Override - protected String getKeyForMovingAverage() { - return super.getLeaderboardName(); + protected String uniqueMovingAverageCacheKey() { + return MOVING_AVERAGE_CACHE_KEY; } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantagesByWindAction.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantagesByWindAction.java index de3bb83d006..786e0708576 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantagesByWindAction.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantagesByWindAction.java @@ -5,6 +5,8 @@ package com.sap.sailing.dashboards.gwt.client.actions; * */ +import java.util.UUID; + import com.google.gwt.core.shared.GwtIncompatible; import com.sap.sailing.dashboards.gwt.server.util.actions.startlineadvantage.StartlineAdvantagesByWindCalculator; import com.sap.sailing.dashboards.gwt.shared.dispatch.DashboardDispatchContext; @@ -22,6 +24,8 @@ public class GetStartlineAdvantagesByWindAction extends RequiresLiveRaceAndCach super(leaderboardName); } + private static final String MOVING_AVERAGE_CACHE_KEY = UUID.randomUUID().toString(); + @Override @GwtIncompatible public StartlineAdvantagesWithMaxAndAverageDTO execute(DashboardDispatchContext dashboardDispatchContext) throws DispatchException { @@ -33,13 +37,13 @@ public class GetStartlineAdvantagesByWindAction extends RequiresLiveRaceAndCach } if(result != null && result.maximum != null) { super.addValueToMovingAverage(result.maximum, dashboardDispatchContext.getMovingAveragesCache()); - result.average = dashboardDispatchContext.getMovingAveragesCache().getValueForKey(getKeyForMovingAverage()); + result.average = dashboardDispatchContext.getMovingAveragesCache().getValueForKey(uniqueMovingAverageCacheKey()); } return result; } - + @Override - protected String getKeyForMovingAverage() { - return super.getLeaderboardName(); + protected String uniqueMovingAverageCacheKey() { + return MOVING_AVERAGE_CACHE_KEY; } } \ No newline at end of file diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java index 332cfbd9d75..c9b027fee99 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/course/StartlineAdvantageByGeometryWidget.java @@ -35,81 +35,97 @@ public class StartlineAdvantageByGeometryWidget extends Composite implements Has interface StartlineAdvantageByGeometryWidgetUiBinder extends UiBinder { } - + @UiField(provided = true) DashboardWidgetHeaderAndNoDataMessage dashboardWidgetHeaderAndNoDataMessage; - + @UiField(provided = true) LiveAverageComponent advantageMaximumLiveAverage; - + @UiField HTMLPanel contentContainer; - public DashboardClientFactory dashboardClientFactory; + private DashboardClientFactory dashboardClientFactory; + private GetStartlineAdvantageByGeometryAction getStartlineAdvantageByGeometryAction; private static final Logger logger = Logger.getLogger(StartlineAdvantagesByWindWidget.class.getName()); - + public StartlineAdvantageByGeometryWidget(DashboardClientFactory dashboardClientFactory) { StartlineAdvantageByGeometryWidgetRessources.INSTANCE.gss().ensureInjected(); + String leaderboardNameParameterValue = DashboardURLParameters.LEADERBOARD_NAME.getValue(); + if (leaderboardNameParameterValue != null) { + this.getStartlineAdvantageByGeometryAction = new GetStartlineAdvantageByGeometryAction(leaderboardNameParameterValue); + } this.dashboardClientFactory = dashboardClientFactory; dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); advantageMaximumLiveAverage = new LiveAverageComponent(StringMessages.INSTANCE.metersUnit()); advantageMaximumLiveAverage.liveLabel.setInnerHTML(StringMessages.INSTANCE.dashboardLiveWind()); - advantageMaximumLiveAverage.averageLabel.setInnerHTML("

"+StringMessages.INSTANCE.dashboardAverageWind()+"

"+StringMessages.INSTANCE.dashboardAverageWindMinutes(15)+"

"); + advantageMaximumLiveAverage.averageLabel.setInnerHTML("

" + StringMessages.INSTANCE.dashboardAverageWind() + + "

" + StringMessages.INSTANCE.dashboardAverageWindMinutes(15) + "

"); initWidget(uiBinder.createAndBindUi(this)); hideDataDisplayContainer(); - dashboardWidgetHeaderAndNoDataMessage.setHeaderText(StringMessages.INSTANCE.dashboardStartlineAdvantageByGeometryHeader()); - dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); + dashboardWidgetHeaderAndNoDataMessage.setHeaderText(StringMessages.INSTANCE + .dashboardStartlineAdvantageByGeometryHeader()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage( + StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), + StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); registerForDashboardFiveSecondsTimer(dashboardClientFactory); } - - private void showDataDisplayContainer(){ + + private void showDataDisplayContainer() { contentContainer.getElement().getStyle().setOpacity(1.0); } - - private void hideDataDisplayContainer(){ + + private void hideDataDisplayContainer() { contentContainer.getElement().getStyle().setOpacity(0.0); } - + @Override public void timeChanged(Date newTime, Date oldTime) { - String leaderboardNameParameterValue = DashboardURLParameters.LEADERBOARD_NAME.getValue(); - if (leaderboardNameParameterValue != null) { - dashboardClientFactory.getDispatch().execute( - new GetStartlineAdvantageByGeometryAction(leaderboardNameParameterValue), + if (getStartlineAdvantageByGeometryAction != null) { + dashboardClientFactory.getDispatch().execute(getStartlineAdvantageByGeometryAction, new AsyncCallback() { @Override public void onFailure(Throwable caught) { logger.log(Level.INFO, "Failed to received startline advantage by geometry"); hideDataDisplayContainer(); - dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage( + StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), + StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); } @Override public void onSuccess(StartLineAdvantageDTO result) { if (result.startLineAdvantage != null) { - logger.log(Level.INFO, "Updating UI with RibDashboardRaceInfoDTO.startLineAdvantageDTO"); - advantageMaximumLiveAverage.setLiveValue(NumberFormat.getFormat("#0.0").format(result.startLineAdvantage.doubleValue())); - advantageMaximumLiveAverage.setAverageValue(NumberFormat.getFormat("#0.0").format(result.average.doubleValue())); + logger.log(Level.INFO, + "Updating UI with RibDashboardRaceInfoDTO.startLineAdvantageDTO"); + advantageMaximumLiveAverage.setLiveValue(NumberFormat.getFormat("#0.0").format( + result.startLineAdvantage.doubleValue())); + advantageMaximumLiveAverage.setAverageValue(NumberFormat.getFormat("#0.0").format( + result.average.doubleValue())); showDataDisplayContainer(); dashboardWidgetHeaderAndNoDataMessage.hideNoDataMessage(); } else { logger.log(Level.INFO, "RibDashboardRaceInfoDTO.startLineAdvantageDTO is 0"); hideDataDisplayContainer(); - dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage(StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), StringMessages.INSTANCE.dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); + dashboardWidgetHeaderAndNoDataMessage.showNoDataMessageWithHeaderAndMessage( + StringMessages.INSTANCE + .dashboardNoStartlineAdvantagesByGeometryAvailableHeader(), + StringMessages.INSTANCE + .dashboardNoStartlineAdvantagesByGeometryAvailableMessage()); } } }); } } - + @Override public void registerForDashboardFiveSecondsTimer(DashboardClientFactory dashboardClientFactory) { if (dashboardClientFactory != null) { dashboardClientFactory.getDashboardFiveSecondsTimer().addTimeListener(this); } } - + @Override public void add(Widget w) { throw new UnsupportedOperationException("The method add(Widget w) is not supported."); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java index 3b50febd7e5..2c9eb3aea66 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startlineadvantage/wind/StartlineAdvantagesByWindWidget.java @@ -52,12 +52,17 @@ public class StartlineAdvantagesByWindWidget extends Composite implements HasWid @UiField HTMLPanel dataDisplayContainer; - - public DashboardClientFactory dashboardClientFactory; + + private GetStartlineAdvantagesByWindAction getStartlineAdvantagesByWindAction; + private DashboardClientFactory dashboardClientFactory; private static final Logger logger = Logger.getLogger(StartlineAdvantagesByWindWidget.class.getName()); public StartlineAdvantagesByWindWidget(DashboardClientFactory dashboardClientFactory) { StartlineAdvantagesByWindWidgetResources.INSTANCE.gss().ensureInjected(); + String leaderboardNameParameterValue = DashboardURLParameters.LEADERBOARD_NAME.getValue(); + if (leaderboardNameParameterValue != null) { + getStartlineAdvantagesByWindAction = new GetStartlineAdvantagesByWindAction(leaderboardNameParameterValue); + } this.dashboardClientFactory = dashboardClientFactory; dashboardWidgetHeaderAndNoDataMessage = new DashboardWidgetHeaderAndNoDataMessage(); advantageMaximumLiveAverage = new LiveAverageComponent(StringMessages.INSTANCE.metersUnit()); @@ -74,10 +79,8 @@ public class StartlineAdvantagesByWindWidget extends Composite implements HasWid private void loadData() { logger.log(Level.INFO, "Executing GetStartlineAdvantagesAction"); - String leaderboardNameParameterValue = DashboardURLParameters.LEADERBOARD_NAME.getValue(); - if (leaderboardNameParameterValue != null) { - dashboardClientFactory.getDispatch().execute( - new GetStartlineAdvantagesByWindAction(leaderboardNameParameterValue), + if (getStartlineAdvantagesByWindAction != null) { + dashboardClientFactory.getDispatch().execute(getStartlineAdvantagesByWindAction, new AsyncCallback() { @Override diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/shared/dispatch/RequiresLiveRaceAndCachesMovingAverageAction.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/shared/dispatch/RequiresLiveRaceAndCachesMovingAverageAction.java index 38db9e20d6f..90044d4fd6b 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/shared/dispatch/RequiresLiveRaceAndCachesMovingAverageAction.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/shared/dispatch/RequiresLiveRaceAndCachesMovingAverageAction.java @@ -20,11 +20,12 @@ public abstract class RequiresLiveRaceAndCachesMovingAverageAction Date: Wed, 24 Feb 2016 22:24:00 +0100 Subject: [PATCH 32/43] Fixed bug in PreCalculationPolarDataRetriever --- .../precalculation/PreCalculationPolarDataRetriever.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/precalculation/PreCalculationPolarDataRetriever.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/precalculation/PreCalculationPolarDataRetriever.java index c7068933782..9ab19d1fe1d 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/precalculation/PreCalculationPolarDataRetriever.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/precalculation/PreCalculationPolarDataRetriever.java @@ -15,13 +15,11 @@ import com.sap.sailing.domain.polars.PolarDataService; public interface PreCalculationPolarDataRetriever { default double retrieveManouvreAngleAtWindSpeedAndBoatClass(BoatClass boatClass, ManeuverType maneuverType, Speed windSpeed, PolarDataService polarDataService) { - double result = 0; + double result = DefaultPolarValues.getManouvreAngle(ManeuverType.TACK); try { if (boatClass != null && maneuverType != null && windSpeed != null) { BearingWithConfidence bearingWithConfidence = polarDataService.getManeuverAngle(boatClass, maneuverType, windSpeed); result = bearingWithConfidence.getObject().getDegrees(); - } else { - result = DefaultPolarValues.getManouvreAngle(ManeuverType.TACK); } } catch (NotEnoughDataHasBeenAddedException | NullPointerException e) { e.printStackTrace(); From 8b9e5b69e9199f7aceeb802b00aac7ecc1fd9190 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Fri, 26 Feb 2016 11:30:47 +0100 Subject: [PATCH 33/43] Selected google.gwt.dev bundle for startup launch at all launch configs --- .../SailingServer (No Proxy OSX).launch | 76 +++++++++--------- .../SailingServer (No Proxy).launch | 76 +++++++++--------- ...ailingServer (No Proxy, Cached MTB).launch | 74 +++++++++--------- ...ingServer (No Proxy, Jetty on 8889).launch | 64 +++++++-------- ...o Proxy, Jetty on 8889, Cached MTB).launch | 64 +++++++-------- ... Jetty on 8889, auto-replicate dev).launch | 64 +++++++-------- ...oxy, Jetty on 8889, auto-replicate).launch | 64 +++++++-------- ...ingServer (No Proxy, Jetty on 8890).launch | 64 +++++++-------- ...ver (No Proxy, Remote Debug SAP VM).launch | 62 +++++++-------- ...ailingServer (No Proxy, winddbTest).launch | 74 +++++++++--------- .../SailingServer (Proxy).launch | 78 +++++++++---------- ...ailingServer (Proxy, Jetty on 8889).launch | 64 +++++++-------- ...Server (Proxy, Remote Debug SAP VM).launch | 62 +++++++-------- ...Proxy, SwissTiming Live Simulation).launch | 60 +++++++------- .../SailingServer (Proxy, winddbTest).launch | 66 ++++++++-------- 15 files changed, 506 insertions(+), 506 deletions(-) diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch index 70d5da234a1..64d68838215 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch @@ -1,38 +1,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index fb49b67aa62..eb1a2722b78 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -1,38 +1,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch index f423d629372..a08607085cc 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch @@ -1,37 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch index a1b211da85d..3d3b3b72ea9 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch index 5fb70d15c55..95f214db6ad 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch index 7327c33673a..ce754832c84 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch index 3e59695678f..140ffe940f7 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch index 4c27b93091f..ad8671fb860 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch index 09a44db1439..4187f309ac1 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch @@ -1,31 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch index a855c7db089..0b5043c7561 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch @@ -1,37 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index c74298fb3be..21dfc841aea 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch index b19398528bb..e30859d3dbe 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch index 57628771165..90b6f42c0f2 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch @@ -1,31 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch index d9d2b3a236c..c8d7494d4d5 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch @@ -1,30 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch index 4e8e768c965..c577be0479c 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch @@ -1,33 +1,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d81f7a1358562622a8bb0c5094228a981276ada5 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 2 Mar 2016 16:06:13 +0100 Subject: [PATCH 34/43] Bug Fix for Dashboard LocationPointerCompass --- .../client/widgets/windbot/compass/LocationPointerCompass.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.java index e3eaaf0f2a2..a6a3a21c52f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompass.java @@ -57,7 +57,7 @@ public class LocationPointerCompass extends Composite implements HasWidgets, Loc private void updateNeedleAngle(double newDirection) { // Adapt degrees to image angle synchronized (this) { - double newAngle = newDirection-angleOffset; + double newAngle = (newDirection-angleOffset)%360; String winddirectionformatted = NumberFormat.getFormat("#0").format(newAngle); compassNeedle.getElement().getStyle().setProperty("transform", "rotate(" + winddirectionformatted + "deg)"); compassNeedle.getElement().getStyle() From 964112c19650fe32a6fc9831619498b60ab7a045 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Thu, 3 Mar 2016 13:12:57 +0100 Subject: [PATCH 35/43] removed unused imports at LocationPointerCompassAngleDistance --- .../windbot/compass/LocationPointerCompassAngleDistance.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompassAngleDistance.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompassAngleDistance.java index 11d2d0020c7..9aa0f802e6f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompassAngleDistance.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/compass/LocationPointerCompassAngleDistance.java @@ -55,18 +55,17 @@ public class LocationPointerCompassAngleDistance implements LocationListener, Co Double phi2 = lat2 * degreesToRadiansFactor; Double lam1 = lng1 * degreesToRadiansFactor; Double lam2 = lng2 * degreesToRadiansFactor; - double angle = Math.atan2(Math.sin(lam2 - lam1) * Math.cos(phi2), Math.cos(phi1) * Math.sin(phi2) - Math.sin(phi1) * Math.cos(phi2) * Math.cos(lam2 - lam1)) * 180 / Math.PI; if (angle < 0) { angle = 360 + angle; } - return angle; + return Math.abs(angle); } private float getDistanceBetweenGPSPoints(double lat1, double lng1, double lat2, double lng2) { - double earthRadius = 6371000; // kilometers + double earthRadius = 6371000; //kilometers double dLat = Math.toRadians(lat2 - lat1); double dLng = Math.toRadians(lng2 - lng1); double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(Math.toRadians(lat1)) From a88367e6b22b775655171ce073144b3d24f930fc Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Wed, 9 Mar 2016 22:45:35 +0100 Subject: [PATCH 36/43] bugfix in StartlineAdvantagesByWind --- .../GetStartlineAdvantagesByWindAction.java | 6 +- .../windbot/charts/VerticalWindChart.java | 14 +- ...efaultPolarWindAngleBoatSpeedFunction.java | 11 +- .../StartlineAdvantagesByWindCalculator.java | 267 ++++++++++-------- .../AbstracPreCalculationDataRetriever.java | 44 ++- 5 files changed, 209 insertions(+), 133 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantagesByWindAction.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantagesByWindAction.java index 786e0708576..1d8776f81e2 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantagesByWindAction.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/actions/GetStartlineAdvantagesByWindAction.java @@ -12,11 +12,12 @@ import com.sap.sailing.dashboards.gwt.server.util.actions.startlineadvantage.Sta import com.sap.sailing.dashboards.gwt.shared.dispatch.DashboardDispatchContext; import com.sap.sailing.dashboards.gwt.shared.dispatch.RequiresLiveRaceAndCachesMovingAverageAction; import com.sap.sailing.dashboards.gwt.shared.dto.StartlineAdvantagesWithMaxAndAverageDTO; +import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.dispatch.shared.exceptions.DispatchException; -public class GetStartlineAdvantagesByWindAction extends RequiresLiveRaceAndCachesMovingAverageAction { +public class GetStartlineAdvantagesByWindAction extends RequiresLiveRaceAndCachesMovingAverageAction { public GetStartlineAdvantagesByWindAction() {} @@ -32,7 +33,8 @@ public class GetStartlineAdvantagesByWindAction extends RequiresLiveRaceAndCach StartlineAdvantagesWithMaxAndAverageDTO result = new StartlineAdvantagesWithMaxAndAverageDTO(); TrackedRace liveRace = super.getLiveRace(dashboardDispatchContext); if (liveRace != null) { - StartlineAdvantagesByWindCalculator startlineAdvantagesByWindCalculator = new StartlineAdvantagesByWindCalculator(dashboardDispatchContext); + final DomainFactory domainFactory = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory(); + StartlineAdvantagesByWindCalculator startlineAdvantagesByWindCalculator = new StartlineAdvantagesByWindCalculator(dashboardDispatchContext, domainFactory); result = startlineAdvantagesByWindCalculator.getStartLineAdvantagesAccrossLineFromTrackedRaceAtTimePoint(liveRace, MillisecondsTimePoint.now()); } if(result != null && result.maximum != null) { diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/charts/VerticalWindChart.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/charts/VerticalWindChart.java index 1a0a33ce2d0..6fb1e99d8b3 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/charts/VerticalWindChart.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/windbot/charts/VerticalWindChart.java @@ -278,13 +278,15 @@ public class VerticalWindChart extends Composite implements HasWidgets { * */ @UiHandler("verticalWindChartClickArea") public void verticalWindChartClickAreaClicked(ClickEvent e) { - if (chartIntervallinMinutes == SMALL_DISPLAY_INTERVALL_IN_MINUTES) { - chartIntervallinMinutes = LARGE_DISPLAY_INTERVALL_IN_MINUTES; - } else { - chartIntervallinMinutes = SMALL_DISPLAY_INTERVALL_IN_MINUTES; + if (lastPoint != null) { + if (chartIntervallinMinutes == SMALL_DISPLAY_INTERVALL_IN_MINUTES) { + chartIntervallinMinutes = LARGE_DISPLAY_INTERVALL_IN_MINUTES; + } else { + chartIntervallinMinutes = SMALL_DISPLAY_INTERVALL_IN_MINUTES; + } + adaptVerticalWindChartExtemes(lastPoint.getX().longValue()); + notifyVerticalWindChartClickListeners(chartIntervallinMinutes); } - adaptVerticalWindChartExtemes(lastPoint.getX().longValue()); - notifyVerticalWindChartClickListeners(chartIntervallinMinutes); } @Override diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/DefaultPolarWindAngleBoatSpeedFunction.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/DefaultPolarWindAngleBoatSpeedFunction.java index 7b16e26be3d..e2365db78ec 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/DefaultPolarWindAngleBoatSpeedFunction.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/DefaultPolarWindAngleBoatSpeedFunction.java @@ -4,6 +4,9 @@ import org.apache.commons.math.ArgumentOutsideDomainException; import org.apache.commons.math.analysis.interpolation.SplineInterpolator; import org.apache.commons.math.analysis.polynomials.PolynomialSplineFunction; +import com.sap.sailing.domain.base.SpeedWithConfidence; +import com.sap.sailing.domain.base.impl.SpeedWithConfidenceImpl; +import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; @@ -27,11 +30,11 @@ public class DefaultPolarWindAngleBoatSpeedFunction { windAngleBoatBearingSpeedFunction = splineInterpolator.interpolate(windAngleXValues, boatBearingYValues); } - public Speed getBoatSpeedForWindAngleAndSpeed(double angle, double speed) { - Speed result = null; + public SpeedWithConfidence getBoatSpeedForWindAngleAndSpeed(Bearing angleToWind, Speed speed) { + SpeedWithConfidence result = null; try { - double boatSpeed = windAngleBoatBearingSpeedFunction.value(convert360AngleTo180RangeAngle(angle)); - result = new KnotSpeedImpl(boatSpeed); + KnotSpeedImpl boatSpeed = new KnotSpeedImpl(windAngleBoatBearingSpeedFunction.value(convert360AngleTo180RangeAngle(angleToWind.getDegrees()))); + result = new SpeedWithConfidenceImpl(boatSpeed, 0.5 , null); } catch (ArgumentOutsideDomainException e) { e.printStackTrace(); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/StartlineAdvantagesByWindCalculator.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/StartlineAdvantagesByWindCalculator.java index 806bd4bbf3c..a04a9ed9e65 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/StartlineAdvantagesByWindCalculator.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/StartlineAdvantagesByWindCalculator.java @@ -10,12 +10,16 @@ import com.sap.sailing.dashboards.gwt.server.util.actions.startlineadvantage.pre import com.sap.sailing.dashboards.gwt.shared.dispatch.DashboardDispatchContext; import com.sap.sailing.dashboards.gwt.shared.dto.StartLineAdvantageDTO; import com.sap.sailing.dashboards.gwt.shared.dto.StartlineAdvantagesWithMaxAndAverageDTO; +import com.sap.sailing.domain.base.DomainFactory; +import com.sap.sailing.domain.base.SpeedWithConfidence; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; +import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.MeterDistance; +import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; @@ -24,34 +28,38 @@ import com.sap.sse.common.Util.Pair; * @author Alexander Ries (D062114) * */ -public class StartlineAdvantagesByWindCalculator extends AbstracPreCalculationDataRetriever { +public class StartlineAdvantagesByWindCalculator extends AbstracPreCalculationDataRetriever { private DashboardDispatchContext dashboardDispatchContext; + private DomainFactory domainFactory; private DefaultPolarWindAngleBoatSpeedFunction defaultPolarSpeedWindAngleFunction; - - private final Logger logger = Logger.getLogger(StartlineAdvantagesByWindCalculator.class.getName()); - - public StartlineAdvantagesByWindCalculator(DashboardDispatchContext dashboardDispatchContext){ + + private final Logger logger = Logger.getLogger(StartlineAdvantagesByWindCalculator.class.getName()); + + public StartlineAdvantagesByWindCalculator(DashboardDispatchContext dashboardDispatchContext, DomainFactory domainFactory) { + super(domainFactory); this.dashboardDispatchContext = dashboardDispatchContext; + this.domainFactory = domainFactory; this.defaultPolarSpeedWindAngleFunction = new DefaultPolarWindAngleBoatSpeedFunction(); } - - public StartlineAdvantagesWithMaxAndAverageDTO getStartLineAdvantagesAccrossLineFromTrackedRaceAtTimePoint(TrackedRace trackedRace,TimePoint timepoint) { + + public StartlineAdvantagesWithMaxAndAverageDTO getStartLineAdvantagesAccrossLineFromTrackedRaceAtTimePoint( + TrackedRace trackedRace, TimePoint timepoint) { StartlineAdvantagesWithMaxAndAverageDTO result = new StartlineAdvantagesWithMaxAndAverageDTO(); if (trackedRace != null) { retrieveDataForCalculation(trackedRace, dashboardDispatchContext.getPolarDataService()); - if (wind != null) { + if (getWind() != null) { Pair startlineAdvantagesAndConfidencesAsArray = null; if (isStartlineCompletelyUnderneathLaylines()) { logger.log(Level.INFO, "Startline is completely underneath laylines"); - Pair advantagesRange = new Pair(0.0, startlineLenghtInMeters); + Pair advantagesRange = new Pair(0.0, getStartlineLenghtInMeters()); List startlineAdvantages = calculateStartlineAdvantagesUnderneathLaylinesInRange(advantagesRange); double maximum = getMaximumAdvantageOfStartlineAdvantageDTOs(startlineAdvantages); result.maximum = maximum; startlineAdvantagesAndConfidencesAsArray = convertStartLineAdvantageDTOListToPointAndConfidenceArrays(startlineAdvantages); } else if (isStartlineCompletelyAboveLaylines()) { logger.log(Level.INFO, "Startline is completely above laylines"); - Pair advantagesRange = new Pair(0.0, startlineLenghtInMeters); + Pair advantagesRange = new Pair(0.0, getStartlineLenghtInMeters()); List startlineAdvantages = calculatePolarBasedStartlineAdvantagesInRange(advantagesRange); subtractMinimumOfAllStartlineAdvantages(startlineAdvantages); double maximum = getMaximumAdvantageOfStartlineAdvantageDTOs(startlineAdvantages); @@ -83,105 +91,112 @@ public class StartlineAdvantagesByWindCalculator extends AbstracPreCalculationD } return result; } - - private boolean isBearingAboveAdvantageLines(Bearing bearing){ + + private boolean isBearingAboveAdvantageLines(Bearing bearing) { boolean result = false; - Bearing bearingOfRightLaylineInDeg = new DegreeBearingImpl(wind.getBearing().getDegrees() - meouvreAngle / 2); - Bearing bearingOfLeftLaylineInDeg = new DegreeBearingImpl(wind.getBearing().getDegrees() + meouvreAngle / 2); - if (bearing.getDegrees() < bearingOfRightLaylineInDeg.getDegrees() && bearing.getDegrees() > 0 || - bearing.getDegrees() > bearingOfLeftLaylineInDeg.getDegrees() && bearing.getDegrees() < 360) { + Bearing bearingOfRightLaylineInDeg = new DegreeBearingImpl(getWind().getBearing().getDegrees() + - getManeuverAngle() / 2); + Bearing bearingOfLeftLaylineInDeg = new DegreeBearingImpl(getWind().getBearing().getDegrees() + + getManeuverAngle() / 2); + if (bearing.getDegrees() < bearingOfRightLaylineInDeg.getDegrees() && bearing.getDegrees() > 0 + || bearing.getDegrees() > bearingOfLeftLaylineInDeg.getDegrees() && bearing.getDegrees() < 360) { result = true; } return result; } - - private boolean isBearingUnderneathAdvantageLines(Bearing bearing){ + + private boolean isBearingUnderneathAdvantageLines(Bearing bearing) { boolean result = false; - Bearing bearingOfRightLaylineInDeg = new DegreeBearingImpl(wind.getBearing().getDegrees() - meouvreAngle / 2); - Bearing bearingOfLeftLaylineInDeg = new DegreeBearingImpl(wind.getBearing().getDegrees() + meouvreAngle / 2); - logger.log(Level.INFO, "Underneath bearingOfRightLaylineInDeg?"+bearingOfRightLaylineInDeg); - logger.log(Level.INFO, "Underneath bearingOfLeftLaylineInDeg?"+bearingOfLeftLaylineInDeg); - if (bearing.getDegrees() > bearingOfRightLaylineInDeg.getDegrees() && bearing.getDegrees() < bearingOfLeftLaylineInDeg.getDegrees()) { + Bearing bearingOfRightLaylineInDeg = new DegreeBearingImpl(getWind().getBearing().getDegrees() + - getManeuverAngle() / 2); + Bearing bearingOfLeftLaylineInDeg = new DegreeBearingImpl(getWind().getBearing().getDegrees() + + getManeuverAngle() / 2); + logger.log(Level.INFO, "Underneath bearingOfRightLaylineInDeg?" + bearingOfRightLaylineInDeg); + logger.log(Level.INFO, "Underneath bearingOfLeftLaylineInDeg?" + bearingOfLeftLaylineInDeg); + if (bearing.getDegrees() > bearingOfRightLaylineInDeg.getDegrees() + && bearing.getDegrees() < bearingOfLeftLaylineInDeg.getDegrees()) { result = true; } return result; } - + private boolean isStartlineCompletelyAboveLaylines() { boolean result = false; - Bearing bearingRCBoatToFirstMark = new DegreeBearingImpl( - startlineAndFirstMarkPositions.firstMarkPosition.getBearingGreatCircle( - startlineAndFirstMarkPositions.startBoatPosition).getDegrees()); - Bearing bearingPinEndToFirstMark = new DegreeBearingImpl( - startlineAndFirstMarkPositions.firstMarkPosition.getBearingGreatCircle( - startlineAndFirstMarkPositions.pinEndPosition).getDegrees()); - if (isBearingAboveAdvantageLines(bearingRCBoatToFirstMark) && isBearingAboveAdvantageLines(bearingPinEndToFirstMark)) { + Bearing bearingRCBoatToFirstMark = new DegreeBearingImpl(getStartlineAndFirstMarkPositions().firstMarkPosition + .getBearingGreatCircle(getStartlineAndFirstMarkPositions().startBoatPosition).getDegrees()); + Bearing bearingPinEndToFirstMark = new DegreeBearingImpl(getStartlineAndFirstMarkPositions().firstMarkPosition + .getBearingGreatCircle(getStartlineAndFirstMarkPositions().pinEndPosition).getDegrees()); + if (isBearingAboveAdvantageLines(bearingRCBoatToFirstMark) + && isBearingAboveAdvantageLines(bearingPinEndToFirstMark)) { result = true; } return result; } - + private boolean isStartlineCompletelyUnderneathLaylines() { boolean result = false; - Bearing bearingFirstMarkToRCBoat = new DegreeBearingImpl( - startlineAndFirstMarkPositions.firstMarkPosition.getBearingGreatCircle( - startlineAndFirstMarkPositions.startBoatPosition).getDegrees()); - Bearing bearingFirstMarkToPinEnd = new DegreeBearingImpl( - startlineAndFirstMarkPositions.firstMarkPosition.getBearingGreatCircle( - startlineAndFirstMarkPositions.pinEndPosition).getDegrees()); - logger.log(Level.INFO, "Underneath RC?"+bearingFirstMarkToRCBoat); - logger.log(Level.INFO, "Underneath PIN?"+bearingFirstMarkToPinEnd); - if (isBearingUnderneathAdvantageLines(bearingFirstMarkToRCBoat) && isBearingUnderneathAdvantageLines(bearingFirstMarkToPinEnd)) { + Bearing bearingFirstMarkToRCBoat = new DegreeBearingImpl(getStartlineAndFirstMarkPositions().firstMarkPosition + .getBearingGreatCircle(getStartlineAndFirstMarkPositions().startBoatPosition).getDegrees()); + Bearing bearingFirstMarkToPinEnd = new DegreeBearingImpl(getStartlineAndFirstMarkPositions().firstMarkPosition + .getBearingGreatCircle(getStartlineAndFirstMarkPositions().pinEndPosition).getDegrees()); + logger.log(Level.INFO, "Underneath RC?" + bearingFirstMarkToRCBoat); + logger.log(Level.INFO, "Underneath PIN?" + bearingFirstMarkToPinEnd); + if (isBearingUnderneathAdvantageLines(bearingFirstMarkToRCBoat) + && isBearingUnderneathAdvantageLines(bearingFirstMarkToPinEnd)) { result = true; } return result; } - - private Pair getStartAndEndPointOfPolarBasedStartlineAdvatagesInDistancesToRCBoat(Position rightIntersection, Position leftIntersection) { + + private Pair getStartAndEndPointOfPolarBasedStartlineAdvatagesInDistancesToRCBoat( + Position rightIntersection, Position leftIntersection) { Pair result = null; - if(rightIntersection != null && leftIntersection == null) { - double distanceFromIntersectionToRCBoatInMeters = rightIntersection.getDistance(startlineAndFirstMarkPositions.startBoatPosition).getMeters(); + if (rightIntersection != null && leftIntersection == null) { + double distanceFromIntersectionToRCBoatInMeters = rightIntersection.getDistance( + getStartlineAndFirstMarkPositions().startBoatPosition).getMeters(); result = new Pair(0.0, distanceFromIntersectionToRCBoatInMeters); - } else if(rightIntersection == null && leftIntersection != null) { - double distanceFromIntersectionToRCBoatInMeters = leftIntersection.getDistance(startlineAndFirstMarkPositions.startBoatPosition).getMeters(); - result = new Pair(distanceFromIntersectionToRCBoatInMeters, startlineLenghtInMeters); - } else if(rightIntersection != null && leftIntersection != null) { - result = new Pair(0.0, startlineLenghtInMeters); + } else if (rightIntersection == null && leftIntersection != null) { + double distanceFromIntersectionToRCBoatInMeters = leftIntersection.getDistance( + getStartlineAndFirstMarkPositions().startBoatPosition).getMeters(); + result = new Pair(distanceFromIntersectionToRCBoatInMeters, getStartlineLenghtInMeters()); + } else if (rightIntersection != null && leftIntersection != null) { + result = new Pair(0.0, getStartlineLenghtInMeters()); } return result; } - - private Position getIntersectionOfRightLaylineAndStartline () { + + private Position getIntersectionOfRightLaylineAndStartline() { Position result = null; - Bearing bearingOfRightLaylineInDeg = new DegreeBearingImpl(wind.getBearing().getDegrees() - meouvreAngle / 2); + Bearing bearingOfRightLaylineInDeg = new DegreeBearingImpl(getWind().getBearing().getDegrees() + - getManeuverAngle() / 2); result = calculateIntersectionPointsOfStartlineAndLaylineWithBearing(bearingOfRightLaylineInDeg); return result; } - - private Position getIntersectionOfLeftLaylineAndStartline () { + + private Position getIntersectionOfLeftLaylineAndStartline() { Position result = null; - Bearing bearingOfRightLaylineInDeg = new DegreeBearingImpl(wind.getBearing().getDegrees() + meouvreAngle / 2); + Bearing bearingOfRightLaylineInDeg = new DegreeBearingImpl(getWind().getBearing().getDegrees() + + getManeuverAngle() / 2); result = calculateIntersectionPointsOfStartlineAndLaylineWithBearing(bearingOfRightLaylineInDeg); return result; } - + private Position calculateIntersectionPointsOfStartlineAndLaylineWithBearing(Bearing bearing) { Position result = null; - Bearing bearingOfStartlineInRad = startlineAndFirstMarkPositions.startBoatPosition - .getBearingGreatCircle(startlineAndFirstMarkPositions.pinEndPosition); + Bearing bearingOfStartlineInRad = getStartlineAndFirstMarkPositions().startBoatPosition + .getBearingGreatCircle(getStartlineAndFirstMarkPositions().pinEndPosition); Bearing bearingOfStartlineInDeg = new DegreeBearingImpl(bearingOfStartlineInRad.getDegrees()); logger.log(Level.INFO, "bearingOfStartlineInDeg " + bearingOfStartlineInDeg); logger.log(Level.INFO, "bearingOfLaylineInDeg " + bearing); - Position intersectionPointLaylineStartline = startlineAndFirstMarkPositions.firstMarkPosition - .getIntersection(bearing, startlineAndFirstMarkPositions.pinEndPosition, - bearingOfStartlineInDeg); + Position intersectionPointLaylineStartline = getStartlineAndFirstMarkPositions().firstMarkPosition.getIntersection( + bearing, getStartlineAndFirstMarkPositions().pinEndPosition, bearingOfStartlineInDeg); logger.log(Level.INFO, "rightIntersectionPointLaylineStartline " + intersectionPointLaylineStartline); Bearing bearingIntersectionPointToFirstMark = new DegreeBearingImpl( - startlineAndFirstMarkPositions.firstMarkPosition.getBearingGreatCircle( + getStartlineAndFirstMarkPositions().firstMarkPosition.getBearingGreatCircle( intersectionPointLaylineStartline).getDegrees()); - if (bearingIntersectionPointToFirstMark.getDegrees() < bearing.getDegrees() + 1 && - bearingIntersectionPointToFirstMark.getDegrees() > bearing.getDegrees() - 1 && - isOnStartline(intersectionPointLaylineStartline)) { + if (bearingIntersectionPointToFirstMark.getDegrees() < bearing.getDegrees() + 1 + && bearingIntersectionPointToFirstMark.getDegrees() > bearing.getDegrees() - 1 + && isOnStartline(intersectionPointLaylineStartline)) { result = intersectionPointLaylineStartline; logger.log(Level.INFO, "Layline crosses startline"); } @@ -192,17 +207,19 @@ public class StartlineAdvantagesByWindCalculator extends AbstracPreCalculationD private boolean isOnStartline(Position position) { boolean result = false; - Distance distanceToStartline = position.getDistanceToLine(startlineAndFirstMarkPositions.startBoatPosition, startlineAndFirstMarkPositions.pinEndPosition); + Distance distanceToStartline = position.getDistanceToLine(getStartlineAndFirstMarkPositions().startBoatPosition, + getStartlineAndFirstMarkPositions().pinEndPosition); if (distanceToStartline.getMeters() < 1) { result = true; } return result; } - private List addClosingZeroPointToMixedAdvantages(List advantages, Pair rangePinEndStartlineAdvantage) { + private List addClosingZeroPointToMixedAdvantages(List advantages, + Pair rangePinEndStartlineAdvantage) { StartLineAdvantageDTO startLineAdvantageDTO = new StartLineAdvantageDTO(); startLineAdvantageDTO.confidence = 1.0; - if(rangePinEndStartlineAdvantage.getA() > 0) { + if (rangePinEndStartlineAdvantage.getA() > 0) { startLineAdvantageDTO.distanceToRCBoatInMeters = rangePinEndStartlineAdvantage.getB(); startLineAdvantageDTO.startLineAdvantage = 0.0; advantages.add(startLineAdvantageDTO); @@ -213,40 +230,44 @@ public class StartlineAdvantagesByWindCalculator extends AbstracPreCalculationD } return advantages; } - - private Pair getPinEndStartlineAdvantagesRangeFromPolarAdvantagesRange(Pair rangePolarBasedStartlineAdvatages) { + + private Pair getPinEndStartlineAdvantagesRangeFromPolarAdvantagesRange( + Pair rangePolarBasedStartlineAdvatages) { Pair result = null; double pinEndStartlineAdvantagesStart; double pinEndStartlineAdvantagesEnd; - if(rangePolarBasedStartlineAdvatages.getA().doubleValue() == 0.0 && rangePolarBasedStartlineAdvatages.getB().doubleValue() != startlineLenghtInMeters) { + if (rangePolarBasedStartlineAdvatages.getA().doubleValue() == 0.0 + && rangePolarBasedStartlineAdvatages.getB().doubleValue() != getStartlineLenghtInMeters()) { pinEndStartlineAdvantagesStart = rangePolarBasedStartlineAdvatages.getB().doubleValue(); - pinEndStartlineAdvantagesEnd = startlineLenghtInMeters; + pinEndStartlineAdvantagesEnd = getStartlineLenghtInMeters(); result = new Pair(pinEndStartlineAdvantagesStart, pinEndStartlineAdvantagesEnd); - } else if (rangePolarBasedStartlineAdvatages.getA().doubleValue() != 0.0 && rangePolarBasedStartlineAdvatages.getB().doubleValue() == startlineLenghtInMeters) { + } else if (rangePolarBasedStartlineAdvatages.getA().doubleValue() != 0.0 + && rangePolarBasedStartlineAdvatages.getB().doubleValue() == getStartlineLenghtInMeters()) { pinEndStartlineAdvantagesStart = 0.0; pinEndStartlineAdvantagesEnd = rangePolarBasedStartlineAdvatages.getB().doubleValue(); result = new Pair(pinEndStartlineAdvantagesStart, pinEndStartlineAdvantagesEnd); } return result; } - + private List calculateStartlineAdvantagesUnderneathLaylinesInRange( Pair rangePinEndStartlineAdvantage) { List result = new ArrayList(); if (rangePinEndStartlineAdvantage != null) { - logger.log(Level.INFO, "PinEnd startline advantages range " + rangePinEndStartlineAdvantage.getA() + " - "+ rangePinEndStartlineAdvantage.getB()); + logger.log(Level.INFO, "PinEnd startline advantages range " + rangePinEndStartlineAdvantage.getA() + " - " + + rangePinEndStartlineAdvantage.getB()); StartLineAdvantageDTO rightEdgeAdvantage = new StartLineAdvantageDTO(); rightEdgeAdvantage.confidence = 1.0; rightEdgeAdvantage.distanceToRCBoatInMeters = rangePinEndStartlineAdvantage.getA(); StartLineAdvantageDTO leftEdgeAdvantage = new StartLineAdvantageDTO(); leftEdgeAdvantage.confidence = 1.0; leftEdgeAdvantage.distanceToRCBoatInMeters = rangePinEndStartlineAdvantage.getB(); - if (startlineAdvantageAtPinEndInMeters >= 0) { - leftEdgeAdvantage.startLineAdvantage = startlineAdvantageAtPinEndInMeters; + if (getStartlineAdvantageAtPinEndInMeters() >= 0) { + leftEdgeAdvantage.startLineAdvantage = getStartlineAdvantageAtPinEndInMeters(); rightEdgeAdvantage.startLineAdvantage = 0.0; } else { leftEdgeAdvantage.startLineAdvantage = 0.0; - rightEdgeAdvantage.startLineAdvantage = Math.abs(startlineAdvantageAtPinEndInMeters); + rightEdgeAdvantage.startLineAdvantage = Math.abs(getStartlineAdvantageAtPinEndInMeters()); } result.add(rightEdgeAdvantage); result.add(leftEdgeAdvantage); @@ -255,46 +276,53 @@ public class StartlineAdvantagesByWindCalculator extends AbstracPreCalculationD } return result; } - - private Pair convertStartLineAdvantageDTOListToPointAndConfidenceArrays(List startLineAdvantageDTOList) { + + private Pair convertStartLineAdvantageDTOListToPointAndConfidenceArrays( + List startLineAdvantageDTOList) { Pair result = null; - if(startLineAdvantageDTOList != null && startLineAdvantageDTOList.size() > 0) { + if (startLineAdvantageDTOList != null && startLineAdvantageDTOList.size() > 0) { Number[][] distanceToRCBoatToStartlineAdvantage = new Number[startLineAdvantageDTOList.size()][2]; Number[][] distanceToRCBoatToConfidence = new Number[startLineAdvantageDTOList.size()][2]; - for(int i = 0; i < startLineAdvantageDTOList.size(); i++) { + for (int i = 0; i < startLineAdvantageDTOList.size(); i++) { StartLineAdvantageDTO startLineAdvantageDTO = startLineAdvantageDTOList.get(i); distanceToRCBoatToStartlineAdvantage[i][0] = startLineAdvantageDTO.distanceToRCBoatInMeters; distanceToRCBoatToStartlineAdvantage[i][1] = startLineAdvantageDTO.startLineAdvantage; distanceToRCBoatToConfidence[i][0] = startLineAdvantageDTO.distanceToRCBoatInMeters; distanceToRCBoatToConfidence[i][1] = startLineAdvantageDTO.confidence; } - result = new Pair(distanceToRCBoatToStartlineAdvantage, distanceToRCBoatToConfidence); + result = new Pair(distanceToRCBoatToStartlineAdvantage, + distanceToRCBoatToConfidence); } return result; - } - - private List calculatePolarBasedStartlineAdvantagesInRange(Pair rangePinEndStartlineAdvantage) { + } + + private List calculatePolarBasedStartlineAdvantagesInRange( + Pair rangePinEndStartlineAdvantage) { List result = new ArrayList(); if (rangePinEndStartlineAdvantage != null) { - logger.log(Level.INFO, "PolarBased startline advantages range " + rangePinEndStartlineAdvantage.getA() + " - "+ rangePinEndStartlineAdvantage.getB()); - Bearing bearingOfStartlineInRad = startlineAndFirstMarkPositions.startBoatPosition - .getBearingGreatCircle(startlineAndFirstMarkPositions.pinEndPosition); + logger.log(Level.INFO, "PolarBased startline advantages range " + rangePinEndStartlineAdvantage.getA() + + " - " + rangePinEndStartlineAdvantage.getB()); + Bearing bearingOfStartlineInRad = getStartlineAndFirstMarkPositions().startBoatPosition + .getBearingGreatCircle(getStartlineAndFirstMarkPositions().pinEndPosition); Bearing bearingOfStartlineInDeg = new DegreeBearingImpl(bearingOfStartlineInRad.getDegrees()); - for(double i = rangePinEndStartlineAdvantage.getA().doubleValue(); i < rangePinEndStartlineAdvantage.getB().doubleValue()-1 ; i++) { + for (double i = rangePinEndStartlineAdvantage.getA().doubleValue(); i < rangePinEndStartlineAdvantage + .getB().doubleValue() - 1; i++) { StartLineAdvantageDTO startlineAdvantage = new StartLineAdvantageDTO(); startlineAdvantage.confidence = 0.5; startlineAdvantage.distanceToRCBoatInMeters = i; - Position startingPosition = startlineAndFirstMarkPositions.startBoatPosition.translateRhumb(bearingOfStartlineInDeg, new MeterDistance(i)); - Distance startingPositionToFirstMarkDistance = startingPosition.getDistance(startlineAndFirstMarkPositions.firstMarkPosition); - Bearing bearingOfFirstMarkToStartPositionPositionInRad = startlineAndFirstMarkPositions.firstMarkPosition - .getBearingGreatCircle(startingPosition); + Position startingPosition = getStartlineAndFirstMarkPositions().startBoatPosition.translateRhumb(bearingOfStartlineInDeg, new MeterDistance(i)); + Distance startingPositionToFirstMarkDistance = startingPosition.getDistance(getStartlineAndFirstMarkPositions().firstMarkPosition); + Bearing bearingOfFirstMarkToStartPositionPositionInRad = getStartlineAndFirstMarkPositions().firstMarkPosition.getBearingGreatCircle(startingPosition); Bearing bearingOfFirstMarkToStartPositionPositionInDeg = new DegreeBearingImpl(bearingOfFirstMarkToStartPositionPositionInRad.getDegrees()); - double angleToWind = Math.abs(wind.getBearing().getDifferenceTo(bearingOfFirstMarkToStartPositionPositionInDeg).getDegrees()); - logger.log(Level.INFO, "angleToWind"+angleToWind); - Speed speed = defaultPolarSpeedWindAngleFunction.getBoatSpeedForWindAngleAndSpeed(angleToWind, wind.getBeaufort()); - logger.log(Level.INFO, "Speed"+speed.getKnots()); - logger.log(Level.INFO, "startingPositionToFirstMarkDistance.getMeters()"+startingPositionToFirstMarkDistance.getMeters()); - startlineAdvantage.startLineAdvantage = Math.abs((startingPositionToFirstMarkDistance.getMeters()/speed.getMetersPerSecond())*speed.getMetersPerSecond()); + DegreeBearingImpl angleToWind = new DegreeBearingImpl(Math.abs(getWind().getBearing().getDifferenceTo(bearingOfFirstMarkToStartPositionPositionInDeg).getDegrees())); + logger.log(Level.INFO, "angleToWind" + angleToWind); + SpeedWithConfidence speedWithConfidence = getBoatSpeedWithConfidenceForWindAngleAndStrength(angleToWind); + Speed speed = speedWithConfidence.getObject(); + logger.log(Level.INFO, "Speed: " + speed.getKnots()+" Confidence: "+speedWithConfidence.getConfidence()); + logger.log(Level.INFO, "startingPositionToFirstMarkDistance.getMeters()" + startingPositionToFirstMarkDistance.getMeters()); + startlineAdvantage.startLineAdvantage = Math + .abs((startingPositionToFirstMarkDistance.getMeters() / speed.getMetersPerSecond()) + * speed.getMetersPerSecond()); result.add(startlineAdvantage); } } else { @@ -302,22 +330,23 @@ public class StartlineAdvantagesByWindCalculator extends AbstracPreCalculationD } return result; } - - private List subtractAgainstMaximumOfAllStartlineAdvantages(List advantages, double maximum) { - for(StartLineAdvantageDTO startLineAdvantageDTO : advantages) { - startLineAdvantageDTO.startLineAdvantage = maximum-startLineAdvantageDTO.startLineAdvantage; + + private List subtractAgainstMaximumOfAllStartlineAdvantages( + List advantages, double maximum) { + for (StartLineAdvantageDTO startLineAdvantageDTO : advantages) { + startLineAdvantageDTO.startLineAdvantage = maximum - startLineAdvantageDTO.startLineAdvantage; } return advantages; } - + private List subtractMinimumOfAllStartlineAdvantages(List advantages) { double minimum = getMinimumAdvantageOfStartlineAdvantageDTOs(advantages); - for(StartLineAdvantageDTO startLineAdvantageDTO : advantages) { - startLineAdvantageDTO.startLineAdvantage = startLineAdvantageDTO.startLineAdvantage-minimum; + for (StartLineAdvantageDTO startLineAdvantageDTO : advantages) { + startLineAdvantageDTO.startLineAdvantage = startLineAdvantageDTO.startLineAdvantage - minimum; } return advantages; } - + private Double getMaximumAdvantageOfStartlineAdvantageDTOs(List advantages) { Double result = null; List sortedAdvantages = new ArrayList(); @@ -328,15 +357,27 @@ public class StartlineAdvantagesByWindCalculator extends AbstracPreCalculationD } return result; } - + private double getMinimumAdvantageOfStartlineAdvantageDTOs(List advantages) { double result = 0; List sortedAdvantages = new ArrayList(); sortedAdvantages.addAll(advantages); - if(sortedAdvantages != null && sortedAdvantages.size() > 0) { - Collections.sort(sortedAdvantages, StartLineAdvantageDTO.startlineAdvantageComparatorByAdvantageDesc); - result = sortedAdvantages.get(sortedAdvantages.size()-1).startLineAdvantage; + if (sortedAdvantages != null && sortedAdvantages.size() > 0) { + Collections.sort(sortedAdvantages, StartLineAdvantageDTO.startlineAdvantageComparatorByAdvantageDesc); + result = sortedAdvantages.get(sortedAdvantages.size() - 1).startLineAdvantage; } return result; } + + private SpeedWithConfidence getBoatSpeedWithConfidenceForWindAngleAndStrength(Bearing angleToWind) { + SpeedWithConfidence result = null; + try { + result = dashboardDispatchContext.getPolarDataService().getSpeed(domainFactory.getOrCreateBoatClass("Extreme 40"), new KnotSpeedImpl(getWind().getBeaufort()), angleToWind); + } catch (NotEnoughDataHasBeenAddedException e) { + result = defaultPolarSpeedWindAngleFunction.getBoatSpeedForWindAngleAndSpeed(angleToWind, new KnotSpeedImpl(getWind().getBeaufort())); + e.printStackTrace(); + } + return result; + + } } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/precalculation/AbstracPreCalculationDataRetriever.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/precalculation/AbstracPreCalculationDataRetriever.java index 1cf1ab8d0e9..5a71f40268f 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/precalculation/AbstracPreCalculationDataRetriever.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/util/actions/startlineadvantage/precalculation/AbstracPreCalculationDataRetriever.java @@ -1,7 +1,6 @@ package com.sap.sailing.dashboards.gwt.server.util.actions.startlineadvantage.precalculation; -import com.sap.sailing.domain.base.impl.BoatClassImpl; -import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.polars.PolarDataService; @@ -15,17 +14,46 @@ public abstract class AbstracPreCalculationDataRetriever implements PreCalculati PreCalculationStartlineAdvantageRetriever, PreCalculationWindRetriever, PreCalculationPolarDataRetriever { - public StartlineAndFirstMarkPositions startlineAndFirstMarkPositions; - public double startlineAdvantageAtPinEndInMeters; - public double startlineLenghtInMeters; - public Wind wind; - public double meouvreAngle; + private StartlineAndFirstMarkPositions startlineAndFirstMarkPositions; + private double startlineAdvantageAtPinEndInMeters; + private double startlineLenghtInMeters; + private Wind wind; + private double maneuverAngle; + private final DomainFactory domainFactory; + + public AbstracPreCalculationDataRetriever(DomainFactory domainFactory) { + super(); + this.domainFactory = domainFactory; + } + protected void retrieveDataForCalculation(TrackedRace trackedRace, PolarDataService polarDataService) { startlineAndFirstMarkPositions = retrieveMarkPositions(trackedRace); startlineAdvantageAtPinEndInMeters = retrieveStartlineAdvantage(trackedRace); startlineLenghtInMeters = retrieveStartlineLenght(trackedRace); wind = retrieveWindAtPosition(startlineAndFirstMarkPositions.startBoatPosition, trackedRace); - meouvreAngle = retrieveManouvreAngleAtWindSpeedAndBoatClass(new BoatClassImpl("Extreme40", BoatClassMasterdata.EXTREME_40), ManeuverType.TACK, wind, polarDataService); + maneuverAngle = retrieveManouvreAngleAtWindSpeedAndBoatClass(domainFactory.getOrCreateBoatClass("Extreme 40"), ManeuverType.TACK, wind, polarDataService); } + + protected StartlineAndFirstMarkPositions getStartlineAndFirstMarkPositions() { + return startlineAndFirstMarkPositions; + } + + protected double getStartlineAdvantageAtPinEndInMeters() { + return startlineAdvantageAtPinEndInMeters; + } + + protected double getStartlineLenghtInMeters() { + return startlineLenghtInMeters; + } + + protected Wind getWind() { + return wind; + } + + protected double getManeuverAngle() { + return maneuverAngle; + } + + } From abe8a8ebe717f09ee731bae56bd36e27ccc40863 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Fri, 11 Mar 2016 11:49:15 +0100 Subject: [PATCH 37/43] Removed commented code from RaceBoardPanel --- .../gwt/ui/raceboard/RaceBoardPanel.java | 1913 ----------------- 1 file changed, 1913 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 65baf0a0baf..c8725e3d14d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -454,1916 +454,3 @@ public class RaceBoardPanel extends SimplePanel implements LeaderboardUpdateList } } } -//||||||| merged common ancestors -//<<<<<<< Temporary merge branch 1 -//package com.sap.sailing.gwt.ui.raceboard; -// -//import java.util.ArrayList; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -//import java.util.UUID; -// -//import com.google.gwt.core.client.Scheduler; -//import com.google.gwt.core.client.Scheduler.ScheduledCommand; -//import com.google.gwt.core.shared.GWT; -//import com.google.gwt.dom.client.Document; -//import com.google.gwt.dom.client.Style.Unit; -//import com.google.gwt.i18n.client.DateTimeFormat; -//import com.google.gwt.user.client.Command; -//import com.google.gwt.user.client.Window; -//import com.google.gwt.user.client.ui.Anchor; -//import com.google.gwt.user.client.ui.FlowPanel; -//import com.google.gwt.user.client.ui.Label; -//import com.google.gwt.user.client.ui.MenuBar; -//import com.google.gwt.user.client.ui.RequiresResize; -//import com.google.gwt.user.client.ui.SimplePanel; -//import com.google.gwt.user.client.ui.UIObject; -//import com.google.gwt.user.client.ui.Widget; -//import com.google.web.bindery.event.shared.EventBus; -//import com.google.web.bindery.event.shared.SimpleEventBus; -//import com.sap.sailing.domain.common.LeaderboardNameConstants; -//import com.sap.sailing.domain.common.RaceIdentifier; -//import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -//import com.sap.sailing.domain.common.dto.BoatDTO; -//import com.sap.sailing.domain.common.dto.CompetitorDTO; -//import com.sap.sailing.domain.common.dto.FleetDTO; -//import com.sap.sailing.domain.common.dto.LeaderboardDTO; -//import com.sap.sailing.domain.common.dto.RaceColumnDTO; -//import com.sap.sailing.domain.common.dto.RaceDTO; -//import com.sap.sailing.gwt.ui.client.CompetitorColorProvider; -//import com.sap.sailing.gwt.ui.client.CompetitorColorProviderImpl; -//import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; -//import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; -//import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; -//import com.sap.sailing.gwt.ui.client.GlobalNavigationPanel; -//import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; -//import com.sap.sailing.gwt.ui.client.MediaServiceAsync; -//import com.sap.sailing.gwt.ui.client.RaceTimePanel; -//import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; -//import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -//import com.sap.sailing.gwt.ui.client.StringMessages; -//import com.sap.sailing.gwt.ui.client.media.MediaPlayerManagerComponent; -//import com.sap.sailing.gwt.ui.client.media.PopupPositionProvider; -//import com.sap.sailing.gwt.ui.client.shared.charts.EditMarkPassingsPanel; -//import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorRaceChart; -//import com.sap.sailing.gwt.ui.client.shared.charts.WindChart; -//import com.sap.sailing.gwt.ui.client.shared.charts.WindChartSettings; -//import com.sap.sailing.gwt.ui.client.shared.filter.FilterWithUI; -//import com.sap.sailing.gwt.ui.client.shared.filter.LeaderboardFetcher; -//import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMap; -//import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; -//import com.sap.sailing.gwt.ui.leaderboard.CompetitorFilterPanel; -//import com.sap.sailing.gwt.ui.leaderboard.ExplicitRaceColumnSelectionWithPreselectedRace; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory; -//import com.sap.sailing.gwt.ui.raceboard.RaceBoardResources.RaceBoardMainCss; -//import com.sap.sse.common.filter.FilterSet; -//import com.sap.sse.common.settings.AbstractSettings; -//import com.sap.sse.gwt.client.ErrorReporter; -//import com.sap.sse.gwt.client.async.AsyncActionsExecutor; -//import com.sap.sse.gwt.client.player.TimeRangeWithZoomModel; -//import com.sap.sse.gwt.client.player.Timer; -//import com.sap.sse.gwt.client.shared.components.Component; -//import com.sap.sse.gwt.client.shared.components.ComponentViewer; -//import com.sap.sse.gwt.client.shared.components.SettingsDialog; -//import com.sap.sse.gwt.client.useragent.UserAgentDetails; -//import com.sap.sse.security.ui.authentication.AuthenticationClientFactory; -//import com.sap.sse.security.ui.authentication.AuthenticationClientFactoryImpl; -//import com.sap.sse.security.ui.authentication.AuthenticationManager; -//import com.sap.sse.security.ui.authentication.AuthenticationManagerImpl; -//import com.sap.sse.security.ui.authentication.AuthenticationPlaceManagementController; -//import com.sap.sse.security.ui.authentication.view.AuthenticationMenuView; -//import com.sap.sse.security.ui.authentication.view.AuthenticationMenuViewImpl; -//import com.sap.sse.security.ui.authentication.view.FlyoutAuthenticationPresenter; -//import com.sap.sse.security.ui.authentication.view.FlyoutAuthenticationView; -//import com.sap.sse.security.ui.client.UserService; -// -///** -// * A view showing a list of components visualizing a race from the regattas announced by calls to {@link #fillRegattas(List)}. -// * The race selection is provided by a {@link RaceSelectionProvider} for which this is a {@link RaceSelectionChangeListener listener}. -// * {@link RaceIdentifier}-based race selection changes are converted to {@link RaceDTO} objects using the {@link #racesByIdentifier} -// * map maintained during {@link #fillRegattas(List)}. The race selection provider is expected to be single selection only. -// * -// * @author Frank Mittag, Axel Uhl (d043530) -// * -// */ -//public class RaceBoardPanel extends SimplePanel implements LeaderboardUpdateListener, PopupPositionProvider, RequiresResize { -// private final SailingServiceAsync sailingService; -// private final MediaServiceAsync mediaService; -// private final UUID eventId; -// private final StringMessages stringMessages; -// private final ErrorReporter errorReporter; -// private final RaceBoardViewConfiguration raceboardViewConfiguration; -// private String raceBoardName; -// -// private final List componentViewers; -// private RaceTimePanel timePanel; -// private final Timer timer; -// private final UserAgentDetails userAgent; -// private final CompetitorSelectionProvider competitorSelectionProvider; -// private final TimeRangeWithZoomModel timeRangeWithZoomModel; -// private final RegattaAndRaceIdentifier selectedRaceIdentifier; -// -// private final String leaderboardName; -// private final LeaderboardPanel leaderboardPanel; -// private WindChart windChart; -// private MultiCompetitorRaceChart competitorChart; -// private EditMarkPassingsPanel editMarkPassingPanel; -// -// /** -// * The component viewer in ONESCREEN view mode. null if in CASCADE view mode -// */ -// private SideBySideComponentViewer leaderboardAndMapViewer; -// -// private final AsyncActionsExecutor asyncActionsExecutor; -// -// private final RaceTimesInfoProvider raceTimesInfoProvider; -// private RaceMap raceMap; -// -// private final FlowPanel raceInformationHeader; -// private final FlowPanel regattaAndRaceTimeInformationHeader; -// private final AuthenticationMenuView userManagementMenuView; -// private boolean currentRaceHasBeenSelectedOnce; -// -// private static final RaceBoardMainCss MAIN_CSS = RaceBoardResources.INSTANCE.mainCss(); -// private static final RaceMapResources raceMapResources = GWT.create(RaceMapResources.class); -// -// /** -// * @param eventId -// * an optional event that can be used for "back"-navigation in case the race board shows a race in the -// * context of an event; may be null. -// * @param isScreenLargeEnoughToOfferChartSupport -// * if the screen is large enough to display charts such as the competitor chart or the wind chart, a -// * padding is provided for the RaceTimePanel that aligns its right border with that of the charts, and -// * the charts are created. This decision is made once on startup in the {@link RaceBoardEntryPoint} class. -// */ -// public RaceBoardPanel(SailingServiceAsync sailingService, MediaServiceAsync mediaService, -// UserService userService, AsyncActionsExecutor asyncActionsExecutor, Map competitorsAndTheirBoats, -// Timer timer, RegattaAndRaceIdentifier selectedRaceIdentifier, String leaderboardName, -// String leaderboardGroupName, UUID eventId, RaceBoardViewConfiguration raceboardViewConfiguration, -// ErrorReporter errorReporter, final StringMessages stringMessages, -// UserAgentDetails userAgent, RaceTimesInfoProvider raceTimesInfoProvider, boolean showMapControls, boolean isScreenLargeEnoughToOfferChartSupport) { -// this.sailingService = sailingService; -// this.mediaService = mediaService; -// this.stringMessages = stringMessages; -// this.raceboardViewConfiguration = raceboardViewConfiguration; -// this.raceTimesInfoProvider = raceTimesInfoProvider; -// this.errorReporter = errorReporter; -// this.userAgent = userAgent; -// this.timer = timer; -// this.eventId = eventId; -// this.currentRaceHasBeenSelectedOnce = false; -// this.leaderboardName = leaderboardName; -// this.selectedRaceIdentifier = selectedRaceIdentifier; -// this.setRaceBoardName(selectedRaceIdentifier.getRaceName()); -// this.asyncActionsExecutor = asyncActionsExecutor; -// FlowPanel mainPanel = new ResizableFlowPanel(); -// mainPanel.setSize("100%", "100%"); -// setWidget(mainPanel); -// raceInformationHeader = new FlowPanel(); -// raceInformationHeader.setStyleName("RegattaRaceInformation-Header"); -// regattaAndRaceTimeInformationHeader = new FlowPanel(); -// regattaAndRaceTimeInformationHeader.setStyleName("RegattaAndRaceTime-Header"); -// this.userManagementMenuView = new AuthenticationMenuViewImpl(new Anchor(), MAIN_CSS.usermanagement_loggedin(), MAIN_CSS.usermanagement_open()); -// this.userManagementMenuView.asWidget().setStyleName(MAIN_CSS.usermanagement_icon()); -// timeRangeWithZoomModel = new TimeRangeWithZoomModel(); -// componentViewers = new ArrayList(); -// final CompetitorColorProvider colorProvider = new CompetitorColorProviderImpl(selectedRaceIdentifier, competitorsAndTheirBoats); -// competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true, colorProvider); -// -// raceMapResources.combinedWindPanelStyle().ensureInjected(); -// raceMap = new RaceMap(sailingService, asyncActionsExecutor, errorReporter, timer, -// competitorSelectionProvider, stringMessages, showMapControls, getConfiguration().isShowViewStreamlets(), getConfiguration().isShowViewStreamletColors(), getConfiguration().isShowViewSimulation(), -// selectedRaceIdentifier, raceMapResources.combinedWindPanelStyle(), /* showHeaderPanel */ true) { -// private static final String INDENT_SMALL_CONTROL_STYLE = "indentsmall"; -// private static final String INDENT_BIG_CONTROL_STYLE = "indentbig"; -// @Override -// public void onResize() { -// super.onResize(); -// Scheduler.get().scheduleDeferred(new ScheduledCommand() { -// @Override -// public void execute() { -// // Show/hide the leaderboard panels toggle button text based on the race map height -// leaderboardAndMapViewer.setLeftComponentToggleButtonTextVisibilityAndDraggerPosition(raceMap.getOffsetHeight() > 400); -// } -// }); -// } -// -// @Override -// protected String getLeftControlsIndentStyle() { -// // Calculate style name for left control indent based on race map height an leaderboard panel visibility -// if (raceMap.getOffsetHeight() <= 300) { -// return INDENT_BIG_CONTROL_STYLE; -// } -// if (leaderboardPanel.isVisible() && raceMap.getOffsetHeight() <= 500) { -// return INDENT_SMALL_CONTROL_STYLE; -// } -// return super.getLeftControlsIndentStyle(); -// } -// }; -// CompetitorFilterPanel competitorSearchTextBox = new CompetitorFilterPanel(competitorSelectionProvider, stringMessages, raceMap, -// new LeaderboardFetcher() { -// @Override -// public LeaderboardDTO getLeaderboard() { -// return leaderboardPanel.getLeaderboard(); -// } -// }, selectedRaceIdentifier); -// raceMap.getLeftHeaderPanel().add(raceInformationHeader); -// raceMap.getRightHeaderPanel().add(regattaAndRaceTimeInformationHeader); -// raceMap.getRightHeaderPanel().add(userManagementMenuView); -// -// // Determine if the screen is large enough to initially display the leaderboard panel on the left side of the -// // map based on the initial screen width. Afterwards, the leaderboard panel visibility can be toggled as usual. -// boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard = Document.get().getClientWidth() >= 1024; -// leaderboardPanel = createLeaderboardPanel(leaderboardName, leaderboardGroupName, competitorSearchTextBox, isScreenLargeEnoughToInitiallyDisplayLeaderboard); -// leaderboardPanel.setTitle(stringMessages.leaderboard()); -// leaderboardPanel.getElement().getStyle().setMarginLeft(6, Unit.PX); -// leaderboardPanel.getElement().getStyle().setMarginTop(10, Unit.PX); -// createOneScreenView(leaderboardName, leaderboardGroupName, eventId, mainPanel, showMapControls, isScreenLargeEnoughToOfferChartSupport, isScreenLargeEnoughToInitiallyDisplayLeaderboard, raceMap, userService); // initializes the raceMap field -// leaderboardPanel.addLeaderboardUpdateListener(this); -// // in case the URL configuration contains the name of a competitors filter set we try to activate it -// // FIXME the competitorsFilterSets has now moved to CompetitorSearchTextBox (which should probably be renamed); pass on the parameters to the LeaderboardPanel and see what it does with it -// if (raceboardViewConfiguration.getActiveCompetitorsFilterSetName() != null) { -// for (FilterSet> filterSet : competitorSearchTextBox.getCompetitorsFilterSets() -// .getFilterSets()) { -// if (filterSet.getName().equals(raceboardViewConfiguration.getActiveCompetitorsFilterSetName())) { -// competitorSearchTextBox.getCompetitorsFilterSets().setActiveFilterSet(filterSet); -// break; -// } -// } -// } -// timePanel = new RaceTimePanel(userService, timer, timeRangeWithZoomModel, stringMessages, raceTimesInfoProvider, -// false, isScreenLargeEnoughToOfferChartSupport, selectedRaceIdentifier); -// timeRangeWithZoomModel.addTimeZoomChangeListener(timePanel); -// raceTimesInfoProvider.addRaceTimesInfoProviderListener(timePanel); -// } -// -// /** -// * @param event -// * an optional event; may be null or else can be used to show some context information in -// * the {@link GlobalNavigationPanel}. -// * @param isScreenLargeEnoughToOfferChartSupport -// * if the screen is large enough to display charts such as the competitor chart or the wind chart, a -// * padding is provided for the RaceTimePanel that aligns its right border with that of the charts, and -// * the charts are created. -// * @param isScreenLargeEnoughToInitiallyDisplayLeaderboard TODO -// */ -// private void createOneScreenView(String leaderboardName, String leaderboardGroupName, UUID event, FlowPanel mainPanel, -// boolean showMapControls, boolean isScreenLargeEnoughToOfferChartSupport, boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard, RaceMap raceMap, UserService userService) { -// // create the default leaderboard and select the right race -// raceTimesInfoProvider.addRaceTimesInfoProviderListener(raceMap); -// List> components = new ArrayList>(); -// if (isScreenLargeEnoughToOfferChartSupport) { -// competitorChart = new MultiCompetitorRaceChart(sailingService, asyncActionsExecutor, competitorSelectionProvider, selectedRaceIdentifier, -// timer, timeRangeWithZoomModel, stringMessages, errorReporter, true, true, leaderboardGroupName, leaderboardName); -// competitorChart.getEntryWidget().setTitle(stringMessages.competitorCharts()); -// competitorChart.setVisible(false); -// components.add(competitorChart); -// windChart = new WindChart(sailingService, selectedRaceIdentifier, timer, timeRangeWithZoomModel, new WindChartSettings(), -// stringMessages, asyncActionsExecutor, errorReporter, /* compactChart */ true); -// windChart.setVisible(false); -// windChart.getEntryWidget().setTitle(stringMessages.windChart()); -// components.add(windChart); -// editMarkPassingPanel = new EditMarkPassingsPanel(sailingService, selectedRaceIdentifier, -// stringMessages, competitorSelectionProvider, errorReporter, timer); -// editMarkPassingPanel.setLeaderboard(leaderboardPanel.getLeaderboard()); -// editMarkPassingPanel.getEntryWidget().setTitle(stringMessages.editMarkPassings()); -// components.add(editMarkPassingPanel); -// } -// boolean autoSelectMedia = getConfiguration().isAutoSelectMedia(); -// MediaPlayerManagerComponent mediaPlayerManagerComponent = new MediaPlayerManagerComponent( -// selectedRaceIdentifier, raceTimesInfoProvider, timer, mediaService, userService, stringMessages, -// errorReporter, userAgent, this, autoSelectMedia); -// leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap, mediaPlayerManagerComponent, components, stringMessages, userService, editMarkPassingPanel); -// this.setupUserManagementControlPanel(userService); -// componentViewers.add(leaderboardAndMapViewer); -// for (ComponentViewer componentViewer : componentViewers) { -// mainPanel.add(componentViewer.getViewerWidget()); -// } -// boolean showLeaderboard = getConfiguration().isShowLeaderboard() && isScreenLargeEnoughToInitiallyDisplayLeaderboard; -// setLeaderboardVisible(showLeaderboard); -// if (isScreenLargeEnoughToOfferChartSupport) { -// setWindChartVisible(getConfiguration().isShowWindChart()); -// setCompetitorChartVisible(getConfiguration().isShowCompetitorsChart()); -// } -// // make sure to load leaderboard data for filtering to work -// if (!showLeaderboard) { -// leaderboardPanel.setVisible(true); -// leaderboardPanel.setVisible(false); -// } -// } -// -// private void setupUserManagementControlPanel(UserService userService) { -// MAIN_CSS.ensureInjected(); -// EventBus eventBus = new SimpleEventBus(); -// FlyoutAuthenticationView display = new RaceBoardAuthenticationView(); -// AuthenticationManager manager = new AuthenticationManagerImpl(userService, eventBus, -// com.sap.sailing.gwt.ui.raceboard.EntryPointLinkFactory.createEmailValidationLink(), -// com.sap.sailing.gwt.ui.raceboard.EntryPointLinkFactory.createPasswordResetLink()); -// AuthenticationClientFactory clientFactory = new AuthenticationClientFactoryImpl(manager, RaceBoardResources.INSTANCE); -// AuthenticationCallbackImpl callback = new AuthenticationCallbackImpl(); -// AuthenticationPlaceManagementController userManagementController = -// new AuthenticationPlaceManagementController(clientFactory, callback, display, eventBus); -// callback.setController(userManagementController); -// new FlyoutAuthenticationPresenter(display, userManagementMenuView, userManagementController, eventBus, manager.getAuthenticationContext()); -// if (!ExperimentalFeatures.SHOW_USER_MANAGEMENT_ON_RACEBOARD) { -// regattaAndRaceTimeInformationHeader.getElement().getStyle().setRight(10, Unit.PX); -// userManagementMenuView.asWidget().removeFromParent(); -// } -// } -// -// @SuppressWarnings("unused") -// private void addSettingsMenuItem(MenuBar settingsMenu, final Component component) { -// if (component.hasSettings()) { -// settingsMenu.addItem(component.getLocalizedShortName(), new Command() { -// public void execute() { -// new SettingsDialog(component, stringMessages).show(); -// } -// }); -// } -// } -// -// private LeaderboardPanel createLeaderboardPanel(String leaderboardName, String leaderboardGroupName, -// CompetitorFilterPanel competitorSearchTextBox, boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard) { -// LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance() -// .createNewSettingsForPlayMode(timer.getPlayMode(), -// /* nameOfRaceToSort */ selectedRaceIdentifier.getRaceName(), -// /* nameOfRaceColumnToShow */ null, /* nameOfRaceToShow */ selectedRaceIdentifier.getRaceName(), -// new ExplicitRaceColumnSelectionWithPreselectedRace(selectedRaceIdentifier), /* showRegattaRank */ false, -// /*showCompetitorSailIdColumn*/true, -// /* don't showCompetitorFullNameColumn in case screen is so small that we don't -// * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard); -// return new LeaderboardPanel(sailingService, asyncActionsExecutor, leaderBoardSettings, selectedRaceIdentifier != null, selectedRaceIdentifier, -// competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, -// userAgent, /* showRaceDetails */ true, competitorSearchTextBox, -// /* showSelectionCheckbox */ true, raceTimesInfoProvider, /* autoExpandLastRaceColumn */ false, -// /* don't adjust the timer's delay from the leaderboard; control it solely from the RaceTimesInfoProvider */ false, -// /*autoApplyTopNFilter*/ false, /*showCompetitorFilterStatus*/ false); -// } -// -// private void setComponentVisible(ComponentViewer componentViewer, Component component, boolean visible) { -// component.setVisible(visible); -// componentViewer.forceLayout(); -// } -// -// /** -// * Sets the collapsable panel for the leaderboard open or close, if in CASCADE view mode.
-// * Displays or hides the leaderboard, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the leaderboard shall be open/visible -// */ -// public void setLeaderboardVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, leaderboardPanel, visible); -// } -// -// /** -// * Sets the collapsable panel for the wind chart open or close, if in CASCADE view mode.
-// * Displays or hides the wind chart, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the wind chart shall be open/visible -// */ -// public void setWindChartVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, windChart, visible); -// } -// -// /** -// * Sets the collapsable panel for the competitor chart open or close, if in CASCADE view mode.
-// * Displays or hides the competitor chart, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the competitor chart shall be open/visible -// */ -// public void setCompetitorChartVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, competitorChart, visible); -// } -// -// public RaceTimePanel getTimePanel() { -// return timePanel; -// } -// -// protected SailingServiceAsync getSailingService() { -// return sailingService; -// } -// -// protected String getRaceBoardName() { -// return raceBoardName; -// } -// -// protected void setRaceBoardName(String raceBoardName) { -// this.raceBoardName = raceBoardName; -// } -// -// protected ErrorReporter getErrorReporter() { -// return errorReporter; -// } -// -// public RaceBoardViewConfiguration getConfiguration() { -// return raceboardViewConfiguration; -// } -// -// @Override -// public void updatedLeaderboard(LeaderboardDTO leaderboard) { -// leaderboardAndMapViewer.setLeftComponentWidth(leaderboardPanel.getContentPanel().getOffsetWidth()); -// if (editMarkPassingPanel != null) { -// editMarkPassingPanel.setLeaderboard(leaderboard); -// } -// } -// -// @Override -// public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) { -// if (!currentRaceHasBeenSelectedOnce) { -// FleetDTO fleet = raceColumn.getFleet(raceIdentifier); -// String seriesName = raceColumn.getSeriesName(); -// if (LeaderboardNameConstants.DEFAULT_SERIES_NAME.equals(seriesName)) { -// seriesName = ""; -// } -// String fleetForRaceName = fleet==null?"":fleet.getName(); -// if (fleetForRaceName.equals(LeaderboardNameConstants.DEFAULT_FLEET_NAME)) { -// fleetForRaceName = ""; -// } else { -// fleetForRaceName = (seriesName.isEmpty() ? "" : " - ") + fleetForRaceName; -// } -// final Label raceNameLabel = new Label(stringMessages.race() + " " + raceColumn.getRaceColumnName()); -// raceNameLabel.setStyleName("RaceName-Label"); -// final Label raceAdditionalInformationLabel = new Label(seriesName + fleetForRaceName); -// raceAdditionalInformationLabel.setStyleName("RaceSeriesAndFleet-Label"); -// raceInformationHeader.clear(); -// raceInformationHeader.add(raceNameLabel); -// raceInformationHeader.add(raceAdditionalInformationLabel); -// final Anchor regattaNameAnchor = new Anchor(raceIdentifier.getRegattaName()); -// regattaNameAnchor.setTitle(raceIdentifier.getRegattaName()); -// if (eventId != null) { -// String link = EntryPointLinkFactory.createLeaderboardPlaceLink(eventId.toString(), leaderboardName); -// regattaNameAnchor.setHref(link); -// } else { -// String leaderboardGroupNameParam = Window.Location.getParameter("leaderboardGroupName"); -// if(leaderboardGroupNameParam != null) { -// Map leaderboardGroupLinkParameters = new HashMap(); -// leaderboardGroupLinkParameters.put("showRaceDetails", "true"); -// leaderboardGroupLinkParameters.put("leaderboardGroupName", leaderboardGroupNameParam); -// String leaderBoardGroupLink = EntryPointLinkFactory.createLeaderboardGroupLink(leaderboardGroupLinkParameters); -// regattaNameAnchor.setHref(leaderBoardGroupLink); -// } else { -// // fallback -// regattaNameAnchor.setHref("javascript:window.history.back();"); -// } -// } -// regattaNameAnchor.setStyleName("RegattaName-Anchor"); -// Label raceTimeLabel = computeRaceInformation(raceColumn, fleet); -// raceTimeLabel.setStyleName("RaceTime-Label"); -// regattaAndRaceTimeInformationHeader.clear(); -// regattaAndRaceTimeInformationHeader.add(regattaNameAnchor); -// regattaAndRaceTimeInformationHeader.add(raceTimeLabel); -// currentRaceHasBeenSelectedOnce = true; -// } -// } -// -// @Override -// public UIObject getXPositionUiObject() { -// return timePanel; -// } -// -// @Override -// public UIObject getYPositionUiObject() { -// return timePanel; -// } -// -// private Label computeRaceInformation(RaceColumnDTO raceColumn, FleetDTO fleet) { -// Label raceInformationLabel = new Label(); -// raceInformationLabel.setStyleName("Race-Time-Label"); -// DateTimeFormat formatter = DateTimeFormat.getFormat("E d/M/y"); -// raceInformationLabel.setText(formatter.format(raceColumn.getStartDate(fleet))); -// return raceInformationLabel; -// } -// -// @Override -// public void onResize() { -// Widget child = getWidget(); -// if (child != null && child instanceof RequiresResize) { -// ((RequiresResize) child).onResize(); -// } -// } -//} -// -//||||||| merged common ancestors -//package com.sap.sailing.gwt.ui.raceboard; -// -//import java.util.ArrayList; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -//import java.util.UUID; -// -//import com.google.gwt.core.client.Scheduler; -//import com.google.gwt.core.client.Scheduler.ScheduledCommand; -//import com.google.gwt.core.shared.GWT; -//import com.google.gwt.dom.client.Document; -//import com.google.gwt.dom.client.Style.Unit; -//import com.google.gwt.i18n.client.DateTimeFormat; -//import com.google.gwt.user.client.Command; -//import com.google.gwt.user.client.Window; -//import com.google.gwt.user.client.ui.Anchor; -//import com.google.gwt.user.client.ui.FlowPanel; -//import com.google.gwt.user.client.ui.Label; -//import com.google.gwt.user.client.ui.MenuBar; -//import com.google.gwt.user.client.ui.RequiresResize; -//import com.google.gwt.user.client.ui.SimplePanel; -//import com.google.gwt.user.client.ui.UIObject; -//import com.google.gwt.user.client.ui.Widget; -//import com.sap.sailing.domain.common.LeaderboardNameConstants; -//import com.sap.sailing.domain.common.RaceIdentifier; -//import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -//import com.sap.sailing.domain.common.dto.BoatDTO; -//import com.sap.sailing.domain.common.dto.CompetitorDTO; -//import com.sap.sailing.domain.common.dto.FleetDTO; -//import com.sap.sailing.domain.common.dto.LeaderboardDTO; -//import com.sap.sailing.domain.common.dto.RaceColumnDTO; -//import com.sap.sailing.domain.common.dto.RaceDTO; -//import com.sap.sailing.gwt.ui.client.CompetitorColorProvider; -//import com.sap.sailing.gwt.ui.client.CompetitorColorProviderImpl; -//import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; -//import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; -//import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; -//import com.sap.sailing.gwt.ui.client.GlobalNavigationPanel; -//import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; -//import com.sap.sailing.gwt.ui.client.MediaServiceAsync; -//import com.sap.sailing.gwt.ui.client.RaceTimePanel; -//import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; -//import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -//import com.sap.sailing.gwt.ui.client.StringMessages; -//import com.sap.sailing.gwt.ui.client.media.MediaPlayerManagerComponent; -//import com.sap.sailing.gwt.ui.client.media.PopupPositionProvider; -//import com.sap.sailing.gwt.ui.client.shared.charts.EditMarkPassingsPanel; -//import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorRaceChart; -//import com.sap.sailing.gwt.ui.client.shared.charts.WindChart; -//import com.sap.sailing.gwt.ui.client.shared.charts.WindChartSettings; -//import com.sap.sailing.gwt.ui.client.shared.filter.FilterWithUI; -//import com.sap.sailing.gwt.ui.client.shared.filter.LeaderboardFetcher; -//import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMap; -//import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; -//import com.sap.sailing.gwt.ui.leaderboard.CompetitorFilterPanel; -//import com.sap.sailing.gwt.ui.leaderboard.ExplicitRaceColumnSelectionWithPreselectedRace; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory; -//import com.sap.sse.common.filter.FilterSet; -//import com.sap.sse.common.settings.AbstractSettings; -//import com.sap.sse.gwt.client.ErrorReporter; -//import com.sap.sse.gwt.client.async.AsyncActionsExecutor; -//import com.sap.sse.gwt.client.player.TimeRangeWithZoomModel; -//import com.sap.sse.gwt.client.player.Timer; -//import com.sap.sse.gwt.client.shared.components.Component; -//import com.sap.sse.gwt.client.shared.components.ComponentViewer; -//import com.sap.sse.gwt.client.shared.components.SettingsDialog; -//import com.sap.sse.gwt.client.useragent.UserAgentDetails; -//import com.sap.sse.security.ui.client.UserService; -// -///** -// * A view showing a list of components visualizing a race from the regattas announced by calls to {@link #fillRegattas(List)}. -// * The race selection is provided by a {@link RaceSelectionProvider} for which this is a {@link RaceSelectionChangeListener listener}. -// * {@link RaceIdentifier}-based race selection changes are converted to {@link RaceDTO} objects using the {@link #racesByIdentifier} -// * map maintained during {@link #fillRegattas(List)}. The race selection provider is expected to be single selection only. -// * -// * @author Frank Mittag, Axel Uhl (d043530) -// * -// */ -//public class RaceBoardPanel extends SimplePanel implements LeaderboardUpdateListener, PopupPositionProvider, RequiresResize { -// private final SailingServiceAsync sailingService; -// private final MediaServiceAsync mediaService; -// private final UUID eventId; -// private final StringMessages stringMessages; -// private final ErrorReporter errorReporter; -// private final RaceBoardViewConfiguration raceboardViewConfiguration; -// private String raceBoardName; -// -// private final List componentViewers; -// private RaceTimePanel timePanel; -// private final Timer timer; -// private final UserAgentDetails userAgent; -// private final CompetitorSelectionProvider competitorSelectionProvider; -// private final TimeRangeWithZoomModel timeRangeWithZoomModel; -// private final RegattaAndRaceIdentifier selectedRaceIdentifier; -// -// private final String leaderboardName; -// private final LeaderboardPanel leaderboardPanel; -// private WindChart windChart; -// private MultiCompetitorRaceChart competitorChart; -// private EditMarkPassingsPanel editMarkPassingPanel; -// -// /** -// * The component viewer in ONESCREEN view mode. null if in CASCADE view mode -// */ -// private SideBySideComponentViewer leaderboardAndMapViewer; -// -// private final AsyncActionsExecutor asyncActionsExecutor; -// -// private final RaceTimesInfoProvider raceTimesInfoProvider; -// private RaceMap raceMap; -// -// private final FlowPanel raceInformationHeader; -// private final FlowPanel regattaAndRaceTimeInformationHeader; -// private boolean currentRaceHasBeenSelectedOnce; -// -// private static final RaceMapResources raceMapResources = GWT.create(RaceMapResources.class); -// -// /** -// * @param eventId -// * an optional event that can be used for "back"-navigation in case the race board shows a race in the -// * context of an event; may be null. -// * @param isScreenLargeEnoughToOfferChartSupport -// * if the screen is large enough to display charts such as the competitor chart or the wind chart, a -// * padding is provided for the RaceTimePanel that aligns its right border with that of the charts, and -// * the charts are created. This decision is made once on startup in the {@link RaceBoardEntryPoint} class. -// */ -// public RaceBoardPanel(SailingServiceAsync sailingService, MediaServiceAsync mediaService, -// UserService userService, AsyncActionsExecutor asyncActionsExecutor, Map competitorsAndTheirBoats, -// Timer timer, RegattaAndRaceIdentifier selectedRaceIdentifier, String leaderboardName, -// String leaderboardGroupName, UUID eventId, RaceBoardViewConfiguration raceboardViewConfiguration, -// ErrorReporter errorReporter, final StringMessages stringMessages, -// UserAgentDetails userAgent, RaceTimesInfoProvider raceTimesInfoProvider, boolean showMapControls, boolean isScreenLargeEnoughToOfferChartSupport) { -// this.sailingService = sailingService; -// this.mediaService = mediaService; -// this.stringMessages = stringMessages; -// this.raceboardViewConfiguration = raceboardViewConfiguration; -// this.raceTimesInfoProvider = raceTimesInfoProvider; -// this.errorReporter = errorReporter; -// this.userAgent = userAgent; -// this.timer = timer; -// this.eventId = eventId; -// this.currentRaceHasBeenSelectedOnce = false; -// this.leaderboardName = leaderboardName; -// this.selectedRaceIdentifier = selectedRaceIdentifier; -// this.setRaceBoardName(selectedRaceIdentifier.getRaceName()); -// this.asyncActionsExecutor = asyncActionsExecutor; -// FlowPanel mainPanel = new ResizableFlowPanel(); -// mainPanel.setSize("100%", "100%"); -// setWidget(mainPanel); -// raceInformationHeader = new FlowPanel(); -// raceInformationHeader.setStyleName("RegattaRaceInformation-Header"); -// regattaAndRaceTimeInformationHeader = new FlowPanel(); -// regattaAndRaceTimeInformationHeader.setStyleName("RegattaAndRaceTime-Header"); -// timeRangeWithZoomModel = new TimeRangeWithZoomModel(); -// componentViewers = new ArrayList(); -// final CompetitorColorProvider colorProvider = new CompetitorColorProviderImpl(selectedRaceIdentifier, competitorsAndTheirBoats); -// competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true, colorProvider); -// -// raceMapResources.combinedWindPanelStyle().ensureInjected(); -// raceMap = new RaceMap(sailingService, asyncActionsExecutor, errorReporter, timer, -// competitorSelectionProvider, stringMessages, showMapControls, getConfiguration().isShowViewStreamlets(), getConfiguration().isShowViewStreamletColors(), getConfiguration().isShowViewSimulation(), -// selectedRaceIdentifier, raceMapResources.combinedWindPanelStyle(), /* showHeaderPanel */ true) { -// private static final String INDENT_SMALL_CONTROL_STYLE = "indentsmall"; -// private static final String INDENT_BIG_CONTROL_STYLE = "indentbig"; -// @Override -// public void onResize() { -// super.onResize(); -// Scheduler.get().scheduleDeferred(new ScheduledCommand() { -// @Override -// public void execute() { -// // Show/hide the leaderboard panels toggle button text based on the race map height -// leaderboardAndMapViewer.setLeftComponentToggleButtonTextVisibilityAndDraggerPosition(raceMap.getOffsetHeight() > 400); -// } -// }); -// } -// -// @Override -// protected String getLeftControlsIndentStyle() { -// // Calculate style name for left control indent based on race map height an leaderboard panel visibility -// if (raceMap.getOffsetHeight() <= 300) { -// return INDENT_BIG_CONTROL_STYLE; -// } -// if (leaderboardPanel.isVisible() && raceMap.getOffsetHeight() <= 500) { -// return INDENT_SMALL_CONTROL_STYLE; -// } -// return super.getLeftControlsIndentStyle(); -// } -// }; -// CompetitorFilterPanel competitorSearchTextBox = new CompetitorFilterPanel(competitorSelectionProvider, stringMessages, raceMap, -// new LeaderboardFetcher() { -// @Override -// public LeaderboardDTO getLeaderboard() { -// return leaderboardPanel.getLeaderboard(); -// } -// }, selectedRaceIdentifier); -// raceMap.getLeftHeaderPanel().add(raceInformationHeader); -// raceMap.getRightHeaderPanel().add(regattaAndRaceTimeInformationHeader); -// -// // Determine if the screen is large enough to initially display the leaderboard panel on the left side of the -// // map based on the initial screen width. Afterwards, the leaderboard panel visibility can be toggled as usual. -// boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard = Document.get().getClientWidth() >= 1024; -// leaderboardPanel = createLeaderboardPanel(leaderboardName, leaderboardGroupName, competitorSearchTextBox, isScreenLargeEnoughToInitiallyDisplayLeaderboard); -// leaderboardPanel.setTitle(stringMessages.leaderboard()); -// leaderboardPanel.getElement().getStyle().setMarginLeft(6, Unit.PX); -// leaderboardPanel.getElement().getStyle().setMarginTop(10, Unit.PX); -// createOneScreenView(leaderboardName, leaderboardGroupName, eventId, mainPanel, showMapControls, isScreenLargeEnoughToOfferChartSupport, isScreenLargeEnoughToInitiallyDisplayLeaderboard, raceMap, userService); // initializes the raceMap field -// leaderboardPanel.addLeaderboardUpdateListener(this); -// // in case the URL configuration contains the name of a competitors filter set we try to activate it -// // FIXME the competitorsFilterSets has now moved to CompetitorSearchTextBox (which should probably be renamed); pass on the parameters to the LeaderboardPanel and see what it does with it -// if (raceboardViewConfiguration.getActiveCompetitorsFilterSetName() != null) { -// for (FilterSet> filterSet : competitorSearchTextBox.getCompetitorsFilterSets() -// .getFilterSets()) { -// if (filterSet.getName().equals(raceboardViewConfiguration.getActiveCompetitorsFilterSetName())) { -// competitorSearchTextBox.getCompetitorsFilterSets().setActiveFilterSet(filterSet); -// break; -// } -// } -// } -// timePanel = new RaceTimePanel(timer, timeRangeWithZoomModel, stringMessages, raceTimesInfoProvider, -// raceboardViewConfiguration.isCanReplayDuringLiveRaces(), isScreenLargeEnoughToOfferChartSupport, selectedRaceIdentifier); -// timeRangeWithZoomModel.addTimeZoomChangeListener(timePanel); -// raceTimesInfoProvider.addRaceTimesInfoProviderListener(timePanel); -// } -// -// /** -// * @param event -// * an optional event; may be null or else can be used to show some context information in -// * the {@link GlobalNavigationPanel}. -// * @param isScreenLargeEnoughToOfferChartSupport -// * if the screen is large enough to display charts such as the competitor chart or the wind chart, a -// * padding is provided for the RaceTimePanel that aligns its right border with that of the charts, and -// * the charts are created. -// * @param isScreenLargeEnoughToInitiallyDisplayLeaderboard TODO -// */ -// private void createOneScreenView(String leaderboardName, String leaderboardGroupName, UUID event, FlowPanel mainPanel, -// boolean showMapControls, boolean isScreenLargeEnoughToOfferChartSupport, boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard, RaceMap raceMap, UserService userService) { -// // create the default leaderboard and select the right race -// raceTimesInfoProvider.addRaceTimesInfoProviderListener(raceMap); -// List> components = new ArrayList>(); -// if (isScreenLargeEnoughToOfferChartSupport) { -// competitorChart = new MultiCompetitorRaceChart(sailingService, asyncActionsExecutor, competitorSelectionProvider, selectedRaceIdentifier, -// timer, timeRangeWithZoomModel, stringMessages, errorReporter, true, true, leaderboardGroupName, leaderboardName); -// competitorChart.getEntryWidget().setTitle(stringMessages.competitorCharts()); -// competitorChart.setVisible(false); -// components.add(competitorChart); -// windChart = new WindChart(sailingService, selectedRaceIdentifier, timer, timeRangeWithZoomModel, new WindChartSettings(), -// stringMessages, asyncActionsExecutor, errorReporter, /* compactChart */ true); -// windChart.setVisible(false); -// windChart.getEntryWidget().setTitle(stringMessages.windChart()); -// components.add(windChart); -// editMarkPassingPanel = new EditMarkPassingsPanel(sailingService, selectedRaceIdentifier, -// stringMessages, competitorSelectionProvider, errorReporter, timer); -// editMarkPassingPanel.setLeaderboard(leaderboardPanel.getLeaderboard()); -// editMarkPassingPanel.getEntryWidget().setTitle(stringMessages.editMarkPassings()); -// components.add(editMarkPassingPanel); -// } -// boolean autoSelectMedia = getConfiguration().isAutoSelectMedia(); -// MediaPlayerManagerComponent mediaPlayerManagerComponent = new MediaPlayerManagerComponent( -// selectedRaceIdentifier, raceTimesInfoProvider, timer, mediaService, userService, stringMessages, -// errorReporter, userAgent, this, autoSelectMedia); -// leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap, mediaPlayerManagerComponent, components, stringMessages, userService, editMarkPassingPanel); -// componentViewers.add(leaderboardAndMapViewer); -// for (ComponentViewer componentViewer : componentViewers) { -// mainPanel.add(componentViewer.getViewerWidget()); -// } -// boolean showLeaderboard = getConfiguration().isShowLeaderboard() && isScreenLargeEnoughToInitiallyDisplayLeaderboard; -// setLeaderboardVisible(showLeaderboard); -// if (isScreenLargeEnoughToOfferChartSupport) { -// setWindChartVisible(getConfiguration().isShowWindChart()); -// setCompetitorChartVisible(getConfiguration().isShowCompetitorsChart()); -// } -// // make sure to load leaderboard data for filtering to work -// if (!showLeaderboard) { -// leaderboardPanel.setVisible(true); -// leaderboardPanel.setVisible(false); -// } -// } -// -// @SuppressWarnings("unused") -// private void addSettingsMenuItem(MenuBar settingsMenu, final Component component) { -// if (component.hasSettings()) { -// settingsMenu.addItem(component.getLocalizedShortName(), new Command() { -// public void execute() { -// new SettingsDialog(component, stringMessages).show(); -// } -// }); -// } -// } -// -// private LeaderboardPanel createLeaderboardPanel(String leaderboardName, String leaderboardGroupName, -// CompetitorFilterPanel competitorSearchTextBox, boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard) { -// LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance() -// .createNewSettingsForPlayMode(timer.getPlayMode(), -// /* nameOfRaceToSort */ selectedRaceIdentifier.getRaceName(), -// /* nameOfRaceColumnToShow */ null, /* nameOfRaceToShow */ selectedRaceIdentifier.getRaceName(), -// new ExplicitRaceColumnSelectionWithPreselectedRace(selectedRaceIdentifier), /* showRegattaRank */ false, -// /*showCompetitorSailIdColumn*/true, -// /* don't showCompetitorFullNameColumn in case screen is so small that we don't -// * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard); -// return new LeaderboardPanel(sailingService, asyncActionsExecutor, leaderBoardSettings, selectedRaceIdentifier != null, selectedRaceIdentifier, -// competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, -// userAgent, /* showRaceDetails */ true, competitorSearchTextBox, -// /* showSelectionCheckbox */ true, raceTimesInfoProvider, /* autoExpandLastRaceColumn */ false, -// /* don't adjust the timer's delay from the leaderboard; control it solely from the RaceTimesInfoProvider */ false, -// /*autoApplyTopNFilter*/ false, /*showCompetitorFilterStatus*/ false); -// } -// -// private void setComponentVisible(ComponentViewer componentViewer, Component component, boolean visible) { -// component.setVisible(visible); -// componentViewer.forceLayout(); -// } -// -// /** -// * Sets the collapsable panel for the leaderboard open or close, if in CASCADE view mode.
-// * Displays or hides the leaderboard, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the leaderboard shall be open/visible -// */ -// public void setLeaderboardVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, leaderboardPanel, visible); -// } -// -// /** -// * Sets the collapsable panel for the wind chart open or close, if in CASCADE view mode.
-// * Displays or hides the wind chart, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the wind chart shall be open/visible -// */ -// public void setWindChartVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, windChart, visible); -// } -// -// /** -// * Sets the collapsable panel for the competitor chart open or close, if in CASCADE view mode.
-// * Displays or hides the competitor chart, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the competitor chart shall be open/visible -// */ -// public void setCompetitorChartVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, competitorChart, visible); -// } -// -// public RaceTimePanel getTimePanel() { -// return timePanel; -// } -// -// protected SailingServiceAsync getSailingService() { -// return sailingService; -// } -// -// protected String getRaceBoardName() { -// return raceBoardName; -// } -// -// protected void setRaceBoardName(String raceBoardName) { -// this.raceBoardName = raceBoardName; -// } -// -// protected ErrorReporter getErrorReporter() { -// return errorReporter; -// } -// -// public RaceBoardViewConfiguration getConfiguration() { -// return raceboardViewConfiguration; -// } -// -// @Override -// public void updatedLeaderboard(LeaderboardDTO leaderboard) { -// leaderboardAndMapViewer.setLeftComponentWidth(leaderboardPanel.getContentPanel().getOffsetWidth()); -// if (editMarkPassingPanel != null) { -// editMarkPassingPanel.setLeaderboard(leaderboard); -// } -// } -// -// @Override -// public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) { -// if (!currentRaceHasBeenSelectedOnce) { -// FleetDTO fleet = raceColumn.getFleet(raceIdentifier); -// String seriesName = raceColumn.getSeriesName(); -// if (LeaderboardNameConstants.DEFAULT_SERIES_NAME.equals(seriesName)) { -// seriesName = ""; -// } -// String fleetForRaceName = fleet==null?"":fleet.getName(); -// if (fleetForRaceName.equals(LeaderboardNameConstants.DEFAULT_FLEET_NAME)) { -// fleetForRaceName = ""; -// } else { -// fleetForRaceName = (seriesName.isEmpty() ? "" : " - ") + fleetForRaceName; -// } -// final Label raceNameLabel = new Label(stringMessages.race() + " " + raceColumn.getRaceColumnName()); -// raceNameLabel.setStyleName("RaceName-Label"); -// final Label raceAdditionalInformationLabel = new Label(seriesName + fleetForRaceName); -// raceAdditionalInformationLabel.setStyleName("RaceSeriesAndFleet-Label"); -// raceInformationHeader.clear(); -// raceInformationHeader.add(raceNameLabel); -// raceInformationHeader.add(raceAdditionalInformationLabel); -// final Anchor regattaNameAnchor = new Anchor(raceIdentifier.getRegattaName()); -// regattaNameAnchor.setTitle(raceIdentifier.getRegattaName()); -// if (eventId != null) { -// String link = EntryPointLinkFactory.createLeaderboardPlaceLink(eventId.toString(), leaderboardName); -// regattaNameAnchor.setHref(link); -// } else { -// String leaderboardGroupNameParam = Window.Location.getParameter("leaderboardGroupName"); -// if(leaderboardGroupNameParam != null) { -// Map leaderboardGroupLinkParameters = new HashMap(); -// leaderboardGroupLinkParameters.put("showRaceDetails", "true"); -// leaderboardGroupLinkParameters.put("leaderboardGroupName", leaderboardGroupNameParam); -// String leaderBoardGroupLink = EntryPointLinkFactory.createLeaderboardGroupLink(leaderboardGroupLinkParameters); -// regattaNameAnchor.setHref(leaderBoardGroupLink); -// } else { -// // fallback -// regattaNameAnchor.setHref("javascript:window.history.back();"); -// } -// } -// regattaNameAnchor.setStyleName("RegattaName-Anchor"); -// Label raceTimeLabel = computeRaceInformation(raceColumn, fleet); -// raceTimeLabel.setStyleName("RaceTime-Label"); -// regattaAndRaceTimeInformationHeader.clear(); -// regattaAndRaceTimeInformationHeader.add(regattaNameAnchor); -// regattaAndRaceTimeInformationHeader.add(raceTimeLabel); -// currentRaceHasBeenSelectedOnce = true; -// } -// } -// -// @Override -// public UIObject getXPositionUiObject() { -// return timePanel; -// } -// -// @Override -// public UIObject getYPositionUiObject() { -// return timePanel; -// } -// -// private Label computeRaceInformation(RaceColumnDTO raceColumn, FleetDTO fleet) { -// Label raceInformationLabel = new Label(); -// raceInformationLabel.setStyleName("Race-Time-Label"); -// DateTimeFormat formatter = DateTimeFormat.getFormat("E d/M/y"); -// raceInformationLabel.setText(formatter.format(raceColumn.getStartDate(fleet))); -// return raceInformationLabel; -// } -// -// @Override -// public void onResize() { -// Widget child = getWidget(); -// if (child != null && child instanceof RequiresResize) { -// ((RequiresResize) child).onResize(); -// } -// } -//} -// -//======= -//package com.sap.sailing.gwt.ui.raceboard; -// -//import java.util.ArrayList; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -//import java.util.UUID; -// -//import com.google.gwt.core.client.Scheduler; -//import com.google.gwt.core.client.Scheduler.ScheduledCommand; -//import com.google.gwt.core.shared.GWT; -//import com.google.gwt.dom.client.Document; -//import com.google.gwt.dom.client.Style.Unit; -//import com.google.gwt.i18n.client.DateTimeFormat; -//import com.google.gwt.user.client.Command; -//import com.google.gwt.user.client.Window; -//import com.google.gwt.user.client.ui.Anchor; -//import com.google.gwt.user.client.ui.FlowPanel; -//import com.google.gwt.user.client.ui.Label; -//import com.google.gwt.user.client.ui.MenuBar; -//import com.google.gwt.user.client.ui.RequiresResize; -//import com.google.gwt.user.client.ui.SimplePanel; -//import com.google.gwt.user.client.ui.UIObject; -//import com.google.gwt.user.client.ui.Widget; -//import com.sap.sailing.domain.common.LeaderboardNameConstants; -//import com.sap.sailing.domain.common.RaceIdentifier; -//import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -//import com.sap.sailing.domain.common.dto.BoatDTO; -//import com.sap.sailing.domain.common.dto.CompetitorDTO; -//import com.sap.sailing.domain.common.dto.FleetDTO; -//import com.sap.sailing.domain.common.dto.LeaderboardDTO; -//import com.sap.sailing.domain.common.dto.RaceColumnDTO; -//import com.sap.sailing.domain.common.dto.RaceDTO; -//import com.sap.sailing.gwt.ui.client.CompetitorColorProvider; -//import com.sap.sailing.gwt.ui.client.CompetitorColorProviderImpl; -//import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; -//import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; -//import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; -//import com.sap.sailing.gwt.ui.client.GlobalNavigationPanel; -//import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; -//import com.sap.sailing.gwt.ui.client.MediaServiceAsync; -//import com.sap.sailing.gwt.ui.client.RaceTimePanel; -//import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; -//import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -//import com.sap.sailing.gwt.ui.client.StringMessages; -//import com.sap.sailing.gwt.ui.client.media.MediaPlayerManagerComponent; -//import com.sap.sailing.gwt.ui.client.media.PopupPositionProvider; -//import com.sap.sailing.gwt.ui.client.shared.charts.EditMarkPassingsPanel; -//import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorRaceChart; -//import com.sap.sailing.gwt.ui.client.shared.charts.WindChart; -//import com.sap.sailing.gwt.ui.client.shared.charts.WindChartSettings; -//import com.sap.sailing.gwt.ui.client.shared.filter.FilterWithUI; -//import com.sap.sailing.gwt.ui.client.shared.filter.LeaderboardFetcher; -//import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMap; -//import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; -//import com.sap.sailing.gwt.ui.leaderboard.CompetitorFilterPanel; -//import com.sap.sailing.gwt.ui.leaderboard.ExplicitRaceColumnSelectionWithPreselectedRace; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory; -//import com.sap.sse.common.filter.FilterSet; -//import com.sap.sse.common.settings.AbstractSettings; -//import com.sap.sse.gwt.client.ErrorReporter; -//import com.sap.sse.gwt.client.async.AsyncActionsExecutor; -//import com.sap.sse.gwt.client.player.TimeRangeWithZoomModel; -//import com.sap.sse.gwt.client.player.Timer; -//import com.sap.sse.gwt.client.shared.components.Component; -//import com.sap.sse.gwt.client.shared.components.ComponentViewer; -//import com.sap.sse.gwt.client.shared.components.SettingsDialog; -//import com.sap.sse.gwt.client.useragent.UserAgentDetails; -//import com.sap.sse.security.ui.client.UserService; -// -///** -// * A view showing a list of components visualizing a race from the regattas announced by calls to {@link #fillRegattas(List)}. -// * The race selection is provided by a {@link RaceSelectionProvider} for which this is a {@link RaceSelectionChangeListener listener}. -// * {@link RaceIdentifier}-based race selection changes are converted to {@link RaceDTO} objects using the {@link #racesByIdentifier} -// * map maintained during {@link #fillRegattas(List)}. The race selection provider is expected to be single selection only. -// * -// * @author Frank Mittag, Axel Uhl (d043530) -// * -// */ -//public class RaceBoardPanel extends SimplePanel implements LeaderboardUpdateListener, PopupPositionProvider, RequiresResize { -// private final SailingServiceAsync sailingService; -// private final MediaServiceAsync mediaService; -// private final UUID eventId; -// private final StringMessages stringMessages; -// private final ErrorReporter errorReporter; -// private final RaceBoardViewConfiguration raceboardViewConfiguration; -// private String raceBoardName; -// -// private final List componentViewers; -// private RaceTimePanel timePanel; -// private final Timer timer; -// private final UserAgentDetails userAgent; -// private final CompetitorSelectionProvider competitorSelectionProvider; -// private final TimeRangeWithZoomModel timeRangeWithZoomModel; -// private final RegattaAndRaceIdentifier selectedRaceIdentifier; -// -// private final String leaderboardName; -// private final LeaderboardPanel leaderboardPanel; -// private WindChart windChart; -// private MultiCompetitorRaceChart competitorChart; -// private EditMarkPassingsPanel editMarkPassingPanel; -// -// /** -// * The component viewer in ONESCREEN view mode. null if in CASCADE view mode -// */ -// private SideBySideComponentViewer leaderboardAndMapViewer; -// -// private final AsyncActionsExecutor asyncActionsExecutor; -// -// private final RaceTimesInfoProvider raceTimesInfoProvider; -// private RaceMap raceMap; -// -// private final FlowPanel raceInformationHeader; -// private final FlowPanel regattaAndRaceTimeInformationHeader; -// private boolean currentRaceHasBeenSelectedOnce; -// -// private final RaceMapResources raceMapResource = GWT.create(RaceMapResources.class); -// -// /** -// * @param eventId -// * an optional event that can be used for "back"-navigation in case the race board shows a race in the -// * context of an event; may be null. -// * @param isScreenLargeEnoughToOfferChartSupport -// * if the screen is large enough to display charts such as the competitor chart or the wind chart, a -// * padding is provided for the RaceTimePanel that aligns its right border with that of the charts, and -// * the charts are created. This decision is made once on startup in the {@link RaceBoardEntryPoint} class. -// */ -// public RaceBoardPanel(SailingServiceAsync sailingService, MediaServiceAsync mediaService, -// UserService userService, AsyncActionsExecutor asyncActionsExecutor, Map competitorsAndTheirBoats, -// Timer timer, RegattaAndRaceIdentifier selectedRaceIdentifier, String leaderboardName, -// String leaderboardGroupName, UUID eventId, RaceBoardViewConfiguration raceboardViewConfiguration, -// ErrorReporter errorReporter, final StringMessages stringMessages, -// UserAgentDetails userAgent, RaceTimesInfoProvider raceTimesInfoProvider, boolean showMapControls, boolean isScreenLargeEnoughToOfferChartSupport) { -// this.sailingService = sailingService; -// this.mediaService = mediaService; -// this.stringMessages = stringMessages; -// this.raceboardViewConfiguration = raceboardViewConfiguration; -// this.raceTimesInfoProvider = raceTimesInfoProvider; -// this.errorReporter = errorReporter; -// this.userAgent = userAgent; -// this.timer = timer; -// this.eventId = eventId; -// this.currentRaceHasBeenSelectedOnce = false; -// this.leaderboardName = leaderboardName; -// this.selectedRaceIdentifier = selectedRaceIdentifier; -// this.setRaceBoardName(selectedRaceIdentifier.getRaceName()); -// this.asyncActionsExecutor = asyncActionsExecutor; -// FlowPanel mainPanel = new ResizableFlowPanel(); -// mainPanel.setSize("100%", "100%"); -// setWidget(mainPanel); -// raceInformationHeader = new FlowPanel(); -// raceInformationHeader.setStyleName("RegattaRaceInformation-Header"); -// regattaAndRaceTimeInformationHeader = new FlowPanel(); -// regattaAndRaceTimeInformationHeader.setStyleName("RegattaAndRaceTime-Header"); -// timeRangeWithZoomModel = new TimeRangeWithZoomModel(); -// componentViewers = new ArrayList(); -// final CompetitorColorProvider colorProvider = new CompetitorColorProviderImpl(selectedRaceIdentifier, competitorsAndTheirBoats); -// competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true, colorProvider); -// raceMap = new RaceMap(sailingService, asyncActionsExecutor, errorReporter, timer, -// competitorSelectionProvider, stringMessages, showMapControls, getConfiguration().isShowViewStreamlets(), getConfiguration().isShowViewStreamletColors(), getConfiguration().isShowViewSimulation(), -// selectedRaceIdentifier, raceMapResource, /* showHeaderPanel */ true) { -// private static final String INDENT_SMALL_CONTROL_STYLE = "indentsmall"; -// private static final String INDENT_BIG_CONTROL_STYLE = "indentbig"; -// @Override -// public void onResize() { -// super.onResize(); -// Scheduler.get().scheduleDeferred(new ScheduledCommand() { -// @Override -// public void execute() { -// // Show/hide the leaderboard panels toggle button text based on the race map height -// leaderboardAndMapViewer.setLeftComponentToggleButtonTextVisibilityAndDraggerPosition(raceMap.getOffsetHeight() > 400); -// } -// }); -// } -// -// @Override -// protected String getLeftControlsIndentStyle() { -// // Calculate style name for left control indent based on race map height an leaderboard panel visibility -// if (raceMap.getOffsetHeight() <= 300) { -// return INDENT_BIG_CONTROL_STYLE; -// } -// if (leaderboardPanel.isVisible() && raceMap.getOffsetHeight() <= 500) { -// return INDENT_SMALL_CONTROL_STYLE; -// } -// return super.getLeftControlsIndentStyle(); -// } -// }; -// CompetitorFilterPanel competitorSearchTextBox = new CompetitorFilterPanel(competitorSelectionProvider, stringMessages, raceMap, -// new LeaderboardFetcher() { -// @Override -// public LeaderboardDTO getLeaderboard() { -// return leaderboardPanel.getLeaderboard(); -// } -// }, selectedRaceIdentifier); -// raceMap.getLeftHeaderPanel().add(raceInformationHeader); -// raceMap.getRightHeaderPanel().add(regattaAndRaceTimeInformationHeader); -// -// // Determine if the screen is large enough to initially display the leaderboard panel on the left side of the -// // map based on the initial screen width. Afterwards, the leaderboard panel visibility can be toggled as usual. -// boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard = Document.get().getClientWidth() >= 1024; -// leaderboardPanel = createLeaderboardPanel(leaderboardName, leaderboardGroupName, competitorSearchTextBox, isScreenLargeEnoughToInitiallyDisplayLeaderboard); -// leaderboardPanel.setTitle(stringMessages.leaderboard()); -// leaderboardPanel.getElement().getStyle().setMarginLeft(6, Unit.PX); -// leaderboardPanel.getElement().getStyle().setMarginTop(10, Unit.PX); -// createOneScreenView(leaderboardName, leaderboardGroupName, eventId, mainPanel, showMapControls, isScreenLargeEnoughToOfferChartSupport, isScreenLargeEnoughToInitiallyDisplayLeaderboard, raceMap, userService); // initializes the raceMap field -// leaderboardPanel.addLeaderboardUpdateListener(this); -// // in case the URL configuration contains the name of a competitors filter set we try to activate it -// // FIXME the competitorsFilterSets has now moved to CompetitorSearchTextBox (which should probably be renamed); pass on the parameters to the LeaderboardPanel and see what it does with it -// if (raceboardViewConfiguration.getActiveCompetitorsFilterSetName() != null) { -// for (FilterSet> filterSet : competitorSearchTextBox.getCompetitorsFilterSets() -// .getFilterSets()) { -// if (filterSet.getName().equals(raceboardViewConfiguration.getActiveCompetitorsFilterSetName())) { -// competitorSearchTextBox.getCompetitorsFilterSets().setActiveFilterSet(filterSet); -// break; -// } -// } -// } -// timePanel = new RaceTimePanel(timer, timeRangeWithZoomModel, stringMessages, raceTimesInfoProvider, -// raceboardViewConfiguration.isCanReplayDuringLiveRaces(), isScreenLargeEnoughToOfferChartSupport, selectedRaceIdentifier); -// timeRangeWithZoomModel.addTimeZoomChangeListener(timePanel); -// raceTimesInfoProvider.addRaceTimesInfoProviderListener(timePanel); -// } -// -// /** -// * @param event -// * an optional event; may be null or else can be used to show some context information in -// * the {@link GlobalNavigationPanel}. -// * @param isScreenLargeEnoughToOfferChartSupport -// * if the screen is large enough to display charts such as the competitor chart or the wind chart, a -// * padding is provided for the RaceTimePanel that aligns its right border with that of the charts, and -// * the charts are created. -// * @param isScreenLargeEnoughToInitiallyDisplayLeaderboard TODO -// */ -// private void createOneScreenView(String leaderboardName, String leaderboardGroupName, UUID event, FlowPanel mainPanel, -// boolean showMapControls, boolean isScreenLargeEnoughToOfferChartSupport, boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard, RaceMap raceMap, UserService userService) { -// // create the default leaderboard and select the right race -// raceTimesInfoProvider.addRaceTimesInfoProviderListener(raceMap); -// List> components = new ArrayList>(); -// if (isScreenLargeEnoughToOfferChartSupport) { -// competitorChart = new MultiCompetitorRaceChart(sailingService, asyncActionsExecutor, competitorSelectionProvider, selectedRaceIdentifier, -// timer, timeRangeWithZoomModel, stringMessages, errorReporter, true, true, leaderboardGroupName, leaderboardName); -// competitorChart.getEntryWidget().setTitle(stringMessages.competitorCharts()); -// competitorChart.setVisible(false); -// components.add(competitorChart); -// windChart = new WindChart(sailingService, selectedRaceIdentifier, timer, timeRangeWithZoomModel, new WindChartSettings(), -// stringMessages, asyncActionsExecutor, errorReporter, /* compactChart */ true); -// windChart.setVisible(false); -// windChart.getEntryWidget().setTitle(stringMessages.windChart()); -// components.add(windChart); -// editMarkPassingPanel = new EditMarkPassingsPanel(sailingService, selectedRaceIdentifier, -// stringMessages, competitorSelectionProvider, errorReporter, timer); -// editMarkPassingPanel.setLeaderboard(leaderboardPanel.getLeaderboard()); -// editMarkPassingPanel.getEntryWidget().setTitle(stringMessages.editMarkPassings()); -// components.add(editMarkPassingPanel); -// } -// boolean autoSelectMedia = getConfiguration().isAutoSelectMedia(); -// MediaPlayerManagerComponent mediaPlayerManagerComponent = new MediaPlayerManagerComponent( -// selectedRaceIdentifier, raceTimesInfoProvider, timer, mediaService, userService, stringMessages, -// errorReporter, userAgent, this, autoSelectMedia); -// leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap, mediaPlayerManagerComponent, components, stringMessages, userService, editMarkPassingPanel); -// componentViewers.add(leaderboardAndMapViewer); -// for (ComponentViewer componentViewer : componentViewers) { -// mainPanel.add(componentViewer.getViewerWidget()); -// } -// boolean showLeaderboard = getConfiguration().isShowLeaderboard() && isScreenLargeEnoughToInitiallyDisplayLeaderboard; -// setLeaderboardVisible(showLeaderboard); -// if (isScreenLargeEnoughToOfferChartSupport) { -// setWindChartVisible(getConfiguration().isShowWindChart()); -// setCompetitorChartVisible(getConfiguration().isShowCompetitorsChart()); -// } -// // make sure to load leaderboard data for filtering to work -// if (!showLeaderboard) { -// leaderboardPanel.setVisible(true); -// leaderboardPanel.setVisible(false); -// } -// } -// -// @SuppressWarnings("unused") -// private void addSettingsMenuItem(MenuBar settingsMenu, final Component component) { -// if (component.hasSettings()) { -// settingsMenu.addItem(component.getLocalizedShortName(), new Command() { -// public void execute() { -// new SettingsDialog(component, stringMessages).show(); -// } -// }); -// } -// } -// -// private LeaderboardPanel createLeaderboardPanel(String leaderboardName, String leaderboardGroupName, -// CompetitorFilterPanel competitorSearchTextBox, boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard) { -// LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance() -// .createNewSettingsForPlayMode(timer.getPlayMode(), -// /* nameOfRaceToSort */ selectedRaceIdentifier.getRaceName(), -// /* nameOfRaceColumnToShow */ null, /* nameOfRaceToShow */ selectedRaceIdentifier.getRaceName(), -// new ExplicitRaceColumnSelectionWithPreselectedRace(selectedRaceIdentifier), /* showRegattaRank */ false, -// /*showCompetitorSailIdColumn*/true, -// /* don't showCompetitorFullNameColumn in case screen is so small that we don't -// * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard); -// return new LeaderboardPanel(sailingService, asyncActionsExecutor, leaderBoardSettings, selectedRaceIdentifier != null, selectedRaceIdentifier, -// competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, -// userAgent, /* showRaceDetails */ true, competitorSearchTextBox, -// /* showSelectionCheckbox */ true, raceTimesInfoProvider, /* autoExpandLastRaceColumn */ false, -// /* don't adjust the timer's delay from the leaderboard; control it solely from the RaceTimesInfoProvider */ false, -// /*autoApplyTopNFilter*/ false, /*showCompetitorFilterStatus*/ false); -// } -// -// private void setComponentVisible(ComponentViewer componentViewer, Component component, boolean visible) { -// component.setVisible(visible); -// componentViewer.forceLayout(); -// } -// -// /** -// * Sets the collapsable panel for the leaderboard open or close, if in CASCADE view mode.
-// * Displays or hides the leaderboard, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the leaderboard shall be open/visible -// */ -// public void setLeaderboardVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, leaderboardPanel, visible); -// } -// -// /** -// * Sets the collapsable panel for the wind chart open or close, if in CASCADE view mode.
-// * Displays or hides the wind chart, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the wind chart shall be open/visible -// */ -// public void setWindChartVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, windChart, visible); -// } -// -// /** -// * Sets the collapsable panel for the competitor chart open or close, if in CASCADE view mode.
-// * Displays or hides the competitor chart, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the competitor chart shall be open/visible -// */ -// public void setCompetitorChartVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, competitorChart, visible); -// } -// -// public RaceTimePanel getTimePanel() { -// return timePanel; -// } -// -// protected SailingServiceAsync getSailingService() { -// return sailingService; -// } -// -// protected String getRaceBoardName() { -// return raceBoardName; -// } -// -// protected void setRaceBoardName(String raceBoardName) { -// this.raceBoardName = raceBoardName; -// } -// -// protected ErrorReporter getErrorReporter() { -// return errorReporter; -// } -// -// public RaceBoardViewConfiguration getConfiguration() { -// return raceboardViewConfiguration; -// } -// -// @Override -// public void updatedLeaderboard(LeaderboardDTO leaderboard) { -// leaderboardAndMapViewer.setLeftComponentWidth(leaderboardPanel.getContentPanel().getOffsetWidth()); -// if (editMarkPassingPanel != null) { -// editMarkPassingPanel.setLeaderboard(leaderboard); -// } -// } -// -// @Override -// public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) { -// if (!currentRaceHasBeenSelectedOnce) { -// FleetDTO fleet = raceColumn.getFleet(raceIdentifier); -// String seriesName = raceColumn.getSeriesName(); -// if (LeaderboardNameConstants.DEFAULT_SERIES_NAME.equals(seriesName)) { -// seriesName = ""; -// } -// String fleetForRaceName = fleet==null?"":fleet.getName(); -// if (fleetForRaceName.equals(LeaderboardNameConstants.DEFAULT_FLEET_NAME)) { -// fleetForRaceName = ""; -// } else { -// fleetForRaceName = (seriesName.isEmpty() ? "" : " - ") + fleetForRaceName; -// } -// final Label raceNameLabel = new Label(stringMessages.race() + " " + raceColumn.getRaceColumnName()); -// raceNameLabel.setStyleName("RaceName-Label"); -// final Label raceAdditionalInformationLabel = new Label(seriesName + fleetForRaceName); -// raceAdditionalInformationLabel.setStyleName("RaceSeriesAndFleet-Label"); -// raceInformationHeader.clear(); -// raceInformationHeader.add(raceNameLabel); -// raceInformationHeader.add(raceAdditionalInformationLabel); -// final Anchor regattaNameAnchor = new Anchor(raceIdentifier.getRegattaName()); -// regattaNameAnchor.setTitle(raceIdentifier.getRegattaName()); -// if (eventId != null) { -// String link = EntryPointLinkFactory.createLeaderboardPlaceLink(eventId.toString(), leaderboardName); -// regattaNameAnchor.setHref(link); -// } else { -// String leaderboardGroupNameParam = Window.Location.getParameter("leaderboardGroupName"); -// if(leaderboardGroupNameParam != null) { -// Map leaderboardGroupLinkParameters = new HashMap(); -// leaderboardGroupLinkParameters.put("showRaceDetails", "true"); -// leaderboardGroupLinkParameters.put("leaderboardGroupName", leaderboardGroupNameParam); -// String leaderBoardGroupLink = EntryPointLinkFactory.createLeaderboardGroupLink(leaderboardGroupLinkParameters); -// regattaNameAnchor.setHref(leaderBoardGroupLink); -// } else { -// // fallback -// regattaNameAnchor.setHref("javascript:window.history.back();"); -// } -// } -// regattaNameAnchor.setStyleName("RegattaName-Anchor"); -// Label raceTimeLabel = computeRaceInformation(raceColumn, fleet); -// raceTimeLabel.setStyleName("RaceTime-Label"); -// regattaAndRaceTimeInformationHeader.clear(); -// regattaAndRaceTimeInformationHeader.add(regattaNameAnchor); -// regattaAndRaceTimeInformationHeader.add(raceTimeLabel); -// currentRaceHasBeenSelectedOnce = true; -// } -// } -// -// @Override -// public UIObject getXPositionUiObject() { -// return timePanel; -// } -// -// @Override -// public UIObject getYPositionUiObject() { -// return timePanel; -// } -// -// private Label computeRaceInformation(RaceColumnDTO raceColumn, FleetDTO fleet) { -// Label raceInformationLabel = new Label(); -// raceInformationLabel.setStyleName("Race-Time-Label"); -// DateTimeFormat formatter = DateTimeFormat.getFormat("E d/M/y"); -// raceInformationLabel.setText(formatter.format(raceColumn.getStartDate(fleet))); -// return raceInformationLabel; -// } -// -// @Override -// public void onResize() { -// Widget child = getWidget(); -// if (child != null && child instanceof RequiresResize) { -// ((RequiresResize) child).onResize(); -// } -// } -//} -// -//>>>>>>> Temporary merge branch 2 -//======= -//package com.sap.sailing.gwt.ui.raceboard; -// -//import java.util.ArrayList; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -//import java.util.UUID; -// -//import com.google.gwt.core.client.Scheduler; -//import com.google.gwt.core.client.Scheduler.ScheduledCommand; -//import com.google.gwt.core.shared.GWT; -//import com.google.gwt.dom.client.Document; -//import com.google.gwt.dom.client.Style.Unit; -//import com.google.gwt.i18n.client.DateTimeFormat; -//import com.google.gwt.user.client.Command; -//import com.google.gwt.user.client.Window; -//import com.google.gwt.user.client.ui.Anchor; -//import com.google.gwt.user.client.ui.FlowPanel; -//import com.google.gwt.user.client.ui.Label; -//import com.google.gwt.user.client.ui.MenuBar; -//import com.google.gwt.user.client.ui.RequiresResize; -//import com.google.gwt.user.client.ui.SimplePanel; -//import com.google.gwt.user.client.ui.UIObject; -//import com.google.gwt.user.client.ui.Widget; -//import com.google.web.bindery.event.shared.EventBus; -//import com.google.web.bindery.event.shared.SimpleEventBus; -//import com.sap.sailing.domain.common.LeaderboardNameConstants; -//import com.sap.sailing.domain.common.RaceIdentifier; -//import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -//import com.sap.sailing.domain.common.dto.BoatDTO; -//import com.sap.sailing.domain.common.dto.CompetitorDTO; -//import com.sap.sailing.domain.common.dto.FleetDTO; -//import com.sap.sailing.domain.common.dto.LeaderboardDTO; -//import com.sap.sailing.domain.common.dto.RaceColumnDTO; -//import com.sap.sailing.domain.common.dto.RaceDTO; -//import com.sap.sailing.gwt.ui.client.CompetitorColorProvider; -//import com.sap.sailing.gwt.ui.client.CompetitorColorProviderImpl; -//import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; -//import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; -//import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; -//import com.sap.sailing.gwt.ui.client.GlobalNavigationPanel; -//import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; -//import com.sap.sailing.gwt.ui.client.MediaServiceAsync; -//import com.sap.sailing.gwt.ui.client.RaceTimePanel; -//import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; -//import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -//import com.sap.sailing.gwt.ui.client.StringMessages; -//import com.sap.sailing.gwt.ui.client.media.MediaPlayerManagerComponent; -//import com.sap.sailing.gwt.ui.client.media.PopupPositionProvider; -//import com.sap.sailing.gwt.ui.client.shared.charts.EditMarkPassingsPanel; -//import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorRaceChart; -//import com.sap.sailing.gwt.ui.client.shared.charts.WindChart; -//import com.sap.sailing.gwt.ui.client.shared.charts.WindChartSettings; -//import com.sap.sailing.gwt.ui.client.shared.filter.FilterWithUI; -//import com.sap.sailing.gwt.ui.client.shared.filter.LeaderboardFetcher; -//import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMap; -//import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; -//import com.sap.sailing.gwt.ui.leaderboard.CompetitorFilterPanel; -//import com.sap.sailing.gwt.ui.leaderboard.ExplicitRaceColumnSelectionWithPreselectedRace; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; -//import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory; -//import com.sap.sailing.gwt.ui.raceboard.RaceBoardResources.RaceBoardMainCss; -//import com.sap.sse.common.filter.FilterSet; -//import com.sap.sse.common.settings.AbstractSettings; -//import com.sap.sse.gwt.client.ErrorReporter; -//import com.sap.sse.gwt.client.async.AsyncActionsExecutor; -//import com.sap.sse.gwt.client.player.TimeRangeWithZoomModel; -//import com.sap.sse.gwt.client.player.Timer; -//import com.sap.sse.gwt.client.shared.components.Component; -//import com.sap.sse.gwt.client.shared.components.ComponentViewer; -//import com.sap.sse.gwt.client.shared.components.SettingsDialog; -//import com.sap.sse.gwt.client.useragent.UserAgentDetails; -//import com.sap.sse.security.ui.authentication.AuthenticationClientFactory; -//import com.sap.sse.security.ui.authentication.AuthenticationClientFactoryImpl; -//import com.sap.sse.security.ui.authentication.AuthenticationManager; -//import com.sap.sse.security.ui.authentication.AuthenticationManagerImpl; -//import com.sap.sse.security.ui.authentication.AuthenticationPlaceManagementController; -//import com.sap.sse.security.ui.authentication.view.AuthenticationMenuView; -//import com.sap.sse.security.ui.authentication.view.AuthenticationMenuViewImpl; -//import com.sap.sse.security.ui.authentication.view.FlyoutAuthenticationPresenter; -//import com.sap.sse.security.ui.authentication.view.FlyoutAuthenticationView; -//import com.sap.sse.security.ui.client.UserService; -// -///** -// * A view showing a list of components visualizing a race from the regattas announced by calls to {@link #fillRegattas(List)}. -// * The race selection is provided by a {@link RaceSelectionProvider} for which this is a {@link RaceSelectionChangeListener listener}. -// * {@link RaceIdentifier}-based race selection changes are converted to {@link RaceDTO} objects using the {@link #racesByIdentifier} -// * map maintained during {@link #fillRegattas(List)}. The race selection provider is expected to be single selection only. -// * -// * @author Frank Mittag, Axel Uhl (d043530) -// * -// */ -//public class RaceBoardPanel extends SimplePanel implements LeaderboardUpdateListener, PopupPositionProvider, RequiresResize { -// private final SailingServiceAsync sailingService; -// private final MediaServiceAsync mediaService; -// private final UUID eventId; -// private final StringMessages stringMessages; -// private final ErrorReporter errorReporter; -// private final RaceBoardViewConfiguration raceboardViewConfiguration; -// private String raceBoardName; -// -// private final List componentViewers; -// private RaceTimePanel timePanel; -// private final Timer timer; -// private final UserAgentDetails userAgent; -// private final CompetitorSelectionProvider competitorSelectionProvider; -// private final TimeRangeWithZoomModel timeRangeWithZoomModel; -// private final RegattaAndRaceIdentifier selectedRaceIdentifier; -// -// private final String leaderboardName; -// private final LeaderboardPanel leaderboardPanel; -// private WindChart windChart; -// private MultiCompetitorRaceChart competitorChart; -// private EditMarkPassingsPanel editMarkPassingPanel; -// -// /** -// * The component viewer in ONESCREEN view mode. null if in CASCADE view mode -// */ -// private SideBySideComponentViewer leaderboardAndMapViewer; -// -// private final AsyncActionsExecutor asyncActionsExecutor; -// -// private final RaceTimesInfoProvider raceTimesInfoProvider; -// private RaceMap raceMap; -// -// private final FlowPanel raceInformationHeader; -// private final FlowPanel regattaAndRaceTimeInformationHeader; -// private final AuthenticationMenuView userManagementMenuView; -// private boolean currentRaceHasBeenSelectedOnce; -// -// private static final RaceBoardMainCss MAIN_CSS = RaceBoardResources.INSTANCE.mainCss(); -// private final RaceMapResources raceMapResource = GWT.create(RaceMapResources.class); -// -// /** -// * @param eventId -// * an optional event that can be used for "back"-navigation in case the race board shows a race in the -// * context of an event; may be null. -// * @param isScreenLargeEnoughToOfferChartSupport -// * if the screen is large enough to display charts such as the competitor chart or the wind chart, a -// * padding is provided for the RaceTimePanel that aligns its right border with that of the charts, and -// * the charts are created. This decision is made once on startup in the {@link RaceBoardEntryPoint} class. -// */ -// public RaceBoardPanel(SailingServiceAsync sailingService, MediaServiceAsync mediaService, -// UserService userService, AsyncActionsExecutor asyncActionsExecutor, Map competitorsAndTheirBoats, -// Timer timer, RegattaAndRaceIdentifier selectedRaceIdentifier, String leaderboardName, -// String leaderboardGroupName, UUID eventId, RaceBoardViewConfiguration raceboardViewConfiguration, -// ErrorReporter errorReporter, final StringMessages stringMessages, -// UserAgentDetails userAgent, RaceTimesInfoProvider raceTimesInfoProvider, boolean showMapControls, boolean isScreenLargeEnoughToOfferChartSupport) { -// this.sailingService = sailingService; -// this.mediaService = mediaService; -// this.stringMessages = stringMessages; -// this.raceboardViewConfiguration = raceboardViewConfiguration; -// this.raceTimesInfoProvider = raceTimesInfoProvider; -// this.errorReporter = errorReporter; -// this.userAgent = userAgent; -// this.timer = timer; -// this.eventId = eventId; -// this.currentRaceHasBeenSelectedOnce = false; -// this.leaderboardName = leaderboardName; -// this.selectedRaceIdentifier = selectedRaceIdentifier; -// this.setRaceBoardName(selectedRaceIdentifier.getRaceName()); -// this.asyncActionsExecutor = asyncActionsExecutor; -// FlowPanel mainPanel = new ResizableFlowPanel(); -// mainPanel.setSize("100%", "100%"); -// setWidget(mainPanel); -// raceInformationHeader = new FlowPanel(); -// raceInformationHeader.setStyleName("RegattaRaceInformation-Header"); -// regattaAndRaceTimeInformationHeader = new FlowPanel(); -// regattaAndRaceTimeInformationHeader.setStyleName("RegattaAndRaceTime-Header"); -// this.userManagementMenuView = new AuthenticationMenuViewImpl(new Anchor(), MAIN_CSS.usermanagement_loggedin(), MAIN_CSS.usermanagement_open()); -// this.userManagementMenuView.asWidget().setStyleName(MAIN_CSS.usermanagement_icon()); -// timeRangeWithZoomModel = new TimeRangeWithZoomModel(); -// componentViewers = new ArrayList(); -// final CompetitorColorProvider colorProvider = new CompetitorColorProviderImpl(selectedRaceIdentifier, competitorsAndTheirBoats); -// competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true, colorProvider); -// raceMap = new RaceMap(sailingService, asyncActionsExecutor, errorReporter, timer, -// competitorSelectionProvider, stringMessages, showMapControls, getConfiguration().isShowViewStreamlets(), getConfiguration().isShowViewStreamletColors(), getConfiguration().isShowViewSimulation(), -// selectedRaceIdentifier, raceMapResource, /* showHeaderPanel */ true) { -// private static final String INDENT_SMALL_CONTROL_STYLE = "indentsmall"; -// private static final String INDENT_BIG_CONTROL_STYLE = "indentbig"; -// @Override -// public void onResize() { -// super.onResize(); -// Scheduler.get().scheduleDeferred(new ScheduledCommand() { -// @Override -// public void execute() { -// // Show/hide the leaderboard panels toggle button text based on the race map height -// leaderboardAndMapViewer.setLeftComponentToggleButtonTextVisibilityAndDraggerPosition(raceMap.getOffsetHeight() > 400); -// } -// }); -// } -// -// @Override -// protected String getLeftControlsIndentStyle() { -// // Calculate style name for left control indent based on race map height an leaderboard panel visibility -// if (raceMap.getOffsetHeight() <= 300) { -// return INDENT_BIG_CONTROL_STYLE; -// } -// if (leaderboardPanel.isVisible() && raceMap.getOffsetHeight() <= 500) { -// return INDENT_SMALL_CONTROL_STYLE; -// } -// return super.getLeftControlsIndentStyle(); -// } -// }; -// CompetitorFilterPanel competitorSearchTextBox = new CompetitorFilterPanel(competitorSelectionProvider, stringMessages, raceMap, -// new LeaderboardFetcher() { -// @Override -// public LeaderboardDTO getLeaderboard() { -// return leaderboardPanel.getLeaderboard(); -// } -// }, selectedRaceIdentifier); -// raceMap.getLeftHeaderPanel().add(raceInformationHeader); -// raceMap.getRightHeaderPanel().add(regattaAndRaceTimeInformationHeader); -// raceMap.getRightHeaderPanel().add(userManagementMenuView); -// -// // Determine if the screen is large enough to initially display the leaderboard panel on the left side of the -// // map based on the initial screen width. Afterwards, the leaderboard panel visibility can be toggled as usual. -// boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard = Document.get().getClientWidth() >= 1024; -// leaderboardPanel = createLeaderboardPanel(leaderboardName, leaderboardGroupName, competitorSearchTextBox, isScreenLargeEnoughToInitiallyDisplayLeaderboard); -// leaderboardPanel.setTitle(stringMessages.leaderboard()); -// leaderboardPanel.getElement().getStyle().setMarginLeft(6, Unit.PX); -// leaderboardPanel.getElement().getStyle().setMarginTop(10, Unit.PX); -// createOneScreenView(leaderboardName, leaderboardGroupName, eventId, mainPanel, showMapControls, isScreenLargeEnoughToOfferChartSupport, isScreenLargeEnoughToInitiallyDisplayLeaderboard, raceMap, userService); // initializes the raceMap field -// leaderboardPanel.addLeaderboardUpdateListener(this); -// // in case the URL configuration contains the name of a competitors filter set we try to activate it -// // FIXME the competitorsFilterSets has now moved to CompetitorSearchTextBox (which should probably be renamed); pass on the parameters to the LeaderboardPanel and see what it does with it -// if (raceboardViewConfiguration.getActiveCompetitorsFilterSetName() != null) { -// for (FilterSet> filterSet : competitorSearchTextBox.getCompetitorsFilterSets() -// .getFilterSets()) { -// if (filterSet.getName().equals(raceboardViewConfiguration.getActiveCompetitorsFilterSetName())) { -// competitorSearchTextBox.getCompetitorsFilterSets().setActiveFilterSet(filterSet); -// break; -// } -// } -// } -// timePanel = new RaceTimePanel(userService, timer, timeRangeWithZoomModel, stringMessages, raceTimesInfoProvider, -// false, isScreenLargeEnoughToOfferChartSupport, selectedRaceIdentifier); -// timeRangeWithZoomModel.addTimeZoomChangeListener(timePanel); -// raceTimesInfoProvider.addRaceTimesInfoProviderListener(timePanel); -// } -// -// /** -// * @param event -// * an optional event; may be null or else can be used to show some context information in -// * the {@link GlobalNavigationPanel}. -// * @param isScreenLargeEnoughToOfferChartSupport -// * if the screen is large enough to display charts such as the competitor chart or the wind chart, a -// * padding is provided for the RaceTimePanel that aligns its right border with that of the charts, and -// * the charts are created. -// * @param isScreenLargeEnoughToInitiallyDisplayLeaderboard TODO -// */ -// private void createOneScreenView(String leaderboardName, String leaderboardGroupName, UUID event, FlowPanel mainPanel, -// boolean showMapControls, boolean isScreenLargeEnoughToOfferChartSupport, boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard, RaceMap raceMap, UserService userService) { -// // create the default leaderboard and select the right race -// raceTimesInfoProvider.addRaceTimesInfoProviderListener(raceMap); -// List> components = new ArrayList>(); -// if (isScreenLargeEnoughToOfferChartSupport) { -// competitorChart = new MultiCompetitorRaceChart(sailingService, asyncActionsExecutor, competitorSelectionProvider, selectedRaceIdentifier, -// timer, timeRangeWithZoomModel, stringMessages, errorReporter, true, true, leaderboardGroupName, leaderboardName); -// competitorChart.getEntryWidget().setTitle(stringMessages.competitorCharts()); -// competitorChart.setVisible(false); -// components.add(competitorChart); -// windChart = new WindChart(sailingService, selectedRaceIdentifier, timer, timeRangeWithZoomModel, new WindChartSettings(), -// stringMessages, asyncActionsExecutor, errorReporter, /* compactChart */ true); -// windChart.setVisible(false); -// windChart.getEntryWidget().setTitle(stringMessages.windChart()); -// components.add(windChart); -// editMarkPassingPanel = new EditMarkPassingsPanel(sailingService, selectedRaceIdentifier, -// stringMessages, competitorSelectionProvider, errorReporter, timer); -// editMarkPassingPanel.setLeaderboard(leaderboardPanel.getLeaderboard()); -// editMarkPassingPanel.getEntryWidget().setTitle(stringMessages.editMarkPassings()); -// components.add(editMarkPassingPanel); -// } -// boolean autoSelectMedia = getConfiguration().isAutoSelectMedia(); -// MediaPlayerManagerComponent mediaPlayerManagerComponent = new MediaPlayerManagerComponent( -// selectedRaceIdentifier, raceTimesInfoProvider, timer, mediaService, userService, stringMessages, -// errorReporter, userAgent, this, autoSelectMedia); -// leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap, mediaPlayerManagerComponent, components, stringMessages, userService, editMarkPassingPanel); -// this.setupUserManagementControlPanel(userService); -// componentViewers.add(leaderboardAndMapViewer); -// for (ComponentViewer componentViewer : componentViewers) { -// mainPanel.add(componentViewer.getViewerWidget()); -// } -// boolean showLeaderboard = getConfiguration().isShowLeaderboard() && isScreenLargeEnoughToInitiallyDisplayLeaderboard; -// setLeaderboardVisible(showLeaderboard); -// if (isScreenLargeEnoughToOfferChartSupport) { -// setWindChartVisible(getConfiguration().isShowWindChart()); -// setCompetitorChartVisible(getConfiguration().isShowCompetitorsChart()); -// } -// // make sure to load leaderboard data for filtering to work -// if (!showLeaderboard) { -// leaderboardPanel.setVisible(true); -// leaderboardPanel.setVisible(false); -// } -// } -// -// private void setupUserManagementControlPanel(UserService userService) { -// MAIN_CSS.ensureInjected(); -// EventBus eventBus = new SimpleEventBus(); -// FlyoutAuthenticationView display = new RaceBoardAuthenticationView(); -// AuthenticationManager manager = new AuthenticationManagerImpl(userService, eventBus, -// com.sap.sailing.gwt.ui.raceboard.EntryPointLinkFactory.createEmailValidationLink(), -// com.sap.sailing.gwt.ui.raceboard.EntryPointLinkFactory.createPasswordResetLink()); -// AuthenticationClientFactory clientFactory = new AuthenticationClientFactoryImpl(manager, RaceBoardResources.INSTANCE); -// AuthenticationCallbackImpl callback = new AuthenticationCallbackImpl(); -// AuthenticationPlaceManagementController userManagementController = -// new AuthenticationPlaceManagementController(clientFactory, callback, display, eventBus); -// callback.setController(userManagementController); -// new FlyoutAuthenticationPresenter(display, userManagementMenuView, userManagementController, eventBus, manager.getAuthenticationContext()); -// if (!ExperimentalFeatures.SHOW_USER_MANAGEMENT_ON_RACEBOARD) { -// regattaAndRaceTimeInformationHeader.getElement().getStyle().setRight(10, Unit.PX); -// userManagementMenuView.asWidget().removeFromParent(); -// } -// } -// -// @SuppressWarnings("unused") -// private void addSettingsMenuItem(MenuBar settingsMenu, final Component component) { -// if (component.hasSettings()) { -// settingsMenu.addItem(component.getLocalizedShortName(), new Command() { -// public void execute() { -// new SettingsDialog(component, stringMessages).show(); -// } -// }); -// } -// } -// -// private LeaderboardPanel createLeaderboardPanel(String leaderboardName, String leaderboardGroupName, -// CompetitorFilterPanel competitorSearchTextBox, boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard) { -// LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance() -// .createNewSettingsForPlayMode(timer.getPlayMode(), -// /* nameOfRaceToSort */ selectedRaceIdentifier.getRaceName(), -// /* nameOfRaceColumnToShow */ null, /* nameOfRaceToShow */ selectedRaceIdentifier.getRaceName(), -// new ExplicitRaceColumnSelectionWithPreselectedRace(selectedRaceIdentifier), /* showRegattaRank */ false, -// /*showCompetitorSailIdColumn*/true, -// /* don't showCompetitorFullNameColumn in case screen is so small that we don't -// * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard); -// return new LeaderboardPanel(sailingService, asyncActionsExecutor, leaderBoardSettings, selectedRaceIdentifier != null, selectedRaceIdentifier, -// competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, -// userAgent, /* showRaceDetails */ true, competitorSearchTextBox, -// /* showSelectionCheckbox */ true, raceTimesInfoProvider, /* autoExpandLastRaceColumn */ false, -// /* don't adjust the timer's delay from the leaderboard; control it solely from the RaceTimesInfoProvider */ false, -// /*autoApplyTopNFilter*/ false, /*showCompetitorFilterStatus*/ false); -// } -// -// private void setComponentVisible(ComponentViewer componentViewer, Component component, boolean visible) { -// component.setVisible(visible); -// componentViewer.forceLayout(); -// } -// -// /** -// * Sets the collapsable panel for the leaderboard open or close, if in CASCADE view mode.
-// * Displays or hides the leaderboard, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the leaderboard shall be open/visible -// */ -// public void setLeaderboardVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, leaderboardPanel, visible); -// } -// -// /** -// * Sets the collapsable panel for the wind chart open or close, if in CASCADE view mode.
-// * Displays or hides the wind chart, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the wind chart shall be open/visible -// */ -// public void setWindChartVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, windChart, visible); -// } -// -// /** -// * Sets the collapsable panel for the competitor chart open or close, if in CASCADE view mode.
-// * Displays or hides the competitor chart, if in ONESCREEN view mode.

-// * -// * The race board should be completely rendered before this method is called, or a few exceptions could be thrown. -// * -// * @param visible true if the competitor chart shall be open/visible -// */ -// public void setCompetitorChartVisible(boolean visible) { -// setComponentVisible(leaderboardAndMapViewer, competitorChart, visible); -// } -// -// public RaceTimePanel getTimePanel() { -// return timePanel; -// } -// -// protected SailingServiceAsync getSailingService() { -// return sailingService; -// } -// -// protected String getRaceBoardName() { -// return raceBoardName; -// } -// -// protected void setRaceBoardName(String raceBoardName) { -// this.raceBoardName = raceBoardName; -// } -// -// protected ErrorReporter getErrorReporter() { -// return errorReporter; -// } -// -// public RaceBoardViewConfiguration getConfiguration() { -// return raceboardViewConfiguration; -// } -// -// @Override -// public void updatedLeaderboard(LeaderboardDTO leaderboard) { -// leaderboardAndMapViewer.setLeftComponentWidth(leaderboardPanel.getContentPanel().getOffsetWidth()); -// if (editMarkPassingPanel != null) { -// editMarkPassingPanel.setLeaderboard(leaderboard); -// } -// } -// -// @Override -// public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) { -// if (!currentRaceHasBeenSelectedOnce) { -// FleetDTO fleet = raceColumn.getFleet(raceIdentifier); -// String seriesName = raceColumn.getSeriesName(); -// if (LeaderboardNameConstants.DEFAULT_SERIES_NAME.equals(seriesName)) { -// seriesName = ""; -// } -// String fleetForRaceName = fleet==null?"":fleet.getName(); -// if (fleetForRaceName.equals(LeaderboardNameConstants.DEFAULT_FLEET_NAME)) { -// fleetForRaceName = ""; -// } else { -// fleetForRaceName = (seriesName.isEmpty() ? "" : " - ") + fleetForRaceName; -// } -// final Label raceNameLabel = new Label(stringMessages.race() + " " + raceColumn.getRaceColumnName()); -// raceNameLabel.setStyleName("RaceName-Label"); -// final Label raceAdditionalInformationLabel = new Label(seriesName + fleetForRaceName); -// raceAdditionalInformationLabel.setStyleName("RaceSeriesAndFleet-Label"); -// raceInformationHeader.clear(); -// raceInformationHeader.add(raceNameLabel); -// raceInformationHeader.add(raceAdditionalInformationLabel); -// final Anchor regattaNameAnchor = new Anchor(raceIdentifier.getRegattaName()); -// regattaNameAnchor.setTitle(raceIdentifier.getRegattaName()); -// if (eventId != null) { -// String link = EntryPointLinkFactory.createLeaderboardPlaceLink(eventId.toString(), leaderboardName); -// regattaNameAnchor.setHref(link); -// } else { -// String leaderboardGroupNameParam = Window.Location.getParameter("leaderboardGroupName"); -// if(leaderboardGroupNameParam != null) { -// Map leaderboardGroupLinkParameters = new HashMap(); -// leaderboardGroupLinkParameters.put("showRaceDetails", "true"); -// leaderboardGroupLinkParameters.put("leaderboardGroupName", leaderboardGroupNameParam); -// String leaderBoardGroupLink = EntryPointLinkFactory.createLeaderboardGroupLink(leaderboardGroupLinkParameters); -// regattaNameAnchor.setHref(leaderBoardGroupLink); -// } else { -// // fallback -// regattaNameAnchor.setHref("javascript:window.history.back();"); -// } -// } -// regattaNameAnchor.setStyleName("RegattaName-Anchor"); -// Label raceTimeLabel = computeRaceInformation(raceColumn, fleet); -// raceTimeLabel.setStyleName("RaceTime-Label"); -// regattaAndRaceTimeInformationHeader.clear(); -// regattaAndRaceTimeInformationHeader.add(regattaNameAnchor); -// regattaAndRaceTimeInformationHeader.add(raceTimeLabel); -// currentRaceHasBeenSelectedOnce = true; -// } -// } -// -// @Override -// public UIObject getXPositionUiObject() { -// return timePanel; -// } -// -// @Override -// public UIObject getYPositionUiObject() { -// return timePanel; -// } -// -// private Label computeRaceInformation(RaceColumnDTO raceColumn, FleetDTO fleet) { -// Label raceInformationLabel = new Label(); -// raceInformationLabel.setStyleName("Race-Time-Label"); -// DateTimeFormat formatter = DateTimeFormat.getFormat("E d/M/y"); -// raceInformationLabel.setText(formatter.format(raceColumn.getStartDate(fleet))); -// return raceInformationLabel; -// } -// -// @Override -// public void onResize() { -// Widget child = getWidget(); -// if (child != null && child instanceof RequiresResize) { -// ((RequiresResize) child).onResize(); -// } -// } -//} -// -//>>>>>>> origin/ribdashboard From 913d4fe5f7d6920166a979128b1837874a5d25a8 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Sat, 12 Mar 2016 15:00:55 +0100 Subject: [PATCH 38/43] Changed client launch configs to commit 73c61b423a42ce33bf523cb177a0930e4caf38e1 --- .../SailingGWT sdm.launch | 156 +++++++++--------- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 150 ++++++++--------- .../Security UI sdm.launch | 96 +++++------ 3 files changed, 201 insertions(+), 201 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch index 3188a77e3f5..2bd988c6083 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch @@ -1,78 +1,78 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index dfad7ad820a..6adb642328e 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -1,75 +1,75 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.security.ui/Security UI sdm.launch b/java/com.sap.sse.security.ui/Security UI sdm.launch index e15e8f7ab9e..63fc7dc7116 100755 --- a/java/com.sap.sse.security.ui/Security UI sdm.launch +++ b/java/com.sap.sse.security.ui/Security UI sdm.launch @@ -1,48 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 6ff977666ba57446a238ebcc4e348f27ecfe2e76 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Tue, 15 Mar 2016 07:58:02 +0100 Subject: [PATCH 39/43] Renamed CombinedWindPanelStyle to RaceMapStyle --- .../startanalysis/DashboardRaceMapResources.java | 6 +++--- ...binedWindPanel.gss => StartAnalysisRaceMap.gss} | 0 .../widgets/startanalysis/StartAnalysisWidget.java | 2 +- .../client/shared/racemap/CombinedWindPanel.java | 14 +++++++------- .../racemap/{CombinedWindPanel.css => RaceMap.css} | 0 .../gwt/ui/client/shared/racemap/RaceMap.java | 4 ++-- .../ui/client/shared/racemap/RaceMapResources.java | 4 ++-- ...mbinedWindPanelStyle.java => RaceMapStyle.java} | 2 +- .../shared/racemap/TrueNorthIndicatorPanel.java | 14 +++++++------- .../EmbeddedMapAndWindChartEntryPoint.java | 2 +- .../sailing/gwt/ui/raceboard/RaceBoardPanel.java | 2 +- 11 files changed, 25 insertions(+), 25 deletions(-) rename java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/{StartAnalysisCombinedWindPanel.gss => StartAnalysisRaceMap.gss} (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/{CombinedWindPanel.css => RaceMap.css} (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/{CombinedWindPanelStyle.java => RaceMapStyle.java} (84%) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/DashboardRaceMapResources.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/DashboardRaceMapResources.java index 86362637283..ceaf0392cb6 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/DashboardRaceMapResources.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/DashboardRaceMapResources.java @@ -1,7 +1,7 @@ package com.sap.sailing.dashboards.gwt.client.widgets.startanalysis; import com.google.gwt.resources.client.ImageResource; -import com.sap.sailing.gwt.ui.client.shared.racemap.CombinedWindPanelStyle; +import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapStyle; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; /** @@ -13,6 +13,6 @@ public interface DashboardRaceMapResources extends RaceMapResources { @Source("com/sap/sailing/dashboards/gwt/client/images/windarrow.png") ImageResource combinedWindIcon(); - @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "StartAnalysisCombinedWindPanel.gss"}) - CombinedWindPanelStyle combinedWindPanelStyle(); + @Source({"com/sap/sailing/dashboards/gwt/client/theme/theme.gss", "StartAnalysisRaceMap.gss"}) + RaceMapStyle raceMapStyle(); } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisCombinedWindPanel.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisRaceMap.gss similarity index 100% rename from java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisCombinedWindPanel.gss rename to java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisRaceMap.gss diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java index 30eccd85fd0..b808797b761 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisWidget.java @@ -138,7 +138,7 @@ public class StartAnalysisWidget extends Composite implements HasWidgets, PollsL selectedCompetitorWithSettingsButton.disable(); selectedCompetitorWithSettingsButton.setSelectionIndicationTextOnLabel(StringMessages.INSTANCE.dashboardSelectCompetitor()); addClickListenerToSettingsButtonAndLabel(); - raceMapResources.combinedWindPanelStyle().ensureInjected(); + raceMapResources.raceMapStyle().ensureInjected(); this.dashboardClientFactory = dashboardClientFactory; pageChangeListener = new ArrayList(); starts = new ArrayList(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java index d54f544d80d..20d5b36e6b6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java @@ -23,23 +23,23 @@ public class CombinedWindPanel extends FlowPanel { private Canvas canvas; - private CombinedWindPanelStyle combinedWindPanelStyle; + private RaceMapStyle raceMapStyle; private final CoordinateSystem coordinateSystem; - public CombinedWindPanel(RaceMapImageManager theRaceMapResources, CombinedWindPanelStyle combinedWindPanelStyle, + public CombinedWindPanel(RaceMapImageManager theRaceMapResources, RaceMapStyle raceMapStyle, StringMessages stringMessages, CoordinateSystem coordinateSystem) { - combinedWindPanelStyle.ensureInjected(); + raceMapStyle.ensureInjected(); this.stringMessages = stringMessages; this.coordinateSystem = coordinateSystem; this.raceMapResources = theRaceMapResources; - this.combinedWindPanelStyle = combinedWindPanelStyle; - addStyleName(combinedWindPanelStyle.combinedWindPanel()); + this.raceMapStyle = raceMapStyle; + addStyleName(raceMapStyle.combinedWindPanel()); transformer = raceMapResources.getCombinedWindIconTransformer(); canvas = transformer.getCanvas(); - canvas.addStyleName(this.combinedWindPanelStyle.combinedWindPanelCanvas()); + canvas.addStyleName(this.raceMapStyle.combinedWindPanelCanvas()); add(canvas); textLabel = new Label(""); - textLabel.addStyleName(this.combinedWindPanelStyle.combinedWindPanelTextLabel()); + textLabel.addStyleName(this.raceMapStyle.combinedWindPanelTextLabel()); add(textLabel); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.css b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.css similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.css rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.css diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java index 1619ae8b220..280f53aab85 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java @@ -446,9 +446,9 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe panelForLeftHeaderLabels = new AbsolutePanel(); panelForRightHeaderLabels = new AbsolutePanel(); initializeData(showMapControls, showHeaderPanel); - combinedWindPanel = new CombinedWindPanel(raceMapImageManager, raceMapResources.combinedWindPanelStyle(), stringMessages, coordinateSystem); + combinedWindPanel = new CombinedWindPanel(raceMapImageManager, raceMapResources.raceMapStyle(), stringMessages, coordinateSystem); combinedWindPanel.setVisible(false); - trueNorthIndicatorPanel = new TrueNorthIndicatorPanel(this, raceMapImageManager, raceMapResources.combinedWindPanelStyle(), stringMessages, coordinateSystem); + trueNorthIndicatorPanel = new TrueNorthIndicatorPanel(this, raceMapImageManager, raceMapResources.raceMapStyle(), stringMessages, coordinateSystem); trueNorthIndicatorPanel.setVisible(true); orientationChangeInProgress = false; mapFirstZoomDone = false; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapResources.java index 689799cb81c..368ba925ee1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapResources.java @@ -28,6 +28,6 @@ public interface RaceMapResources extends ClientBundle { @Source("com/sap/sailing/gwt/ui/client/images/maneuver_green.png") ImageResource maneuverMarkerGreen(); - @Source("CombinedWindPanel.css") - CombinedWindPanelStyle combinedWindPanelStyle(); + @Source("RaceMap.css") + RaceMapStyle raceMapStyle(); } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanelStyle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapStyle.java similarity index 84% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanelStyle.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapStyle.java index 75a3abf8c16..2d07ac4a0ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanelStyle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapStyle.java @@ -4,7 +4,7 @@ import com.google.gwt.resources.client.CssResource; import com.google.gwt.resources.client.CssResource.Shared; @Shared -public interface CombinedWindPanelStyle extends CssResource { +public interface RaceMapStyle extends CssResource { public String combinedWindPanel(); public String combinedWindPanelTextLabel(); public String combinedWindPanelCanvas(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java index d7b5356b357..a0d4e02bfcd 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java @@ -26,20 +26,20 @@ public class TrueNorthIndicatorPanel extends FlowPanel { private Canvas canvas; - private CombinedWindPanelStyle combinedWindPanelStyle; + private RaceMapStyle raceMapStyle; private final CoordinateSystem coordinateSystem; - public TrueNorthIndicatorPanel(final RaceMap map, RaceMapImageManager theRaceMapResources, CombinedWindPanelStyle combinedWindPanelStyle, + public TrueNorthIndicatorPanel(final RaceMap map, RaceMapImageManager theRaceMapResources, RaceMapStyle raceMapStyle, final StringMessages stringMessages, CoordinateSystem coordinateSystem) { this.stringMessages = stringMessages; this.coordinateSystem = coordinateSystem; this.raceMapResources = theRaceMapResources; - this.combinedWindPanelStyle = combinedWindPanelStyle; - addStyleName(combinedWindPanelStyle.combinedWindPanel()); - addStyleName(combinedWindPanelStyle.trueNorthIndicator()); + this.raceMapStyle = raceMapStyle; + addStyleName(raceMapStyle.combinedWindPanel()); + addStyleName(raceMapStyle.trueNorthIndicator()); transformer = raceMapResources.getTrueNorthIndicatorIconTransformer(); canvas = transformer.getCanvas(); - canvas.addStyleName(this.combinedWindPanelStyle.combinedWindPanelCanvas()); + canvas.addStyleName(this.raceMapStyle.combinedWindPanelCanvas()); add(canvas); canvas.addClickHandler(new ClickHandler() { @Override @@ -59,7 +59,7 @@ public class TrueNorthIndicatorPanel extends FlowPanel { } }); textLabel = new Label(""); - textLabel.addStyleName(this.combinedWindPanelStyle.combinedWindPanelTextLabel()); + textLabel.addStyleName(this.raceMapStyle.combinedWindPanelTextLabel()); add(textLabel); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/EmbeddedMapAndWindChartEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/EmbeddedMapAndWindChartEntryPoint.java index b912cd31338..f1a0b2eb29c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/EmbeddedMapAndWindChartEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/EmbeddedMapAndWindChartEntryPoint.java @@ -155,7 +155,7 @@ public class EmbeddedMapAndWindChartEntryPoint extends AbstractSailingEntryPoint final TimePanelSettings timePanelSettings = timePanel.getSettings(); timePanelSettings.setRefreshInterval(refreshInterval); timePanel.updateSettings(timePanelSettings); - raceMapResources.combinedWindPanelStyle().ensureInjected(); + raceMapResources.raceMapStyle().ensureInjected(); final CompetitorColorProvider colorProvider = new CompetitorColorProviderImpl(selectedRaceIdentifier, competitorBoats); final CompetitorSelectionProvider competitorSelection; if (showCompetitors) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 3707736e6f2..567de85eb3e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -170,7 +170,7 @@ public class RaceBoardPanel extends SimplePanel implements LeaderboardUpdateList final CompetitorColorProvider colorProvider = new CompetitorColorProviderImpl(selectedRaceIdentifier, competitorsAndTheirBoats); competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true, colorProvider); - raceMapResources.combinedWindPanelStyle().ensureInjected(); + raceMapResources.raceMapStyle().ensureInjected(); raceMap = new RaceMap(sailingService, asyncActionsExecutor, errorReporter, timer, competitorSelectionProvider, stringMessages, showMapControls, getConfiguration().isShowViewStreamlets(), getConfiguration().isShowViewStreamletColors(), getConfiguration().isShowViewSimulation(), selectedRaceIdentifier, raceMapResources, /* showHeaderPanel */ true) { From 1ee0150e13460c610963857e6fe7137bf899b47a Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 15 Mar 2016 10:45:24 +0100 Subject: [PATCH 40/43] fixed handling of race map resources Change-Id: Iad2cc1a0065ad28439823aa1ca34bbeb82e9ba0e --- .../com.sap.sailing.dashboards.gwt/.classpath | 24 +++++++++---------- .../gwt/ui/client/shared/racemap/RaceMap.java | 2 +- .../shared/racemap/RaceMapImageManager.java | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/.classpath b/java/com.sap.sailing.dashboards.gwt/.classpath index 3c32839e434..34d9ee0253f 100644 --- a/java/com.sap.sailing.dashboards.gwt/.classpath +++ b/java/com.sap.sailing.dashboards.gwt/.classpath @@ -1,12 +1,12 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java index 280f53aab85..d8a3d76289a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java @@ -633,7 +633,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe createHeaderPanel(map); } if (showMapControls) { - createSettingsButton(map); + createSettingsButton(map); } // Data has been initialized RaceMap.this.isMapInitialized = true; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java index a53702c893f..2ef5252955e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapImageManager.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.google.gwt.core.client.GWT; import com.google.gwt.maps.client.MapWidget; import com.google.gwt.maps.client.base.Point; import com.google.gwt.maps.client.base.Size; @@ -39,9 +38,10 @@ public class RaceMapImageManager { protected Map, Marker> maneuverIconsForTypeAndDirectionIndicatingColor; - private static RaceMapResources resources = GWT.create(RaceMapResources.class); + private final RaceMapResources resources; public RaceMapImageManager(RaceMapResources resources) { + this.resources = resources; maneuverIconsForTypeAndDirectionIndicatingColor = new HashMap, Marker>(); trueNorthIndicatorIconTransformer = new ImageTransformer(resources.trueNorthIndicatorIcon()); combinedWindIconTransformer = new ImageTransformer(resources.combinedWindIcon()); From 3bf7e03764a4b85010bfbbe072d3db5d4582fa77 Mon Sep 17 00:00:00 2001 From: Alexander Ries Date: Tue, 15 Mar 2016 11:41:34 +0100 Subject: [PATCH 41/43] Added javadoc to RaceMapStyle and changed style names --- .../startanalysis/StartAnalysisRaceMap.gss | 28 ++++++++++--------- .../shared/racemap/CombinedWindPanel.java | 6 ++-- .../gwt/ui/client/shared/racemap/RaceMap.css | 12 ++++---- .../client/shared/racemap/RaceMapStyle.java | 13 +++++++-- .../racemap/TrueNorthIndicatorPanel.java | 6 ++-- 5 files changed, 38 insertions(+), 27 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisRaceMap.gss b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisRaceMap.gss index ada72c4b4f0..73ed5bf03fd 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisRaceMap.gss +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/widgets/startanalysis/StartAnalysisRaceMap.gss @@ -1,6 +1,6 @@ @require 'theme'; -.combinedWindPanel { +.raceMapIndicatorPanel { margin-top: DASHBOARD_SPACE_VERY_SMALL; margin-left: DASHBOARD_SPACE_VERY_SMALL; right: 0px; @@ -10,26 +10,28 @@ background-color: white; } -.combinedWindPanelTextLabel { -margin-top: DASHBOARD_SPACE_VERY_SMALL; -width: 50px; -height: DASHBOARD_SPACE_SMALL; -line-height: DASHBOARD_SPACE_SMALL; -vertical-align: middle; -font-size: DASHBOARD_FONT_SIZE_SMALL; -font-weight: bold; -font-family: DASHBOARD_FONT_FAMILY; -text-align: center; -color: white; +.raceMapIndicatorPanelTextLabel { + margin-top: DASHBOARD_SPACE_VERY_SMALL; + width: 50px; + height: DASHBOARD_SPACE_SMALL; + line-height: DASHBOARD_SPACE_SMALL; + vertical-align: middle; + font-size: DASHBOARD_FONT_SIZE_SMALL; + font-weight: bold; + font-family: DASHBOARD_FONT_FAMILY; + text-align: center; + color: white; } -.combinedWindPanelCanvas { +.raceMapIndicatorPanelCanvas { width: 30px !important; height: 30px !important; margin-top: 10px; margin-left: 10px; } +.combinedWindPanel {} + .trueNorthIndicator { opacity: 0.0; } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java index 20d5b36e6b6..aa92c3f2602 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CombinedWindPanel.java @@ -33,13 +33,13 @@ public class CombinedWindPanel extends FlowPanel { this.coordinateSystem = coordinateSystem; this.raceMapResources = theRaceMapResources; this.raceMapStyle = raceMapStyle; - addStyleName(raceMapStyle.combinedWindPanel()); + addStyleName(raceMapStyle.raceMapIndicatorPanel()); transformer = raceMapResources.getCombinedWindIconTransformer(); canvas = transformer.getCanvas(); - canvas.addStyleName(this.raceMapStyle.combinedWindPanelCanvas()); + canvas.addStyleName(this.raceMapStyle.raceMapIndicatorPanelCanvas()); add(canvas); textLabel = new Label(""); - textLabel.addStyleName(this.raceMapStyle.combinedWindPanelTextLabel()); + textLabel.addStyleName(this.raceMapStyle.raceMapIndicatorPanelTextLabel()); add(textLabel); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.css b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.css index 067c30871cd..9c8056bcd53 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.css +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.css @@ -1,6 +1,6 @@ @CHARSET "UTF-8"; -.combinedWindPanel { +.raceMapIndicatorPanel { -moz-border-radius: 4px; -webkit-border-radius: 4px; -o-border-radius: 4px; @@ -10,7 +10,7 @@ border: 1px solid #C9CACA; } -.combinedWindPanelTextLabel { +.raceMapIndicatorPanelTextLabel { height: 12px; width: 55px; vertical-align: middle; @@ -18,12 +18,12 @@ text-align: center; } -.combinedWindPanelCanvas { +.raceMapIndicatorPanelCanvas { width: 55px; margin-left: 6px; cursor: pointer; } -.trueNorthIndicator { - opacity: 1.0; -} \ No newline at end of file +.combinedWindPanel {} + +.trueNorthIndicator {} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapStyle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapStyle.java index 2d07ac4a0ee..4a2179a296b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapStyle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapStyle.java @@ -3,10 +3,19 @@ package com.sap.sailing.gwt.ui.client.shared.racemap; import com.google.gwt.resources.client.CssResource; import com.google.gwt.resources.client.CssResource.Shared; +/** + * Contains class names for styles that can get overwritten in the {@link RaceMap}. + * The {@link RaceMap} may require customized styles of elements when it is used in + * different contexts. + * + * @author Alexander Ries + * + */ @Shared public interface RaceMapStyle extends CssResource { + public String raceMapIndicatorPanel(); + public String raceMapIndicatorPanelTextLabel(); + public String raceMapIndicatorPanelCanvas(); public String combinedWindPanel(); - public String combinedWindPanelTextLabel(); - public String combinedWindPanelCanvas(); public String trueNorthIndicator(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java index a0d4e02bfcd..ef7cd8e80a3 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TrueNorthIndicatorPanel.java @@ -35,11 +35,11 @@ public class TrueNorthIndicatorPanel extends FlowPanel { this.coordinateSystem = coordinateSystem; this.raceMapResources = theRaceMapResources; this.raceMapStyle = raceMapStyle; - addStyleName(raceMapStyle.combinedWindPanel()); + addStyleName(raceMapStyle.raceMapIndicatorPanel()); addStyleName(raceMapStyle.trueNorthIndicator()); transformer = raceMapResources.getTrueNorthIndicatorIconTransformer(); canvas = transformer.getCanvas(); - canvas.addStyleName(this.raceMapStyle.combinedWindPanelCanvas()); + canvas.addStyleName(this.raceMapStyle.raceMapIndicatorPanelCanvas()); add(canvas); canvas.addClickHandler(new ClickHandler() { @Override @@ -59,7 +59,7 @@ public class TrueNorthIndicatorPanel extends FlowPanel { } }); textLabel = new Label(""); - textLabel.addStyleName(this.raceMapStyle.combinedWindPanelTextLabel()); + textLabel.addStyleName(this.raceMapStyle.raceMapIndicatorPanelTextLabel()); add(textLabel); } From f036e6df7412cc664fbac5e019b91f8d40431b77 Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Tue, 15 Mar 2016 15:03:53 +0100 Subject: [PATCH 42/43] hotfix, if someone activate the offline mode --- .../app/ui/activities/LoginActivity.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/LoginActivity.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/LoginActivity.java index 65310a6b18d..be64553c1f8 100755 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/LoginActivity.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/LoginActivity.java @@ -1,5 +1,11 @@ package com.sap.sailing.racecommittee.app.ui.activities; +import java.io.FileNotFoundException; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.UUID; + import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; @@ -58,12 +64,6 @@ import com.sap.sailing.racecommittee.app.ui.fragments.lists.selection.PositionSe import com.sap.sailing.racecommittee.app.utils.StringHelper; import com.sap.sailing.racecommittee.app.utils.autoupdate.AutoUpdater; -import java.io.FileNotFoundException; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; -import java.util.UUID; - public class LoginActivity extends BaseActivity implements EventSelectedListenerHost, CourseAreaSelectedListenerHost, PositionSelectedListenerHost, DialogListenerHost.DialogResultListener { @@ -421,6 +421,7 @@ public class LoginActivity extends BaseActivity getLoaderManager().restartLoader(0, null, configurationLoader).forceLoad(); } else { dismissProgressSpinner(); + slideUpBackdropDelayed(); } } From 454a8a5bfc600608a81ed41e0d9951e5ab2d9080 Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Tue, 15 Mar 2016 16:10:46 +0100 Subject: [PATCH 43/43] fixed error message (show values instead of placeholder) --- .../app/ui/fragments/raceinfo/MoreFlagsFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/MoreFlagsFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/MoreFlagsFragment.java index 4d258d37dd5..1a443453f72 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/MoreFlagsFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/MoreFlagsFragment.java @@ -251,7 +251,7 @@ public class MoreFlagsFragment extends BaseFragment implements MoreFlagItemClick } if (result.hasError()) { - Toast.makeText(getActivity(), result.getMessageId(), Toast.LENGTH_LONG).show(); + Toast.makeText(getActivity(), result.getMessage(getActivity()), Toast.LENGTH_LONG).show(); } } }