mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-18 19:59:09 +00:00
Merge branch 'master' into bug5480
# Conflicts: # java/com.sap.sailing.feature.p2build/raceanalysis.product # java/com.sap.sailing.server/SailingServer (No Proxy).launch # java/com.sap.sse.security.ui/WEB-INF/web.xml
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
public_keys=$( for user in `curl -H 'Authorization: Bearer vyIlGJTuzTqS25IiS2cLHDFulJ9NgJto3apwV/D9Q0k=' "https://security-service.sapsailing.com/security/api/restsecurity/users_with_permission?permission=LANDSCAPE:MANAGE:AWS" 2>/dev/null | jq -r '.[]'`; do
|
||||
curl -H 'Authorization: Bearer vyIlGJTuzTqS25IiS2cLHDFulJ9NgJto3apwV/D9Q0k=' "https://security-service.sapsailing.com/landscape/api/landscape/get_ssh_keys_owned_by_user?username[]=${user}" 2>/dev/null | jq -r '.[].publicKey'
|
||||
done | sort -u )
|
||||
echo "${public_keys}"
|
||||
Regular → Executable
Regular → Executable
@@ -8,7 +8,8 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Import-Package: com.sap.sailing.server.interfaces,
|
||||
org.osgi.framework;version="1.7.0"
|
||||
Export-Package: com.sap.sailing.datamining,
|
||||
com.sap.sailing.datamining.data
|
||||
com.sap.sailing.datamining.data,
|
||||
com.sap.sailing.datamining.impl.data;x-friends:="com.sap.sailing.polars.datamining"
|
||||
Require-Bundle: com.sap.sailing.domain,
|
||||
com.sap.sailing.domain.common,
|
||||
com.sap.sailing.datamining.shared,
|
||||
|
||||
+6
-2
@@ -12,8 +12,12 @@ public interface HasLeaderboardContext {
|
||||
Leaderboard getLeaderboard();
|
||||
|
||||
@Dimension(messageKey="Leaderboard", ordinal=1)
|
||||
String getName();
|
||||
default String getName() {
|
||||
return getLeaderboard().getName();
|
||||
}
|
||||
|
||||
@Connector(messageKey="BoatClass", ordinal=2)
|
||||
BoatClass getBoatClass();
|
||||
default BoatClass getBoatClass() {
|
||||
return getLeaderboard().getBoatClass();
|
||||
}
|
||||
}
|
||||
|
||||
-2
@@ -6,12 +6,10 @@ import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sse.datamining.annotations.Connector;
|
||||
|
||||
public interface HasLeaderboardGroupContext {
|
||||
|
||||
@Connector(messageKey="LeaderboardGroup", ordinal=0)
|
||||
LeaderboardGroup getLeaderboardGroup();
|
||||
|
||||
PolarDataService getPolarDataService();
|
||||
|
||||
DomainFactory getBaseDomainFactory();
|
||||
|
||||
}
|
||||
|
||||
-11
@@ -2,7 +2,6 @@ package com.sap.sailing.datamining.impl.data;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardGroupContext;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
|
||||
public class LeaderboardWithContext implements HasLeaderboardContext {
|
||||
@@ -22,14 +21,4 @@ public class LeaderboardWithContext implements HasLeaderboardContext {
|
||||
public Leaderboard getLeaderboard() {
|
||||
return leaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BoatClass getBoatClass() {
|
||||
return getLeaderboard().getBoatClass();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return getLeaderboard().getName();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-4
@@ -8,7 +8,6 @@ import java.io.IOException;
|
||||
import java.text.ParseException;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.declination.Declination;
|
||||
@@ -35,14 +34,13 @@ public abstract class DeclinationServiceTest<I extends DeclinationImporter> exte
|
||||
assertEquals(0.+09./60., result.getAnnualChange().getDegrees(), 0.0000001);
|
||||
}
|
||||
|
||||
@Ignore("Currently NOAA service ends Dec 2019; this test for now is only available for the Colorado importer")
|
||||
@Test
|
||||
public void testDeclinationQueryNotMatchedInStore() throws IOException, ClassNotFoundException, ParseException {
|
||||
Declination result = service.getDeclination(new MillisecondsTimePoint(simpleDateFormat.parse("2020-02-03").getTime()),
|
||||
new DegreePosition(51, -5), /* timeoutForOnlineFetchInMilliseconds */ 5000);
|
||||
assertNotNull(result);
|
||||
assertEquals(-1.80464, result.getBearing().getDegrees(), 0.001);
|
||||
assertEquals(0.15244, result.getAnnualChange().getDegrees(), 0.001);
|
||||
assertEquals(-1.531, result.getBearing().getDegrees(), 0.001);
|
||||
assertEquals(0.20272, result.getAnnualChange().getDegrees(), 0.001);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
-2
@@ -1,11 +1,9 @@
|
||||
package com.sap.sailing.declination.test;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
|
||||
import com.sap.sailing.declination.impl.NOAAImporterForTesting;
|
||||
|
||||
@Ignore("2021-01-20: Due to scheduled system maintenance, ngdc.noaa.gov services will be unavailable from Wednesday 2021-01-20 16:00 MT until Friday 2021-01-22 12:00 MT.")
|
||||
public class NOAADeclinationImportTest extends DeclinationImportTest<NOAAImporterForTesting> {
|
||||
@Before
|
||||
public void setUp() {
|
||||
|
||||
-2
@@ -1,11 +1,9 @@
|
||||
package com.sap.sailing.declination.test;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
|
||||
import com.sap.sailing.declination.impl.NOAAImporter;
|
||||
|
||||
@Ignore("2021-01-20: Due to scheduled system maintenance, ngdc.noaa.gov services will be unavailable from Wednesday 2021-01-20 16:00 MT until Friday 2021-01-22 12:00 MT.")
|
||||
public class NOAASimpleDeclinationTest extends SimpleDeclinationTest<NOAAImporter> {
|
||||
@Before
|
||||
public void setUp() {
|
||||
|
||||
-2
@@ -7,7 +7,6 @@ import java.text.ParseException;
|
||||
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
@@ -19,7 +18,6 @@ import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
@Ignore("2021-01-20: Due to scheduled system maintenance, ngdc.noaa.gov services will be unavailable from Wednesday 2021-01-20 16:00 MT until Friday 2021-01-22 12:00 MT.")
|
||||
public abstract class SimpleDeclinationTest<I extends DeclinationImporter> extends AbstractDeclinationTest<I> {
|
||||
@Test
|
||||
public void testSimpleCorrection() throws IOException, ParseException, ParserConfigurationException, SAXException {
|
||||
|
||||
+10
-10
@@ -2,7 +2,6 @@ package com.sap.sailing.domain.common.dto;
|
||||
|
||||
import com.sap.sailing.domain.common.RankingMetrics;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.security.SecuredDomainType;
|
||||
import com.sap.sse.security.shared.HasPermissions;
|
||||
import com.sap.sse.security.shared.QualifiedObjectIdentifier;
|
||||
@@ -36,22 +35,23 @@ public class RaceDTO extends BasicRaceDTO implements SecuredDTO {
|
||||
|
||||
public TrackedRaceStatisticsDTO trackedRaceStatistics;
|
||||
|
||||
private String regattaName;
|
||||
public String boatClass;
|
||||
|
||||
private RankingMetrics rankingMetricType;
|
||||
|
||||
private RegattaAndRaceIdentifier raceIdentifier;
|
||||
|
||||
public RaceDTO() {}
|
||||
|
||||
public RaceDTO(RegattaAndRaceIdentifier raceIdentifier, TrackedRaceDTO trackedRace, boolean isCurrentlyTracked, RankingMetrics rankingMetricType) {
|
||||
super(raceIdentifier, trackedRace);
|
||||
this.regattaName = raceIdentifier.getRegattaName();
|
||||
this.raceIdentifier = raceIdentifier;
|
||||
this.isTracked = isCurrentlyTracked;
|
||||
this.rankingMetricType = rankingMetricType;
|
||||
}
|
||||
|
||||
public RegattaAndRaceIdentifier getRaceIdentifier() {
|
||||
return new RegattaNameAndRaceName(regattaName, getName());
|
||||
return raceIdentifier;
|
||||
}
|
||||
|
||||
public RankingMetrics getRankingMetricType() {
|
||||
@@ -59,7 +59,7 @@ public class RaceDTO extends BasicRaceDTO implements SecuredDTO {
|
||||
}
|
||||
|
||||
public String getRegattaName() {
|
||||
return regattaName;
|
||||
return raceIdentifier.getRegattaName();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,7 +69,7 @@ public class RaceDTO extends BasicRaceDTO implements SecuredDTO {
|
||||
result = prime * result + ((boatClass == null) ? 0 : boatClass.hashCode());
|
||||
result = prime * result + (isTracked ? 1231 : 1237);
|
||||
result = prime * result + ((places == null) ? 0 : places.hashCode());
|
||||
result = prime * result + ((regattaName == null) ? 0 : regattaName.hashCode());
|
||||
result = prime * result + ((getRegattaName() == null) ? 0 : getRegattaName().hashCode());
|
||||
result = prime * result + ((status == null) ? 0 : status.hashCode());
|
||||
return result;
|
||||
}
|
||||
@@ -95,10 +95,10 @@ public class RaceDTO extends BasicRaceDTO implements SecuredDTO {
|
||||
return false;
|
||||
} else if (!places.equals(other.places))
|
||||
return false;
|
||||
if (regattaName == null) {
|
||||
if (other.regattaName != null)
|
||||
if (getRegattaName() == null) {
|
||||
if (other.getRegattaName() != null)
|
||||
return false;
|
||||
} else if (!regattaName.equals(other.regattaName))
|
||||
} else if (!getRegattaName().equals(other.getRegattaName()))
|
||||
return false;
|
||||
if (status == null) {
|
||||
if (other.status != null)
|
||||
@@ -139,7 +139,7 @@ public class RaceDTO extends BasicRaceDTO implements SecuredDTO {
|
||||
}
|
||||
|
||||
public TypeRelativeObjectIdentifier getTypeRelativeObjectIdentifier() {
|
||||
return new TypeRelativeObjectIdentifier(regattaName, getName());
|
||||
return raceIdentifier.getTypeRelativeObjectIdentifier();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -162,7 +162,7 @@ public class RaceAndCompetitorStatusWithRaceLogReconciler {
|
||||
this.raceLogResolver = raceLogResolver;
|
||||
this.tractracRace = tractracRace;
|
||||
raceLogListeners = Collections.synchronizedMap(new HashMap<>());
|
||||
raceLogEventAuthor = new LogEventAuthorImpl(getClass().getName(), 1);
|
||||
raceLogEventAuthor = new LogEventAuthorImpl(getClass().getName(), 1); // equally important as race officer on water
|
||||
}
|
||||
|
||||
public void raceLogAttached(TrackedRace trackedRace, RaceLog raceLog) {
|
||||
@@ -376,7 +376,7 @@ public class RaceAndCompetitorStatusWithRaceLogReconciler {
|
||||
resultsForRaceLog.add(resultForRaceLog);
|
||||
final RaceLog defaultRaceLog = getDefaultRaceLog(trackedRace);
|
||||
defaultRaceLog.add(new RaceLogFinishPositioningConfirmedEventImpl(officialResultTime, officialResultTime,
|
||||
new LogEventAuthorImpl("Official TracTrac Result Provider", 1), // equally important as race officer on water
|
||||
raceLogEventAuthor,
|
||||
UUID.randomUUID(), defaultRaceLog.getCurrentPassId(), resultsForRaceLog));
|
||||
logger.info("Added the following result to the race log of " + trackedRace.getRaceIdentifier()
|
||||
+ " for competitor " + raceCompetitor + ": " + resultForRaceLog);
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<plugin id="com.sap.sse.security.userstore.mongodb" autoStart="true" startLevel="4" />
|
||||
<plugin id="javax.annotation" autoStart="true" startLevel="0" />
|
||||
<plugin id="org.apache.aries.spifly.dynamic.bundle" autoStart="true" startLevel="1" />
|
||||
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
|
||||
<plugin id="com.sap.sse.landscape.aws" autoStart="true" startLevel="4" /> <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
|
||||
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="2" />
|
||||
<plugin id="org.eclipse.jetty.osgi.boot" autoStart="true" startLevel="3" />
|
||||
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
|
||||
|
||||
@@ -495,7 +495,21 @@ Computes leaderboard information for sailing races and offers RESTful APIs to al
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.sap.sse.debranding"
|
||||
id="com.sap.sailing.landscape"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.sap.sailing.landscape.common"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.sap.sailing.landscape.ui"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
|
||||
Regular → Executable
@@ -65,7 +65,10 @@ Require-Bundle: com.sap.sailing.domain,
|
||||
com.sap.sailing.shared.server,
|
||||
org.apache.commons.math;bundle-version="2.1.0",
|
||||
com.chargebee.chargebee-java;bundle-version="2.7.7",
|
||||
org.apache.commons.lang;bundle-version="2.6.0"
|
||||
org.apache.commons.lang;bundle-version="2.6.0",
|
||||
com.sap.sailing.landscape.ui,
|
||||
com.sap.sailing.landscape.common,
|
||||
com.sap.sse.landscape.common
|
||||
Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Import-Package: javax.servlet;version="3.1.0",
|
||||
|
||||
@@ -147,38 +147,45 @@
|
||||
<servlet-name>DataMiningService</servlet-name>
|
||||
<url-pattern>/service/datamining</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<display-name>User Management Write</display-name>
|
||||
<servlet-name>UserManagementService</servlet-name>
|
||||
<servlet-class>com.sap.sse.security.ui.server.UserManagementWriteServiceImpl</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>UserManagementService</servlet-name>
|
||||
<url-pattern>/service/usermanagement</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<display-name>Chargebee Subscription Service</display-name>
|
||||
<servlet-name>ChargebeeSubscriptionService</servlet-name>
|
||||
<servlet-class>com.sap.sailing.gwt.ui.server.subscription.chargebee.ChargebeeSubscriptionWriteServiceImpl</servlet-class>
|
||||
<servlet>
|
||||
<display-name>User Management Write</display-name>
|
||||
<servlet-name>UserManagementService</servlet-name>
|
||||
<servlet-class>com.sap.sse.security.ui.server.UserManagementWriteServiceImpl</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>UserManagementService</servlet-name>
|
||||
<url-pattern>/service/usermanagement</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<display-name>Landscape Management Service</display-name>
|
||||
<servlet-name>LandscapeManagementService</servlet-name>
|
||||
<servlet-class>com.sap.sailing.landscape.ui.server.LandscapeManagementWriteServiceImpl</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>LandscapeManagementService</servlet-name>
|
||||
<url-pattern>/service/landscape</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<display-name>Chargebee Subscription Service</display-name>
|
||||
<servlet-name>ChargebeeSubscriptionService</servlet-name>
|
||||
<servlet-class>com.sap.sailing.gwt.ui.server.subscription.chargebee.ChargebeeSubscriptionWriteServiceImpl</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ChargebeeSubscriptionService</servlet-name>
|
||||
<url-pattern>/service/subscription/chargebee</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!-- enabling remote logging -->
|
||||
<servlet>
|
||||
<servlet-name>remoteLoggingServlet</servlet-name>
|
||||
<servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>remoteLoggingServlet</servlet-name>
|
||||
<url-pattern>/com.sap.sailing.gwt.home.Desktop/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.home.Mobile/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.ui.AdminConsole/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.ui.Leaderboard/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.ui.Simulator/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.ui.RaceBoard/remote_logging</url-pattern>
|
||||
</servlet-mapping>
|
||||
<!-- enabling remote logging -->
|
||||
<servlet>
|
||||
<servlet-name>remoteLoggingServlet</servlet-name>
|
||||
<servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>remoteLoggingServlet</servlet-name>
|
||||
<url-pattern>/com.sap.sailing.gwt.home.Desktop/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.home.Mobile/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.ui.AdminConsole/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.ui.Leaderboard/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.ui.Simulator/remote_logging</url-pattern>
|
||||
<url-pattern>/com.sap.sailing.gwt.ui.RaceBoard/remote_logging</url-pattern>
|
||||
</servlet-mapping>
|
||||
</web-app>
|
||||
|
||||
@@ -127,6 +127,24 @@
|
||||
<version>${project.version}</version>
|
||||
<classifier>sources</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<artifactId>com.sap.sse.landscape.common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>sources</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<artifactId>com.sap.sailing.landscape.common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>sources</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<artifactId>com.sap.sailing.landscape.ui</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>sources</classifier>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
+1
-1
@@ -1,9 +1,9 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.legacy;
|
||||
|
||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
import com.sap.sse.gwt.shared.ClientConfiguration;
|
||||
|
||||
public class EventPlace extends AbstractBasePlace {
|
||||
|
||||
+1
-1
@@ -1,9 +1,9 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.legacy;
|
||||
|
||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
import com.sap.sse.gwt.shared.ClientConfiguration;
|
||||
|
||||
public class RegattaPlace extends AbstractBasePlace {
|
||||
|
||||
+1
-1
@@ -1,9 +1,9 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.legacy;
|
||||
|
||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
import com.sap.sse.gwt.shared.ClientConfiguration;
|
||||
|
||||
public class SeriesPlace extends AbstractBasePlace {
|
||||
|
||||
+15
-6
@@ -52,18 +52,27 @@ public class GetFavoritesAction implements SailingAction<FavoritesResult> {
|
||||
TreeSet<SimpleCompetitorWithIdDTO> selected = new TreeSet<>();
|
||||
boolean notifyAboutResults = false;
|
||||
if (preferences != null) {
|
||||
final RacingEventService racingEventService = ctx.getRacingEventService();
|
||||
final CompetitorAndBoatStore competitorAndBoatStore = racingEventService.getCompetitorAndBoatStore();
|
||||
for (CompetitorNotificationPreference pref : preferences.getCompetitors()) {
|
||||
final String competitorId = pref.getCompetitorIdAsString();
|
||||
final RacingEventService racingEventService = ctx.getRacingEventService();
|
||||
final CompetitorAndBoatStore competitorAndBoatStore = racingEventService.getCompetitorAndBoatStore();
|
||||
DynamicCompetitor competitor = competitorAndBoatStore.getExistingCompetitorByIdAsString(competitorId);
|
||||
selected.add(competitor == null ?
|
||||
new SimpleCompetitorWithIdDTO(competitorId,"Not found","ID:" + competitorId, null, null)
|
||||
: new SimpleCompetitorWithIdDTO(competitor));
|
||||
SimpleCompetitorWithIdDTO competitorDTO;
|
||||
if (competitor == null) {
|
||||
final String competitorName = pref.getCompetitorName();
|
||||
final String conveyedCompetitorName = competitorName == null ? "Not found."
|
||||
: competitorName;
|
||||
competitorDTO = new SimpleCompetitorWithIdDTO(competitorId, conveyedCompetitorName, "Unknown", null,
|
||||
null);
|
||||
} else {
|
||||
competitorDTO = new SimpleCompetitorWithIdDTO(competitor);
|
||||
}
|
||||
selected.add(competitorDTO);
|
||||
notifyAboutResults |= pref.isNotifyAboutResults();
|
||||
}
|
||||
}
|
||||
return new FavoriteCompetitorsDTO(selected, notifyAboutResults);
|
||||
FavoriteCompetitorsDTO favoriteCompetitorsDTO = new FavoriteCompetitorsDTO(selected, notifyAboutResults);
|
||||
return favoriteCompetitorsDTO;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
-3
@@ -30,12 +30,12 @@ public class SaveFavoriteCompetitorsAction implements SailingAction<VoidResult>,
|
||||
@Override
|
||||
@GwtIncompatible
|
||||
public VoidResult execute(SailingDispatchContext ctx) throws DispatchException {
|
||||
CompetitorNotificationPreferences prefs = new CompetitorNotificationPreferences(ctx.getRacingEventService());
|
||||
CompetitorNotificationPreferences prefs = new CompetitorNotificationPreferences();
|
||||
List<CompetitorNotificationPreference> competitorPreferences = new ArrayList<>();
|
||||
for (SimpleCompetitorWithIdDTO competitorDTO : favorites.getSelectedCompetitors()) {
|
||||
String competitorIdAsString = competitorDTO.getIdAsString();
|
||||
|
||||
competitorPreferences.add(new CompetitorNotificationPreference(competitorIdAsString, favorites.isNotifyAboutResults()));
|
||||
String competitorName = competitorDTO.getName();
|
||||
competitorPreferences.add(new CompetitorNotificationPreference(competitorIdAsString, competitorName, favorites.isNotifyAboutResults()));
|
||||
}
|
||||
prefs.setCompetitors(competitorPreferences);
|
||||
ctx.setPreferenceForCurrentUser(CompetitorNotificationPreferences.PREF_NAME, prefs);
|
||||
|
||||
+1
-1
@@ -9,8 +9,8 @@ import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.sap.sailing.domain.common.MailInvitationType;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
|
||||
/**
|
||||
* A place that can be used to display QR codes that direct users to branch.io using deep links which then point to an
|
||||
|
||||
+1
-1
@@ -1,8 +1,8 @@
|
||||
package com.sap.sailing.gwt.home.desktop.places.whatsnew;
|
||||
|
||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
|
||||
public class WhatsNewPlace extends AbstractBasePlace {
|
||||
public enum WhatsNewNavigationTabs { SailingAnalytics, RaceManagerApp, InSightApp, BuoyPingerApp, TrainingDiary, SailingSimulator };
|
||||
|
||||
+1
-1
@@ -2,8 +2,8 @@ package com.sap.sailing.gwt.home.shared.places.error;
|
||||
|
||||
import com.google.gwt.place.shared.Place;
|
||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sailing.gwt.home.shared.app.HasMobileVersion;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
|
||||
public class ErrorPlace extends AbstractBasePlace implements HasMobileVersion {
|
||||
|
||||
|
||||
+1
-1
@@ -2,11 +2,11 @@ package com.sap.sailing.gwt.home.shared.places.imprint;
|
||||
|
||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.google.gwt.place.shared.Prefix;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sailing.gwt.home.shared.app.HasLocationTitle;
|
||||
import com.sap.sailing.gwt.home.shared.app.HasMobileVersion;
|
||||
import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
|
||||
public class ImprintPlace extends AbstractBasePlace implements HasLocationTitle, HasMobileVersion {
|
||||
public ImprintPlace(String token) {
|
||||
|
||||
+1
-1
@@ -7,11 +7,11 @@ import com.google.gwt.http.client.RequestCallback;
|
||||
import com.google.gwt.http.client.RequestException;
|
||||
import com.google.gwt.http.client.Response;
|
||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sailing.gwt.home.shared.app.HasLocationTitle;
|
||||
import com.sap.sailing.gwt.home.shared.app.HasMobileVersion;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
|
||||
public class SolutionsPlace extends AbstractBasePlace implements HasLocationTitle, HasMobileVersion {
|
||||
|
||||
|
||||
+1
-1
@@ -5,9 +5,9 @@ import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.google.gwt.place.shared.Prefix;
|
||||
import com.google.gwt.regexp.shared.MatchResult;
|
||||
import com.google.gwt.regexp.shared.RegExp;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sailing.gwt.home.shared.app.HasMobileVersion;
|
||||
import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
|
||||
public class ConfirmationPlace extends AbstractBasePlace implements HasMobileVersion {
|
||||
private final String name;
|
||||
|
||||
+1
-1
@@ -5,9 +5,9 @@ import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.google.gwt.place.shared.Prefix;
|
||||
import com.google.gwt.regexp.shared.MatchResult;
|
||||
import com.google.gwt.regexp.shared.RegExp;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
import com.sap.sailing.gwt.home.shared.app.HasMobileVersion;
|
||||
import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes;
|
||||
import com.sap.sse.gwt.client.AbstractBasePlace;
|
||||
|
||||
public class PasswordResetPlace extends AbstractBasePlace implements HasMobileVersion {
|
||||
private final String name;
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<inherits name="com.sap.sse.security.ui.LoginPanel" />
|
||||
<inherits name="com.sap.sse.security.ui.SecurityCommon" />
|
||||
<inherits name="com.sap.sse.Security" />
|
||||
<inherits name="com.sap.sailing.landscape.Landscape" />
|
||||
|
||||
<super-source path="jre" />
|
||||
|
||||
|
||||
+1
-1
@@ -3,10 +3,10 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
import com.google.gwt.activity.shared.Activity;
|
||||
import com.google.gwt.activity.shared.ActivityMapper;
|
||||
import com.google.gwt.place.shared.Place;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractAdminConsolePlace;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AdminConsoleActivity;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.DefaultPlace;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.events.EventsPlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractAdminConsolePlace;
|
||||
|
||||
public class AdminConsoleActivityMapper implements ActivityMapper {
|
||||
|
||||
|
||||
+3
-1
@@ -33,6 +33,7 @@ import com.sap.sailing.gwt.ui.adminconsole.places.trackedraces.CompetitorsPlace;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.trackedraces.CourseLayoutPlace;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.trackedraces.TrackedRacesPlace;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.trackedraces.WindPlace;
|
||||
import com.sap.sailing.landscape.ui.client.LandscapeManagementPlace;
|
||||
|
||||
@WithTokenizers({EventsPlace.Tokenizer.class, RegattasPlace.Tokenizer.class,
|
||||
LeaderboardsPlace.Tokenizer.class, LeaderboardGroupsPlace.Tokenizer.class, TrackedRacesPlace.Tokenizer.class, CompetitorsPlace.Tokenizer.class,
|
||||
@@ -42,7 +43,8 @@ import com.sap.sailing.gwt.ui.adminconsole.places.trackedraces.WindPlace;
|
||||
ResultImportUrlsPlace.Tokenizer.class, Manage2SailRegattaStructureImportPlace.Tokenizer.class, DeviceConfigurationPlace.Tokenizer.class,
|
||||
ReplicationPlace.Tokenizer.class, MasterDataImportPlace.Tokenizer.class, RemoteServerInstancesPlace.Tokenizer.class, LocalServerPlace.Tokenizer.class,
|
||||
UserManagementPlace.Tokenizer.class, RolesPlace.Tokenizer.class, UserGroupManagementPlace.Tokenizer.class, FileStoragePlace.Tokenizer.class,
|
||||
MarkTemplatesPlace.Tokenizer.class, MarkPropertiesPlace.Tokenizer.class, CourseTemplatesPlace.Tokenizer.class, MarkRolesPlace.Tokenizer.class})
|
||||
MarkTemplatesPlace.Tokenizer.class, MarkPropertiesPlace.Tokenizer.class, CourseTemplatesPlace.Tokenizer.class, MarkRolesPlace.Tokenizer.class,
|
||||
LandscapeManagementPlace.Tokenizer.class})
|
||||
public interface AdminConsolePlaceHistoryMapper extends PlaceHistoryMapper {
|
||||
|
||||
}
|
||||
+2
-2
@@ -302,7 +302,7 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
|
||||
}
|
||||
});
|
||||
filterField = new LabeledAbstractFilterablePanel<CompetitorDTO>(new Label(getStringMessages().filterCompetitors()),
|
||||
new ArrayList<CompetitorDTO>(), dataProvider, stringMessages) {
|
||||
Collections.emptySet(), dataProvider, stringMessages) {
|
||||
@Override
|
||||
public Iterable<String> getSearchableStrings(CompetitorDTO t) {
|
||||
List<String> string = new ArrayList<String>();
|
||||
@@ -326,7 +326,7 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
|
||||
registerSelectionModelOnNewDataProvider(filterField.getAllListDataProvider());
|
||||
// CompetitorTableEditFeatures
|
||||
final HasPermissions type = SecuredDomainType.COMPETITOR;
|
||||
AccessControlledActionsColumn<CompetitorDTO, CompetitorConfigImagesBarCell> competitorActionColumn = create(
|
||||
final AccessControlledActionsColumn<CompetitorDTO, CompetitorConfigImagesBarCell> competitorActionColumn = create(
|
||||
new CompetitorConfigImagesBarCell(getStringMessages()), userService);
|
||||
competitorActionColumn.addAction(CompetitorConfigImagesBarCell.ACTION_UPDATE, HasPermissions.DefaultActions.UPDATE, this::editCompetitor);
|
||||
competitorActionColumn.addAction(CompetitorConfigImagesBarCell.ACTION_REFRESH, this::allowUpdate);
|
||||
|
||||
+1
-4
@@ -43,7 +43,6 @@ import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.sap.sailing.domain.common.dto.CourseAreaDTO;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.LeaderboardGroupDialog.LeaderboardGroupDescriptor;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AdminConsoleView.Presenter;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.leaderboards.LeaderboardGroupsPlace;
|
||||
import com.sap.sailing.gwt.ui.client.Displayer;
|
||||
@@ -59,6 +58,7 @@ import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.util.NaturalComparator;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
@@ -208,8 +208,6 @@ public class EventListComposite extends Composite {
|
||||
noEventsLabel.ensureDebugId("NoRegattasLabel");
|
||||
noEventsLabel.setWordWrap(false);
|
||||
panel.add(noEventsLabel);
|
||||
//presenter.getEventsRefresher().reloadAndCallFill(null);
|
||||
//eventRefresher.loadEvents();
|
||||
initWidget(panel);
|
||||
filterTextbox.setUpdatePermissionFilterForCheckbox(event -> userService.hasPermission(event, DefaultActions.UPDATE));
|
||||
}
|
||||
@@ -643,7 +641,6 @@ public class EventListComposite extends Composite {
|
||||
|
||||
@Override
|
||||
public void onSuccess(EventDTO result) {
|
||||
//eventRefresher.loadEvents();
|
||||
final String[] namesOfCourseAreasToAdd = new String[courseAreasToAdd.size()];
|
||||
int i = 0;
|
||||
for (CourseAreaDTO courseAreaToAdd : courseAreasToAdd) {
|
||||
|
||||
-1
@@ -158,7 +158,6 @@ public class ExpeditionAllInOneImportPanel extends Composite {
|
||||
response.getRaceEntries(), response.getGpsDeviceIds(), response.getSensorDeviceIds(),
|
||||
response.getSensorFixImporterType(), response.getStartTimes(), presenter.getSailingService(),
|
||||
presenter.getUserService(), presenter.getErrorReporter(), stringMessages);
|
||||
//presenter.getRegattasRefresher().loadRegattas();
|
||||
} else {
|
||||
ExpeditionDataImportResultsDialog.showResults(response);
|
||||
}
|
||||
|
||||
-4
@@ -190,9 +190,6 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
|
||||
final Widget createLeaderboardsGUI = createLeaderboardsGUI(tableRes);
|
||||
this.permissionRestrictedComponent.add(createLeaderboardsGUI);
|
||||
splitPanel.add(createLeaderboardsGUI);
|
||||
|
||||
//Load Data
|
||||
//leaderboardGroupsRefresher.loadLeaderboardGroups();
|
||||
}
|
||||
|
||||
private Widget createSwitchLeaderboardsGUI() {
|
||||
@@ -937,7 +934,6 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
|
||||
.collect(Collectors.toMap(StrippedLeaderboardDTO::getName, Function.identity()));
|
||||
selectedGroup.getLeaderboards().stream().map(StrippedLeaderboardDTO::getName).forEach(allExceptOf::remove);
|
||||
leaderboardsFilterablePanel.updateAll(allExceptOf.values());
|
||||
// leaderboardsProvider.getList().addAll(allExceptOf);
|
||||
}
|
||||
|
||||
private void moveToLeaderboards() {
|
||||
|
||||
-3
@@ -98,7 +98,6 @@ public class LeaderboardGroupSelectorComposite extends Composite implements HasV
|
||||
selectedEventLeaderboardGroupsTable.setSelectionModel(selectedEventLeaderboardGroupsSelectionModel);
|
||||
selectedEventLeaderboardGroupsProvider = new ListDataProvider<>();
|
||||
selectedEventLeaderboardGroupsProvider.addDataDisplay(selectedEventLeaderboardGroupsTable);
|
||||
|
||||
TextColumn<LeaderboardGroupDTO> leaderboardGroupNameColumn = new TextColumn<LeaderboardGroupDTO>() {
|
||||
@Override
|
||||
public String getValue(LeaderboardGroupDTO event) {
|
||||
@@ -160,7 +159,6 @@ public class LeaderboardGroupSelectorComposite extends Composite implements HasV
|
||||
};
|
||||
availableLeaderboardGroupsSelectionModel = new RefreshableMultiSelectionModel<>(
|
||||
new EntityIdentityComparator<LeaderboardGroupDTO>() {
|
||||
|
||||
@Override
|
||||
public boolean representSameEntity(LeaderboardGroupDTO dto1, LeaderboardGroupDTO dto2) {
|
||||
return dto1.getName().equals(dto2.getName());
|
||||
@@ -182,7 +180,6 @@ public class LeaderboardGroupSelectorComposite extends Composite implements HasV
|
||||
vp.add(availableLeaderboardGroupsFilterablePanel);
|
||||
vp.add(availableLeaderboardGroupsTable);
|
||||
result.add(vp);
|
||||
|
||||
TextColumn<LeaderboardGroupDTO> leaderboardGroupNameColumn = new TextColumn<LeaderboardGroupDTO>() {
|
||||
@Override
|
||||
public String getValue(LeaderboardGroupDTO event) {
|
||||
|
||||
+1
-3
@@ -13,7 +13,6 @@ public class ResultImportUrlAddDialog extends DataEntryDialog<UrlDTO> {
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
private final TextBox textBox;
|
||||
|
||||
private final String urlProvider;
|
||||
|
||||
protected class UrlDTOValidator implements Validator<UrlDTO> {
|
||||
@@ -56,7 +55,6 @@ public class ResultImportUrlAddDialog extends DataEntryDialog<UrlDTO> {
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
this.setValidator(new UrlDTOValidator());
|
||||
|
||||
textBox = super.createTextBox(null, 120);
|
||||
textBox.getElement().setPropertyString("placeholder", stringMessages.eventIdOrUrl());
|
||||
textBox.setFocus(true);
|
||||
@@ -64,7 +62,7 @@ public class ResultImportUrlAddDialog extends DataEntryDialog<UrlDTO> {
|
||||
|
||||
@Override
|
||||
protected UrlDTO getResult() {
|
||||
return new UrlDTO(textBox.getValue().trim());
|
||||
return new UrlDTO(urlProvider, textBox.getValue().trim());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-1
@@ -99,7 +99,6 @@ public class ResultImportUrlsListComposite extends Composite {
|
||||
Grid providerGrid = new Grid(1, 2);
|
||||
providerGrid.setWidget(0, 0, new Label(stringMessages.urlProviders()));
|
||||
providerGrid.setWidget(0, 1, urlProviderListBox);
|
||||
|
||||
panel.add(providerGrid);
|
||||
panel.add(buttonPanel);
|
||||
panel.add(urlSample);
|
||||
|
||||
-3
@@ -9,7 +9,6 @@ import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
|
||||
import com.sap.sse.security.ui.client.component.RoleDefinitionsPanel;
|
||||
|
||||
public class RoleDefinitionsPanelSupplier extends AdminConsolePanelSupplier<RoleDefinitionsPanel> {
|
||||
|
||||
private final Presenter presenter;
|
||||
private final AdminConsoleTableResources tableResources;
|
||||
|
||||
@@ -31,7 +30,6 @@ public class RoleDefinitionsPanelSupplier extends AdminConsolePanelSupplier<Role
|
||||
@Override
|
||||
public void getAsync(RunAsyncCallback callback) {
|
||||
GWT.runAsync(new RunAsyncCallback() {
|
||||
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
widget = init();
|
||||
@@ -44,5 +42,4 @@ public class RoleDefinitionsPanelSupplier extends AdminConsolePanelSupplier<Role
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
-2
@@ -10,7 +10,6 @@ import com.sap.sse.security.ui.client.component.RoleDefinitionsPanel;
|
||||
import com.sap.sse.security.ui.client.i18n.StringMessages;
|
||||
|
||||
public class RoleDefinitionsPanelWrapper extends RoleDefinitionsPanel implements FilterablePanelProvider<RoleDefinitionDTO> {
|
||||
|
||||
public RoleDefinitionsPanelWrapper(StringMessages stringMessages, UserService userService,
|
||||
CellTableWithCheckboxResources tableResources, ErrorReporter errorReporter) {
|
||||
super(stringMessages, userService, tableResources, errorReporter);
|
||||
@@ -20,5 +19,4 @@ public class RoleDefinitionsPanelWrapper extends RoleDefinitionsPanel implements
|
||||
public AbstractFilterablePanel<RoleDefinitionDTO> getFilterablePanel() {
|
||||
return filterablePanelRoleDefinitions;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-5
@@ -1,7 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
@@ -11,10 +10,8 @@ import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
|
||||
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
|
||||
|
||||
/**
|
||||
* The {@link #getTable() table} created and wrapped by this object offers already a {@link ListHandler} for sorting.
|
||||
* Subclasses can obtain the table's default column sort handler created by this class's constructor by calling
|
||||
* {@link #getColumnSortHandler}. The table is wrapped by a panel that can be obtained using {@link #asWidget()}
|
||||
* and which contains, if requested, the pager widget underneath the table.
|
||||
* Simplifies the use of a pager by offering a {@link #DEFAULT_PAGING_SIZE} of 100, and by remembering a
|
||||
* {@link SailingServiceWriteAsync} instance for use by the subclasses.
|
||||
*/
|
||||
public abstract class TableWrapper<T, S extends RefreshableSelectionModel<T>>
|
||||
extends com.sap.sse.gwt.client.celltable.TableWrapper<T, S, StringMessages, AdminConsoleTableResources> {
|
||||
|
||||
Regular → Executable
+1
-1
@@ -21,6 +21,7 @@ import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ServerConfigurationDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTOWithSecurity;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractAdminConsolePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AdminConsolePlace;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
@@ -45,7 +46,6 @@ public class AdminConsoleActivity extends AbstractActivity implements AdminConso
|
||||
this.clientFactory = clientFactory;
|
||||
this.mediaServiceWrite = clientFactory.getMediaServiceWrite();
|
||||
this.sailingService = clientFactory.getSailingService();
|
||||
|
||||
leaderboardsRefresher = new AbstractRefresher<StrippedLeaderboardDTOWithSecurity>(clientFactory.getErrorReporter()) {
|
||||
@Override
|
||||
public void reload(AsyncCallback<Iterable<StrippedLeaderboardDTOWithSecurity>> callback) {
|
||||
|
||||
Regular → Executable
+3
-12
@@ -11,9 +11,9 @@ import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTOWithSecurity;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractAdminConsolePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AdminConsolePresenter;
|
||||
import com.sap.sse.gwt.client.ServerInfoDTO;
|
||||
import com.sap.sse.security.ui.client.UserService;
|
||||
|
||||
public interface AdminConsoleView extends IsWidget {
|
||||
|
||||
@@ -25,18 +25,10 @@ public interface AdminConsoleView extends IsWidget {
|
||||
|
||||
void setRedirectToPlace(AbstractAdminConsolePlace redirectoPlace);
|
||||
|
||||
public interface Presenter {
|
||||
|
||||
ErrorReporter getErrorReporter();
|
||||
|
||||
public interface Presenter extends AdminConsolePresenter {
|
||||
SailingServiceWriteAsync getSailingService();
|
||||
|
||||
UserService getUserService();
|
||||
|
||||
MediaServiceWriteAsync getMediaServiceWrite();
|
||||
|
||||
PlaceController getPlaceController();
|
||||
|
||||
// Refresher
|
||||
Refresher<StrippedLeaderboardDTOWithSecurity> getLeaderboardsRefresher();
|
||||
Refresher<LeaderboardGroupDTO> getLeaderboardGroupsRefresher();
|
||||
@@ -44,5 +36,4 @@ public interface AdminConsoleView extends IsWidget {
|
||||
Refresher<EventDTO> getEventsRefresher();
|
||||
Refresher<MediaTrackWithSecurityDTO> getMediaTracksRefresher();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Regular → Executable
+11
@@ -101,6 +101,10 @@ import com.sap.sailing.gwt.ui.adminconsole.places.trackedraces.WindPlace;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.masterdataimport.MasterDataImportPanel;
|
||||
import com.sap.sailing.gwt.ui.shared.SecurityStylesheetResources;
|
||||
import com.sap.sailing.landscape.ui.client.LandscapeManagementPanel;
|
||||
import com.sap.sailing.landscape.ui.client.LandscapeManagementPanelSupplier;
|
||||
import com.sap.sailing.landscape.ui.client.LandscapeManagementPlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractAdminConsolePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AdminConsolePanel;
|
||||
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
|
||||
import com.sap.sse.gwt.adminconsole.DefaultRefreshableAdminConsolePanel;
|
||||
@@ -109,6 +113,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.ServerInfoDTO;
|
||||
import com.sap.sse.gwt.client.controls.filestorage.FileStoragePanel;
|
||||
import com.sap.sse.gwt.client.panels.HorizontalTabLayoutPanel;
|
||||
import com.sap.sse.landscape.common.SecuredLandscapeTypes;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
import com.sap.sse.security.shared.impl.SecuredSecurityTypes;
|
||||
import com.sap.sse.security.shared.impl.SecuredSecurityTypes.ServerActions;
|
||||
@@ -471,6 +476,12 @@ public class AdminConsoleViewImpl extends Composite implements AdminConsoleView
|
||||
stringMessages.fileStorage(), new FileStoragePlace(null),
|
||||
SecuredSecurityTypes.SERVER.getPermissionForObject(
|
||||
SecuredSecurityTypes.ServerActions.CONFIGURE_FILE_STORAGE, serverInfo));
|
||||
/* Landscape Management */
|
||||
final LandscapeManagementPanelSupplier landscapeManagementPanelSupplier = new LandscapeManagementPanelSupplier(presenter, tableResources);
|
||||
adminConsolePanel.addToTabPanel(advancedTabPanel,
|
||||
new DefaultRefreshableAdminConsolePanel<LandscapeManagementPanel>(landscapeManagementPanelSupplier),
|
||||
stringMessages.landscape(), new LandscapeManagementPlace((String) null /* no place token */),
|
||||
SecuredLandscapeTypes.LANDSCAPE.getPermission(SecuredLandscapeTypes.LandscapeActions.MANAGE));
|
||||
/* COURSE CREATION */
|
||||
final HorizontalTabLayoutPanel courseCreationTabPanel = adminConsolePanel
|
||||
.addVerticalTab(stringMessages.courseCreation(), COURSE_CREATION);
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole.places.advanced;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractAdminConsolePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractAdminConsolePlace;
|
||||
|
||||
public abstract class AbstractAdvancedPlace extends AbstractAdminConsolePlace {
|
||||
public AbstractAdvancedPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.advanced;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class RemoteServerInstancesPlace extends AbstractFilterablePlace {
|
||||
public RemoteServerInstancesPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.advanced;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class RolesPlace extends AbstractFilterablePlace {
|
||||
public RolesPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.advanced;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class UserGroupManagementPlace extends AbstractFilterablePlace {
|
||||
public UserGroupManagementPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.advanced;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class UserManagementPlace extends AbstractFilterablePlace {
|
||||
public UserManagementPlace(String token) {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole.places.connectors;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractAdminConsolePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractAdminConsolePlace;
|
||||
|
||||
public abstract class AbstractConnectorsPlace extends AbstractAdminConsolePlace {
|
||||
public AbstractConnectorsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.connectors;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class ExpeditionDeviceConfigurationsPlace extends AbstractFilterablePlace {
|
||||
public ExpeditionDeviceConfigurationsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.connectors;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class IgtimiAccountsPlace extends AbstractFilterablePlace {
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.connectors;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class SmartphoneTrackingPlace extends AbstractFilterablePlace {
|
||||
public SmartphoneTrackingPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.connectors;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class SwissTimingArchivedEventsPlace extends AbstractFilterablePlace {
|
||||
public SwissTimingArchivedEventsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.connectors;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class SwissTimingEventsPlace extends AbstractFilterablePlace {
|
||||
public SwissTimingEventsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.connectors;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class TracTracEventsPlace extends AbstractFilterablePlace {
|
||||
public TracTracEventsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole.places.coursecreation;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public abstract class AbstractCourseCreationPlace extends AbstractFilterablePlace {
|
||||
public AbstractCourseCreationPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.events;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
|
||||
public class EventsPlace extends AbstractFilterablePlace {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.leaderboards;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public abstract class AbstractLeaderboardsPlace extends AbstractFilterablePlace {
|
||||
public AbstractLeaderboardsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.leaderboards;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class LeaderboardGroupsPlace extends AbstractFilterablePlace {
|
||||
public LeaderboardGroupsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.leaderboards;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class LeaderboardsPlace extends AbstractFilterablePlace {
|
||||
public LeaderboardsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole.places.racemanager;
|
||||
|
||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractAdminConsolePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractAdminConsolePlace;
|
||||
|
||||
public class DeviceConfigurationPlace extends AbstractAdminConsolePlace {
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.regattas;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class RegattasPlace extends AbstractFilterablePlace {
|
||||
public RegattasPlace(String token) {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole.places.trackedraces;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractAdminConsolePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractAdminConsolePlace;
|
||||
|
||||
public abstract class AbstractTrackedRacesPlace extends AbstractAdminConsolePlace {
|
||||
public AbstractTrackedRacesPlace(String placeParamsFromUrlFragment) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.trackedraces;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class AudioAndVideoPlace extends AbstractFilterablePlace {
|
||||
public AudioAndVideoPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.trackedraces;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class BoatsPlace extends AbstractFilterablePlace {
|
||||
public BoatsPlace(String token) {
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.trackedraces;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class CompetitorsPlace extends AbstractFilterablePlace {
|
||||
public CompetitorsPlace(Map<String, String> paramKeysAndValues) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.trackedraces;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class CourseLayoutPlace extends AbstractFilterablePlace {
|
||||
public CourseLayoutPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.trackedraces;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class TrackedRacesPlace extends AbstractFilterablePlace {
|
||||
public TrackedRacesPlace(String token) {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole.places.trackedraces;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.sap.sailing.gwt.ui.adminconsole.places.AbstractFilterablePlace;
|
||||
import com.sap.sse.gwt.adminconsole.AbstractFilterablePlace;
|
||||
|
||||
public class WindPlace extends AbstractFilterablePlace {
|
||||
public WindPlace(String token) {
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
public interface MediaTracksRefresher {
|
||||
void loadMediaTracks();
|
||||
void loadMediaTracks();
|
||||
}
|
||||
|
||||
+3
-89
@@ -25,7 +25,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String listRegattas();
|
||||
String wind();
|
||||
String windPanelLabel();
|
||||
String refresh();
|
||||
String removeNumber(int count);
|
||||
String windSource();
|
||||
String dampeningInterval();
|
||||
@@ -97,7 +96,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String velocityMadeGoodInKnots();
|
||||
String windwardDistanceToGoInMeters();
|
||||
String windwardDistanceToCompetitorFarthestAheadInMeters();
|
||||
String name();
|
||||
String shortName();
|
||||
String leaveEmptyForDefault();
|
||||
String trackNewEvent();
|
||||
@@ -131,7 +129,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String liveUri();
|
||||
String storedUri();
|
||||
String eventsConnectedTo();
|
||||
String hostname();
|
||||
String declinationCheckbox();
|
||||
String raceStartTrackingColumn();
|
||||
String pauseAutomaticRefresh();
|
||||
@@ -207,14 +204,12 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String filterByNameOrBoatClass();
|
||||
String filterByRegatta();
|
||||
String filterMediaByName();
|
||||
String actionEdit();
|
||||
String actionEditScores();
|
||||
String actionEditCompetitors();
|
||||
String actionShowCompetitorToBoatAssignments();
|
||||
String actionEditCompetitorToBoatAssignments();
|
||||
String actionContinueToBoatAssignment();
|
||||
String actionOpenBrowser();
|
||||
String actionRemove();
|
||||
String actionEditSeries();
|
||||
String actionRaceEdit();
|
||||
String actionRaceUnlink();
|
||||
@@ -223,10 +218,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String actionOpenDashboard();
|
||||
String actionBoatUnlink();
|
||||
String filterLeaderboardsByName();
|
||||
String actions();
|
||||
String islinked();
|
||||
String yes();
|
||||
String no();
|
||||
String hoverOverAPoint();
|
||||
String noSelection();
|
||||
String raceIsKnownToStartUpwind();
|
||||
@@ -348,20 +340,13 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String racesInLeaderboard();
|
||||
String leaderboardsInGroup();
|
||||
String replication();
|
||||
String errorFetchingReplicaData(String message);
|
||||
String averageAbsoluteCrossTrackErrorInMeters();
|
||||
String averageSignedCrossTrackErrorInMeters();
|
||||
String enterMaster();
|
||||
String errorStartingReplication(String hostname, String exchangeName, String message);
|
||||
String helpLines();
|
||||
String startLine();
|
||||
String finishLine();
|
||||
String advantageLine();
|
||||
String courseMiddleLine();
|
||||
String messagingPortNumber();
|
||||
String servletPortNumber();
|
||||
String registeredAt(String string);
|
||||
String replicatingFromMaster(String hostname, int jmsPort, int servletPort, String messagingHostname, String exchangeName, String replicableIdsAsString);
|
||||
String showWindSpeedSeries();
|
||||
String showWindDirectionSeries();
|
||||
String fleet();
|
||||
@@ -390,8 +375,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String errorLoadingScoreCorrectionProviders(String message);
|
||||
String selectResultListToImportFrom();
|
||||
String of();
|
||||
String errorObtainingScoreCorrections(String scoreCorrectionProviderName, String eventName, String boatClassName,
|
||||
String string, String message);
|
||||
String errorObtainingScoreCorrections(String scoreCorrectionProviderName, String eventName, String boatClassName, String string, String message);
|
||||
String assignRaceNumbersToRaceColumns();
|
||||
String importOfficialResults();
|
||||
String selectAll();
|
||||
@@ -405,7 +389,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String regattaExistForSelectedBoatClass();
|
||||
String addRegatta();
|
||||
String importRegattas();
|
||||
String exchangeName();
|
||||
String course();
|
||||
String courseLayout();
|
||||
String buoy();
|
||||
@@ -652,10 +635,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String regattaRankTooltip();
|
||||
String overallRank();
|
||||
String overallRankTooltip();
|
||||
String displayName();
|
||||
String histogram();
|
||||
String angleAndTotalNumberOfDataPointsAndCovAndCm(int angle, int dataCount, double coefficiantOfVariation,
|
||||
double confidenceMeasure);
|
||||
String angleAndTotalNumberOfDataPointsAndCovAndCm(int angle, int dataCount, double coefficiantOfVariation, double confidenceMeasure);
|
||||
String buoyZone();
|
||||
String radiusInMeters();
|
||||
String addCourseArea();
|
||||
@@ -715,7 +696,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String pleaseEnterANumber();
|
||||
String competitorsFilter();
|
||||
String flagStatus();
|
||||
String additionalInformation();
|
||||
String actionAddFilter();
|
||||
String actionEditFilter();
|
||||
String availableFilters();
|
||||
@@ -737,23 +717,18 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String disableRaceFilter();
|
||||
String enableRaceFilter();
|
||||
String raceStatusColumn();
|
||||
String loading();
|
||||
String racesWithHiddenState();
|
||||
String selectedCompetitors();
|
||||
String mediaDateFormatError(String expectedTimeFormat);
|
||||
String filterNothing();
|
||||
String topNCompetitorsByRaceRank(int n);
|
||||
String topNCompetitorsByTotalRank(int n);
|
||||
|
||||
String editRegatta();
|
||||
String selectSailingEvent();
|
||||
String selectCourseArea();
|
||||
|
||||
/*Start of simulator related messages*/
|
||||
String simulator();
|
||||
String optionsBar();
|
||||
String simulateButton();
|
||||
|
||||
String setup();
|
||||
String strength();
|
||||
String oscillation();
|
||||
@@ -761,7 +736,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String amplitude();
|
||||
String frequency();
|
||||
String noise();
|
||||
|
||||
String sailing();
|
||||
String optimality();
|
||||
String maximumTurns();
|
||||
@@ -778,11 +752,9 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String summary();
|
||||
String replay();
|
||||
String display();
|
||||
|
||||
String simulatorPolarHeader();
|
||||
String show();
|
||||
String hide();
|
||||
|
||||
String leftWind();
|
||||
String rightWind();
|
||||
String strategyOption1();
|
||||
@@ -791,11 +763,9 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String legLabel();
|
||||
String raceLabel();
|
||||
String competitorLabel();
|
||||
|
||||
String freemode();
|
||||
String whatIfCourse();
|
||||
/*End of simulator related messages*/
|
||||
|
||||
String courseAreaOverview();
|
||||
String courseDesignOverview();
|
||||
String regattaOverview();
|
||||
@@ -814,17 +784,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String regattaOverviewConfiguration();
|
||||
String firstRaceIsNonDiscardableCarryForward();
|
||||
String addReplicationMaster();
|
||||
String connect();
|
||||
String connectToMaster();
|
||||
String explainReplicationHostname();
|
||||
String explainReplicationExchangeName();
|
||||
String explainReplicationExchangePort();
|
||||
String explainReplicationServletPort();
|
||||
String explainReplicasRegistered();
|
||||
String explainConnectionsToMaster();
|
||||
String explainNoConnectionsToMaster();
|
||||
String explainNoConnectionsFromReplicas();
|
||||
String stopConnectionToMaster();
|
||||
String asLink();
|
||||
String raceIsRunning();
|
||||
String raceIsFinishing();
|
||||
@@ -834,9 +793,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String generalRecall();
|
||||
String startPostponed();
|
||||
String raceAbandoned();
|
||||
String stopAllReplicas();
|
||||
String warningServerIsReplica();
|
||||
String dropReplicaConnection();
|
||||
String timePanelName();
|
||||
String competitorFilterExplanation();
|
||||
String protestTime();
|
||||
@@ -852,7 +808,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String finishAt();
|
||||
String protestStartsAt();
|
||||
String protestEndsAt();
|
||||
String unknown();
|
||||
String raceLog();
|
||||
String regattaLog();
|
||||
String refreshRaceLog();
|
||||
@@ -895,7 +850,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String importGetLeaderboardsFailed(String host, String errorMessage);
|
||||
String importNoDataReturned();
|
||||
String importServerError();
|
||||
String importLeaderboardGroups();
|
||||
String importOverrideSwitchLabel();
|
||||
String importSelectedLeaderboardGroups();
|
||||
String importSelectAtLeastOne();
|
||||
@@ -972,8 +926,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String hideToolbar();
|
||||
String showSeriesLeaderboards();
|
||||
String showOverallLeaderboard();
|
||||
String exchangeHost();
|
||||
String explainExchangeHostName();
|
||||
String offset();
|
||||
String line();
|
||||
String lineAngleToWindAndAdvantage(String startLineLength, String startLineAngleToCombinedWind, String startLineAdvantageousSide, String startLineAdvantageInMeters);
|
||||
@@ -991,7 +943,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String successfullyAllowedCompetitorReset(String names);
|
||||
String successfullyAllowedBoatReset(String names);
|
||||
String allowReload();
|
||||
String id();
|
||||
String compress();
|
||||
String compressTooltip();
|
||||
String rerunQueryAfterRefresh();
|
||||
@@ -1005,14 +956,12 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String maximumRoundsForCourse();
|
||||
String resultsMailRecipient();
|
||||
String deviceConfiguration();
|
||||
|
||||
String none();
|
||||
String courseDesignerMode();
|
||||
String racingProcedure();
|
||||
String courseNames();
|
||||
String generate();
|
||||
String dontoverwrite();
|
||||
|
||||
String setRacingProcedureConfiguration();
|
||||
String racingProcedureConfiguration();
|
||||
String activateIndividualRecall();
|
||||
@@ -1035,7 +984,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String configured();
|
||||
String overwriteRacingProceduresConfiguration();
|
||||
String overwriteRacingProceduresConfigurationHelpText();
|
||||
|
||||
String setStartTime();
|
||||
String finishTimeString();
|
||||
String setFinishingAndFinishTime();
|
||||
@@ -1062,7 +1010,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String successfullyRemoveIgtimiAccount(String eMailOfAccountToRemove);
|
||||
String eMailMustNotBeEmpty();
|
||||
String emailAddress();
|
||||
String password();
|
||||
String searchTag();
|
||||
String doYouReallyWantToRemoveLeaderboard(String name);
|
||||
String metaLeaderboardCannotBeChanged();
|
||||
@@ -1194,7 +1141,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String simulationLegendTooltip();
|
||||
String racesScored();
|
||||
String racesScoredTooltip();
|
||||
String averageNumberOfOperationsPerMessage();
|
||||
String showUncorrectedTotalPoints();
|
||||
String setStartTimeReceived();
|
||||
String setStartTimeReceivedDescription();
|
||||
@@ -1222,10 +1168,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String registrationLinkUrlExplain();
|
||||
String registrationLinkShare();
|
||||
String explainRegistrationLinkDialog();
|
||||
String numberOfQueueMessagesSent();
|
||||
String totalSize();
|
||||
String averageMessageSize();
|
||||
String totalNumberOfOperations();
|
||||
String currentOrAverageSpeedOverGroundInKnotsTooltip();
|
||||
String currentOrAverageSpeedOverGroundInKnots();
|
||||
String connectors();
|
||||
@@ -1315,7 +1257,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String errorTryingToObtainMarkPassing(String message);
|
||||
String errorTryingToObtainRaceLogMarkPassingData(String message);
|
||||
String warningMarkPassingChangesNoEffect();
|
||||
String email();
|
||||
String pleaseEnterAnEmail();
|
||||
String inviteCompetitors();
|
||||
String notAllCompetitorsProvideEmail();
|
||||
@@ -1323,15 +1264,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String sendingMailsSuccessful();
|
||||
String selectEventForInvitation();
|
||||
String imageURL();
|
||||
@Override
|
||||
String upload();
|
||||
String removeResult(JSONValue status, JSONValue message);
|
||||
@Override
|
||||
String uploadSuccessful();
|
||||
@Override
|
||||
String fileUploadResult(String status, String message);
|
||||
@Override
|
||||
String removeUploadedFile();
|
||||
String showCompetitorBoatColumn();
|
||||
String showCompetitorShortNameColumn();
|
||||
String showCompetitorShortNameColumnTooltip(String showCompetitorNationalityColumnTitle);
|
||||
@@ -1346,7 +1279,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String distanceIncludingGateStartInMeters();
|
||||
String distanceTraveledIncludingGateStartTooltip();
|
||||
String raceDistanceTraveledIncludingGateStartTooltip();
|
||||
|
||||
String dashboardHeader();
|
||||
String dashboardNoWindBotAvailableHeader();
|
||||
String dashboardNoWindBotAvailableMessage();
|
||||
@@ -1359,7 +1291,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String dashboardAverageWind();
|
||||
String dashboardAverageWindMinutes(int minutes);
|
||||
String dashboardWindChartHint();
|
||||
|
||||
String dashboardSelectCompetitor();
|
||||
String dashboardStartAnalysesHeader();
|
||||
String dashboardNewStartAnalysisAvailable();
|
||||
@@ -1375,13 +1306,11 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String dashboardTeam();
|
||||
String dashboardDistanceToLineInM();
|
||||
String dashboardSpeedInKts();
|
||||
|
||||
String dashboardAdvantageInSeconds();
|
||||
String dashboardSecondsAbreviation();
|
||||
String dashboardDistanceToRCBoat();
|
||||
String dashboardPinEnd();
|
||||
String dashboardRCBoat();
|
||||
|
||||
String fixedMarkPassing();
|
||||
String suppressedMarkPassing();
|
||||
String warningSettingFixedPassing(String waypoint);
|
||||
@@ -1392,7 +1321,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String clickToToggleWindUp();
|
||||
String clickToToggleWindStreamlets();
|
||||
String startLineToFirstMarkTriangle(String distanceInMeters);
|
||||
|
||||
String noDataForEvent();
|
||||
String countriesCount(@PluralCount(DefaultRule_1_0n.class) int count);
|
||||
String racesCount(@PluralCount(DefaultRule_1_0n.class) int count);
|
||||
@@ -1524,8 +1452,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String imageToSmallError(String imageType, int minWidth, int minHeight);
|
||||
String imageResizeError(String imageType, double minRatio, double maxRatio, double ratio);
|
||||
String couldNotRetrieveImageSizeYet();
|
||||
@Override
|
||||
String pleaseOnlyUploadContentYouHaveAllUsageRightsFor();
|
||||
String registerCompetitorsOnRace();
|
||||
String doYouWantToRegisterCompetitorsDirectlyOnTheRace();
|
||||
String doYouWantToDisableCompetitorsRegistrationsOnTheRace();
|
||||
@@ -1581,15 +1507,12 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String confirmNewFix();
|
||||
String selectAFixPositionBy();
|
||||
String pleaseSelectAMark();
|
||||
|
||||
String playstoreRacecommitteeApp();
|
||||
String playstoreInsightApp();
|
||||
String playStoreBuoyPingerApp();
|
||||
|
||||
String playstoreBadge();
|
||||
String appstoreSapSailInsight();
|
||||
String appstoreBadgeSuffix();
|
||||
|
||||
String markFixes();
|
||||
String distanceFromAveragePosition();
|
||||
String useATouchOptimizedUI();
|
||||
@@ -1602,15 +1525,12 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String dragToChangePosition();
|
||||
String moveFix();
|
||||
String raceViewer();
|
||||
|
||||
|
||||
String mapControls();
|
||||
String manage2SailEvent();
|
||||
String noEventsYet();
|
||||
String selectCompetitorImportProvider();
|
||||
String selectResultImportProvider();
|
||||
String buildVersion();
|
||||
String serverInformation();
|
||||
String serverConfiguration();
|
||||
String standaloneServer();
|
||||
String passId();
|
||||
@@ -1691,7 +1611,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String chooseALanguage();
|
||||
String solutions();
|
||||
String officalEventWebsite();
|
||||
String moreInfo();
|
||||
String viewAnalysis();
|
||||
String overallLeaderboard();
|
||||
String pleaseTryAgain();
|
||||
@@ -1789,8 +1708,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String errorLoadingCompetitorImportDescriptors(String message);
|
||||
String couldNotSaveCompetitorRegistrations(String message);
|
||||
String searchTagForImportedCompetitorPlaceholder();
|
||||
String version(String version);
|
||||
String replicables();
|
||||
String eventRegattaRacesLegendWind();
|
||||
String eventRegattaRacesLegendVideo();
|
||||
String eventRegattaRacesLegendAudio();
|
||||
@@ -2002,7 +1919,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String errorCreatingPairingList(String message);
|
||||
String unexpectedErrorDuringFileImport();
|
||||
String couldNotDownload(String url);
|
||||
String roles();
|
||||
String sliceRace();
|
||||
String slicingARaceWasSuccessful();
|
||||
String enterNameForSlicedRace();
|
||||
@@ -2217,9 +2133,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String tagCopiedLinkSuccessfully();
|
||||
String tagCopiedLinkNotSuccessfully();
|
||||
String confirm();
|
||||
String cancel();
|
||||
String close();
|
||||
String username();
|
||||
String boatClasses();
|
||||
String sailorProfiles();
|
||||
String unknownSailorProfile(String message);
|
||||
@@ -2423,6 +2336,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String manageEvents();
|
||||
String sharingLinkCopied();
|
||||
String startOfTrackingMustNotBeAfterEndOfTracking();
|
||||
String landscape();
|
||||
String identifier();
|
||||
String selectARole();
|
||||
String raceOfficerOnVessel();
|
||||
|
||||
+1
-52
@@ -12,7 +12,6 @@ listRegattas=List Regattas
|
||||
wind=Wind
|
||||
maneuverType=Maneuver
|
||||
windPanelLabel=This is the Wind Panel which so far is completely empty.
|
||||
refresh=Refresh
|
||||
removeNumber=Remove ({0})
|
||||
windSource=Wind Source
|
||||
dampeningInterval=Dampening Interval
|
||||
@@ -132,7 +131,6 @@ storedPort=Port Stored Data
|
||||
liveUri=Live URI
|
||||
storedUri=Stored URI
|
||||
eventsConnectedTo=Events Currently Tracked
|
||||
hostname=Hostname
|
||||
declinationCheckbox=Correct Wind Bearing by Declination
|
||||
raceStartTrackingColumn=Tracking Started
|
||||
pauseAutomaticRefresh=Pause automatic refresh
|
||||
@@ -369,24 +367,17 @@ degreesBoatToTheWind=Angle to wind
|
||||
racesInLeaderboard=Races in leaderboard
|
||||
leaderboardsInGroup=Leaderboards in group
|
||||
replication=Replication
|
||||
errorFetchingReplicaData=Error fetching replica data: {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=\u2205 XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=The average cross track error to the great circle segment connecting leg start with leg end; shows the average after the leg, and the current value while in the leg.
|
||||
averageSignedCrossTrackErrorInMeters=\u2205 XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=The average position on the course as a signed distance from the course middle line; 0 meaning on the course middle line; negative values mean left-hand side, positive values mean right-hand side; shows the average after the leg, and the current value while in the leg.
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=The average absolute cross track error to the great circle segments connecting leg start with leg end for all upwind legs of this race, ignoring to which side of the course middle line the competitor is
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=The signed average cross track error to the great circle segments connecting leg start with leg end for all upwind legs of this race; negative values mean left of the course middle line, positive values mean right.
|
||||
enterMaster=Hostname of Master Instance
|
||||
errorStartingReplication=Error starting replication from host {0} / exchange {1}: {2}
|
||||
helpLines=Help lines
|
||||
startLine=Start line
|
||||
finishLine=Finish line
|
||||
advantageLine=Advantage line
|
||||
courseMiddleLine=Course middle line
|
||||
messagingPortNumber=Messaging port number (0 for default)
|
||||
servletPortNumber=Servlet port number
|
||||
registeredAt=Registered at {0}
|
||||
replicatingFromMaster=Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4}, replicating {5}
|
||||
showWindSpeedSeries=Show wind speed data
|
||||
showWindDirectionSeries=Show wind directions data
|
||||
fleet=Fleet
|
||||
@@ -428,7 +419,6 @@ boatClassDoesNotMatchSelectedRegatta=The selected races contain boat classes whi
|
||||
regattaExistForSelectedBoatClass=There is at least one regatta for the selected boat classes. Really create default regatta(s) for those race(s)?
|
||||
addRegatta=Add Regatta...
|
||||
importRegattas=Import Regattas...
|
||||
exchangeName=Exchange Name
|
||||
course=Course
|
||||
courseLayout=Course layout
|
||||
buoy=Buoy
|
||||
@@ -718,7 +708,6 @@ starboardSide=Starboard
|
||||
pleaseEnterANumber=Please enter a number.
|
||||
competitorsFilter=Competitors filter
|
||||
flagStatus=Flag status
|
||||
additionalInformation=Info
|
||||
windFixListingDescription=Wind Fixes (first 3, last 3, true values)
|
||||
noWindFixesAvailable=No Wind-Fixes available.
|
||||
distanceToStarboardEndOfStartlineWhenPassingStart=Dist. Stb-Side of Line when Starting
|
||||
@@ -740,7 +729,6 @@ waypoints=Waypoints
|
||||
disableRaceFilter=Disable filter
|
||||
enableRaceFilter=Enable filter
|
||||
raceStatusColumn=Race Status
|
||||
loading=Loading (on a slow internet connection this can take some minutes)...
|
||||
racesWithHiddenState=Races with state HIDDEN
|
||||
mediaDateFormatError=Invalid date format. Use: {0}
|
||||
selectedCompetitors=Selected competitors
|
||||
@@ -807,19 +795,6 @@ importSuccessOverwriteInfo=Had to overwrite the following regattas, you will nee
|
||||
regattaOverviewConfiguration=Regatta Overview Configuration
|
||||
firstRaceIsNonDiscardableCarryForward=Starts with non-discardable carry-forward
|
||||
addReplicationMaster=Connect to replication master server
|
||||
connect=Connect
|
||||
connectToMaster=Connect to Master
|
||||
exchangeHost=Messaging Hostname
|
||||
explainExchangeHostName=Hostname where the messaging queue is running on.
|
||||
explainReplicationHostname=Hostname where the replication master is running on.
|
||||
explainReplicationExchangeName=The name of the exchange queue. It must be the same as configured in master.
|
||||
explainReplicationExchangePort=The port of the messaging exchange queue. This is used for all data after initial load.
|
||||
explainReplicationServletPort=Servlet port number that is used to connect to register this replica and receive initial load.
|
||||
explainReplicasRegistered=Replicas registered (this server is master):
|
||||
explainConnectionsToMaster=Connections to a master (this server is a replica):
|
||||
explainNoConnectionsToMaster=No connections to a master server configured. Click the Connect to Master button to configure one.
|
||||
explainNoConnectionsFromReplicas=No connections from a replica found. You can connect replicas by using their AdminConsole.
|
||||
stopConnectionToMaster=Stop Replication
|
||||
asLink=As link
|
||||
noStarttimeAnnouncedYet=Pending
|
||||
raceIsRunning=Running
|
||||
@@ -830,9 +805,6 @@ raceIsInStartphase=Start phase
|
||||
generalRecall=General recall
|
||||
startPostponed=Postponed
|
||||
raceAbandoned=Abandoned
|
||||
stopAllReplicas=Drop connection to all replicas (Dangerous!)
|
||||
warningServerIsReplica=ATTENTION: This server is configured to be a replica. Do NOT change anything or this will lead to strange effects!
|
||||
dropReplicaConnection=Drop connection
|
||||
timePanelName=Time Control
|
||||
competitorFilterExplanation=The filter will show all competitors matching the criterias:
|
||||
protestTime=Protest time
|
||||
@@ -848,7 +820,6 @@ startAt=Start at
|
||||
finishAt=Finish at
|
||||
protestStartsAt=Protest starts at
|
||||
protestEndsAt=Protest ends at
|
||||
unknown=Unknown
|
||||
raceLog=Race log
|
||||
regattaLog=Regatta log
|
||||
refreshRaceLog=Refresh race log
|
||||
@@ -1046,7 +1017,6 @@ errorTryingToRemoveIgtimiAccount=Error trying to remove Igtimi account for user
|
||||
successfullyRemoveIgtimiAccount=Successfully removed Igtimi account for user {0}
|
||||
eMailMustNotBeEmpty=e-Mail address must not be empty
|
||||
emailAddress=e-mail address
|
||||
password=Password
|
||||
searchTag=Search tag
|
||||
doYouReallyWantToRemoveLeaderboard=Do you really want to remove the leaderboard: ''{0}''?
|
||||
metaLeaderboardCannotBeChanged=This is a meta leaderboard. It can''t be changed here.
|
||||
@@ -1181,7 +1151,6 @@ showSimulationOverlay=Show simulation overlay
|
||||
simulationLegendTooltip=Time Comparison:\nRace is the leg duration measured from GPS, Omniscient is the course if one would know everything about the wind, Opportunist are courses if one decides to take a turn measuring the distance to the next mark, 1-Turners are the courses if one knows everything about the wind and just takes one turn
|
||||
racesScored=Races scored
|
||||
racesScoredTooltip=Number of races the competitor has completed or gotten a score for in this leaderboard.
|
||||
averageNumberOfOperationsPerMessage=Average number of operations per message
|
||||
showUncorrectedTotalPoints=Show uncorrected total points
|
||||
setStartTimeReceived=Set start time received
|
||||
setStartTimeReceivedDescription=Sets the startTimeReceived of the selected TrackedRace to the provided value. Leave the value empty to remove the currently set startTimeReceived.
|
||||
@@ -1212,10 +1181,6 @@ registrationLinkUrlExplain=You can copy the URL and paste it into your invitatio
|
||||
registrationLinkUrlCopy=Copy to clipboard
|
||||
registrationLinkShare=Share
|
||||
explainRegistrationLinkDialog=Competitors for open regattas can register themselves by opening the registration link or scanning the QR-Code below with their smartphone.
|
||||
numberOfQueueMessagesSent=Number of queue messages sent
|
||||
totalSize=Total Size
|
||||
averageMessageSize=Average size per message in bytes
|
||||
totalNumberOfOperations=Total number of operations
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=Current speed over ground in knots while leg is still running; average speed over ground when leg is completed
|
||||
currentOrAverageSpeedOverGroundInKnots=SOG (\u2205 at end)
|
||||
connectors=Connectors
|
||||
@@ -1315,11 +1280,6 @@ sendingMailsFailed=Sending Mails failed
|
||||
sendingMailsSuccessful=Successfully sent E-Mails
|
||||
selectEventForInvitation=Select Event for Invitation
|
||||
imageURL=Image URL
|
||||
upload=Upload
|
||||
removeResult=Remove operation: {0} {1}
|
||||
uploadSuccessful=Upload successful
|
||||
fileUploadResult=File upload: {0} {1}.\nIn case of error please check that your File Storage service is properly configured.
|
||||
removeUploadedFile=Remove uploaded file
|
||||
showCompetitorBoatColumn=Boat of the competitor
|
||||
showCompetitorShortNameColumn=Competitor Short Name
|
||||
showCompetitorShortNameColumnTooltip=Shows the short name plus the nationality flag or competitor image. If available, a competitor image is prioritized over a nationality flag. If "{0}" is set, both icons will be displayed.
|
||||
@@ -1518,7 +1478,6 @@ imageSizeError=The size of the {0} image does not fit. The width should be betwe
|
||||
imageToSmallError=The size of the {0} image does not fit. The width should be at least {1} px and the height at least {2} px.
|
||||
imageResizeError=Resizing of the {0} image does not work. The width/height ratio should be between {1} and {2}, but actually is {3}.
|
||||
couldNotRetrieveImageSizeYet=The width and height of the image could not be retrieved yet.
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=Please only upload content you have all usage rights for. Remember that content may be cropped. Using YouTube URLs for video content is usually possible.
|
||||
registerCompetitorsOnRace=Register Competitors on Race (e.g. for split-fleet racing)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=Do you want to register competitors directly on the Race?
|
||||
doYouWantToDisableCompetitorsRegistrationsOnTheRace=Do you want to disable competitor registrations on the Race?
|
||||
@@ -1595,10 +1554,8 @@ noEventsYet=There are no events yet.
|
||||
selectCompetitorImportProvider=Please select a competitor import provider...
|
||||
selectResultImportProvider=Please select a result import provider...
|
||||
buildVersion=Build version
|
||||
serverInformation=Server Information
|
||||
serverConfiguration=Server Configuration
|
||||
standaloneServer=Standalone server
|
||||
send=Send...
|
||||
passId=PassId
|
||||
createdAt=Created at
|
||||
logicalTimepoint=Logical timepoint
|
||||
@@ -1788,8 +1745,6 @@ errorLoadingCompetitorImportProviders=Error loading competitor import providers:
|
||||
errorLoadingCompetitorImportDescriptors=Error loading competitor import descriptors: {0}
|
||||
couldNotSaveCompetitorRegistrations=Could not save competitor registrations: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Use, e.g., the race+fleet name
|
||||
version=Version: {0}
|
||||
replicables=Replicating objects
|
||||
set=Set
|
||||
eventRegattaRacesLegendWind=# Wind sensors
|
||||
eventRegattaRacesLegendVideo=# Video streams
|
||||
@@ -2140,7 +2095,6 @@ swissTimingUpdatePassword=Password for sending updates
|
||||
allowResizing=Allow resizing
|
||||
resizeSuccessfull=Resizing successfully finished
|
||||
resizeUnsuccessful=Resizing not possible: {0}
|
||||
setUpStorageService=Please set up a file storage service first
|
||||
automaticResizeNeedsStorageService=Automatic Resizing needs a working FileStorageService.
|
||||
qrCodeBoatInviteTitle=You are invited to track boat {0} for the regatta {1}
|
||||
qrCodeMarkInviteTitle=You are invited to track mark {0} for the regatta {1}
|
||||
@@ -2213,9 +2167,7 @@ tagCopyToClipBoard=Copy to clipboard
|
||||
tagBrowseAndUploadImage=Browse and upload
|
||||
tagCopiedLinkSuccessfully=Successfully copied link to clipboard!
|
||||
tagCopiedLinkNotSuccessfully=Your browser does not support copying to clipboard, please copy link manually!
|
||||
username=User name
|
||||
confirm=Confirm
|
||||
cancel=Cancel
|
||||
close=Close
|
||||
boatClasses=Boat classes
|
||||
sailorProfiles=Sailor Profiles
|
||||
@@ -2258,9 +2210,6 @@ warningSailInsightVersion=The server is configured for use with SAP Sail InSight
|
||||
invalidState=Invalid state
|
||||
doYouReallyWantToRemoveDeviceConfiguration=Do you really want to remove device configuration {0}?
|
||||
errorFetchingSimulationData=An Error occured while fetching simulation data: {0}. Please ensure you are signed in with your user account.
|
||||
usernameAndPasswordMustBothBeSet=Username and password must both be filled or empty
|
||||
explainUserName=Username to use for authentification on the master
|
||||
explainPassword=Password to use for authentification on the master
|
||||
tracTracConnection=TracTrac Connection
|
||||
addTracTracConnection=Add TracTrac Connection
|
||||
filterTracTracConnections=Filter TracTrac Connections
|
||||
@@ -2422,11 +2371,11 @@ errorCancelSubscription=Error canceling subscription: {0}
|
||||
errorSaveSubscription=Error saving subscription: {0}
|
||||
errorInvalidSubscritionProvider=Invalid subscription provider: {0}
|
||||
unableToLoadCourseAreas=Unable to load course areas: {0}
|
||||
serverName=Server Name: {0}
|
||||
insufficientPermissions=The current user has insufficient permissions for this action. Please log in with an authorized user.
|
||||
manageEvents=Manage Events
|
||||
sharingLinkCopied=Copied link to clipboard!
|
||||
startOfTrackingMustNotBeAfterEndOfTracking=Start of tracking must not be after end of tracking
|
||||
landscape=Landscape
|
||||
identifier=Identifier
|
||||
selectARole=Select a role
|
||||
raceOfficerOnVessel=Officer on vessel
|
||||
|
||||
+1
-51
@@ -12,7 +12,6 @@ listRaces=Rennen anzeigen
|
||||
listRegattas=Regatten anzeigen
|
||||
wind=Wind
|
||||
windPanelLabel=This is the Wind Panel which so far is completely empty.
|
||||
refresh=Aktualisieren
|
||||
removeNumber=Löschen ({0})
|
||||
windSource=Windquelle
|
||||
dampeningInterval=Mittelungsintervall
|
||||
@@ -134,7 +133,6 @@ storedPort=Port Stored Data
|
||||
liveUri=Live URI
|
||||
storedUri=Stored URI
|
||||
eventsConnectedTo=Momentan verfolgte Events
|
||||
hostname=Hostname
|
||||
declinationCheckbox=Windrichtung mit Missweisung korrigieren
|
||||
raceStartTrackingColumn=Tracking Started
|
||||
pauseAutomaticRefresh=Keine automatische Aktualisierung
|
||||
@@ -367,24 +365,17 @@ degreesBoatToTheWind=Winkel zum Wind
|
||||
racesInLeaderboard=Rennen in der Rangliste
|
||||
leaderboardsInGroup=Ranglisten in der Gruppe
|
||||
replication=Replikation
|
||||
errorFetchingReplicaData=Fehler beim Beschaffen der Replikationsdaten: {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=\u2205 XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Schenkel; die Seite, zu der der Teilnehmer abweicht, spielt dabei keine Rolle; aktueller Wert während des Bahnschenkels, danach der Durchschnittswert.
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie für alle Kreuzen in diesem Rennen; die Seite, zu der der Teilnehmer abweicht, spielt dabei keine Rolle; aktueller Wert während des Bahnschenkels, danach der Durchschnittswert.
|
||||
averageSignedCrossTrackErrorInMeters=\u2205 XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Schenkel, wobei negative Werte Abweichungen nach links, positive Werte Abweichungen nach rechts bedeuten.
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie für alle Kreuzen diesem Rennen, wobei negative Werte Abweichungen nach links, positive Werte Abweichungen nach rechts bedeuten.
|
||||
enterMaster=Hostname der Master-Instanz
|
||||
errorStartingReplication=Fehler beim Starten der Replikation von Host {0} / Exchange {1}: {2}
|
||||
helpLines=Hilfslinien
|
||||
startLine=Startlinie
|
||||
finishLine=Ziellinie
|
||||
advantageLine=Führungslinie
|
||||
courseMiddleLine=Kursmittellinie
|
||||
messagingPortNumber=Messaging-Portnummer (0 für Default)
|
||||
servletPortNumber=Servlet Portnummer
|
||||
registeredAt=Registriert {0}
|
||||
replicatingFromMaster=Repliziert von master {0}:{2}, Messaging Port {3}:{1}, Exchange {4}, replizierte Objekte {5}
|
||||
showWindSpeedSeries=Daten für Windgeschwindigkeit zeigen
|
||||
showWindDirectionSeries=Daten für Windrichtung zeigen
|
||||
fleet=Flotte
|
||||
@@ -426,7 +417,6 @@ boatClassDoesNotMatchSelectedRegatta=Die ausgewählten Rennen enthalten eine Boo
|
||||
regattaExistForSelectedBoatClass=Es gibt mindestens eine Regatta zu den ausgewählten Bootsklassen. Dennoch Default-Regatta für diese(s) Rennen anlegen?
|
||||
addRegatta=Regatta hinzufügen...
|
||||
importRegattas=Regatten importieren...
|
||||
exchangeName=Exchange Name
|
||||
course=Kurs
|
||||
courseLayout=Kursdefinition
|
||||
buoy=Boje
|
||||
@@ -677,7 +667,6 @@ currentTime=Aktuelle Zeit:
|
||||
tractracUsername=TracTrac Benutzername
|
||||
tractracPassword=TracTrac Passwort
|
||||
operatorEquals=Ist gleich
|
||||
additionalInformation=Info
|
||||
operatorNotEqualTo=Ist ungleich
|
||||
operatorLessThan=Kleiner als
|
||||
operatorLessThanEquals=Kleiner oder gleich
|
||||
@@ -730,7 +719,6 @@ waypoints=Wegpunkte
|
||||
disableRaceFilter=Deaktiviere Filter
|
||||
enableRaceFilter=Aktiviere Filter
|
||||
raceStatusColumn=Renn-Status
|
||||
loading=Lade...
|
||||
racesWithHiddenState=Rennen mit Status HIDDEN
|
||||
selectedCompetitors=Ausgewählte Teilnehmer
|
||||
filterNothing=Nichts filtern
|
||||
@@ -794,22 +782,6 @@ masterDataImportPanel=Master Data Import
|
||||
importSuccess=Erfolg\nEs wurden {0} Ranglistengruppe(n) und {1} Rangliste(n) und {2} Veranstaltung(en) und {3} Regatten und {4} Medienbeiträge, sowie {5} getrackte Rennen erstellt.
|
||||
importSuccessOverwriteInfo=Die folgenden Regatten wurden überschrieben; ihre Rennen müssen neu getrackt werden:
|
||||
addReplicationMaster=Verbindung mit Master herstellen
|
||||
connect=Verbinden
|
||||
connectToMaster=Mit einem Master verbinden
|
||||
exchangeHost=Queue Server
|
||||
explainExchangeHostName=Name oder IP des Servers auf dem die Queue läuft.
|
||||
explainReplicationHostname=Der Name oder die IP des Servers auf dem der Master Java Server läuft.
|
||||
explainReplicationExchangeName=Name der Messaging Queue.
|
||||
explainReplicationExchangePort=Port des Messaging Queue Servers.
|
||||
explainReplicationServletPort=Servlet Port.
|
||||
explainReplicasRegistered=Registrierte Replicas (dieser Server ist der Master):
|
||||
explainConnectionsToMaster=Verbindungen zu einem Master (dieser Server ist eine Replica)
|
||||
explainNoConnectionsToMaster=Es sind keine Verbindungen zu einem Master Server konfiguriert.
|
||||
explainNoConnectionsFromReplicas=Es sind keine Verbindugen von Replicas registriert.
|
||||
stopConnectionToMaster=Replikation anhalten
|
||||
stopAllReplicas=Verbindung zu allen Replicas abbrechen
|
||||
warningServerIsReplica=ACHTUNG: Dieser Server ist als Replica konfiguriert. Vermeiden Sie alle Operationen!
|
||||
dropReplicaConnection=Verbindung abbrechen
|
||||
timePanelName=Zeitregler
|
||||
competitorFilterExplanation=Der Filter zeigt alle Teilnehmer, welche folgende Bedingungen erfüllen:
|
||||
protestTime=Protestzeit
|
||||
@@ -833,7 +805,6 @@ startAt=Start
|
||||
finishAt=Rennende
|
||||
protestStartsAt=Protestzeit beginnt
|
||||
protestEndsAt=Protestzeit endet
|
||||
unknown=Unbekannt
|
||||
raceLog=RaceLog
|
||||
regattaLog=RegattaLog
|
||||
refreshRaceLog=RaceLog neu laden
|
||||
@@ -1028,7 +999,6 @@ errorTryingToRemoveIgtimiAccount=Fehler beim Löschen des Zugangs zum Benutzerko
|
||||
successfullyRemoveIgtimiAccount=Zugang zum Igtimi-Benutzerkonto {0} erfolgreich gelöscht
|
||||
eMailMustNotBeEmpty=e-Mailadresse darf nicht leer sein
|
||||
emailAddress=e-Mailadresse
|
||||
password=Kennwort
|
||||
searchTag=Suchhilfe
|
||||
doYouReallyWantToRemoveLeaderboard=Möchten Sie wirklich die Rangliste ''{0}'' löschen?
|
||||
doYouReallyWantToRemoveTrackedRaces=Möchten Sie die getrackten Rennen wirklich löschen?
|
||||
@@ -1163,7 +1133,6 @@ simulationLegendTooltip=Time Comparison:\nRace is the leg duration measured from
|
||||
showNumberOfRacesScored=Anzahl bepunkteter Rennen
|
||||
racesScored=Bepunktete Rennen
|
||||
racesScoredTooltip=Anzahl von Rennen, die der Segler vollendet oder für die er Punkte bekommen hat
|
||||
averageNumberOfOperationsPerMessage=Durchschnittliche Anzahl Operationen pro Nachricht
|
||||
showUncorrectedTotalPoints=Unkorrigierte Punkte anzeigen
|
||||
setStartTimeReceived=Setze die erhaltene Startzeit
|
||||
setStartTimeReceivedDescription=Setzt die startTimeReceived des selektierten TrackedRaces auf den angegebenen Wert. Den Wert leer lassen, um die aktuell gesetzte startTimeReceived zu entfernen.
|
||||
@@ -1194,10 +1163,6 @@ registrationLinkUrlExplain=URL zur Verwendung in der Einladung.
|
||||
registrationLinkUrlCopy=In die Zwischenablage kopieren
|
||||
registrationLinkShare=Teilen
|
||||
explainRegistrationLinkDialog=Teilnehmer für offene Regatten können sich mit der Registrierungs-URL oder durch Scannen des QR-Code mit dem Smartphone selber an der Regatta registrieren.
|
||||
numberOfQueueMessagesSent=Anzahl verschickter Queue Nachrichten
|
||||
totalSize=Gesamtgröße
|
||||
averageMessageSize=Durchschnittsgrösse einer Nachricht
|
||||
totalNumberOfOperations=Gesamtanzahl gesendete Operationen
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=Momentane Fahrt über Grund während der Teilnehmer sich im Bahnabschnitt befindet; Durchschnitt, nachdem der Teilnehmer den Abschnitt beendet hat.
|
||||
currentOrAverageSpeedOverGroundInKnots=FüG (\u2205 nach Abschluss)
|
||||
connectors=Konnektoren
|
||||
@@ -1294,11 +1259,6 @@ sendingMailsFailed=Versenden der E-Mails fehlgeschlagen
|
||||
sendingMailsSuccessful=Versenden der E-Mails war erfolgreich!
|
||||
selectEventForInvitation=Event für Einladung auswählen
|
||||
imageURL=Bild-URL
|
||||
upload=Hochladen
|
||||
removeResult=Löschergebnis: {0} {1}
|
||||
uploadSuccessful=Hochladen erfolgreich
|
||||
fileUploadResult=Ergebnis des Hochladens: {0} {1}\nIm Fehlerfall bitte die Konfiguration für "Datei Speicherung" prüfen.
|
||||
removeUploadedFile=Hochgeladene Datei löschen
|
||||
showCompetitorBoatColumn=Boot des Teilnehmers anzeigen
|
||||
showCompetitorShortNameColumn=Kurzen Teilnehmernamen anzeigen
|
||||
showCompetitorShortNameColumnTooltip=Zeigt den kurzen Teilnehmernamen sowie eine Nationalitäten-Flagge oder ein Teilnehmerbild an. Ein Teilnehmerbild wird hierbei bevorzugt angzeigt, falls vorhanden. Falls auch "{0}" ausgewählt ist, werden stets beide Bilder angezeigt.
|
||||
@@ -1496,7 +1456,6 @@ imageSizeError=Die Größe des {0}-Bildes ist unpassend. Die Breite sollte zwisc
|
||||
imageToSmallError=Die Größe des {0}-Bildes ist unpassend. Die Breite sollte mindestens {1} px und die Höhe mindestens {2} px sein.
|
||||
imageResizeError=Die Skalierung des {0}-Bildes hat nicht funktionoiert. Das Breite/Höhe Verhältnis sollte zwischen {1} und {2} sein, ist aber {3}.
|
||||
couldNotRetrieveImageSizeYet=Bildgröße konnte noch nicht ermittelt werden.
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=Bitte nur Inhalte hochladen, für die alle Verwendungsrechte vorliegen. Bitte beachten: Bilder können verändert wiedergegeben werden. YouTube-URLs funktionieren für gewöhnlich für Video-Inhalte.
|
||||
registerCompetitorsOnRace=Teilnehmer auf dem Rennen registrieren (z.B. für Split-Fleets)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=Wollen Sie Teilnehmer direkt auf dem Rennen registrieren?
|
||||
warningDirectCompetitorRegistration=Warnung! Diese Einstellung führt dazu, dass Teilnehmer dieses Rennens von nun an auf Rennebene registriert werden müssen. Dies ist nur sinnvoll, wenn sich die Teilnehmer verschiedener Rennen einer Regatta unterscheiden.
|
||||
@@ -1579,10 +1538,8 @@ noEventsYet=Es sind keine Veranstaltungen vorhanden.
|
||||
selectResultImportProvider=Bitte wählen Sie einen Ergebnisdienst aus...
|
||||
selectCompetitorImportProvider=Bitte wählen Sie einen Dienst für den Import von Teilnehmerdaten aus...
|
||||
buildVersion=Build-Version
|
||||
serverInformation=Server-Information
|
||||
serverConfiguration=Server-Konfiguration
|
||||
standaloneServer=Eigenständiger Server
|
||||
send=Abschicken...
|
||||
passId=Druchlauf-Nr.
|
||||
createdAt=Erstellt am
|
||||
logicalTimepoint=Logischer Zeitpunkt
|
||||
@@ -1772,8 +1729,6 @@ errorLoadingCompetitorImportProviders=Fehler beim Laden der Quellen für den Tei
|
||||
errorLoadingCompetitorImportDescriptors=Fehler beim Laden der zu importierenden Teilnehmerdaten: {0}
|
||||
couldNotSaveCompetitorRegistrations=Teilnehmerregistrierung konnte nicht gespeichert werden: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Z.B. Renn- und Gruppenname
|
||||
version=Version: {0}
|
||||
replicables=Replizierte Objekte
|
||||
set=Setzen
|
||||
eventRegattaRacesLegendWind=Nr. Windsensoren
|
||||
eventRegattaRacesLegendVideo=Nr. Videostreams
|
||||
@@ -2134,7 +2089,6 @@ swissTimingUpdatePassword=Passwort zum Versenden der Updates
|
||||
allowResizing=Skalierung erlauben
|
||||
resizeSuccessfull=Skalierung erfolgreich abgeschlossen
|
||||
resizeUnsuccessful=Skalierung nicht möglich: {0}
|
||||
setUpStorageService=Bitte setze zuerst einen Datei Speicher auf
|
||||
automaticResizeNeedsStorageService=Die automatische Skalierung benötigt einen funktionierenden FileStorageService.
|
||||
qrCodeBoatInviteTitle=Willkommen zur Regatta {1} um das Boot {0} zu tracken
|
||||
qrCodeMarkInviteTitle=Willkommen zur Regatta {1} um die Tonne {0} zu tracken
|
||||
@@ -2207,9 +2161,7 @@ tagCopyToClipBoard=Kopiere in die Zwischenablage
|
||||
tagBrowseAndUploadImage=Bild auswählen und senden
|
||||
tagCopiedLinkSuccessfully=Link erfolgreich in die Zwischenablage kopiert!
|
||||
tagCopiedLinkNotSuccessfully=Dein Browser unterstüzt leider kein Kopieren in die Zwischenablage, bitte kopiere den Link manuell!
|
||||
username=Benutzername
|
||||
confirm=Fortfahren
|
||||
cancel=Abbrechen
|
||||
close=Schließen
|
||||
boatClasses=Bootsklassen
|
||||
sailorProfiles=Seglerprofile
|
||||
@@ -2252,9 +2204,6 @@ warningSailInsightVersion=Der Server ist nur für die Verwendung in Kombination
|
||||
invalidState=Ungültiger Zustand
|
||||
doYouReallyWantToRemoveDeviceConfiguration=Möchten Sie die Gerätekonfiguration {0} wirklich entfernen?
|
||||
errorFetchingSimulationData=Ein Fehler ist beim Abrufen der Simulationsdaten aufgetreten: {0}. Bitte stelle sicher, dass Du an Deinem Benutzerkonto angemeldet bist.
|
||||
usernameAndPasswordMustBothBeSet=Username und Passwort müssen beide entweder gesetzt oder leer sein.
|
||||
explainUserName=Der Benutzername der zur Authentifizierung auf dem Master eingesetzt wird
|
||||
explainPassword=Das Password das zur Authentifizierung auf dem Master eingesetzt wird
|
||||
addTracTracConnection=TracTrac Verbindung hinzufügen
|
||||
tracTracConnection=TracTrac Verbindung
|
||||
filterTracTracConnections=TracTrac Verbindungen filtern
|
||||
@@ -2437,6 +2386,7 @@ insufficientPermissions=Aktuelle Berechtigungen reichen nicht aus um die gewähl
|
||||
manageEvents=Events Verwalten
|
||||
sharingLinkCopied=Copied link to clipboard!
|
||||
startOfTrackingMustNotBeAfterEndOfTracking=Startzeitpunkt des Trackings darf nicht nach dessen Endzeitpunkt liegen
|
||||
landscape=Landschaft
|
||||
identifier=Kennung
|
||||
selectARole=Rolle auswählen
|
||||
raceOfficerOnVessel=Wettfahrtleiter auf dem Wasser
|
||||
|
||||
-52
@@ -12,7 +12,6 @@ listRegattas=Listar regatas
|
||||
wind=Viento
|
||||
maneuverType=Maniobra
|
||||
windPanelLabel=Este es el panel de vientos, y hasta el momento está totalmente vacío.
|
||||
refresh=Refrescar
|
||||
removeNumber=Eliminar ({0})
|
||||
windSource=Fuente de vientos
|
||||
dampeningInterval=Intervalo de amortiguación
|
||||
@@ -132,7 +131,6 @@ storedPort=Datos grabados de puerto
|
||||
liveUri=URI en directo
|
||||
storedUri=URI almacenado
|
||||
eventsConnectedTo=Eventos rastreados actualmente
|
||||
hostname=Nombre de host
|
||||
declinationCheckbox=Corregir marcación del viento por declinación
|
||||
raceStartTrackingColumn=Rastreo iniciado
|
||||
pauseAutomaticRefresh=Pausar el refresco automático
|
||||
@@ -363,24 +361,17 @@ degreesBoatToTheWind=Ángulo respecto al viento
|
||||
racesInLeaderboard=Carreras en la tabla de clasificación
|
||||
leaderboardsInGroup=Tablas de clasificación en grupo
|
||||
replication=Replicación
|
||||
errorFetchingReplicaData=Error al obtener datos replicados: {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=∅ XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=El error de recorrido medio hasta el gran segmento de círculo que conecta el inicio del tramo con el final del tramo; muestra la media tras el tramo y el valor actual mientras se encuentra en el tramo.
|
||||
averageSignedCrossTrackErrorInMeters=∅ XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=La posición media en el rumbo como distancia señalizada desde la línea de crujía del rumbo; 0 significa en la línea de crujía del rumbo; los valores negativos significan la banda de babor y los valores positivos significan la banda de estribor; muestra la media tras el tramo y el valor actual mientras se encuentra en el tramo.
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=El error de recorrido absoluto hasta los grandes segmentos de círculo que conectan el inicio del tramo con el fin del tramo para todos los tramos contra el viento de esta prueba, sin tener en cuenta en que banda de la línea de crujía del rumbo se encuentra el competidor.
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=El error de recorrido medio señalizado hasta los grandes segmentos de círculo que conectan el inicio del tramo con el fin del tramo para todos los tramos contra el viento de esta prueba; los valores negativos significan la banda de babor de la línea de crujía; los valores positivos significan la banda de estribor.
|
||||
enterMaster=Nombre de host de la instancia maestra
|
||||
errorStartingReplication=Error al iniciar replicación del host {0} / intercambio {1}: {2}
|
||||
helpLines=Líneas de ayuda
|
||||
startLine=Línea de salida
|
||||
finishLine=Línea de llegada
|
||||
advantageLine=Línea de ventaja
|
||||
courseMiddleLine=Línea de crujía del rumbo
|
||||
messagingPortNumber=Número de puerto de mensajería (0 para predeterminado)
|
||||
servletPortNumber=Número de puerto Servlet
|
||||
registeredAt=Registrado a {0}
|
||||
replicatingFromMaster=Replicando desde el maestro {0}:{2}, puerto de mensajería {3}:{1}, intercambio {4}, replicando {5}
|
||||
showWindSpeedSeries=Mostrar datos de velocidad del viento
|
||||
showWindDirectionSeries=Mostrar datos de dirección del viento
|
||||
fleet=Flota
|
||||
@@ -422,7 +413,6 @@ boatClassDoesNotMatchSelectedRegatta=Las carreras seleccionadas contienen clases
|
||||
regattaExistForSelectedBoatClass=Hay al menos una regata para las clases de embarcación seleccionadas. ¿Realmente desea crear regata(s) por defecto para esta(s) carrera(s)?
|
||||
addRegatta=Añadir regata...
|
||||
importRegattas=Importar regatas...
|
||||
exchangeName=Intercambiar nombre
|
||||
course=Rumbo
|
||||
courseLayout=Disposición de rumbo
|
||||
buoy=Boya
|
||||
@@ -712,7 +702,6 @@ starboardSide=Estribor
|
||||
pleaseEnterANumber=Indique un número.
|
||||
competitorsFilter=Filtro de competidores
|
||||
flagStatus=Status de bandera
|
||||
additionalInformation=Info
|
||||
windFixListingDescription=Correcciones de viento (3 primeras, 3 últimas, valores verdaderos)
|
||||
noWindFixesAvailable=No hay correcciones de viento disponibles
|
||||
distanceToStarboardEndOfStartlineWhenPassingStart=Dist.banda estribor o línea cuando se ha cruzado línea de salida
|
||||
@@ -734,7 +723,6 @@ waypoints=Puntos de ruta
|
||||
disableRaceFilter=Deshabilitar filtro
|
||||
enableRaceFilter=Habilitar filtro
|
||||
raceStatusColumn=Status de carrera
|
||||
loading=Cargando (si la conexión de internet es lenta, puede durar algunos minutos)...
|
||||
racesWithHiddenState=Carreras con estado OCULTA
|
||||
mediaDateFormatError=Formato de fecha no válido. Utilice: {0}
|
||||
selectedCompetitors=Competidores seleccionados
|
||||
@@ -801,19 +789,6 @@ importSuccessOverwriteInfo=Se han tenido que sobrescribir las regatas siguientes
|
||||
regattaOverviewConfiguration=Configuración del resumen de regata
|
||||
firstRaceIsNonDiscardableCarryForward=Empieza con no descartables seguir adelante
|
||||
addReplicationMaster=Conectar con servidor maestro de replicación
|
||||
connect=Conectar
|
||||
connectToMaster=Conectar con maestro
|
||||
exchangeHost=Nombre de host de mensajería
|
||||
explainExchangeHostName=Nombre de host donde la cola de mensajería está funcionando
|
||||
explainReplicationHostname=Nombre de host donde el maestro de replicación está funcionando
|
||||
explainReplicationExchangeName=El nombre de la cola de intercambio. Debe ser igual que el que se ha configurado en el maestro.
|
||||
explainReplicationExchangePort=El puerto de la cola de intercambio de mensajería. Se utiliza para todos los datos después de la carga inicial.
|
||||
explainReplicationServletPort=Número de puerto Servlet utilizado para conectar y registrar esta réplica y recibir la carga inicial.
|
||||
explainReplicasRegistered=Réplicas registradas (este servidor es maestro)
|
||||
explainConnectionsToMaster=Conexiones con un maestro (este servidor es una réplica)
|
||||
explainNoConnectionsToMaster=No se han configurado conexiones con servidor maestro. Haga clic en el pulsador «Conectar con maestro» para configurar una-
|
||||
explainNoConnectionsFromReplicas=No se han encontrado conexiones desde una réplica. Puede conectar réplicas utilizando su consola de administración.
|
||||
stopConnectionToMaster=Parar replicación
|
||||
asLink=Como enlace
|
||||
noStarttimeAnnouncedYet=Pendiente
|
||||
raceIsRunning=En ejecución
|
||||
@@ -824,9 +799,6 @@ raceIsInStartphase=Fase de salida
|
||||
generalRecall=Recordatorio general
|
||||
startPostponed=Aplazado
|
||||
raceAbandoned=Abandonado
|
||||
stopAllReplicas=Descartar conexión con todas las réplicas (peligroso)
|
||||
warningServerIsReplica=ATENCIÓN: Este servidor está configurado como réplica. NO modifique nada, ya que se podrían producir efectos no deseados.
|
||||
dropReplicaConnection=Descartar conexión
|
||||
timePanelName=Control de tiempo
|
||||
competitorFilterExplanation=El filtro muestra a todos los competidores que cumplen los criterios:
|
||||
protestTime=Tiempo para protestar
|
||||
@@ -842,7 +814,6 @@ startAt=Salida a las
|
||||
finishAt=Llegada a las
|
||||
protestStartsAt=La manifestación empieza a las
|
||||
protestEndsAt=La manifestación termina a las
|
||||
unknown=Desconocido
|
||||
raceLog=Registro de carrera
|
||||
regattaLog=Regsitro de regata
|
||||
refreshRaceLog=Refrescar registro de carrera
|
||||
@@ -1040,7 +1011,6 @@ errorTryingToRemoveIgtimiAccount=Error al intentar eliminar la cuenta de Igtimi
|
||||
successfullyRemoveIgtimiAccount=La cuenta de Igtimi para el usuario se ha eliminado correctamente {0}
|
||||
eMailMustNotBeEmpty=La dirección de correo electrónico no debe estar vacía
|
||||
emailAddress=Dirección de correo electrónico
|
||||
password=Contraseña
|
||||
searchTag=Etiqueta de búsqueda
|
||||
doYouReallyWantToRemoveLeaderboard=¿Desea realmente eliminar la tabla de clasificación: "{0}"?
|
||||
metaLeaderboardCannotBeChanged=Se trata de una metatabla de clasificación. No se puede modificar aquí.
|
||||
@@ -1174,7 +1144,6 @@ showSimulationOverlay=Mostrar superposición de simulación
|
||||
simulationLegendTooltip=Comparación de tiempos:\nLa regata es la duración del tramo medido del GPS, Omnisciente es el rumbo si se conociera todo sobre el viento, Oportunista es el rumbo cuando se toma un giro midiendo la distancia hasta la próxima baliza, los giros 1 son los rumbos si se conoce todo sobre el viento y se realiza un giro.
|
||||
racesScored=Carreras puntuadas
|
||||
racesScoredTooltip=Número de carreras que ha completado un competidor o en las que ha contenido una clasificación en esta tabla de clasificación.
|
||||
averageNumberOfOperationsPerMessage=Número promedio de operaciones por mensaje
|
||||
showUncorrectedTotalPoints=Mostrar puntos totales no corregidos
|
||||
setStartTimeReceived=Fijar hora de inicio recibida
|
||||
setStartTimeReceivedDescription=Fija la startTimeReceived de la TrackedRace seleccionada en el valor proporcionado. Deje el valor en blanco para eliminar la startTimeReceived actual.
|
||||
@@ -1205,10 +1174,6 @@ registrationLinkUrlExplain=Puede copiar el URL y pegarlo en su invitación.
|
||||
registrationLinkUrlCopy=Copiar en portapapeles
|
||||
registrationLinkShare=Compartir
|
||||
explainRegistrationLinkDialog=Los competidores de regatas abiertas pueden registrarlas mediante el enlace de registro y el escaneo de código QR siguiente con su smartphone.
|
||||
numberOfQueueMessagesSent=Número de mensajes en cola enviados
|
||||
totalSize=Tamaño total
|
||||
averageMessageSize=Tamaño total por mensaje en bytes
|
||||
totalNumberOfOperations=Número total de operaciones
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=Velocidad actual sobre el suelo en nudos en el tramo durante la carrera; velocidad media sobre el suelo una vez concluido el tramo
|
||||
currentOrAverageSpeedOverGroundInKnots=SOG (∅ en la llegada)
|
||||
connectors=Conectores
|
||||
@@ -1308,11 +1273,6 @@ sendingMailsFailed=El envío de correos electrónicos ha fallado
|
||||
sendingMailsSuccessful=Correos electrónicos enviados correctamente
|
||||
selectEventForInvitation=Seleccionar evento para invitación
|
||||
imageURL=URL de imagen
|
||||
upload=Cargar
|
||||
removeResult=Eliminar operación: {0} {1}
|
||||
uploadSuccessful=Carga correcta
|
||||
fileUploadResult=Carga de archivos: {0} {1}. En caso de error, compruebe que su servicio de alojamiento de archivos está configurado correctamente.
|
||||
removeUploadedFile=Eliminar archivo
|
||||
showCompetitorBoatColumn=Embarcación del competidor
|
||||
showCompetitorShortNameColumn=Denominación breve de competidor
|
||||
showCompetitorShortNameColumnTooltip=Muestra el nombre breve más la bandera del país o imagen del competidor. Si está disponible, se prioriza la imagen de competidor a la bandera del país. Se mostrarán ambos iconos si se fija "{0}".
|
||||
@@ -1511,7 +1471,6 @@ imageSizeError=El tamaño de la imagen {0} no encaja. Debería medir entre {1} y
|
||||
imageToSmallError=El tamaño de la imagen {0} no encaja. Debería estar al menos entre {1} px de anchura y {2} px de altura.
|
||||
imageResizeError=El ajuste de tamaño de la imagen {0} no funciona. La ratio de ancho/alto debería estar entre {1} y {2}, pero realmente es {3}.
|
||||
couldNotRetrieveImageSizeYet=La anchura y altura de la imagen todavía no se han podido recuperar.
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=Cargue solamente contenidos de los que disponga de derechos de utilización. Recuerde que el contenido puede aparecer recortado. Normalmente es posible utilizar los URLs de YouTube para el contenido de vídeo.
|
||||
registerCompetitorsOnRace=Registrar competidores en la carrera (p.ej., para dividir una regata de flota)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=¿Desea registrar competidores directamente en la carrera?
|
||||
doYouWantToDisableCompetitorsRegistrationsOnTheRace=¿Desea deshabilitar los registros de competidores en la carrera?
|
||||
@@ -1588,10 +1547,8 @@ noEventsYet=Todavía no hay eventos.
|
||||
selectCompetitorImportProvider=Seleccione un proveedor de importación de competidores...
|
||||
selectResultImportProvider=Seleccione un proveedor de importación de resultados...
|
||||
buildVersion=Crear versión
|
||||
serverInformation=Información del servidor
|
||||
serverConfiguration=Configuración del servidor
|
||||
standaloneServer=Servidor independiente
|
||||
send=Enviar...
|
||||
passId=ID pase
|
||||
createdAt=Creado a las
|
||||
logicalTimepoint=Punto temporal lógico
|
||||
@@ -1781,8 +1738,6 @@ errorLoadingCompetitorImportProviders=Error al cargar proveedores de importació
|
||||
errorLoadingCompetitorImportDescriptors=Error al cargar descriptores de importación de competidores: {0}
|
||||
couldNotSaveCompetitorRegistrations=No se han podido grabar los registros de competidores: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Por ejemplo, utilice un nombre compuesto por carrera+flota
|
||||
version=Versión: {0}
|
||||
replicables=Objetos de replicación
|
||||
set=Fijar
|
||||
eventRegattaRacesLegendWind=# Sensores de vientos
|
||||
eventRegattaRacesLegendVideo=# Transmisiones de audio
|
||||
@@ -2133,7 +2088,6 @@ swissTimingUpdatePassword=Contraseña para enviar actualizaciones
|
||||
allowResizing=Permitir ajuste de tamaño
|
||||
resizeSuccessfull=Ajuste de tamaño finalizado correctamente
|
||||
resizeUnsuccessful=No es posible el ajuste de tamaño: {0}
|
||||
setUpStorageService=Configure primero un servicio de almacenamiento de ficheros
|
||||
automaticResizeNeedsStorageService=Ajuste de tamaño automático requiere un FileStorageService que funcione.
|
||||
qrCodeBoatInviteTitle=Está invitado a realizar un seguimiento de la embarcación {0} en la regata {1}
|
||||
qrCodeMarkInviteTitle=Está invitado a realizar un seguimiento de la marca {0} en la regata {1}
|
||||
@@ -2206,9 +2160,7 @@ tagCopyToClipBoard=Copiar en portapapeles
|
||||
tagBrowseAndUploadImage=Navegar y cargar
|
||||
tagCopiedLinkSuccessfully=Enlace copiado correctamente en el portapapeles
|
||||
tagCopiedLinkNotSuccessfully=Su navegador no soporta la copia en el portapapeles; copie el enlace manualmente
|
||||
username=Nombre de usuario
|
||||
confirm=Confirmar
|
||||
cancel=Cancelar
|
||||
close=Cerrar
|
||||
boatClasses=Clases de embarcación
|
||||
sailorProfiles=Perfiles de navegante
|
||||
@@ -2251,9 +2203,6 @@ warningSailInsightVersion=El servidor se ha configurado para el uso con SAP Sail
|
||||
invalidState=Estado no válido
|
||||
doYouReallyWantToRemoveDeviceConfiguration=¿Desea realmente eliminar la configuración del dispositivo {0}?
|
||||
errorFetchingSimulationData=Se ha producido un error al obtener los datos de simulación: {0}. Asegúrese de haber iniciado sesión con su cuenta de usuario.
|
||||
usernameAndPasswordMustBothBeSet=El nombre de usuario y contraseña deben estar completados o en blanco
|
||||
explainUserName=El nombre de usuario a utilizar para la autenticación en el maestro
|
||||
explainPassword=La contraseña a utilizar para la autenticación en el maestro
|
||||
tracTracConnection=Conexión TracTrac
|
||||
addTracTracConnection=Añadir conexión TracTrac
|
||||
filterTracTracConnections=Filtrar conexiones TracTrac
|
||||
@@ -2415,7 +2364,6 @@ errorCancelSubscription=Error al cancelar la suscripción: {0}
|
||||
errorSaveSubscription=Error al grabar la suscripción: {0}
|
||||
errorInvalidSubscritionProvider=Proveedor de suscripción no válido: {0}
|
||||
unableToLoadCourseAreas=Imposible cargar zonas de rumbo: {0}
|
||||
serverName=Nombre del servidor: {0}
|
||||
insufficientPermissions=El usuario actual tiene permisos insuficientes para esta acción. Inicie sesión con un usuario autorizado.
|
||||
manageEvents=Gestionar eventos
|
||||
sharingLinkCopied=Enlace copiado en portapapeles
|
||||
|
||||
-51
@@ -12,7 +12,6 @@ listRegattas=Lister régates
|
||||
wind=Vent
|
||||
maneuverType=Manœuvre
|
||||
windPanelLabel=Ceci est le panneau des mesures du vent, vide pour l''instant.
|
||||
refresh=Actualiser
|
||||
removeNumber=Supprimer ({0})
|
||||
windSource=Source du vent
|
||||
dampeningInterval=Intervalle d''atténuation
|
||||
@@ -132,7 +131,6 @@ storedPort=Port données stockées
|
||||
liveUri=URI en direct
|
||||
storedUri=URI stockée
|
||||
eventsConnectedTo=Manifestations actuellement suivies
|
||||
hostname=Nom de l''hôte
|
||||
declinationCheckbox=Corriger la direction du vent par déclinaison
|
||||
raceStartTrackingColumn=Suivi lancé
|
||||
pauseAutomaticRefresh=Arrêter Actualisation automatique
|
||||
@@ -363,24 +361,17 @@ degreesBoatToTheWind=Angle par rapport au vent
|
||||
racesInLeaderboard=Courses dans le palmarès
|
||||
leaderboardsInGroup=Palmarès dans le groupe
|
||||
replication=Réplication
|
||||
errorFetchingReplicaData=Erreur lors de l''accès aux données de réplicas : {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=∅ XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=Écart de route (XTE) moyen par rapport à l''arc de cercle reliant le début d''une portion de parcours à la fin d''une portion de parcours. Affiche la moyenne après la portion de parcours, et la valeur actuelle lorsque le bateau se trouve encore sur la portion de parcours.
|
||||
averageSignedCrossTrackErrorInMeters=∅ XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=Position moyenne dans la course sous forme de distance enregistrée par rapport à la layline de la course. 0 signifie que vous vous trouvez sur la layline. Les valeurs négatives indiquent que vous avez dévié de votre route sur la gauche. Les valeurs positives indiquent que vous avez dévié de votre route sur la droite. Affiche la moyenne après la portion de parcours, et la valeur actuelle lorsque le bateau se trouve encore sur la portion de parcours.
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=Écart de route moyen absolu par rapport aux arcs de cercle reliant le début d''une portion de parcours à la fin d''une portion de parcours pour toutes les portions de parcours dans le lit du vent de cette course, en ignorant de quel côté de la layline de la course le concurrent se trouve.
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=Écart de route moyen enregistré par rapport aux arcs de cercle reliant le début d''une portion de parcours à la fin d''une portion de parcours pour toutes les portions de parcours dans le lit du vent de cette course. Les valeurs négatives indiquent que le concurrent se trouve à gauche de la layline, les valeurs positives indiquent qu''il se trouve à droite de la layline.
|
||||
enterMaster=Nom d''hôte de l''instance maître
|
||||
errorStartingReplication=Erreur lors du lancement de la réplication à partir de l''hôte {0}/échange {1} : {2}
|
||||
helpLines=Lignes d''aide
|
||||
startLine=Ligne de départ
|
||||
finishLine=Ligne d''arrivée
|
||||
advantageLine=Ligne d''avantage
|
||||
courseMiddleLine=Ligne médiane de course
|
||||
messagingPortNumber=Numéro de port d''échange de messages
|
||||
servletPortNumber=Numéro de port Servlet
|
||||
registeredAt=Enregistré à {0}
|
||||
replicatingFromMaster=Réplication du serveur maître {0}:{2}, port de messagerie {3}:{1}, échange {4}, réplication {5}
|
||||
showWindSpeedSeries=Afficher données de vitesse du vent
|
||||
showWindDirectionSeries=Afficher données de direction du vent
|
||||
fleet=Flotte
|
||||
@@ -422,7 +413,6 @@ boatClassDoesNotMatchSelectedRegatta=Les courses sélectionnées contiennent des
|
||||
regattaExistForSelectedBoatClass=Il existe au moins une régate pour les catégories de bateaux sélectionnées. Voulez-vous vraiment créer une (des) régate(s) pour cette (ces) course(s) ?
|
||||
addRegatta=Ajouter régate...
|
||||
importRegattas=Importer régates...
|
||||
exchangeName=Nom d''échange
|
||||
course=Parcours
|
||||
courseLayout=Configuration du parcours
|
||||
buoy=Bouée
|
||||
@@ -712,7 +702,6 @@ starboardSide=À tribord
|
||||
pleaseEnterANumber=Saisissez un nombre.
|
||||
competitorsFilter=Filtre Concurrents
|
||||
flagStatus=Statut du pavillon
|
||||
additionalInformation=Infos
|
||||
windFixListingDescription=Points vent (3 premiers, 3 derniers, valeurs réelles)
|
||||
noWindFixesAvailable=Aucun point vent disponible
|
||||
distanceToStarboardEndOfStartlineWhenPassingStart=Distance côté tribord de la ligne au moment du départ
|
||||
@@ -734,7 +723,6 @@ waypoints=Points de cheminement
|
||||
disableRaceFilter=Désactiver filtre
|
||||
enableRaceFilter=Activer filtre
|
||||
raceStatusColumn=Statut de la course
|
||||
loading=Chargement (cela peut prendre plusieurs minutes en fonction du débit de la connexion internet)
|
||||
racesWithHiddenState=Courses au statut MASQUÉ
|
||||
mediaDateFormatError=Format de date non valide. Utiliser : {0}
|
||||
selectedCompetitors=Concurrents sélectionnés
|
||||
@@ -801,19 +789,6 @@ importSuccessOverwriteInfo=Les régates suivantes ont été écrasées, vous dev
|
||||
regattaOverviewConfiguration=Configuration de la synthèse des régates
|
||||
firstRaceIsNonDiscardableCarryForward=Départs avec report sans élimination
|
||||
addReplicationMaster=Connexion au serveur maître de réplication
|
||||
connect=Connexion
|
||||
connectToMaster=Connexion à un serveur maître
|
||||
exchangeHost=Nom d''hôte d''échange de messages
|
||||
explainExchangeHostName=Nom de l''hôte sur lequel la file d''attente des messages s''exécute.
|
||||
explainReplicationHostname=Nom de l''hôte sur lequel le serveur maître de réplication s''exécute.
|
||||
explainReplicationExchangeName=Nom de la file d''attente d''échange. Le nom doit être identique à celui qui est configuré dans le serveur maître.
|
||||
explainReplicationExchangePort=Port de la file d''attente d''échange de messages. Utilisé pour toutes les données après le chargement initial.
|
||||
explainReplicationServletPort=Numéro de port Servlet utilisé pour la connexion afin d''enregistrer le réplica et recevoir le chargement initial.
|
||||
explainReplicasRegistered=Copie enregistrée (ce serveur est un serveur maître) :
|
||||
explainConnectionsToMaster=Connexions à un serveur maître (ce serveur est un réplica) :
|
||||
explainNoConnectionsToMaster=Aucune connexion à un serveur maître configurée. Cliquez sur le bouton Connexion à un serveur maître pour en configurer une.
|
||||
explainNoConnectionsFromReplicas=Aucune connexion à partir d''un réplica trouvée. Vous pouvez connecter des réplicas en utilisant leur console d''administration.
|
||||
stopConnectionToMaster=Arrêter réplication
|
||||
asLink=En tant que lien
|
||||
noStarttimeAnnouncedYet=En attente
|
||||
raceIsRunning=En cours d''exécution
|
||||
@@ -824,9 +799,6 @@ raceIsInStartphase=Lancer phase
|
||||
generalRecall=Rappel général
|
||||
startPostponed=Différé
|
||||
raceAbandoned=Abandonné
|
||||
stopAllReplicas=Supprimer la connexion à tous les réplicas (dangereux !)
|
||||
warningServerIsReplica=ATTENTION : ce serveur est configuré pour être un réplica. Ne modifiez rien, sinon des erreurs inattendues peuvent se produire.
|
||||
dropReplicaConnection=Supprimer connexion
|
||||
timePanelName=Contrôle des temps
|
||||
competitorFilterExplanation=Ce filtre affichera tous les concurrents qui correspondent aux critères :
|
||||
protestTime=Heure de réclamation
|
||||
@@ -842,7 +814,6 @@ startAt=Départ à
|
||||
finishAt=Arrivée à
|
||||
protestStartsAt=Début de la réclamation à
|
||||
protestEndsAt=Fin de la réclamation à
|
||||
unknown=Inconnu
|
||||
raceLog=Journal de la course
|
||||
regattaLog=Journal de la régate
|
||||
refreshRaceLog=Actualiser journal de la course
|
||||
@@ -1040,7 +1011,6 @@ errorTryingToRemoveIgtimiAccount=Erreur lors de la tentative de suppression du c
|
||||
successfullyRemoveIgtimiAccount=Suppression du compte Igtimi pour l''utilisateur {0} réussie.
|
||||
eMailMustNotBeEmpty=L''adresse e-mail ne doit pas être vide.
|
||||
emailAddress=Adresse e-mail
|
||||
password=Mot de passe
|
||||
searchTag=Balise de recherche
|
||||
doYouReallyWantToRemoveLeaderboard=Voulez-vous vraiment supprimer le palmarès "{0}" ?
|
||||
metaLeaderboardCannotBeChanged=Ce palmarès est de type méta. Vous ne pouvez pas le modifier ici.
|
||||
@@ -1174,7 +1144,6 @@ showSimulationOverlay=Afficher superposition de la simulation
|
||||
simulationLegendTooltip=Comparaison des temps : \nCourse désigne la durée de la portion de parcours mesurée à l''aide d''un GPS, Omniscient désigne la course dans le cas où l''on a toutes les données du vent, Opportuniste désigne la course dans le cas où l''on décide de virer de bord en mesurant la distance jusqu''à la marque suivante, Virement de bord unique désigne les courses dans le cas où l''on a toutes les données du vent et l''on décide de virer de bord une seule fois.
|
||||
racesScored=Courses avec points
|
||||
racesScoredTooltip=Nombre de courses que le concurrent a terminées, ou pour lesquelles il a obtenu un score au palmarès.
|
||||
averageNumberOfOperationsPerMessage=Nombre moyen d''opérations par message
|
||||
showUncorrectedTotalPoints=Afficher total des points non corrigé
|
||||
setStartTimeReceived=Afficher heure de départ reçue
|
||||
setStartTimeReceivedDescription=Définit l''heure de départ reçue de la course suivie sélectionnée sur la valeur indiquée. Ne renseignez pas cette valeur si vous voulez supprimer l''actuelle heure de départ reçue définie.
|
||||
@@ -1205,10 +1174,6 @@ registrationLinkUrlExplain=Vous pouvez copier l''URL et la coller dans votre inv
|
||||
registrationLinkUrlCopy=Copier dans le presse-papiers
|
||||
registrationLinkShare=Partager
|
||||
explainRegistrationLinkDialog=Les concurrents des régates ouvertes peuvent s''inscrire eux-mêmes en ouvrant le lien d''inscription ou en scannant le code QR ci-dessous avec leur smartphone.
|
||||
numberOfQueueMessagesSent=Nombre de messages en file d''attente envoyés
|
||||
totalSize=Taille totale
|
||||
averageMessageSize=Taille moyenne par message en octets
|
||||
totalNumberOfOperations=Nombre total d''opérations
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=Vitesse fond actuelle en nœuds sur une portion de parcours en cours ; vitesse fond moyenne lorsque la portion de parcours est terminée.
|
||||
currentOrAverageSpeedOverGroundInKnots=Vf (∅ à la fin)
|
||||
connectors=Connecteurs
|
||||
@@ -1308,11 +1273,6 @@ sendingMailsFailed=Échec de l''envoi des e-mails
|
||||
sendingMailsSuccessful=Envoi des e-mails réussi
|
||||
selectEventForInvitation=Sélectionnez une manifestation pour l''invitation.
|
||||
imageURL=URL d''image
|
||||
upload=Charger
|
||||
removeResult=Supprimer opération : {0} {1}
|
||||
uploadSuccessful=Chargement réussi
|
||||
fileUploadResult=Chargement du fichier : {0} {1}.\nEn cas d''erreur, vérifiez que votre service de stockage de fichier est correctement configuré.
|
||||
removeUploadedFile=Supprimer fichier chargé
|
||||
showCompetitorBoatColumn=Bateau du concurrent
|
||||
showCompetitorShortNameColumn=Nom court du concurrent
|
||||
showCompetitorShortNameColumnTooltip=Affiche le nom court ainsi que le drapeau national ou l''image du concurrent. Si les deux sont disponibles, l''image du concurrent aura la priorité sur le drapeau national. Si le code "{0}" est activé, les deux icônes seront affichées.
|
||||
@@ -1511,7 +1471,6 @@ imageSizeError=La taille de l''image {0} ne correspond pas. La largeur doit êtr
|
||||
imageToSmallError=La taille de l''image {0} ne correspond pas. La largeur doit être d''au moins {1} pixels, et la hauteur doit être d''au moins {2} pixels.
|
||||
imageResizeError=Le redimensionnement de l''image {0} ne fonctionne pas. Le ratio largeur/hauteur doit être compris entre {1} et {2}, mais il est actuellement de {3}.
|
||||
couldNotRetrieveImageSizeYet=Impossible de récupérer la largeur et la hauteur de l''image pour l''instant
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=Chargez uniquement le contenu pour lequel vous avez toutes les autorisations d''utilisation. Notez que le contenu peut être rogné. En règle générale, l''utilisation d''URL YouTube pour les contenus vidéo est possible.
|
||||
registerCompetitorsOnRace=Inscrire concurrents pour la course (par exemple pour une course avec division de flotte)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=Voulez-vous inscrire les concurrents directement pour la course ?
|
||||
doYouWantToDisableCompetitorsRegistrationsOnTheRace=Voulez-vous désactiver l''inscription des concurrents pour la course ?
|
||||
@@ -1588,10 +1547,8 @@ noEventsYet=Aucune manifestation pour l''instant.
|
||||
selectCompetitorImportProvider=Sélectionnez un fournisseur d''importation de concurrents...
|
||||
selectResultImportProvider=Sélectionnez un fournisseur d''importation de résultats...
|
||||
buildVersion=Version de build
|
||||
serverInformation=Informations serveur
|
||||
serverConfiguration=Configuration du serveur
|
||||
standaloneServer=Serveur autonome
|
||||
send=envoyer...
|
||||
passId=ID de passage
|
||||
createdAt=Créé le
|
||||
logicalTimepoint=Heure logique
|
||||
@@ -1781,8 +1738,6 @@ errorLoadingCompetitorImportProviders=Erreur lors du chargement des fournisseurs
|
||||
errorLoadingCompetitorImportDescriptors=Erreur lors du chargement des descripteurs d''importation de concurrents : {0}
|
||||
couldNotSaveCompetitorRegistrations=Impossible d''enregistrer les inscriptions des concurrents : {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Utilisez par exemple le nom de la course et de la flotte.
|
||||
version=Version : {0}
|
||||
replicables=Réplication d''objets en cours
|
||||
set=Définit
|
||||
eventRegattaRacesLegendWind=Nombre de capteurs de vent
|
||||
eventRegattaRacesLegendVideo=Nombre de flux vidéo
|
||||
@@ -2133,7 +2088,6 @@ swissTimingUpdatePassword=Mot de passe pour l''envoi des mises à jour
|
||||
allowResizing=Autoriser le redimensionnement
|
||||
resizeSuccessfull=Redimensionnement correctement terminé
|
||||
resizeUnsuccessful=Redimensionnement impossible : {0}
|
||||
setUpStorageService=Veuillez d''abord configurer un service de stockage de fichier.
|
||||
automaticResizeNeedsStorageService=Pour pouvoir utiliser le redimensionnement automatique, un service de stockage de fichier doit être configuré.
|
||||
qrCodeBoatInviteTitle=Vous êtes invité à suivre le bateau {0} pour la régate {1}.
|
||||
qrCodeMarkInviteTitle=Vous êtes invité à suivre la marque {0} pour la régate {1}.
|
||||
@@ -2206,9 +2160,7 @@ tagCopyToClipBoard=Copier dans le presse-papiers
|
||||
tagBrowseAndUploadImage=Naviguer et charger
|
||||
tagCopiedLinkSuccessfully=Lien correctement copié dans le presse-papiers
|
||||
tagCopiedLinkNotSuccessfully=Votre navigateur ne prend pas la copie vers le presse-papiers en charge. Veuillez copier le lien manuellement.
|
||||
username=Nom d''utilisateur
|
||||
confirm=Confirmer
|
||||
cancel=Annuler
|
||||
close=Fermer
|
||||
boatClasses=Catégories de bateaux
|
||||
sailorProfiles=Profils de sportifs
|
||||
@@ -2251,9 +2203,6 @@ warningSailInsightVersion=Le serveur est configuré pour être utilisé avec SAP
|
||||
invalidState=Statut non valide
|
||||
doYouReallyWantToRemoveDeviceConfiguration=Voulez-vous vraiment supprimer la configuration de l''appareil "{0}" ?
|
||||
errorFetchingSimulationData=Une erreur s''est produite lors de l''accès aux données de simulation : {0}. Assurez-vous que vous êtes bien connecté avec votre compte utilisateur.
|
||||
usernameAndPasswordMustBothBeSet=Le nom d''utilisateur et le mot de passe doivent tous les deux être renseignés ou vides.
|
||||
explainUserName=Nom d''utilisateur à utiliser pour l''authentification dans le système principal
|
||||
explainPassword=Mot de passe à utiliser pour l''authentification dans le système principal
|
||||
tracTracConnection=Connexion TracTrac
|
||||
addTracTracConnection=Ajouter connexion TracTrac
|
||||
filterTracTracConnections=Filtrer connexions TracTrac
|
||||
|
||||
-51
@@ -12,7 +12,6 @@ listRegattas=Elenca regate
|
||||
wind=Vento
|
||||
maneuverType=Manovra
|
||||
windPanelLabel=Questo è il riquadro dei venti, che finora è completamente vuoto.
|
||||
refresh=Aggiorna
|
||||
removeNumber=Rimuovi ({0})
|
||||
windSource=Origine del vento
|
||||
dampeningInterval=Intervallo di smorzamento
|
||||
@@ -132,7 +131,6 @@ storedPort=Dati porto archiviati
|
||||
liveUri=URI in tempo reale
|
||||
storedUri=URI archiviato
|
||||
eventsConnectedTo=Eventi attualmente tracciati
|
||||
hostname=Nome host
|
||||
declinationCheckbox=Correggi rilevamento del vento mediante declinazione
|
||||
raceStartTrackingColumn=Tracciamento avviato
|
||||
pauseAutomaticRefresh=Sospendi aggiornamento automatico
|
||||
@@ -363,24 +361,17 @@ degreesBoatToTheWind=Angolo rispetto al vento
|
||||
racesInLeaderboard=Gare nella classifica
|
||||
leaderboardsInGroup=Classifiche nel gruppo
|
||||
replication=Replicazione
|
||||
errorFetchingReplicaData=Errore di raccolta dei dati di replica: {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=∅ XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=L''errore di fuori rotta medio rispetto all''ampio segmento circolare che collega il punto di partenza della tratta con quello finale; mostra la media dopo la tratta e il valore attuale durante la tratta.
|
||||
averageSignedCrossTrackErrorInMeters=∅ XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=La posizione media nella rotta come distanza tracciata dalla linea mediana della rotta; 0 indica la linea mediana della rotta; valori negativi indicano il lato sinistro, valori positivi indicano il lato destro; mostra la media dopo la tratta e il valore attuale durante la tratta.
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=L''errore di fuori rotta assoluto medio rispetto agli ampi segmenti circolari che collegano punto di partenza della tratta e punto di destinazione della tratta per tutte le tratte sopravento di questa gara, ignorando il lato della linea mediana della rotta in cui si trova il concorrente
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=L''errore di fuori rotta medio tracciato rispetto agli ampi segmenti circolari che collegano il punto di partenza della tratta e il punto di destinazione della tratta per tutte le tratte sopravento di questa gara; valori negativi indicano la parte sinistra della linea mediana della rotta, valori positivi indicano la parte destra.
|
||||
enterMaster=Nome host dell''istanza principale
|
||||
errorStartingReplication=Errore di avvio di replica dall''host {0}/ scambio {1}: {2}
|
||||
helpLines=Linee di assistenza
|
||||
startLine=Linea di partenza
|
||||
finishLine=Linea del traguardo
|
||||
advantageLine=Linea del vantaggio
|
||||
courseMiddleLine=Linea mediana della rotta
|
||||
messagingPortNumber=Porta di invio/ricezione messaggi (0 per impostazione predefinita)
|
||||
servletPortNumber=Numero porta servlet
|
||||
registeredAt=Registrato alle {0}
|
||||
replicatingFromMaster=Replicazione da {0}:{2} master, porta di invio/ricezione messaggi {3}:{1}, scambio {4}, replicazione {5}
|
||||
showWindSpeedSeries=Mostra dati sulla velocità del vento
|
||||
showWindDirectionSeries=Mostra dati sulla direzione del vento
|
||||
fleet=Flotta
|
||||
@@ -422,7 +413,6 @@ boatClassDoesNotMatchSelectedRegatta=Le gare selezionate contengono classi di ba
|
||||
regattaExistForSelectedBoatClass=Esiste almeno una regata per le classi di barche selezionate. Creare regate predefinite per quelle gare?
|
||||
addRegatta=Aggiungi regata...
|
||||
importRegattas=Importa regate...
|
||||
exchangeName=Cambia nome
|
||||
course=Rotta
|
||||
courseLayout=Progettazione della rotta
|
||||
buoy=Boa
|
||||
@@ -712,7 +702,6 @@ starboardSide=Destra
|
||||
pleaseEnterANumber=Inserire un numero.
|
||||
competitorsFilter=Filtro concorrenti
|
||||
flagStatus=Stato bandiera
|
||||
additionalInformation=Info
|
||||
windFixListingDescription=Punti nave vento (primi 3, ultimi 3, valori veri)
|
||||
noWindFixesAvailable=Nessun punto nave vento disponibile.
|
||||
distanceToStarboardEndOfStartlineWhenPassingStart=Dist. drt. Linea alla part.
|
||||
@@ -734,7 +723,6 @@ waypoints=Waypoints
|
||||
disableRaceFilter=Disabilita filtro
|
||||
enableRaceFilter=Abilita filtro
|
||||
raceStatusColumn=Stato gara
|
||||
loading=Caricamento in corso (con connessione lenta a Internet, l''operazione può richiede alcuni minuti)...
|
||||
racesWithHiddenState=Gare con stato NASCOSTO
|
||||
mediaDateFormatError=Formato data non valido. Utilizzo: {0}
|
||||
selectedCompetitors=Concorrenti selezionati
|
||||
@@ -801,19 +789,6 @@ importSuccessOverwriteInfo=Qualora sia stato necessario sovrascrivere le seguent
|
||||
regattaOverviewConfiguration=Configurazione panoramica regata
|
||||
firstRaceIsNonDiscardableCarryForward=Partenze senza possibilità di scarto
|
||||
addReplicationMaster=Connetti a server principale di replicazione
|
||||
connect=Connetti
|
||||
connectToMaster=Connetti a principale
|
||||
exchangeHost=Nome host di invio/ricezione messaggi
|
||||
explainExchangeHostName=Nome dell''host in cui è in esecuzione la coda di invio/ricezione messaggi.
|
||||
explainReplicationHostname=Nome dell''host in cui è in esecuzione il master di replicazione.
|
||||
explainReplicationExchangeName=Il nome della coda di scambio. Deve corrispondere a quello configurato nel master.
|
||||
explainReplicationExchangePort=La porta della coda di scambio di invio/ricezione messaggi. Viene utilizzata per tutti i dati dopo il carico iniziale.
|
||||
explainReplicationServletPort=Il numero della porta servlet utilizzata per la connessione per la registrazione di tale replica e la ricezione del carico iniziale.
|
||||
explainReplicasRegistered=Repliche registrate (questo server è il master):
|
||||
explainConnectionsToMaster=Connessioni ad un master (questo server non è una replica):
|
||||
explainNoConnectionsToMaster=Nessuna connessione ad un server master configurato. Fare clic sul pulsante Connetti a master per configurarne uno.
|
||||
explainNoConnectionsFromReplicas=Non è stata trovata alcuna connessione da una replica. È possibile collegare le repliche utilizzando la relativa AdminConsole.
|
||||
stopConnectionToMaster=Arresta replicazione
|
||||
asLink=Come collegamento
|
||||
noStarttimeAnnouncedYet=In sospeso
|
||||
raceIsRunning=In corso
|
||||
@@ -824,9 +799,6 @@ raceIsInStartphase=Fase iniziale
|
||||
generalRecall=Richiamo generale
|
||||
startPostponed=Posticipato
|
||||
raceAbandoned=Interrotta
|
||||
stopAllReplicas=Stacca connessione a tutte le repliche (pericoloso!)
|
||||
warningServerIsReplica=ATTENZIONE: questo server è configurato per essere una replica. NON apportare modifiche oppure ciò produrrà effetti anomali!
|
||||
dropReplicaConnection=Stacca connessione
|
||||
timePanelName=Regolazione tempo
|
||||
competitorFilterExplanation=questo filtro mostrerà tutti i concorrenti che soddisfano i criteri:
|
||||
protestTime=Tempo per protesta
|
||||
@@ -842,7 +814,6 @@ startAt=Ora di inizio
|
||||
finishAt=Ora di fine
|
||||
protestStartsAt=Ora di inizio protesto
|
||||
protestEndsAt=Ora di fine protesto
|
||||
unknown=Sconosciuto
|
||||
raceLog=Registro di gara
|
||||
regattaLog=Registro regate
|
||||
refreshRaceLog=Aggiorna registro regate
|
||||
@@ -1040,7 +1011,6 @@ errorTryingToRemoveIgtimiAccount=Errore nel tentativo di eliminare l’account I
|
||||
successfullyRemoveIgtimiAccount=Account Igtimi per utente {0} eliminato correttamente
|
||||
eMailMustNotBeEmpty=L’indirizzo e-mail non deve essere vuoto
|
||||
emailAddress=indirizzo e-mail
|
||||
password=Password
|
||||
searchTag=Tag di ricerca
|
||||
doYouReallyWantToRemoveLeaderboard=Confermare l’eliminazione della classifica: ''{0}''?
|
||||
metaLeaderboardCannotBeChanged=Questa è una meta classifica e non può essere modificata qui.
|
||||
@@ -1174,7 +1144,6 @@ showSimulationOverlay=Mostra sovrapposizione simulazione
|
||||
simulationLegendTooltip=Confronto tempi:\nGara è la durata della tratta misurata da GPS, Onnisciente è la rotta con vento conosciuto, Opportuna è la rotta se si decide di compiere un giro misurando la distanza dal segnale successivo, 1 giro è la rotta di un giro con vento costante, conosciuto
|
||||
racesScored=Gare portate a termine
|
||||
racesScoredTooltip=Numero di gare completate dal concorrente o in cui ha ottenuto un punteggio in questa classifica.
|
||||
averageNumberOfOperationsPerMessage=Numero medio di operazioni per messaggio
|
||||
showUncorrectedTotalPoints=Mostra totale punti non corretto
|
||||
setStartTimeReceived=Imposta ora di inizio ricevuta
|
||||
setStartTimeReceivedDescription=Imposta l’ora di inizio ricevuta della gara tracciata selezionata sul valore fornito. Lasciare vuoto il valore per eliminare l’ora di inizio ricevuta attualmente impostata.
|
||||
@@ -1205,10 +1174,6 @@ registrationLinkUrlExplain=È possibile copiare l''URL e incollarlo nell''invito
|
||||
registrationLinkUrlCopy=Copia negli appunti
|
||||
registrationLinkShare=Condividi
|
||||
explainRegistrationLinkDialog=I concorrenti di regate aperte possono registrarsi aprendo il link per la registrazione oppure scansionando con il proprio smartphone il codice QR sotto riportato.
|
||||
numberOfQueueMessagesSent=Numero di messaggi in coda inviati
|
||||
totalSize=Dimensioni totali
|
||||
averageMessageSize=Dimensioni medie per messaggio in byte
|
||||
totalNumberOfOperations=Numero totale di operazioni
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=Attuale velocità effettiva al fondo in nodi quando la tratta non è ancora conclusa; velocità effettiva al fondo media quando la tratta è stata completata
|
||||
currentOrAverageSpeedOverGroundInKnots=SOG (∅ alla fine)
|
||||
connectors=Connettori
|
||||
@@ -1308,11 +1273,6 @@ sendingMailsFailed=Invio e-mail non riuscito
|
||||
sendingMailsSuccessful=E-mail correttamente inviate
|
||||
selectEventForInvitation=Seleziona evento per invito
|
||||
imageURL=URL immagine
|
||||
upload=Carica
|
||||
removeResult=Rimuovi operazione: {0} {1}
|
||||
uploadSuccessful=Caricamento eseguito correttamente
|
||||
fileUploadResult=Upload file: {0} {1}.\nIn caso di errore controllare che il servizio di archiviazione file sia adeguatamente configurato.
|
||||
removeUploadedFile=Rimuovi file caricato
|
||||
showCompetitorBoatColumn=Barca del concorrente
|
||||
showCompetitorShortNameColumn=Nome breve concorrente
|
||||
showCompetitorShortNameColumnTooltip=Mostra il nome breve e la bandiera della nazionalità o l''immagine del concorrente. Se disponibile, l''immagine del concorrente ha priorità sulla bandiera della nazionalità. Con impostazione "{0}", verranno visualizzate entrambe le icone.
|
||||
@@ -1511,7 +1471,6 @@ imageSizeError=Le dimensioni dell''immagine {0} non sono adeguate. La larghezza
|
||||
imageToSmallError=Le dimensioni dell''immagine {0} non sono adeguate. La larghezza deve essere almeno {1} px e l''altezza almeno {2} px.
|
||||
imageResizeError=Il ridimensionamento dell''immagine {0} non funziona. Il rapporto larghezza/altezza deve essere compreso fra {1} e {2}, mentre attualmente è {3}.
|
||||
couldNotRetrieveImageSizeYet=Non è ancora stato possibile recuperare larghezza e altezza dell''immagine.
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=Caricare solo contenuti per i quali si possiedono tutti i diritti di utilizzo. Tenere presente che i contenuti possono essere tagliati. Di norma è possibile utilizzare gli URL di YouTube per i contenuti video.
|
||||
registerCompetitorsOnRace=Registra concorrenti a gara (es. per regata con flotte divise)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=Registrare i concorrenti direttamente nella gara?
|
||||
doYouWantToDisableCompetitorsRegistrationsOnTheRace=Disabilitare le registrazioni concorrenti direttamente nella gara?
|
||||
@@ -1588,10 +1547,8 @@ noEventsYet=Non sono ancora presenti eventi.
|
||||
selectCompetitorImportProvider=Seleziona un provider di importazione concorrenti...
|
||||
selectResultImportProvider=Seleziona un provider di importazione risultati...
|
||||
buildVersion=Crea versione
|
||||
serverInformation=Informazioni sul server
|
||||
serverConfiguration=Configurazione del server
|
||||
standaloneServer=Server standalone
|
||||
send=Invia...
|
||||
passId=Numero di iscrizione
|
||||
createdAt=Ora creazione
|
||||
logicalTimepoint=Momento logico
|
||||
@@ -1781,8 +1738,6 @@ errorLoadingCompetitorImportProviders=Errore di caricamento dei provider di impo
|
||||
errorLoadingCompetitorImportDescriptors=Errore di caricamento dei descrittori di importazione concorrenti: {0}
|
||||
couldNotSaveCompetitorRegistrations=Impossibile salvare le registrazioni concorrenti: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Utilizza, ad esempio, gara+nome flotta
|
||||
version=Versione: {0}
|
||||
replicables=Oggetti di replicazione
|
||||
set=Set
|
||||
eventRegattaRacesLegendWind=# Sensori vento
|
||||
eventRegattaRacesLegendVideo=# Flussi video
|
||||
@@ -2133,7 +2088,6 @@ swissTimingUpdatePassword=Password per invio aggiornamenti
|
||||
allowResizing=Consenti ridimensionamento
|
||||
resizeSuccessfull=Ridimensionamento terminato correttamente
|
||||
resizeUnsuccessful=Ridimensionamento non possibile: {0}
|
||||
setUpStorageService=Configura prima un servizio di archiviazione file
|
||||
automaticResizeNeedsStorageService=Per il ridimensionamento automatico occorre un servizio di archiviazione file
|
||||
qrCodeBoatInviteTitle=Sei invitato a tracciare la barca {0} per la regata {1}
|
||||
qrCodeMarkInviteTitle=Sei invitato a tracciare il segnale {0} per la regata {1}
|
||||
@@ -2206,9 +2160,7 @@ tagCopyToClipBoard=Copia negli appunti
|
||||
tagBrowseAndUploadImage=Sfoglia e carica
|
||||
tagCopiedLinkSuccessfully=Link correttamente copiato negli appunti!
|
||||
tagCopiedLinkNotSuccessfully=Il browser non supporta la copia negli appunti, copiare il link manualmente!
|
||||
username=Nome utente
|
||||
confirm=Conferma
|
||||
cancel=Annulla
|
||||
close=Chiudi
|
||||
boatClasses=Classi di barche
|
||||
sailorProfiles=Profili velisti
|
||||
@@ -2251,9 +2203,6 @@ warningSailInsightVersion=Il server è configurato per l''uso con SAP Sail InSig
|
||||
invalidState=Stato non valido
|
||||
doYouReallyWantToRemoveDeviceConfiguration=Confermare l''eliminazione della configurazione del dispositivo {0}?
|
||||
errorFetchingSimulationData=Si è verificato un errore nella raccolta dei dati di simulazione: {0}. Assicurarsi di avere eseguito l''accesso con il proprio account utente.
|
||||
usernameAndPasswordMustBothBeSet=Nome utente e password devono essere entrambi alimentati o vuoti
|
||||
explainUserName=Nome utente da utilizzare per l''autenticazione nell''anagrafica
|
||||
explainPassword=Password da utilizzare per l''autenticazione nell''anagrafica
|
||||
tracTracConnection=Connessione TracTrac
|
||||
addTracTracConnection=Aggiungi connessione TracTrac
|
||||
filterTracTracConnections=Filtra connessioni TracTrac
|
||||
|
||||
-51
@@ -12,7 +12,6 @@ listRegattas=レガッタ一覧
|
||||
wind=風
|
||||
maneuverType=マニューバー
|
||||
windPanelLabel=これは風パネルであり、今のところ完全に空となっています。
|
||||
refresh=リフレッシュ
|
||||
removeNumber=削除 ({0})
|
||||
windSource=風源
|
||||
dampeningInterval=制動間隔
|
||||
@@ -132,7 +131,6 @@ storedPort=ポート格納データ
|
||||
liveUri=ライブ URI
|
||||
storedUri=格納 URL
|
||||
eventsConnectedTo=現在追跡中のイベント
|
||||
hostname=ホスト名
|
||||
declinationCheckbox=偏角別の適切な風方位
|
||||
raceStartTrackingColumn=追跡開始
|
||||
pauseAutomaticRefresh=自動リフレッシュを中断
|
||||
@@ -363,24 +361,17 @@ degreesBoatToTheWind=風とのアングル
|
||||
racesInLeaderboard=リーダーボードにあるレース
|
||||
leaderboardsInGroup=リーダーボードグループ
|
||||
replication=複製
|
||||
errorFetchingReplicaData=複製データ取込でエラー発生: {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=∅ XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=レグ始点からレグ終点までの大圏航路 (円曲線) に対する平均クロストラックエラー。当該レグ後は平均値を、レグにある間は現在値を示します。
|
||||
averageSignedCrossTrackErrorInMeters=∅ XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=コース中央航路からの距離 (+/- 符号付) で表されたコース上の平均位置。0 はコース中央航路を、マイナスの値は左側を、プラスの値は右側をそれぞれ意味します。当該レグ後は平均値を、レグにある間は現在値を示します。
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=このレースのすべてのアップウィンドレグに対するレグ始点からレグ終点までの大圏航路 (円曲線) との間の平均絶対クロストラックエラー (競技者がコース中央航路のどちら側にいるかは無視)
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=このレースのすべてのアップウィンドレグに対するレグ始点からレグ終点までの大圏航路 (円曲線) との間の +/- 符号付の平均クロストラックエラー: マイナスの値はコース中央航路の左側、プラスの値は右側を意味します。
|
||||
enterMaster=マスタインスタンスのホスト名
|
||||
errorStartingReplication=ホスト {0} / エクスチェンジ {1} からの複製開始でエラー発生: {2}
|
||||
helpLines=ヘルプライン
|
||||
startLine=スタートライン
|
||||
finishLine=フィニッシュライン
|
||||
advantageLine=アドバンテージライン
|
||||
courseMiddleLine=コース中央航路
|
||||
messagingPortNumber=メッセージングポート番号 (初期値は 0)
|
||||
servletPortNumber=サーブレットポート番号
|
||||
registeredAt=登録時刻 {0}
|
||||
replicatingFromMaster=マスタ {0}:{2}、メッセージングポート {3}:{1}、エクスチェンジ {4} から複製、{5} を複製
|
||||
showWindSpeedSeries=風速データ表示
|
||||
showWindDirectionSeries=風向データ表示
|
||||
fleet=フリート
|
||||
@@ -422,7 +413,6 @@ boatClassDoesNotMatchSelectedRegatta=選択したレースに、選択したレ
|
||||
regattaExistForSelectedBoatClass=選択した艇種に対して少なくとも 1 つのレガッタがあります。このレースに対してレガッタを初期登録しますか。
|
||||
addRegatta=レガッタ追加...
|
||||
importRegattas=レガッタのインポート...
|
||||
exchangeName=エクスチェンジ名
|
||||
course=コース
|
||||
courseLayout=コースレイアウト
|
||||
buoy=ブイ
|
||||
@@ -712,7 +702,6 @@ starboardSide=右舷
|
||||
pleaseEnterANumber=番号を入力してください。
|
||||
competitorsFilter=競技者フィルタ
|
||||
flagStatus=信号旗ステータス
|
||||
additionalInformation=情報
|
||||
windFixListingDescription=風フィックス (当初 3、最終 3、真値)
|
||||
noWindFixesAvailable=風フィックスが利用可能でありません。
|
||||
distanceToStarboardEndOfStartlineWhenPassingStart=スタート時のラインの右舷側距離
|
||||
@@ -734,7 +723,6 @@ waypoints=変針点
|
||||
disableRaceFilter=フィルタ無効化
|
||||
enableRaceFilter=フィルタ有効化
|
||||
raceStatusColumn=レースステータス
|
||||
loading=ロードしています (スピードの遅いインターネット接続では時間がかかる場合があります)...
|
||||
racesWithHiddenState=非表示ステータスのレース
|
||||
mediaDateFormatError=日付書式が無効です。使用: {0}
|
||||
selectedCompetitors=選択された競技者
|
||||
@@ -801,19 +789,6 @@ importSuccessOverwriteInfo=以下のレガッタを上書きするには、以
|
||||
regattaOverviewConfiguration=レガッタ概要設定
|
||||
firstRaceIsNonDiscardableCarryForward=取消不可の持ち越しがあるスタート
|
||||
addReplicationMaster=複製マスタサーバに接続
|
||||
connect=接続
|
||||
connectToMaster=マスタに接続
|
||||
exchangeHost=メッセージングホスト名
|
||||
explainExchangeHostName=メッセージキューを実行中のホスト名です。
|
||||
explainReplicationHostname=複製マスタを実行中のホスト名です。
|
||||
explainReplicationExchangeName=エクスチェンジキューの名称です。マスタで設定されたものと同じでなければなりません。
|
||||
explainReplicationExchangePort=メッセージングエクスチェンジキューのポートです。これは初期ロード後の全データに使用されます。
|
||||
explainReplicationServletPort=この複製登録し、初期ロードを受け取るための接続に使用されるサーブレットポート番号です。
|
||||
explainReplicasRegistered=登録された複製 (このサーバがマスタ):
|
||||
explainConnectionsToMaster=マスタへの接続 (このサーバが複製):
|
||||
explainNoConnectionsToMaster=マスタサーバへの接続が設定されていません。マスタへの接続ボタンをクリックして設定してください。
|
||||
explainNoConnectionsFromReplicas=複製からの接続が見つかりませんでした。複製の接続はその管理コンソールを使用して行うことができます。
|
||||
stopConnectionToMaster=複製の停止
|
||||
asLink=リンクとして
|
||||
noStarttimeAnnouncedYet=保留
|
||||
raceIsRunning=実行中
|
||||
@@ -824,9 +799,6 @@ raceIsInStartphase=スタートフェーズ
|
||||
generalRecall=リコール生成
|
||||
startPostponed=延期
|
||||
raceAbandoned=中止
|
||||
stopAllReplicas=すべての複製への接続をドロップ (危険です)
|
||||
warningServerIsReplica=注意: このサーバは複製となるよう設定されています。何も変更しないでください。そうしないと、予想しない動作がもたらされます。
|
||||
dropReplicaConnection=接続のドロップ
|
||||
timePanelName=時間管理
|
||||
competitorFilterExplanation=このフィルタは基準に一致するすべての競技者を表示します:
|
||||
protestTime=抗議時間
|
||||
@@ -842,7 +814,6 @@ startAt=スタート時刻
|
||||
finishAt=フィニッシュ時刻
|
||||
protestStartsAt=抗議開始時刻
|
||||
protestEndsAt=抗議最終時刻
|
||||
unknown=不明
|
||||
raceLog=レースログ
|
||||
regattaLog=レガッタログ
|
||||
refreshRaceLog=レースログのリフレッシュ
|
||||
@@ -1040,7 +1011,6 @@ errorTryingToRemoveIgtimiAccount=ユーザ {0} の Igtimi アカウントを削
|
||||
successfullyRemoveIgtimiAccount=ユーザ {0} の Igtimi アカウントが削除されました
|
||||
eMailMustNotBeEmpty=電子メールアドレスは空であってはなりません
|
||||
emailAddress=電子メールアドレス
|
||||
password=パスワード
|
||||
searchTag=検索タグ
|
||||
doYouReallyWantToRemoveLeaderboard=リーダーボード ''{0}'' を削除しますか。
|
||||
metaLeaderboardCannotBeChanged=これはメタリーダーボードです。ここで変更することはできません。
|
||||
@@ -1174,7 +1144,6 @@ showSimulationOverlay=シミュレーションオーバーレイ表示
|
||||
simulationLegendTooltip=時間比較:\nレースは GPS から計測されたレグ持続時間、全知は風についてすべてわかっている場合のコース、オポチュニストは次マークまでの距離を計測するためにターンする場合のコース、ワンターナーは風についてすべてわかっていて 1 ターンするだけの場合のコース
|
||||
racesScored=スコアが記録されたレース
|
||||
racesScoredTooltip=このリーダーボードにおいて競技者が完了したか、得点を獲得したレースの数
|
||||
averageNumberOfOperationsPerMessage=メッセージごとの操作の平均数
|
||||
showUncorrectedTotalPoints=未修正総得点表示
|
||||
setStartTimeReceived=設定済スタート時刻を受信
|
||||
setStartTimeReceivedDescription=選択した TrackedRace の startTimeReceived が指定した値に設定されます。値を空白のままにすると、現在設定されている startTimeReceived は削除されます。
|
||||
@@ -1205,10 +1174,6 @@ registrationLinkUrlExplain=URL をコピーして、それを招待にペース
|
||||
registrationLinkUrlCopy=クリップボードにコピー
|
||||
registrationLinkShare=共有
|
||||
explainRegistrationLinkDialog=オープンレガッタの競技者は、登録リンクを開くか、スマートフォンで下記の QR コードをスキャンして、自分自身で登録を行うことができます。
|
||||
numberOfQueueMessagesSent=送信済キューメッセージ数
|
||||
totalSize=合計サイズ
|
||||
averageMessageSize=メッセージごとの平均サイズ (バイト)
|
||||
totalNumberOfOperations=操作の合計数
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=レグをまだ競技中の現対地速力 (kt)、レグ完了時の平均対地速力
|
||||
currentOrAverageSpeedOverGroundInKnots=SOG (終了時 ∅)
|
||||
connectors=コネクタ
|
||||
@@ -1308,11 +1273,6 @@ sendingMailsFailed=メール送信に失敗
|
||||
sendingMailsSuccessful=電子メールを正常に送信済
|
||||
selectEventForInvitation=招待のイベント選択
|
||||
imageURL=画像 URL
|
||||
upload=アップロード
|
||||
removeResult=操作の削除: {0} {1}
|
||||
uploadSuccessful=正常にアップロード済
|
||||
fileUploadResult=ファイルアップロード: {0} {1}\nエラー発生の場合は、ファイルストレージサービスが適切に設定されていることを確認してください。
|
||||
removeUploadedFile=アップロード済ファイルの削除
|
||||
showCompetitorBoatColumn=競技者の艇
|
||||
showCompetitorShortNameColumn=競技者の名前 (短)
|
||||
showCompetitorShortNameColumnTooltip=名前 (短) に加えて国旗または競技者画像を表示します。競技者画像が利用可能な場合はそれを国旗よりも優先させます。"{0}" が設定されている場合、両方のアイコンが表示されます。
|
||||
@@ -1511,7 +1471,6 @@ imageSizeError={0} 画像のサイズが適合しません。幅は {1} と {2}
|
||||
imageToSmallError={0} 画像のサイズが適合しません。幅は少なくとも {1} px、高さは少なくとも {2} px はある必要があります。
|
||||
imageResizeError={0} 画像のリサイズが機能しません。幅/高さの比率が {1} と {2} の間である必要がありますが、実際には {3} となっています。
|
||||
couldNotRetrieveImageSizeYet=画像の幅と高さをまだ取得することができません。
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=すべての使用権を持っているコンテンツのみをアップロードしてください。コンテンツは途中から切れてしまう場合があることを忘れないでください。動画コンテンツに YouTube URL を使用することが通常は可能です。
|
||||
registerCompetitorsOnRace=レースへの競技者の登録 (例: フリート分割レースに対して)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=レースに競技者を直接に登録しますか
|
||||
doYouWantToDisableCompetitorsRegistrationsOnTheRace=レースへの競技者登録を無効にしますか
|
||||
@@ -1588,10 +1547,8 @@ noEventsYet=イベントがまだありません。
|
||||
selectCompetitorImportProvider=競技者インポートプロバイダを選択してください...
|
||||
selectResultImportProvider=結果インポートプロバイダを選択してください...
|
||||
buildVersion=ビルドバージョン
|
||||
serverInformation=サーバ情報
|
||||
serverConfiguration=サーバ設定
|
||||
standaloneServer=スタンドアロンサーバ
|
||||
send=送信...
|
||||
passId=パス ID
|
||||
createdAt=登録時刻
|
||||
logicalTimepoint=論理タイムポイント
|
||||
@@ -1781,8 +1738,6 @@ errorLoadingCompetitorImportProviders=競技者インポートプロバイダの
|
||||
errorLoadingCompetitorImportDescriptors=競技者インポート記述子のロードでエラーが発生: {0}
|
||||
couldNotSaveCompetitorRegistrations=競技者登録を保存できませんでした: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=たとえば、レース+フリート名を使用
|
||||
version=バージョン: {0}
|
||||
replicables=オブジェクトの複製
|
||||
set=セット
|
||||
eventRegattaRacesLegendWind=風向風速センサー数
|
||||
eventRegattaRacesLegendVideo=動画ストリーム数
|
||||
@@ -2133,7 +2088,6 @@ swissTimingUpdatePassword=更新送信のパスワード
|
||||
allowResizing=リサイズを許可
|
||||
resizeSuccessfull=リサイズが正常に終了しました
|
||||
resizeUnsuccessful=リサイズが可能でありません: {0}
|
||||
setUpStorageService=最初にファイルストレージサービスを設定してください
|
||||
automaticResizeNeedsStorageService=自動リサイズには機能している FileStorageService が必要です。
|
||||
qrCodeBoatInviteTitle=レガッタ {1} の艇 {0} の追跡に案内されました
|
||||
qrCodeMarkInviteTitle=レガッタ {1} のマーク {0} の追跡に案内されました
|
||||
@@ -2206,9 +2160,7 @@ tagCopyToClipBoard=クリップボードにコピー
|
||||
tagBrowseAndUploadImage=ブラウズしてアップロード
|
||||
tagCopiedLinkSuccessfully=クリップボードにリンクがコピーされました
|
||||
tagCopiedLinkNotSuccessfully=ブラウザがクリップボードへのコピーをサポートしていません。マニュアルでリンクをコピーしてください
|
||||
username=ユーザ名
|
||||
confirm=確認
|
||||
cancel=取消
|
||||
close=終了
|
||||
boatClasses=艇種
|
||||
sailorProfiles=セーラープロファイル
|
||||
@@ -2251,9 +2203,6 @@ warningSailInsightVersion=このサーバは SAP Sail InSight 1 で使用する
|
||||
invalidState=無効なステータス
|
||||
doYouReallyWantToRemoveDeviceConfiguration=デバイス設定 {0} を削除しますか
|
||||
errorFetchingSimulationData=シミュレーションデータのフェッチ時にエラーが発生しました: {0}。自分のユーザアカウントでサインインしているか確認してください。
|
||||
usernameAndPasswordMustBothBeSet=ユーザ名とパスワードは両方とも入力するか、両方とも空である必要があります
|
||||
explainUserName=マスタ上で認証のために使用するユーザ名
|
||||
explainPassword=マスタ上で認証のために使用するパスワード
|
||||
tracTracConnection=TracTrac 接続
|
||||
addTracTracConnection=TracTrac 接続の追加
|
||||
filterTracTracConnections=TracTrac 接続のフィルタリング
|
||||
|
||||
-51
@@ -12,7 +12,6 @@ listRegattas=Listar regatas
|
||||
wind=Vento
|
||||
maneuverType=Manobra
|
||||
windPanelLabel=Este é o painel eólico que até o momento está completamente vazio.
|
||||
refresh=Atualizar
|
||||
removeNumber=Remover ({0})
|
||||
windSource=Origem do vento
|
||||
dampeningInterval=Intervalo de atenuação
|
||||
@@ -132,7 +131,6 @@ storedPort=Dados armazenados de porta
|
||||
liveUri=URI ao vivo
|
||||
storedUri=URI armazenado
|
||||
eventsConnectedTo=Eventos rastreados atualmente
|
||||
hostname=Nome do host
|
||||
declinationCheckbox=Corrigir rumo do vento por inclinação
|
||||
raceStartTrackingColumn=Rastreamento iniciado
|
||||
pauseAutomaticRefresh=Interromper atualização automática
|
||||
@@ -363,24 +361,17 @@ degreesBoatToTheWind=Ângulo em relação ao vento
|
||||
racesInLeaderboard=Corridas no painel de classificação
|
||||
leaderboardsInGroup=Painéis de classificação no grupo
|
||||
replication=Replicação
|
||||
errorFetchingReplicaData=Erro ao chamar dados de replicação: {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=∅ XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=O desvio lateral médio do segmento da grande volta que liga o início da perna ao fim da perna; exibe a média após a perna e o valor atual durante a perna.
|
||||
averageSignedCrossTrackErrorInMeters=∅ XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=A posição média no percurso como uma distância assinalada a partir da linha do meio do percurso; 0 significa a linha do meio do percurso; os valores negativos significam o lado esquerdo, os valores positivos significam o lado direito; exibe a média após a perna e o valor atual durante a perna.
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=O desvio lateral absoluto médio dos segmentos da grande volta que ligam o início da perna ao fim da perna para todas as pernas de contravento desta corrida, ignorando o lado da linha do meio do percurso em que está o competidor
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=O desvio lateral médio assinalado dos segmentos da grande volta que ligam o início da perna ao fim da perna para todas as pernas de contravento desta corrida; os valores negativos significam à esquerda da linha do meio do percurso, os valores positivos significam à direita.
|
||||
enterMaster=Nome do host de instância mestre
|
||||
errorStartingReplication=Erro ao iniciar replicação a partir do host {0}/trocar {1}: {2}
|
||||
helpLines=Linhas de ajuda
|
||||
startLine=Linha de partida
|
||||
finishLine=Linha de chegada
|
||||
advantageLine=Linha de vantagem
|
||||
courseMiddleLine=Linha do meio do percurso
|
||||
messagingPortNumber=Número de porta de mensagens (0 para padrão)
|
||||
servletPortNumber=Número de porta de servlet
|
||||
registeredAt=Registrado às {0}
|
||||
replicatingFromMaster=Replicando a partir do mestre {0}:{2}, porta de mensagens {3}:{1}, trocar {4}, replicando {5}
|
||||
showWindSpeedSeries=Visualizar dados de velocidade do vento
|
||||
showWindDirectionSeries=Visualizar dados de direções do vento
|
||||
fleet=Flotilha
|
||||
@@ -422,7 +413,6 @@ boatClassDoesNotMatchSelectedRegatta=As corridas selecionadas contêm classes de
|
||||
regattaExistForSelectedBoatClass=Existe pelo menos uma regata para as classes de barcos selecionadas. Criar regatas padrão para essas corridas?
|
||||
addRegatta=Adicionar regata...
|
||||
importRegattas=Importar regatas...
|
||||
exchangeName=Trocar nome
|
||||
course=Percurso
|
||||
courseLayout=Layout do percurso
|
||||
buoy=Boia
|
||||
@@ -712,7 +702,6 @@ starboardSide=Boreste
|
||||
pleaseEnterANumber=Insira um número.
|
||||
competitorsFilter=Filtro de competidores
|
||||
flagStatus=Status de bandeira
|
||||
additionalInformation=Info
|
||||
windFixListingDescription=Pontos fixos do vento (primeiros 3, últimos 3, valores verdadeiros)
|
||||
noWindFixesAvailable=Nenhum ponto fixo de vento disponível.
|
||||
distanceToStarboardEndOfStartlineWhenPassingStart=Distância para o lado do boreste da linha na partida
|
||||
@@ -734,7 +723,6 @@ waypoints=Waypoints
|
||||
disableRaceFilter=Desativar filtro
|
||||
enableRaceFilter=Ativar filtro
|
||||
raceStatusColumn=Status de corrida
|
||||
loading=Carregando (com uma conexão à Internet lenta, isto pode demorar alguns minutos)...
|
||||
racesWithHiddenState=Corridas com status OCULTO
|
||||
mediaDateFormatError=Formato de data inválido. Utilizar: {0}
|
||||
selectedCompetitors=Competidores selecionados
|
||||
@@ -801,19 +789,6 @@ importSuccessOverwriteInfo=Foi necessário substituir as seguintes regatas, é n
|
||||
regattaOverviewConfiguration=Configuração de síntese de regata
|
||||
firstRaceIsNonDiscardableCarryForward=Começa com transferência não descartável
|
||||
addReplicationMaster=Conectar ao servidor mestre de replicação
|
||||
connect=Conectar
|
||||
connectToMaster=Conectar ao mestre
|
||||
exchangeHost=Nome do host de mensagens
|
||||
explainExchangeHostName=Nome do host onde a fila de mensagens está sendo executada.
|
||||
explainReplicationHostname=Nome do host onde o mestre de replicação está sendo executado.
|
||||
explainReplicationExchangeName=O nome da fila de troca. Este deve ser o mesmo configurado no mestre.
|
||||
explainReplicationExchangePort=A porta da fila de troca de mensagens. Esta é utilizada para todos os dados após o carregamento inicial.
|
||||
explainReplicationServletPort=Número de porta de servlet que é utilizado para conexão para registrar esta réplica e receber o carregamento inicial.
|
||||
explainReplicasRegistered=Réplicas registradas (este servidor é o mestre):
|
||||
explainConnectionsToMaster=Conexões a um mestre (este servidor é uma réplica):
|
||||
explainNoConnectionsToMaster=Nenhuma conexão a um servidor mestre configurado. Clique no botão Conectar a mestre para configurar uma.
|
||||
explainNoConnectionsFromReplicas=Nenhuma conexão de uma réplica encontrada. Você pode conectar as réplicas utilizando sua console de administração.
|
||||
stopConnectionToMaster=Parar replicação
|
||||
asLink=Como link
|
||||
noStarttimeAnnouncedYet=Pendente
|
||||
raceIsRunning=Em competição
|
||||
@@ -824,9 +799,6 @@ raceIsInStartphase=Fase inicial
|
||||
generalRecall=Chamada geral
|
||||
startPostponed=Retardado
|
||||
raceAbandoned=Anulado
|
||||
stopAllReplicas=Desligar conexão a todas as réplicas (perigoso!)
|
||||
warningServerIsReplica=ATENÇÃO: este servidor está configurado para ser uma réplica. NÃO modifique nada ou isso terá consequências desconhecidas!
|
||||
dropReplicaConnection=Desligar conexão
|
||||
timePanelName=Controle do tempo
|
||||
competitorFilterExplanation=O filtro exibirá todos os competidores correspondentes aos critérios:
|
||||
protestTime=Tempo de protesto
|
||||
@@ -842,7 +814,6 @@ startAt=Partida às
|
||||
finishAt=Chegada às
|
||||
protestStartsAt=Protesto começa às
|
||||
protestEndsAt=Protesto termina às
|
||||
unknown=Desconhecido
|
||||
raceLog=Registro da corrida
|
||||
regattaLog=Registro da corrida
|
||||
refreshRaceLog=Atualizar registro da corrida
|
||||
@@ -1040,7 +1011,6 @@ errorTryingToRemoveIgtimiAccount=Erro ao tentar remover conta de Igtimi para usu
|
||||
successfullyRemoveIgtimiAccount=Conta de Igtimi removida com êxito para usuário {0}
|
||||
eMailMustNotBeEmpty=O endereço de e-mail não deve estar em branco
|
||||
emailAddress=endereço de e-mail
|
||||
password=Senha
|
||||
searchTag=Etiqueta de pesquisa
|
||||
doYouReallyWantToRemoveLeaderboard=Você tem a certeza que quer remover o painel de classificação: ''{0}''?
|
||||
metaLeaderboardCannotBeChanged=Este é um painel de classificação meta. Não é possível modificá-lo aqui.
|
||||
@@ -1174,7 +1144,6 @@ showSimulationOverlay=Visualizar sobreposição de simulação
|
||||
simulationLegendTooltip=Comparação de tempos:\na corrida é a duração da perna medida por GPS, onisciente é o percurso caso se soubesse tudo sobre o vento, oportunista são os percursos caso se decida efetuar uma volta medindo a distância até a próxima marca, 1 volta são os percursos caso se soubesse tudo sobre o vento e se efetue somente uma volta
|
||||
racesScored=Corridas pontuadas
|
||||
racesScoredTooltip=Número de corridas que o competidor concluiu ou nas quais obteve uma pontuação neste painel de classificação.
|
||||
averageNumberOfOperationsPerMessage=Número médio de operações por mensagem
|
||||
showUncorrectedTotalPoints=Visualizar total de pontos não corrigidos
|
||||
setStartTimeReceived=Definir hora de partida recebida
|
||||
setStartTimeReceivedDescription=Define a hora de partida recebida da corrida rastreada selecionada para o valor fornecido. Deixe o valor em branco para remover a hora de partida recebida definida atualmente.
|
||||
@@ -1205,10 +1174,6 @@ registrationLinkUrlExplain=Você pode copiar o URL e colá-lo em seu convite.
|
||||
registrationLinkUrlCopy=Copiar para o clipboard
|
||||
registrationLinkShare=Compartilhar
|
||||
explainRegistrationLinkDialog=Os competidores para regatas abertas podem se registrar a eles próprios abrindo o link de registro ou digitalizando o código QR abaixo com seu smartphone.
|
||||
numberOfQueueMessagesSent=Número de mensagens em fila enviadas
|
||||
totalSize=Tamanho total
|
||||
averageMessageSize=Tamanho médio por mensagem em bytes
|
||||
totalNumberOfOperations=Número total de operações
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=Velocidade atual no fundo em nós enquanto a perna está em curso; velocidade média no fundo quando a perna está concluída
|
||||
currentOrAverageSpeedOverGroundInKnots=SOG (∅ no fim)
|
||||
connectors=Conectores
|
||||
@@ -1308,11 +1273,6 @@ sendingMailsFailed=Falha no envio de e-mails
|
||||
sendingMailsSuccessful=E-mails enviados com êxito
|
||||
selectEventForInvitation=Selecionar evento para convite
|
||||
imageURL=URL de imagem
|
||||
upload=Carregar
|
||||
removeResult=Remover operação: {0} {1}
|
||||
uploadSuccessful=Carregamento efetuado com êxito
|
||||
fileUploadResult=Carregamento de arquivo: {0} {1}.\nEm caso de erro, verifique se seu serviço de armazenamento de arquivos está configurado de modo apropriado.
|
||||
removeUploadedFile=Remover arquivo carregado
|
||||
showCompetitorBoatColumn=Barco do competidor
|
||||
showCompetitorShortNameColumn=Nome abreviado do competidor
|
||||
showCompetitorShortNameColumnTooltip=Exibe o nome abreviado mais a bandeira de nacionalidade ou a imagem do competidor. Se disponível, é priorizada uma imagem do competidor em relação a uma bandeira da nacionalidade. Se "{0}" estiver definido, ambos os ícones serão exibidos.
|
||||
@@ -1511,7 +1471,6 @@ imageSizeError=O tamanho da imagem {0} não é adequado. A largura deve estar en
|
||||
imageToSmallError=O tamanho da imagem {0} não é adequado. A largura deveser pelo menos {1} px e a altura {2} px no mínimo.
|
||||
imageResizeError=O redimensionamento da imagem {0} não funciona. A relação largura/altura deve estar entre {1} e {2}, mas é realmente {3}.
|
||||
couldNotRetrieveImageSizeYet=Ainda não foi possível recuperar largura e altura da imagem.
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=Carregue somente conteúdo para o qual você tenha todos os direitos de utilização. Lembre-se que o conteúdo pode ser cortado. Normalmente é possível utilizar URLs do YouTube para conteúdo de vídeo.
|
||||
registerCompetitorsOnRace=Registrar competidores na corrida (por exemplo, para corridas de flotilhas divididas)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=Você quer registrar competidores diretamente na corrida?
|
||||
doYouWantToDisableCompetitorsRegistrationsOnTheRace=Você quer desativar os registros dos competidores na corrida?
|
||||
@@ -1588,10 +1547,8 @@ noEventsYet=Ainda não existem eventos.
|
||||
selectCompetitorImportProvider=Selecione um fornecedor de importação do competidor...
|
||||
selectResultImportProvider=Selecione um fornecedor de importação de resultados...
|
||||
buildVersion=Criar versão
|
||||
serverInformation=Informações do servidor
|
||||
serverConfiguration=Configuração do servidor
|
||||
standaloneServer=Servidor independente
|
||||
send=Enviar...
|
||||
passId=ID de passagem
|
||||
createdAt=Criado às
|
||||
logicalTimepoint=Data/hora lógica
|
||||
@@ -1781,8 +1738,6 @@ errorLoadingCompetitorImportProviders=Erro ao carregar fornecedores de importaç
|
||||
errorLoadingCompetitorImportDescriptors=Erro ao carregar descritores de importação de competidor: {0}
|
||||
couldNotSaveCompetitorRegistrations=Não foi possível gravar registros de competidores: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Utilizar, por exemplo, corrida + nome da flotilha
|
||||
version=Versão: {0}
|
||||
replicables=Replicando objetos
|
||||
set=Curso
|
||||
eventRegattaRacesLegendWind=# sensores de vento
|
||||
eventRegattaRacesLegendVideo=# fluxos de vídeo
|
||||
@@ -2133,7 +2088,6 @@ swissTimingUpdatePassword=Senha para enviar atualizações
|
||||
allowResizing=Permitir redimensionamento
|
||||
resizeSuccessfull=Redimensionamento concluído com êxito
|
||||
resizeUnsuccessful=Redimensionamento não possível: {0}
|
||||
setUpStorageService=Configure primeiro um serviço de armazenamento de arquivo
|
||||
automaticResizeNeedsStorageService=O redimensionamento automático precisa de um FileStorageService que funcione.
|
||||
qrCodeBoatInviteTitle=Você está convidado a rastrear o barco {0} para a regata {1}
|
||||
qrCodeMarkInviteTitle=Você está convidado a rastrear a marca {0} para a regata {1}
|
||||
@@ -2206,9 +2160,7 @@ tagCopyToClipBoard=Copiar para o clipboard
|
||||
tagBrowseAndUploadImage=Navegar e carregar
|
||||
tagCopiedLinkSuccessfully=Link copiado com êxito para o clipboard.
|
||||
tagCopiedLinkNotSuccessfully=Seu browser não suporta a cópia para o clipboard. Copie o link manualmente.
|
||||
username=Nome do usuário
|
||||
confirm=Confirmar
|
||||
cancel=Cancelar
|
||||
close=Fechar
|
||||
boatClasses=Classes de barcos
|
||||
sailorProfiles=Perfis de velejadores
|
||||
@@ -2251,9 +2203,6 @@ warningSailInsightVersion=O servidor está configurado para utilização com o S
|
||||
invalidState=Status inválido
|
||||
doYouReallyWantToRemoveDeviceConfiguration=Você quer realmente remover a configuração do dispositivo {0}?
|
||||
errorFetchingSimulationData=Ocorreu um erro ao chamar dados de simulação: {0}. Assegure que está conectado com sua conta de usuário.
|
||||
usernameAndPasswordMustBothBeSet=Nome de utilizador e senha devem estar ambos preenchidos ou vazios
|
||||
explainUserName=Nome de usuário para utilizar para autenticação no mestre
|
||||
explainPassword=Senha para utilizar para autenticação no mestre
|
||||
tracTracConnection=Conexão TracTrac
|
||||
addTracTracConnection=Adicionar conexão TracTrac
|
||||
filterTracTracConnections=Filtrar conexões TracTrac
|
||||
|
||||
-51
@@ -12,7 +12,6 @@ listRegattas=Список регат
|
||||
wind=Ветер
|
||||
maneuverType=Маневр
|
||||
windPanelLabel=Это панель ветров, которая пока что совсем пуста.
|
||||
refresh=Обновить
|
||||
removeNumber=Удалить ({0})
|
||||
windSource=Источник ветра
|
||||
dampeningInterval=Интервал смягчения
|
||||
@@ -132,7 +131,6 @@ storedPort=Порт хранимых данных
|
||||
liveUri=URI оперативных данных
|
||||
storedUri=URI хранимых данных
|
||||
eventsConnectedTo=Отслеживаемые события
|
||||
hostname=Имя хоста
|
||||
declinationCheckbox=Корректировать направление ветра по отклонению
|
||||
raceStartTrackingColumn=Отслеживание начато
|
||||
pauseAutomaticRefresh=Приостановить автоматическое обновление
|
||||
@@ -363,24 +361,17 @@ degreesBoatToTheWind=Угол к ветру
|
||||
racesInLeaderboard=Гонки в таблице лидеров
|
||||
leaderboardsInGroup=Таблицы лидеров в группе
|
||||
replication=Репликация
|
||||
errorFetchingReplicaData=Ошибка извлечения данных реплики: {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=∅ XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=Среднее боковое уклонение к большому круговому сегменту, соединяющему начало отрезка с концом отрезка; показывает среднее значение после прохождения отрезка и текущее значение в отрезке.
|
||||
averageSignedCrossTrackErrorInMeters=∅ XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=Средняя позиция на курсе как расстояние (со знаком) от средней линии курса; отрицательные значения означают уклонение влево, положительные — вправо; показывает среднее значение после прохождения отрезка и текущее значение в отрезке.
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=Среднее абсолютное боковое уклонение к большим круговым сегментам, соединяющим начало отрезка с концом отрезка, для всех наветренных отрезках данной гонки без учета стороны участника от средней линии курса
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=Боковое уклонение (со знаком) к большим круговым сегментам, соединяющим начало отрезка с концом отрезка, для всех наветренных отрезков данной гонки; отрицательные значения означают уклонение влево от средней линии курса, положительные — вправо.
|
||||
enterMaster=Имя хоста главного экземпляра
|
||||
errorStartingReplication=Ошибка запуска репликации с хоста {0} / Exchange {1}: {2}
|
||||
helpLines=Вспомогательные линии
|
||||
startLine=Стартовая линия
|
||||
finishLine=Финишная линия
|
||||
advantageLine=Лини преимущества
|
||||
courseMiddleLine=Средняя линия курса
|
||||
messagingPortNumber=Номер порта обмена сообщениями (0 по умолчанию)
|
||||
servletPortNumber=Номер порта сервлета
|
||||
registeredAt=Зарегистрировано в {0}
|
||||
replicatingFromMaster=Репликация с главного экземпляра {0}:{2}, порт обмена сообщениями {3}:{1}, Exchange {4}, репликация {5}
|
||||
showWindSpeedSeries=Показать данные о скорости ветра
|
||||
showWindDirectionSeries=Показать данные о направлениях ветра
|
||||
fleet=Флот
|
||||
@@ -422,7 +413,6 @@ boatClassDoesNotMatchSelectedRegatta=Выбранные гонки содерж
|
||||
regattaExistForSelectedBoatClass=Для выбранных классов лодок имеется минимум одна регата. Создать регаты по умолчанию для соответствующих гонок?
|
||||
addRegatta=Добавить регату...
|
||||
importRegattas=Импортировать регаты...
|
||||
exchangeName=Имя Exchange
|
||||
course=Курс
|
||||
courseLayout=Схема курса
|
||||
buoy=Буй
|
||||
@@ -712,7 +702,6 @@ starboardSide=Правый
|
||||
pleaseEnterANumber=Введите число.
|
||||
competitorsFilter=Фильтр участников
|
||||
flagStatus=Статус флага
|
||||
additionalInformation=Инфо
|
||||
windFixListingDescription=Замеры ветра (первые 3, последние 3, истинные значения)
|
||||
noWindFixesAvailable=Нет доступных замеров ветра.
|
||||
distanceToStarboardEndOfStartlineWhenPassingStart=До правой стороны линии при старте
|
||||
@@ -734,7 +723,6 @@ waypoints=Путевые точки
|
||||
disableRaceFilter=Отключить фильтр
|
||||
enableRaceFilter=Включить фильтр
|
||||
raceStatusColumn=Статус гонки
|
||||
loading=Загрузка (при медленном подключении к Интернету может занять несколько минут)...
|
||||
racesWithHiddenState=Гонки с состоянием СКРЫТО
|
||||
mediaDateFormatError=Недопустимый формат даты. Используйте формат: {0}
|
||||
selectedCompetitors=Выбранные участники
|
||||
@@ -801,19 +789,6 @@ importSuccessOverwriteInfo=Следующие регаты перезаписа
|
||||
regattaOverviewConfiguration=Конфигурация обзора регаты
|
||||
firstRaceIsNonDiscardableCarryForward=Начинается с неисключаемого переноса
|
||||
addReplicationMaster=Подключиться к главному серверу репликации
|
||||
connect=Подключиться
|
||||
connectToMaster=Подключиться к главному серверу
|
||||
exchangeHost=Имя хоста обмена сообщениями
|
||||
explainExchangeHostName=Имя хоста, на котором выполняется очередь сообщений.
|
||||
explainReplicationHostname=Имя хоста, на котором выполняется главный сервер репликации.
|
||||
explainReplicationExchangeName=Имя очереди Exchange. Должно совпадать с указанным на главном сервере.
|
||||
explainReplicationExchangePort=Порт очереди обмена сообщениями Exchange. Используется для всех данных после начальной загрузки.
|
||||
explainReplicationServletPort=Номер порта сервлета, используемый для подключения для регистрации данной реплики и получения начальной загрузки.
|
||||
explainReplicasRegistered=Зарегистрированные реплики (это главный сервер):
|
||||
explainConnectionsToMaster=Подключение к главному серверу (это сервер реплики):
|
||||
explainNoConnectionsToMaster=Подключения к главному серверу не настроены. Нажмите кнопку "Подключиться к главному серверу", чтобы настроить подключение.
|
||||
explainNoConnectionsFromReplicas=Подключения от реплик не найдены. Реплики можно подключить с помощью их консоли администрирования.
|
||||
stopConnectionToMaster=Остановить репликацию
|
||||
asLink=Как ссылка
|
||||
noStarttimeAnnouncedYet=Ожидание
|
||||
raceIsRunning=Выполнение
|
||||
@@ -824,9 +799,6 @@ raceIsInStartphase=Стартовая фаза
|
||||
generalRecall=Общий отзыв
|
||||
startPostponed=Отложено
|
||||
raceAbandoned=Отменено
|
||||
stopAllReplicas=Сбросить подключение ко всем репликам (Опасно!)
|
||||
warningServerIsReplica=ВНИМАНИЕ: этот сервер настроен как реплика. НЕ изменяйте ничего, иначе возможны непредвиденные последствия!
|
||||
dropReplicaConnection=Сбросить подключение
|
||||
timePanelName=Управление временем
|
||||
competitorFilterExplanation=Фильтр покажет всех участников, отвечающих следующим критериям:
|
||||
protestTime=Время протеста
|
||||
@@ -842,7 +814,6 @@ startAt=Старт в
|
||||
finishAt=Финиш в
|
||||
protestStartsAt=Протест начинается в
|
||||
protestEndsAt=Протест заканчивается в
|
||||
unknown=Неизвестно
|
||||
raceLog=Журнал гонки
|
||||
regattaLog=Журнал регаты
|
||||
refreshRaceLog=Обновить журнал гонки
|
||||
@@ -1040,7 +1011,6 @@ errorTryingToRemoveIgtimiAccount=Ошибка при попытке удалит
|
||||
successfullyRemoveIgtimiAccount=Успешно удалена учетная запись Igtimi для пользователя {0}
|
||||
eMailMustNotBeEmpty=Адрес эл. почты не должен быть пустым
|
||||
emailAddress=адрес эл. почты
|
||||
password=Пароль
|
||||
searchTag=Тег поиска
|
||||
doYouReallyWantToRemoveLeaderboard=Действительно удалить таблицу лидеров ''{0}''?
|
||||
metaLeaderboardCannotBeChanged=Это метатаблица лидеров. Изменить ее здесь невозможно.
|
||||
@@ -1174,7 +1144,6 @@ showSimulationOverlay=Показать наложение симуляции
|
||||
simulationLegendTooltip=Сравнение времени:\nгонка — это продолжительность отрезка, измеренная по данным GPS, "Информированный" — курс при наличии всех сведений о ветре, "Ситуативный" — курсы при принятии решения сделать поворот для измерения дистанции до следующей отметки, "1 поворот" — курсы с одним поворотом при наличии всех сведений о ветре
|
||||
racesScored=Оцененные гонки
|
||||
racesScoredTooltip=Число гонок, которые участник завершил или за которые имеет оценки в данной таблице лидеров.
|
||||
averageNumberOfOperationsPerMessage=Среднее число операций на сообщение
|
||||
showUncorrectedTotalPoints=Показать неисправленный общий балл
|
||||
setStartTimeReceived=Установить полученное время старта
|
||||
setStartTimeReceivedDescription=Устанавливает введенное значение для полученного времени старта выбранной отслеживаемой гонки. Оставьте значение пустым, чтобы удалить текущее установленное полученное время старта.
|
||||
@@ -1205,10 +1174,6 @@ registrationLinkUrlExplain=Вы можете скопировать этот URL
|
||||
registrationLinkUrlCopy=Копировать в буфер обмена
|
||||
registrationLinkShare=Поделиться
|
||||
explainRegistrationLinkDialog=Участники открытых регат могут зарегистрироваться, открыв ссылку для регистрации или отсканировав QR-код ниже со своего смартфона.
|
||||
numberOfQueueMessagesSent=Число отправленных сообщений очереди
|
||||
totalSize=Общий размер
|
||||
averageMessageSize=Средний размер сообщения в байтах
|
||||
totalNumberOfOperations=Общее число операций
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=Текущая скорость относительно грунта в узлах во время прохождения отрезка; средняя скорость относительно грунта по завершении отрезка
|
||||
currentOrAverageSpeedOverGroundInKnots=SOG (∅ в конце)
|
||||
connectors=Соединители
|
||||
@@ -1308,11 +1273,6 @@ sendingMailsFailed=Сбой отправки сообщений
|
||||
sendingMailsSuccessful=Сообщения эл. почты успешно отправлены
|
||||
selectEventForInvitation=Выберите событие для приглашения
|
||||
imageURL=URL-адрес изображения
|
||||
upload=Отправить
|
||||
removeResult=Удалить операцию: {0} {1}
|
||||
uploadSuccessful=Отправлено успешно
|
||||
fileUploadResult=Отправка файла: {0} {1}.\nВ случае ошибки проверьте правильность конфигурации службы хранилища файлов.
|
||||
removeUploadedFile=Удалить отправленный файл
|
||||
showCompetitorBoatColumn=Лодка участника
|
||||
showCompetitorShortNameColumn=Краткое имя участника
|
||||
showCompetitorShortNameColumnTooltip=Показывает краткое имя плюс государственный флаг или изображение участника. Изображение участника, при наличии, имеет приоритет над государственным флагом. Если установлен параметр "{0}", будут отображены оба значка.
|
||||
@@ -1511,7 +1471,6 @@ imageSizeError=Размер изображения {0} не подходит. Ш
|
||||
imageToSmallError=Размер изображения {0} не подходит. Ширина должна быть минимум {1} пикс., а высота минимум {2} пикс.
|
||||
imageResizeError=Изменение размера изображения {0} не работает. Отношение ширины к высоте должно быть между {1} и {2}, сейчас {3}.
|
||||
couldNotRetrieveImageSizeYet=Ширину и высоту изображения еще не удалось извлечь.
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=Выкладывайте только контент, на использование которого у вас есть все права. Не забывайте о возможности кадрировать контент. Для видеоконтента можно использовать ссылки YouTube.
|
||||
registerCompetitorsOnRace=Зарегистрировать участников в гонке (например, для гонок с разделением флота)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=Зарегистрировать участников непосредственно в гонке?
|
||||
doYouWantToDisableCompetitorsRegistrationsOnTheRace=Отключить регистрации участников в гонке?
|
||||
@@ -1588,10 +1547,8 @@ noEventsYet=Событий еще нет.
|
||||
selectCompetitorImportProvider=Выберите поставщика импорта участников...
|
||||
selectResultImportProvider=Выберите поставщика импорта результатов...
|
||||
buildVersion=Версия сборки
|
||||
serverInformation=Информация о сервере
|
||||
serverConfiguration=Конфигурация сервера
|
||||
standaloneServer=Изолированный сервер
|
||||
send=Отправить...
|
||||
passId=PassId
|
||||
createdAt=Создано в
|
||||
logicalTimepoint=Логическая отметка времени
|
||||
@@ -1781,8 +1738,6 @@ errorLoadingCompetitorImportProviders=Ошибка при загрузке по
|
||||
errorLoadingCompetitorImportDescriptors=Ошибка при загрузке дескрипторов импорта участников: {0}
|
||||
couldNotSaveCompetitorRegistrations=Не удалось сохранить регистрации участников: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Используйте, например, гонку + название флота
|
||||
version=Версия: {0}
|
||||
replicables=Репликация объектов
|
||||
set=Набор
|
||||
eventRegattaRacesLegendWind=Датчиков ветра
|
||||
eventRegattaRacesLegendVideo=Видеопотоков
|
||||
@@ -2133,7 +2088,6 @@ swissTimingUpdatePassword=Пароль для отправки обновлен
|
||||
allowResizing=Разрешить изменение размера
|
||||
resizeSuccessfull=Изменение размера завершено
|
||||
resizeUnsuccessful=Изменение размера невозможно: {0}
|
||||
setUpStorageService=Сначала настройте сервис памяти файлов
|
||||
automaticResizeNeedsStorageService=Для автоматического изменения размера требуется работающий сервис памяти файлов (FileStorageService).
|
||||
qrCodeBoatInviteTitle=Вас пригласили отслеживать лодку {0} в регате {1}
|
||||
qrCodeMarkInviteTitle=Вас пригласили отслеживать отметку {0} в регате {1}
|
||||
@@ -2206,9 +2160,7 @@ tagCopyToClipBoard=Копировать в буфер обмена
|
||||
tagBrowseAndUploadImage=Найти и загрузить
|
||||
tagCopiedLinkSuccessfully=Ссылка скопирована в буфер обмена.
|
||||
tagCopiedLinkNotSuccessfully=Ваш браузер не поддерживает копирование в буфер обмена, скопируйте ссылку вручную.
|
||||
username=Имя пользователя
|
||||
confirm=Подтвердить
|
||||
cancel=Отменить
|
||||
close=Закрыть
|
||||
boatClasses=Классы лодок
|
||||
sailorProfiles=Профили участников гонки
|
||||
@@ -2251,9 +2203,6 @@ warningSailInsightVersion=Сервер сконфигурирован для и
|
||||
invalidState=Недействительный статус
|
||||
doYouReallyWantToRemoveDeviceConfiguration=Действительно удалить конфигурацию устройства {0}?
|
||||
errorFetchingSimulationData=Произошла ошибка при вызове данных моделирования: {0}. Убедитесь, что вход выполнен с вашей учетной записью.
|
||||
usernameAndPasswordMustBothBeSet=Имя пользователя и пароль должны быть либо заполненными, либо пустыми
|
||||
explainUserName=Имя пользователя для аутентификации на главном сервере
|
||||
explainPassword=Пароль для аутентификации на главном сервере
|
||||
tracTracConnection=Соединение TracTrac
|
||||
addTracTracConnection=Добавить соединение TracTrac
|
||||
filterTracTracConnections=Фильтр соединений TracTrac
|
||||
|
||||
-51
@@ -12,7 +12,6 @@ listRegattas=比赛清单
|
||||
wind=风力
|
||||
maneuverType=操作
|
||||
windPanelLabel=这是风力面板,目前完全空白。
|
||||
refresh=刷新
|
||||
removeNumber=移除 ({0})
|
||||
windSource=风源
|
||||
dampeningInterval=阻尼间隔
|
||||
@@ -132,7 +131,6 @@ storedPort=端口存储的数据
|
||||
liveUri=实况 URI
|
||||
storedUri=存储的 URI
|
||||
eventsConnectedTo=当前跟踪的活动
|
||||
hostname=主机名称
|
||||
declinationCheckbox=通过偏角更正风方位
|
||||
raceStartTrackingColumn=开始的跟踪
|
||||
pauseAutomaticRefresh=暂停自动刷新
|
||||
@@ -363,24 +361,17 @@ degreesBoatToTheWind=风夹角
|
||||
racesInLeaderboard=积分榜中的比赛轮次
|
||||
leaderboardsInGroup=分组中的积分榜
|
||||
replication=复制
|
||||
errorFetchingReplicaData=获取重复数据出错: {0}
|
||||
averageAbsoluteCrossTrackErrorInMeters=∅ XTE
|
||||
averageAbsoluteCrossTrackErrorInMetersTooltip=连接航段起点和终点的大圆弧的平均交叉轨道误差;显示航段后的平均值和航段中的当前值。
|
||||
averageSignedCrossTrackErrorInMeters=∅ XTE +/-
|
||||
averageSignedCrossTrackErrorInMetersTooltip=赛场中的平均位置 - 从场地中线开始计算的符号距离;0 代表场地中线;负数代表左侧,正数代表右侧。显示航段后的平均值和航段中的当前值。
|
||||
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=所有比赛轮次中迎风航段连接航段起点和终点的大圆弧的平均绝对交叉轨道误差,忽略参赛队所在的场地中线
|
||||
raceAverageSignedCrossTrackErrorInMetersTooltip=所有比赛轮次中迎风航段连接航段起点和终点的大圆弧的符号平均交叉轨道误差;负数代表场地中线的左侧,正数代表右侧。
|
||||
enterMaster=主实例的主机名称
|
||||
errorStartingReplication=从主机{0}/交换机{1}开始复制出错: {2}
|
||||
helpLines=辅助线
|
||||
startLine=起航线
|
||||
finishLine=终点线
|
||||
advantageLine=优势航线
|
||||
courseMiddleLine=场地中线
|
||||
messagingPortNumber=消息传送端口编号(默认为 0)
|
||||
servletPortNumber=Servlet 端口编号
|
||||
registeredAt=注册日期{0}
|
||||
replicatingFromMaster=正在从主服务器{0}:{2}、消息传送端口{3}:{1}、交换机{4}复制,正在复制{5}
|
||||
showWindSpeedSeries=显示风速数据
|
||||
showWindDirectionSeries=显示风向数据
|
||||
fleet=船队
|
||||
@@ -422,7 +413,6 @@ boatClassDoesNotMatchSelectedRegatta=所选的比赛轮次包含不同于所选
|
||||
regattaExistForSelectedBoatClass=所选船只级别至少有一场比赛。是否确定为这些比赛轮次创建默认比赛?
|
||||
addRegatta=添加比赛...
|
||||
importRegattas=导入比赛...
|
||||
exchangeName=交换机名称
|
||||
course=场地
|
||||
courseLayout=场地设置
|
||||
buoy=浮标
|
||||
@@ -712,7 +702,6 @@ starboardSide=右舷
|
||||
pleaseEnterANumber=请输入数字。
|
||||
competitorsFilter=参赛队筛选器
|
||||
flagStatus=旗标状态
|
||||
additionalInformation=信息
|
||||
windFixListingDescription=风力修复(前 3 个,后 3 个,真值)
|
||||
noWindFixesAvailable=风力修复不可用。
|
||||
distanceToStarboardEndOfStartlineWhenPassingStart=起航时起航线右舷的距离
|
||||
@@ -734,7 +723,6 @@ waypoints=航路点
|
||||
disableRaceFilter=禁用筛选器
|
||||
enableRaceFilter=启用筛选器
|
||||
raceStatusColumn=比赛轮次状态
|
||||
loading=正在加载(如果网速较慢,可能需要几分钟时间)...
|
||||
racesWithHiddenState=状态为 HIDDEN 的比赛轮次
|
||||
mediaDateFormatError=日期格式无效。 使用: {0}
|
||||
selectedCompetitors=选择的参赛队
|
||||
@@ -801,19 +789,6 @@ importSuccessOverwriteInfo=需要覆盖后续比赛,需要重新跟踪比赛
|
||||
regattaOverviewConfiguration=比赛总览配置
|
||||
firstRaceIsNonDiscardableCarryForward=从不可作废的得分开始
|
||||
addReplicationMaster=连接到副本主服务器
|
||||
connect=连接
|
||||
connectToMaster=连接到主服务器
|
||||
exchangeHost=消息传送主机名称
|
||||
explainExchangeHostName=运行消息传送队列的主机名称。
|
||||
explainReplicationHostname=运行副本主服务器的主机名称。
|
||||
explainReplicationExchangeName=交换机队列的名称。必须与主服务器中配置的相同。
|
||||
explainReplicationExchangePort=消息传送交换机队列的端口。必须在初始加载后用于所有数据。
|
||||
explainReplicationServletPort=用于连接注册此副本和接收初始加载的 Servlet 端口编号。
|
||||
explainReplicasRegistered=副本已注册(此服务器为主服务器):
|
||||
explainConnectionsToMaster=与主服务器的连接(此服务器为副本):
|
||||
explainNoConnectionsToMaster=未配置与主服务器的连接。点击“连接到主服务器”按钮配置。
|
||||
explainNoConnectionsFromReplicas=未找到来自副本的连接。可以使用管理控制台连接副本。
|
||||
stopConnectionToMaster=停止复制
|
||||
asLink=链接
|
||||
noStarttimeAnnouncedYet=待定
|
||||
raceIsRunning=运行
|
||||
@@ -824,9 +799,6 @@ raceIsInStartphase=开始阶段
|
||||
generalRecall=全召
|
||||
startPostponed=已延迟
|
||||
raceAbandoned=已放弃
|
||||
stopAllReplicas=断开与所有副本的连接(危险!)
|
||||
warningServerIsReplica=注意:此服务器配置为副本。请勿更改任何内容,否则将导致奇怪效果!
|
||||
dropReplicaConnection=断开连接
|
||||
timePanelName=时间控制
|
||||
competitorFilterExplanation=筛选器将显示与条件匹配的所有参赛队:
|
||||
protestTime=声明时间
|
||||
@@ -842,7 +814,6 @@ startAt=开始时间
|
||||
finishAt=结束时间
|
||||
protestStartsAt=声明开始时间
|
||||
protestEndsAt=声明结束时间
|
||||
unknown=未知
|
||||
raceLog=比赛轮次日志
|
||||
regattaLog=比赛日志
|
||||
refreshRaceLog=刷新比赛轮次日志
|
||||
@@ -1040,7 +1011,6 @@ errorTryingToRemoveIgtimiAccount=尝试移除用户{0}的 Igtimi 账户出错
|
||||
successfullyRemoveIgtimiAccount=已成功移除用户{0}的 Igtimi 账户
|
||||
eMailMustNotBeEmpty=电子邮件地址不得为空
|
||||
emailAddress=电子邮件地址
|
||||
password=密码
|
||||
searchTag=搜索标记
|
||||
doYouReallyWantToRemoveLeaderboard=是否确定移除积分榜:''''{0}''''?
|
||||
metaLeaderboardCannotBeChanged=此为元积分榜。无法在此处更改。
|
||||
@@ -1174,7 +1144,6 @@ showSimulationOverlay=显示模拟覆盖
|
||||
simulationLegendTooltip=时间比较:\n比赛轮次指根据 GPS 计算的航段历时,如果对风力了如指掌,则称为全知级;如果仅靠测量下一标志的距离就决定启航,则称为投机级;如果了解有关风力的所有信息并决定启航,则称为一圈即成级。
|
||||
racesScored=记分的比赛轮次
|
||||
racesScoredTooltip=参赛队完成并记录在此积分榜上的比赛轮次数。
|
||||
averageNumberOfOperationsPerMessage=各消息操作的平均数
|
||||
showUncorrectedTotalPoints=显示未更正的总分
|
||||
setStartTimeReceived=设置接收的开始时间
|
||||
setStartTimeReceivedDescription=将所选 TrackedRace 的 startTimeReceived 设置为提供的值。将此值留空,以移除当前设置的 startTimeReceived。
|
||||
@@ -1205,10 +1174,6 @@ registrationLinkUrlExplain=您可以复制此 URL,并将其粘贴到您的邀
|
||||
registrationLinkUrlCopy=复制到剪贴板
|
||||
registrationLinkShare=共享
|
||||
explainRegistrationLinkDialog=公开赛的参赛队可以通过打开注册链接或使用智能手机扫描下方的二维码来注册。
|
||||
numberOfQueueMessagesSent=发送的队列消息的数量
|
||||
totalSize=总大小
|
||||
averageMessageSize=各消息的平均大小(字节)
|
||||
totalNumberOfOperations=操作的总数
|
||||
currentOrAverageSpeedOverGroundInKnotsTooltip=在航段航行时的当前实际速度(节);航段完成时的平均实际速度
|
||||
currentOrAverageSpeedOverGroundInKnots=实际速度(∅ 终点)
|
||||
connectors=连接器
|
||||
@@ -1308,11 +1273,6 @@ sendingMailsFailed=发送邮件失败
|
||||
sendingMailsSuccessful=已成功发送电子邮件
|
||||
selectEventForInvitation=选择邀请活动
|
||||
imageURL=图像 URL
|
||||
upload=上传
|
||||
removeResult=移除操作: {0} {1}
|
||||
uploadSuccessful=上传成功
|
||||
fileUploadResult=文件上传: {0} {1}。\n如果出错,请检查文件存储服务配置是否正确。
|
||||
removeUploadedFile=移除上传的文件
|
||||
showCompetitorBoatColumn=参赛队的船只
|
||||
showCompetitorShortNameColumn=参赛队短名称
|
||||
showCompetitorShortNameColumnTooltip=显示短名称和国籍旗帜或参赛队图像。如果可用,参赛队图像优先于国籍旗帜。如果设置 "{0}",将显示这两种图标。
|
||||
@@ -1511,7 +1471,6 @@ imageSizeError={0}图像大小不合适。宽度应在{1}和{2} px 之间,高
|
||||
imageToSmallError={0}图像大小不合适。宽度应至少为{1} px,高度应至少为{2} px。
|
||||
imageResizeError=重新调整{0}图像大小不起作用。宽/高比应在{1}和{2}之间,但实际为{3}。
|
||||
couldNotRetrieveImageSizeYet=无法检索图像的宽度和高度。
|
||||
pleaseOnlyUploadContentYouHaveAllUsageRightsFor=请仅上传您拥有所有使用权的内容。请记住,内容可能会被截断。对于视频内容,通常可以使用 YouTube URL
|
||||
registerCompetitorsOnRace=在比赛轮次注册参赛队(例如区分船队比赛)
|
||||
doYouWantToRegisterCompetitorsDirectlyOnTheRace=是否直接在比赛轮次注册参赛队?
|
||||
doYouWantToDisableCompetitorsRegistrationsOnTheRace=是否要禁用参赛队在比赛轮次注册?
|
||||
@@ -1588,10 +1547,8 @@ noEventsYet=暂无活动。
|
||||
selectCompetitorImportProvider=请选择参赛队导入提供方...
|
||||
selectResultImportProvider=请选择结果导入提供方...
|
||||
buildVersion=内部版本
|
||||
serverInformation=服务器信息
|
||||
serverConfiguration=服务器配置
|
||||
standaloneServer=独立服务器
|
||||
send=发送...
|
||||
passId=场次编号
|
||||
createdAt=创建时间
|
||||
logicalTimepoint=逻辑时间点
|
||||
@@ -1781,8 +1738,6 @@ errorLoadingCompetitorImportProviders=加载参赛队导入提供方时出错:
|
||||
errorLoadingCompetitorImportDescriptors=加载参赛队导入描述符时出错:{0}
|
||||
couldNotSaveCompetitorRegistrations=无法保存参赛队注册:{0}
|
||||
searchTagForImportedCompetitorPlaceholder=例如,使用比赛轮次+船队名称
|
||||
version=版本:{0}
|
||||
replicables=正在复制对象
|
||||
set=设置
|
||||
eventRegattaRacesLegendWind=# 风力感应器
|
||||
eventRegattaRacesLegendVideo=# 视频流
|
||||
@@ -2133,7 +2088,6 @@ swissTimingUpdatePassword=用于发送更新的密码
|
||||
allowResizing=允许重新调整大小
|
||||
resizeSuccessfull=重新调整大小已成功完成
|
||||
resizeUnsuccessful=无法重新调整大小:{0}
|
||||
setUpStorageService=请先设置文件存储服务
|
||||
automaticResizeNeedsStorageService=自动重新调整大小需要正常运行的 FileStorageService。
|
||||
qrCodeBoatInviteTitle=您受邀跟踪比赛{1}的船只{0}
|
||||
qrCodeMarkInviteTitle=您受邀跟踪比赛{1}的标志{0}
|
||||
@@ -2206,9 +2160,7 @@ tagCopyToClipBoard=复制到剪贴板
|
||||
tagBrowseAndUploadImage=浏览并上传
|
||||
tagCopiedLinkSuccessfully=已将链接成功复制到剪贴板!
|
||||
tagCopiedLinkNotSuccessfully=您的浏览器不支持复制到剪贴板,请手动复制链接!
|
||||
username=用户名
|
||||
confirm=确认
|
||||
cancel=取消
|
||||
close=关闭
|
||||
boatClasses=船只级别
|
||||
sailorProfiles=水手资料
|
||||
@@ -2251,9 +2203,6 @@ warningSailInsightVersion=此服务器配置为与 SAP Sail InSight 1 配套使
|
||||
invalidState=状态无效
|
||||
doYouReallyWantToRemoveDeviceConfiguration=是否确定移除设备配置{0}?
|
||||
errorFetchingSimulationData=获取模拟数据时发生错误:{0}。请确保您已经登录您的用户账户。
|
||||
usernameAndPasswordMustBothBeSet=用户名和密码必须填写或为空
|
||||
explainUserName=用于在主服务器上进行身份验证的用户名
|
||||
explainPassword=用于在主服务器上进行身份验证的密码
|
||||
tracTracConnection=TracTrac 连接
|
||||
addTracTracConnection=添加 TracTrac 连接
|
||||
filterTracTracConnections=筛选 TracTrac 连接
|
||||
|
||||
+1
-2
@@ -95,8 +95,7 @@ public class MediaServiceImpl extends RemoteServiceServlet implements MediaServi
|
||||
return racingEventService().getSecurityService().mapAndFilterByReadPermissionForCurrentUser(mediaTracksToFilter,
|
||||
mediaTrack -> {
|
||||
final MediaTrackWithSecurityDTO securedMediaTrack = new MediaTrackWithSecurityDTO(mediaTrack);
|
||||
SecurityDTOUtil.addSecurityInformation(racingEventService().getSecurityService(), securedMediaTrack,
|
||||
mediaTrack.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(racingEventService().getSecurityService(), securedMediaTrack);
|
||||
return securedMediaTrack;
|
||||
});
|
||||
}
|
||||
|
||||
+1
-2
@@ -32,8 +32,7 @@ public class MediaServiceWriteImpl extends MediaServiceImpl implements MediaServ
|
||||
throw new UnauthenticatedException("Not authorized to create media track object");
|
||||
} else {
|
||||
final MediaTrackWithSecurityDTO mediaTrackWithSecurity = new MediaTrackWithSecurityDTO(mediaTrack);
|
||||
SecurityDTOUtil.addSecurityInformation(racingEventService().getSecurityService(), mediaTrackWithSecurity,
|
||||
mediaTrackWithSecurity.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(racingEventService().getSecurityService(), mediaTrackWithSecurity);
|
||||
return mediaTrackWithSecurity;
|
||||
}
|
||||
}
|
||||
|
||||
+29
-32
@@ -469,7 +469,6 @@ import com.sap.sse.security.SessionUtils;
|
||||
import com.sap.sse.security.shared.AccessControlListAnnotation;
|
||||
import com.sap.sse.security.shared.HasPermissions;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
import com.sap.sse.security.shared.QualifiedObjectIdentifier;
|
||||
import com.sap.sse.security.shared.RoleDefinition;
|
||||
import com.sap.sse.security.shared.TypeRelativeObjectIdentifier;
|
||||
import com.sap.sse.security.shared.dto.StrippedUserGroupDTO;
|
||||
@@ -958,7 +957,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
regattaDTO.competitorRegistrationType = regatta.getCompetitorRegistrationType();
|
||||
regattaDTO.configuration = convertToRegattaConfigurationDTO(regatta.getRegattaConfiguration());
|
||||
regattaDTO.rankingMetricType = regatta.getRankingMetricType();
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), regattaDTO, regatta.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), regattaDTO);
|
||||
regattaDTO.registrationLinkSecret = regatta.getRegistrationLinkSecret();
|
||||
return regattaDTO;
|
||||
}
|
||||
@@ -1131,7 +1130,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
RaceWithCompetitorsAndBoatsDTO raceDTO = new RaceWithCompetitorsAndBoatsDTO(raceIdentifier, competitorAndBoatDTOs,
|
||||
trackedRaceDTO, getService().isRaceBeingTracked(regatta, r), rankingMetricType);
|
||||
if (trackedRace != null) {
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), raceDTO, trackedRace.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), raceDTO);
|
||||
getBaseDomainFactory().updateRaceDTOWithTrackedRaceData(trackedRace, raceDTO);
|
||||
}
|
||||
raceDTO.boatClass = regatta.getBoatClass() == null ? null : regatta.getBoatClass().getName();
|
||||
@@ -1155,7 +1154,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
protected CompetitorDTO convertToCompetitorDTO(Competitor competitor) {
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorDTO, competitor.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorDTO);
|
||||
clearNonPublicFieldsIfCurrentUserHasNoReadPermission(competitor, competitorDTO);
|
||||
return competitorDTO;
|
||||
}
|
||||
@@ -1170,10 +1169,10 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
protected CompetitorWithBoatDTO convertToCompetitorWithBoatDTO(CompetitorWithBoat competitor) {
|
||||
CompetitorWithBoatDTO competitorDTO = baseDomainFactory.convertToCompetitorWithBoatDTO(competitor);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorDTO, competitor.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorDTO);
|
||||
clearNonPublicFieldsIfCurrentUserHasNoReadPermission(competitor, competitorDTO);
|
||||
BoatDTO boatDTO = competitorDTO.getBoat();
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), boatDTO, competitor.getBoat().getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), boatDTO);
|
||||
return competitorDTO;
|
||||
}
|
||||
|
||||
@@ -1185,9 +1184,9 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
List<CompetitorAndBoatDTO> result = new ArrayList<>();
|
||||
for (final Entry<? extends Competitor, ? extends Boat> c : competitorsAndTheirBoats.entrySet()) {
|
||||
CompetitorAndBoatDTO competitorAndBoatDTO = baseDomainFactory.convertToCompetitorAndBoatDTO(c.getKey(), c.getValue());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorAndBoatDTO.getCompetitor(), c.getKey().getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorAndBoatDTO.getCompetitor());
|
||||
clearNonPublicFieldsIfCurrentUserHasNoReadPermission(c.getKey(), competitorAndBoatDTO.getCompetitor());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorAndBoatDTO.getBoat(), c.getValue().getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorAndBoatDTO.getBoat());
|
||||
result.add(competitorAndBoatDTO);
|
||||
}
|
||||
return result;
|
||||
@@ -1201,9 +1200,9 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
List<CompetitorWithBoatDTO> result = new ArrayList<>();
|
||||
for (CompetitorWithBoat c : iterable) {
|
||||
CompetitorWithBoatDTO competitorDTO = baseDomainFactory.convertToCompetitorWithBoatDTO(c);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorDTO, c.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorDTO);
|
||||
clearNonPublicFieldsIfCurrentUserHasNoReadPermission(c, competitorDTO);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorDTO.getBoat(), c.getBoat().getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorDTO.getBoat());
|
||||
result.add(competitorDTO);
|
||||
}
|
||||
return result;
|
||||
@@ -1217,7 +1216,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
List<BoatDTO> result = new ArrayList<BoatDTO>();
|
||||
for (Boat b : iterable) {
|
||||
BoatDTO boatDTO = baseDomainFactory.convertToBoatDTO(b);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), boatDTO, b.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), boatDTO);
|
||||
result.add(boatDTO);
|
||||
}
|
||||
return result;
|
||||
@@ -1225,7 +1224,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
protected BoatDTO convertToBoatDTO(Boat boat) {
|
||||
BoatDTO boatDTO = baseDomainFactory.convertToBoatDTO(boat);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), boatDTO, boat.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), boatDTO);
|
||||
return boatDTO;
|
||||
}
|
||||
|
||||
@@ -1264,7 +1263,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
ttConfig.getStoredDataURI()==null?null:ttConfig.getStoredDataURI().toString(),
|
||||
ttConfig.getCourseDesignUpdateURI()==null?null:ttConfig.getCourseDesignUpdateURI().toString(),
|
||||
ttConfig.getTracTracUsername(), ttConfig.getTracTracPassword(), ttConfig.getCreatorName());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), config, config.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), config);
|
||||
return config;
|
||||
});
|
||||
}
|
||||
@@ -1660,7 +1659,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
getBaseDomainFactory().updateRaceDTOWithTrackedRaceData(trackedRace, raceDTO);
|
||||
}
|
||||
raceDTO.boatClass = regatta.getBoatClass() == null ? null : regatta.getBoatClass().getName();
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), raceDTO, raceDTO.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), raceDTO);
|
||||
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
|
||||
final LeaderboardGroup leaderboardGroup;
|
||||
leaderboardGroup = getLeaderboardGroupByIdOrName(leaderboardGroupId, leaderboardGroupName);
|
||||
@@ -2439,7 +2438,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
StrippedLeaderboardDTOWithSecurity leaderboardDTO = new StrippedLeaderboardDTOWithSecurity(
|
||||
convertToBoatClassDTO(leaderboard.getBoatClass()));
|
||||
fillLeaderboardData(leaderboard, withGeoLocationData, withStatisticalData, leaderboardDTO);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), leaderboardDTO, leaderboard.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), leaderboardDTO);
|
||||
return leaderboardDTO;
|
||||
}
|
||||
|
||||
@@ -2539,7 +2538,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
stConfig.getName(), stConfig.getJsonURL(),
|
||||
stConfig.getHostname(), stConfig.getPort(), stConfig.getUpdateURL(),
|
||||
stConfig.getUpdateUsername(), stConfig.getUpdatePassword(), stConfig.getCreatorName());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), config, config.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), config);
|
||||
return config;
|
||||
});
|
||||
}
|
||||
@@ -3485,7 +3484,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
}
|
||||
groupDTO.setOverallLeaderboardScoringSchemeType(overallLeaderboard.getScoringScheme().getType());
|
||||
}
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), groupDTO, leaderboardGroup.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), groupDTO);
|
||||
return groupDTO;
|
||||
}
|
||||
|
||||
@@ -3809,7 +3808,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
eventDTO.setAllWindFinderSpotsUsedByEvent(new EventWindFinderUtil().getWindFinderSpotsToConsider(event,
|
||||
windFinderTrackerFactory, /* useCachedSpotsForTrackedRaces */ false));
|
||||
}
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), eventDTO, event.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), eventDTO);
|
||||
return eventDTO;
|
||||
}
|
||||
|
||||
@@ -3967,7 +3966,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
protected ServerInfoDTO getServerInfo() {
|
||||
ServerInfoDTO result = new ServerInfoDTO(ServerInfo.getName(), ServerInfo.getBuildVersion(), ServerInfo.getManageEventsBaseUrl());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), result, result.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -4045,13 +4044,11 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
@Override
|
||||
public List<UrlDTO> getResultImportUrls(String resultProviderName) {
|
||||
final List<UrlDTO> result = new ArrayList<>();
|
||||
SecurityService securityService = getSecurityService();
|
||||
SecurityService securityService = getSecurityService();
|
||||
Iterable<URL> allUrlsReadableBySubject = getService().getResultImportUrls(resultProviderName);
|
||||
for (URL url : allUrlsReadableBySubject) {
|
||||
QualifiedObjectIdentifier objId = SecuredDomainType.RESULT_IMPORT_URL.getQualifiedObjectIdentifier(
|
||||
new TypeRelativeObjectIdentifier(resultProviderName, url.toString()));
|
||||
UrlDTO urlDTO = new UrlDTO(url.toString());
|
||||
SecurityDTOUtil.addSecurityInformation(securityService, urlDTO, objId);
|
||||
UrlDTO urlDTO = new UrlDTO(resultProviderName, url.toString());
|
||||
SecurityDTOUtil.addSecurityInformation(securityService, urlDTO);
|
||||
result.add(urlDTO);
|
||||
}
|
||||
return result;
|
||||
@@ -4105,7 +4102,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
stArchiveConfig -> {
|
||||
SwissTimingArchiveConfigurationWithSecurityDTO config = new SwissTimingArchiveConfigurationWithSecurityDTO(
|
||||
stArchiveConfig.getJsonURL(), stArchiveConfig.getCreatorName());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), config, config.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), config);
|
||||
return config;
|
||||
});
|
||||
}
|
||||
@@ -4593,7 +4590,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
if (configuration.getRegattaConfiguration() != null) {
|
||||
dto.regattaConfiguration = convertToRegattaConfigurationDTO(configuration.getRegattaConfiguration());
|
||||
}
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), dto, configuration.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), dto);
|
||||
return dto;
|
||||
}
|
||||
|
||||
@@ -4754,7 +4751,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
final String name = user.getFirstName() + " " + user.getSurname();
|
||||
final AccountWithSecurityDTO securedAccount = new AccountWithSecurityDTO(email, name,
|
||||
igtimiAccount.getCreatorName());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), securedAccount, igtimiAccount.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), securedAccount);
|
||||
return securedAccount;
|
||||
}
|
||||
|
||||
@@ -5439,7 +5436,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
if (expeditionConnector != null) {
|
||||
for (final ExpeditionDeviceConfiguration config : expeditionConnector.getDeviceConfigurations()) {
|
||||
if (subject.isPermitted(config.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), config, config.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), config);
|
||||
result.add(config);
|
||||
}
|
||||
}
|
||||
@@ -6132,7 +6129,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
: markTemplate.getShortName(),
|
||||
markTemplate.getColor(), markTemplate.getShape(), markTemplate.getPattern(), markTemplate.getType());
|
||||
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), markTemplateDTO, markTemplate.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), markTemplateDTO);
|
||||
return markTemplateDTO;
|
||||
}
|
||||
|
||||
@@ -6169,7 +6166,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
return "DEVICE";
|
||||
}
|
||||
}));
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), markPropertiesDto, markProperties.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), markPropertiesDto);
|
||||
return markPropertiesDto;
|
||||
}
|
||||
|
||||
@@ -6201,7 +6198,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
convertedDefaultMarkRolesForMarkTemplates, convertedDefaultMarkTemplatesForMarkRoles, optionalImageURL,
|
||||
courseTemplate.getTags(),
|
||||
convertToRepeatablePartDTO(courseTemplate.getRepeatablePart()), courseTemplate.getDefaultNumberOfLaps());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), result, courseTemplate.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -6243,7 +6240,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
protected MarkRoleDTO convertToMarkRoleDTO(final MarkRole markRole) {
|
||||
final MarkRoleDTO markRoleDTO = new MarkRoleDTO(markRole.getId(), markRole.getName(), markRole.getShortName());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), markRoleDTO, markRole.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), markRoleDTO);
|
||||
return markRoleDTO;
|
||||
}
|
||||
|
||||
|
||||
+2
-4
@@ -1615,13 +1615,11 @@ public class SailingServiceWriteImpl extends SailingServiceImpl implements Saili
|
||||
if (competitor.hasBoat()) {
|
||||
final CompetitorWithBoatDTO competitorWithBoat = addOrUpdateCompetitorWithBoat(
|
||||
(CompetitorWithBoatDTO) competitor);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorWithBoat,
|
||||
competitorWithBoat.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorWithBoat);
|
||||
result.add(competitorWithBoat);
|
||||
} else {
|
||||
final CompetitorDTO competitorWithoutBoat = addOrUpdateCompetitorWithoutBoat(competitor);
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorWithoutBoat,
|
||||
competitorWithoutBoat.getIdentifier());
|
||||
SecurityDTOUtil.addSecurityInformation(getSecurityService(), competitorWithoutBoat);
|
||||
result.add(competitorWithoutBoat);
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -15,6 +15,7 @@ import org.osgi.framework.BundleContext;
|
||||
import org.osgi.util.tracker.ServiceTracker;
|
||||
|
||||
import com.sap.sailing.server.interfaces.RacingEventService;
|
||||
import com.sap.sse.ServerInfo;
|
||||
import com.sap.sse.replication.ReplicationService;
|
||||
import com.sap.sse.replication.ReplicationStatus;
|
||||
|
||||
@@ -41,11 +42,14 @@ public class StatusServlet extends HttpServlet {
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
// TODO bug4811: add more detailed replication info that allows clients to see which replicable is actually replicated from which replica set
|
||||
final ServletContext servletContext = req.getServletContext();
|
||||
final JSONObject result = new JSONObject();
|
||||
final RacingEventService service = getService(servletContext);
|
||||
final String waitUntilRacesLoadedString = req.getParameter(WAIT_UNTIL_RACES_LOADED);
|
||||
boolean waitUntilRacesLoaded = Boolean.valueOf(waitUntilRacesLoadedString);
|
||||
result.put("servername", ServerInfo.getName());
|
||||
result.put("buildversion", ServerInfo.getBuildVersion());
|
||||
final long numberOfTrackedRacesToRestore = service.getNumberOfTrackedRacesToRestore();
|
||||
result.put("numberofracestorestore", numberOfTrackedRacesToRestore);
|
||||
final int numberOfTrackedRacesRestored = service.getNumberOfTrackedRacesRestored();
|
||||
|
||||
@@ -14,11 +14,13 @@ public class UrlDTO implements SecuredDTO {
|
||||
|
||||
private SecurityInformationDTO securityInformation = new SecurityInformationDTO();
|
||||
private String url; // Can't use type URL since GWT does not support java.net.*
|
||||
private String resultProviderName;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private UrlDTO() { } // For GWT serialization
|
||||
|
||||
public UrlDTO(String url) {
|
||||
public UrlDTO(String resultProviderName, String url) {
|
||||
this.resultProviderName = resultProviderName;
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
@@ -37,7 +39,7 @@ public class UrlDTO implements SecuredDTO {
|
||||
|
||||
@Override
|
||||
public QualifiedObjectIdentifier getIdentifier() {
|
||||
return getPermissionType().getQualifiedObjectIdentifier(new TypeRelativeObjectIdentifier(url));
|
||||
return getPermissionType().getQualifiedObjectIdentifier(new TypeRelativeObjectIdentifier(resultProviderName, url));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+6
-8
@@ -14,7 +14,7 @@
|
||||
<inherits name='com.sap.sailing.gwt.common.AuthenticationCommon'/>
|
||||
|
||||
<!-- module containing datamining features -->
|
||||
<inherits name="com.sap.sse.datamining.SSEDataMining"/>
|
||||
<inherits name="com.sap.sse.datamining.SSEDataMining"/>
|
||||
|
||||
<!-- Other module inherits -->
|
||||
<inherits name="com.sap.sse.gwt.SSESharedGWT" />
|
||||
@@ -28,10 +28,10 @@
|
||||
<inherits name="com.sap.sse.security.ui.LoginPanel" />
|
||||
<inherits name="com.sap.sailing.datamining.DataMiningSailingDomain" />
|
||||
<inherits name="com.sap.sailing.polars.datamining.DataMiningPolars" />
|
||||
<inherits name="com.sap.sailing.ExpeditionConnectorCommon" />
|
||||
|
||||
<!-- module containing locale configuration -->
|
||||
<inherits name='com.sap.sailing.gwt.common.SailingLocalesAllPermutations' />
|
||||
<inherits name="com.sap.sailing.ExpeditionConnectorCommon" />
|
||||
|
||||
<!-- module containing locale configuration -->
|
||||
<inherits name='com.sap.sailing.gwt.common.SailingLocalesAllPermutations' />
|
||||
|
||||
<!-- Disable logging -->
|
||||
<set-property name="gwt.logging.enabled" value="FALSE"/>
|
||||
@@ -39,7 +39,7 @@
|
||||
<source path="datamining" />
|
||||
<source path="polarmining" />
|
||||
|
||||
<inherits name='com.sap.sailing.gwt.ui.SourceCommon'/>
|
||||
<inherits name='com.sap.sailing.gwt.ui.SourceCommon'/>
|
||||
<inherits name='com.sap.sailing.gwt.ui.SourceClient'/>
|
||||
<inherits name='com.sap.sailing.gwt.ui.SourceShared'/>
|
||||
<inherits name="com.sap.sailing.gwt.ui.SourceLeaderboard"/>
|
||||
@@ -48,6 +48,4 @@
|
||||
|
||||
<inherits name='com.sap.sse.gwt.CommonControlCSS_Autoinject'/>
|
||||
<entry-point class="com.sap.sailing.gwt.ui.datamining.DataMiningEntryPoint" />
|
||||
|
||||
|
||||
</module>
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.sap.sailing.landscape.common</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,8 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.release=disabled
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
@@ -0,0 +1,3 @@
|
||||
eclipse.preferences.version=1
|
||||
pluginProject.extensions=false
|
||||
resolve.requirebundle=false
|
||||
@@ -0,0 +1,11 @@
|
||||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Common
|
||||
Bundle-SymbolicName: com.sap.sailing.landscape.common
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: SAP
|
||||
Automatic-Module-Name: com.sap.sailing.landscape.common
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Require-Bundle: com.sap.sse.security.common,
|
||||
com.sap.sse.common
|
||||
Bundle-ActivationPolicy: lazy
|
||||
@@ -0,0 +1,4 @@
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>root</artifactId>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>com.sap.sailing.landscape.common</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.eclipse.tycho</groupId>
|
||||
<artifactId>tycho-source-plugin</artifactId>
|
||||
<version>${tycho-version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>plugin-source</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>plugin-source</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>with-mobile</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>ldi.releaseBuild</name>
|
||||
</property>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.simpligility.maven.plugins</groupId>
|
||||
<artifactId>android-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
|
||||
<module>
|
||||
<inherits name="com.sap.sse.landscape.SSELandscapeCommon"/>
|
||||
<source path='common'/>
|
||||
</module>
|
||||
+73
-18
@@ -27,6 +27,7 @@ import com.sap.sailing.landscape.SailingAnalyticsMetrics;
|
||||
import com.sap.sailing.landscape.SailingAnalyticsProcess;
|
||||
import com.sap.sailing.landscape.SailingReleaseRepository;
|
||||
import com.sap.sailing.landscape.impl.BearerTokenReplicationCredentials;
|
||||
import com.sap.sailing.landscape.impl.SailingAnalyticsProcessImpl;
|
||||
import com.sap.sailing.landscape.procedures.DeployProcessOnMultiServer;
|
||||
import com.sap.sailing.landscape.procedures.SailingAnalyticsApplicationConfiguration;
|
||||
import com.sap.sailing.landscape.procedures.SailingAnalyticsMasterConfiguration;
|
||||
@@ -38,6 +39,7 @@ import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.landscape.InboundReplicationConfiguration;
|
||||
import com.sap.sse.landscape.application.ApplicationReplicaSet;
|
||||
import com.sap.sse.landscape.aws.AmazonMachineImage;
|
||||
import com.sap.sse.landscape.aws.ApplicationProcessHost;
|
||||
import com.sap.sse.landscape.aws.AwsInstance;
|
||||
@@ -46,7 +48,10 @@ import com.sap.sse.landscape.aws.Tags;
|
||||
import com.sap.sse.landscape.aws.impl.AwsRegion;
|
||||
import com.sap.sse.landscape.aws.orchestration.CreateDynamicLoadBalancerMapping;
|
||||
import com.sap.sse.landscape.aws.orchestration.StartMongoDBServer;
|
||||
import com.sap.sse.landscape.mongodb.MongoEndpoint;
|
||||
import com.sap.sse.landscape.mongodb.MongoProcess;
|
||||
import com.sap.sse.landscape.mongodb.MongoReplicaSet;
|
||||
import com.sap.sse.landscape.ssh.SSHKeyPair;
|
||||
import com.sap.sse.landscape.ssh.SshCommandChannel;
|
||||
|
||||
import software.amazon.awssdk.regions.Region;
|
||||
@@ -74,8 +79,15 @@ public class TestProcedures {
|
||||
private String securityServiceReplicationBearerToken;
|
||||
private String mailSmtpPassword;
|
||||
|
||||
/**
|
||||
* Used for the symmetric encryption / decryption of private SSH keys. See also
|
||||
* {@link #getDecryptedPrivateKey(SSHKeyPair, byte[])}.
|
||||
*/
|
||||
private byte[] privateKeyEncryptionPassphrase;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
privateKeyEncryptionPassphrase = ("awptyf87l"+"097384sf;,57").getBytes();
|
||||
landscape = AwsLandscape.obtain();
|
||||
region = new AwsRegion(Region.EU_WEST_2);
|
||||
securityServiceReplicationBearerToken = System.getProperty(SECURITY_SERVICE_REPLICATION_BEARER_TOKEN);
|
||||
@@ -83,43 +95,82 @@ public class TestProcedures {
|
||||
}
|
||||
|
||||
@Test
|
||||
public
|
||||
void testStartupEmptyMultiServerAndDeployAnotherProcess() throws Exception {
|
||||
public void testGetImageTypes() {
|
||||
final Iterable<String> imageTypes = landscape.getMachineImageTypes(region);
|
||||
assertTrue(Util.contains(imageTypes, "sailing-analytics-server"));
|
||||
assertTrue(Util.contains(imageTypes, "mongodb-server"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetMongoEndpoints() {
|
||||
final Iterable<MongoEndpoint> mongoEndpoints = landscape.getMongoEndpoints(new AwsRegion(Region.EU_WEST_1));
|
||||
assertTrue(!Util.isEmpty(Util.filter(mongoEndpoints, mongoEndpoint->
|
||||
(mongoEndpoint instanceof MongoReplicaSet &&
|
||||
((MongoReplicaSet) mongoEndpoint).getName().equals("live") &&
|
||||
Util.size(((MongoReplicaSet) mongoEndpoint).getInstances()) == 3))));
|
||||
assertTrue(!Util.isEmpty(Util.filter(mongoEndpoints, mongoEndpoint->
|
||||
(mongoEndpoint instanceof MongoReplicaSet &&
|
||||
((MongoReplicaSet) mongoEndpoint).getName().equals("archive") &&
|
||||
Util.size(((MongoReplicaSet) mongoEndpoint).getInstances()) == 1)))); // unless archive restart is ongoing...
|
||||
assertTrue(!Util.isEmpty(Util.filter(mongoEndpoints, mongoEndpoint->
|
||||
(mongoEndpoint instanceof MongoProcess &&
|
||||
((MongoProcess) mongoEndpoint).getPort() == 10202))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStartupEmptyMultiServerAndDeployAnotherProcess() throws Exception {
|
||||
final String keyName = "MyKey-"+UUID.randomUUID();
|
||||
landscape.createKeyPair(region, keyName);
|
||||
landscape.createKeyPair(region, keyName, privateKeyEncryptionPassphrase);
|
||||
final StartMultiServer.Builder<?, String> builder = StartMultiServer.builder();
|
||||
final String sailingAnalyticsServerTag = "sailing-analytics-server";
|
||||
final StartMultiServer<String> startEmptyMultiServer = builder
|
||||
.setLandscape(landscape)
|
||||
.setKeyName(keyName)
|
||||
.setPrivateKeyEncryptionPassphrase(privateKeyEncryptionPassphrase)
|
||||
.setTags(Tags.with(sailingAnalyticsServerTag, ""))
|
||||
.setOptionalTimeout(optionalTimeout)
|
||||
.build();
|
||||
try {
|
||||
// this is expected to have connected to the default "live" replica set.
|
||||
startEmptyMultiServer.run();
|
||||
final ApplicationProcessHost<String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>> host = startEmptyMultiServer.getHost();
|
||||
final SshCommandChannel sshChannel = host.createRootSshChannel(optionalTimeout);
|
||||
final SshCommandChannel sshChannel = host.createRootSshChannel(optionalTimeout, privateKeyEncryptionPassphrase);
|
||||
final String result = sshChannel.runCommandAndReturnStdoutAndLogStderr("ls "+ApplicationProcessHost.DEFAULT_SERVERS_PATH, /* stderr prefix */ null, /* stderr log level */ null);
|
||||
assertTrue(result.isEmpty());
|
||||
final HttpURLConnection connection = (HttpURLConnection) new URL("http", host.getPublicAddress().getCanonicalHostName(), 80, "").openConnection();
|
||||
assertTrue(connection.getHeaderField("Server").startsWith("Apache"));
|
||||
connection.disconnect();
|
||||
SailingAnalyticsProcess<String> processA = launchMasterOnMultiServer(host, "a");
|
||||
SailingAnalyticsProcess<String> processB = launchMasterOnMultiServer(host, "b");
|
||||
final String aServerName = "a";
|
||||
SailingAnalyticsProcess<String> processA = launchMasterOnMultiServer(host, aServerName);
|
||||
final String bServerName = "b";
|
||||
SailingAnalyticsProcess<String> processB = launchMasterOnMultiServer(host, bServerName);
|
||||
assertTrue(processA.waitUntilReady(optionalTimeout));
|
||||
assertTrue(processB.waitUntilReady(optionalTimeout));
|
||||
assertEquals(new HashSet<>(Arrays.asList(SailingAnalyticsApplicationConfiguration.Builder.DEFAULT_PORT, SailingAnalyticsApplicationConfiguration.Builder.DEFAULT_PORT+1)),
|
||||
new HashSet<>(Arrays.asList(processA.getPort(), processB.getPort())));
|
||||
assertEquals(new HashSet<>(Arrays.asList(SailingAnalyticsApplicationConfiguration.Builder.DEFAULT_TELNET_PORT, SailingAnalyticsApplicationConfiguration.Builder.DEFAULT_TELNET_PORT+1)),
|
||||
new HashSet<>(Arrays.asList(processA.getTelnetPortToOSGiConsole(optionalTimeout), processB.getTelnetPortToOSGiConsole(optionalTimeout))));
|
||||
new HashSet<>(Arrays.asList(processA.getTelnetPortToOSGiConsole(optionalTimeout, privateKeyEncryptionPassphrase), processB.getTelnetPortToOSGiConsole(optionalTimeout, privateKeyEncryptionPassphrase))));
|
||||
assertEquals(new HashSet<>(Arrays.asList(SailingAnalyticsApplicationConfiguration.Builder.DEFAULT_EXPEDITION_PORT, SailingAnalyticsApplicationConfiguration.Builder.DEFAULT_EXPEDITION_PORT+1)),
|
||||
new HashSet<>(Arrays.asList(processA.getExpeditionUdpPort(optionalTimeout), processB.getExpeditionUdpPort(optionalTimeout))));
|
||||
final SshCommandChannel curlChannel = host.createRootSshChannel(optionalTimeout);
|
||||
new HashSet<>(Arrays.asList(processA.getExpeditionUdpPort(optionalTimeout, privateKeyEncryptionPassphrase), processB.getExpeditionUdpPort(optionalTimeout, privateKeyEncryptionPassphrase))));
|
||||
final SshCommandChannel curlChannel = host.createRootSshChannel(optionalTimeout, privateKeyEncryptionPassphrase);
|
||||
final ByteArrayOutputStream stderr = new ByteArrayOutputStream();
|
||||
curlChannel.sendCommandLineSynchronously(
|
||||
"curl -k -i -H \"Host: b.sapsailing.com\" \"https://127.0.0.1\"", stderr);
|
||||
final String curlOutput = curlChannel.getStreamContentsAsString();
|
||||
assertTrue(curlOutput.matches("(?ms).* 302 Found$.*"));
|
||||
assertTrue(curlOutput.replaceAll("\r", "").matches("(?ms).*^Location: https://b.sapsailing.com/gwt/Home.html$.*"));
|
||||
// Now check if the landscape can find this "sailing-analytics-server" in the region and determine which applications it has running:
|
||||
final Iterable<ApplicationReplicaSet<String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>>> replicaSets =
|
||||
landscape.getApplicationReplicaSetsByTag(region, sailingAnalyticsServerTag, (theHost, dir)->{
|
||||
try {
|
||||
return new SailingAnalyticsProcessImpl<String>(theHost, dir, optionalTimeout, privateKeyEncryptionPassphrase);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}, optionalTimeout, privateKeyEncryptionPassphrase);
|
||||
// expecting to find at least "a" and "b"
|
||||
assertTrue(Util.containsAll(Util.map(replicaSets, ApplicationReplicaSet::getName), Arrays.asList(aServerName, bServerName)));
|
||||
Util.filter(replicaSets, rs->rs.getName().equals(aServerName) || rs.getName().equals(bServerName)).forEach(rs->assertTrue(Util.isEmpty(rs.getReplicas()) && rs.getMaster() != null));
|
||||
} catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "Exception while trying to create a MongoDB replica", e);
|
||||
throw e;
|
||||
@@ -145,6 +196,7 @@ public class TestProcedures {
|
||||
SailingAnalyticsApplicationConfiguration<String>, AppConfigBuilderT> builder(multiServerAppConfigBuilder);
|
||||
multiServerAppDeployerBuilder
|
||||
.setHostToDeployTo(host)
|
||||
.setPrivateKeyEncryptionPassphrase(privateKeyEncryptionPassphrase)
|
||||
.setOptionalTimeout(optionalTimeout);
|
||||
multiServerAppConfigBuilder
|
||||
.setServerName(serverName)
|
||||
@@ -158,11 +210,12 @@ public class TestProcedures {
|
||||
@Test
|
||||
public void testAddMongoReplica() throws Exception {
|
||||
final String keyName = "MyKey-"+UUID.randomUUID();
|
||||
landscape.createKeyPair(region, keyName);
|
||||
landscape.createKeyPair(region, keyName, privateKeyEncryptionPassphrase);
|
||||
final StartMongoDBServer.Builder<?, String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>> builder = StartMongoDBServer.builder();
|
||||
final StartMongoDBServer<String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>> startMongoDBServerProcedure = builder
|
||||
.setLandscape(landscape)
|
||||
.setKeyName(keyName)
|
||||
.setPrivateKeyEncryptionPassphrase(privateKeyEncryptionPassphrase)
|
||||
.setOptionalTimeout(optionalTimeout)
|
||||
.build();
|
||||
try {
|
||||
@@ -186,7 +239,7 @@ public class TestProcedures {
|
||||
boolean fine = true;
|
||||
do {
|
||||
try {
|
||||
final SshCommandChannel sshChannel = mongoProcess.getHost().createSshChannel("ec2-user", optionalTimeout);
|
||||
final SshCommandChannel sshChannel = mongoProcess.getHost().createSshChannel("ec2-user", optionalTimeout, privateKeyEncryptionPassphrase);
|
||||
final String stdout = sshChannel.runCommandAndReturnStdoutAndLogStderr(
|
||||
"i=0; while [ $i -lt $(echo \"rs.status().members.length\" | mongo 2>/dev/null | tail -n +5 | head -n +1) ]; do echo \"rs.status().members[$i].stateStr\" | mongo 2>/dev/null | tail -n +5 | head -n +1; i=$((i+1)); done",
|
||||
"stderr while trying to fetch replica set members", Level.WARNING);
|
||||
@@ -202,14 +255,15 @@ public class TestProcedures {
|
||||
public void testImageUpgrade() throws Exception {
|
||||
final String keyName = "MyKey-"+UUID.randomUUID();
|
||||
// Comment the following line to get default eu-west-2 test environment; uncomment to upgrade current production images in eu-west-1
|
||||
final AwsRegion region = new AwsRegion(Region.EU_WEST_1);
|
||||
landscape.createKeyPair(region, keyName);
|
||||
// final AwsRegion region = new AwsRegion(Region.EU_WEST_1);
|
||||
landscape.createKeyPair(region, keyName, privateKeyEncryptionPassphrase);
|
||||
final com.sap.sailing.landscape.procedures.UpgradeAmi.Builder<?, String, SailingAnalyticsProcess<String>> imageUpgradeProcedureBuilder = UpgradeAmi.builder();
|
||||
final UpgradeAmi<String> imageUpgradeProcedure =
|
||||
imageUpgradeProcedureBuilder
|
||||
.setLandscape(landscape)
|
||||
.setRegion(region)
|
||||
.setRegion(region) // only required in case a non-default region is used; see Landscape.getDefaultRegion()
|
||||
.setKeyName(keyName)
|
||||
.setPrivateKeyEncryptionPassphrase(privateKeyEncryptionPassphrase)
|
||||
.setOptionalTimeout(optionalTimeout)
|
||||
.build();
|
||||
try {
|
||||
@@ -234,7 +288,7 @@ public class TestProcedures {
|
||||
void testConnectivity() throws Exception {
|
||||
final String serverName = "test"+new Random().nextInt();
|
||||
final String keyName = "MyKey-"+UUID.randomUUID();
|
||||
landscape.createKeyPair(region, keyName);
|
||||
landscape.createKeyPair(region, keyName, privateKeyEncryptionPassphrase);
|
||||
SailingAnalyticsMasterConfiguration.Builder<AppConfigBuilderT, String> applicationConfigurationBuilder = SailingAnalyticsMasterConfiguration.masterBuilder();
|
||||
applicationConfigurationBuilder
|
||||
.setServerName(serverName)
|
||||
@@ -250,7 +304,8 @@ public class TestProcedures {
|
||||
.setRegion(region)
|
||||
.setInstanceType(InstanceType.T3_LARGE)
|
||||
.setKeyName(keyName)
|
||||
.setTags(Optional.of(Tags.with("Hello", "World")))
|
||||
.setPrivateKeyEncryptionPassphrase(privateKeyEncryptionPassphrase)
|
||||
.setTags(Tags.with("Hello", "World"))
|
||||
.setOptionalTimeout(optionalTimeout)
|
||||
.build();
|
||||
startSailingAnalyticsMaster.run();
|
||||
@@ -273,10 +328,10 @@ public class TestProcedures {
|
||||
// check env.sh access
|
||||
final SailingAnalyticsProcess<String> process = startSailingAnalyticsMaster.getSailingAnalyticsProcess();
|
||||
assertTrue(process.waitUntilReady(optionalTimeout));
|
||||
final String envSh = process.getEnvSh(optionalTimeout);
|
||||
final String envSh = process.getEnvSh(optionalTimeout, privateKeyEncryptionPassphrase);
|
||||
assertFalse(envSh.isEmpty());
|
||||
assertTrue("Couldn't find SERVER_NAME=\""+serverName+"\" in env.sh:\n"+envSh, envSh.contains("SERVER_NAME=\""+serverName+"\""));
|
||||
assertEquals(14888, process.getTelnetPortToOSGiConsole(optionalTimeout));
|
||||
assertEquals(14888, process.getTelnetPortToOSGiConsole(optionalTimeout, privateKeyEncryptionPassphrase));
|
||||
// Now create an ALB mapping, assuming to create the dynamic ALB:
|
||||
final String domain = "wiesen-weg.de";
|
||||
final String hostname = serverName+"."+domain;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user