From 3516408fa08a172d1595e6db0e05b00576802309 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Tue, 4 Jul 2017 14:04:24 +0200 Subject: [PATCH 01/26] initial split between the two leaderboards --- .../gwt/ui/test/LeaderboardPanelMock.java | 4 +- .../org.eclipse.core.resources.prefs | 2 +- .../place/player/AutoPlayController.java | 4 +- ...RaceLeaderboardWithHeaderPerspective.java} | 9 +- .../regatta/RegattaAnalyticsDataManager.java | 5 +- .../SharedLeaderboardRegattaTabView.java | 2 +- .../EventSeriesAnalyticsDataManager.java | 5 +- .../SharedLeaderboardEventSeriesTabView.java | 2 +- .../client/RegattaOverviewPanel.java | 3 +- .../ui/leaderboard/LeaderboardEntryPoint.java | 2 +- .../gwt/ui/leaderboard/LeaderboardPanel.java | 294 ++++++------------ .../ui/leaderboard/MetaLeaderboardViewer.java | 2 +- .../MultiLeaderboardProxyPanel.java | 2 +- ...va => MultiMultiRaceLeaderboardPanel.java} | 4 +- .../MultiRaceLeaderboardPanel.java | 143 +++++++++ ...r.java => MultiRaceLeaderboardViewer.java} | 10 +- .../leaderboard/OverallLeaderboardPanel.java | 2 +- .../leaderboard/SingleLeaderboardPanel.java | 184 +++++++++++ .../EditableLeaderboardPanel.java | 3 +- .../gwt/ui/raceboard/RaceBoardPanel.java | 3 +- 20 files changed, 465 insertions(+), 220 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/{LeaderboardWithHeaderPerspective.java => MultiRaceLeaderboardWithHeaderPerspective.java} (95%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/{MultiLeaderboardPanel.java => MultiMultiRaceLeaderboardPanel.java} (92%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/{LeaderboardViewer.java => MultiRaceLeaderboardViewer.java} (95%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleLeaderboardPanel.java diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java index 2b6cc37255d..e71cc00fa03 100644 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java @@ -8,12 +8,12 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.AbstractSortableColumnWithMinMax; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.SortedCellTable; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; -public class LeaderboardPanelMock extends LeaderboardPanel { +public class LeaderboardPanelMock extends MultiRaceLeaderboardPanel { public LeaderboardPanelMock(SailingServiceAsync sailingService, String leaderboardName, ErrorReporter errorReporter, diff --git a/java/com.sap.sailing.gwt.ui/.settings/org.eclipse.core.resources.prefs b/java/com.sap.sailing.gwt.ui/.settings/org.eclipse.core.resources.prefs index f7b8ea0b00a..872f8cf77fc 100755 --- a/java/com.sap.sailing.gwt.ui/.settings/org.eclipse.core.resources.prefs +++ b/java/com.sap.sailing.gwt.ui/.settings/org.eclipse.core.resources.prefs @@ -18,6 +18,6 @@ encoding//src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractR encoding//src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainResultsPresenter.java=utf-8 encoding//src/main/java/com/sap/sailing/gwt/ui/leaderboard/CompetitorFilterPanel.java=utf-8 encoding//src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java=utf-8 -encoding//src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java=utf-8 +encoding//src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiMultiRaceLeaderboardPanel.java=utf-8 encoding//src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java=utf-8 encoding//src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupPanel.java=utf-8 diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayController.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayController.java index 9bce7de4997..f0b7573bcb6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayController.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayController.java @@ -12,7 +12,7 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.autoplay.client.place.start.AutoplayPerspectiveLifecycle; import com.sap.sailing.gwt.autoplay.client.place.start.AutoplayPerspectiveOwnSettings; -import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderPerspective; +import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.MultiRaceLeaderboardWithHeaderPerspective; import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderPerspectiveSettings; import com.sap.sailing.gwt.settings.client.raceboard.RaceBoardPerspectiveOwnSettings; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; @@ -105,7 +105,7 @@ public class AutoPlayController implements RaceTimesInfoProviderListener, Leader PerspectiveCompositeSettings leaderboardSettings = settings .findSettingsByComponentId(autoplayLifecycle.getLeaderboardLifecycle().getComponentId()); - LeaderboardWithHeaderPerspective leaderboardPerspective = new LeaderboardWithHeaderPerspective(null, + MultiRaceLeaderboardWithHeaderPerspective leaderboardPerspective = new MultiRaceLeaderboardWithHeaderPerspective(null, null, autoplayLifecycle.getLeaderboardLifecycle(), leaderboardSettings, sailingService, userService, asyncActionsExecutor, new CompetitorSelectionModel(/* hasMultiSelection */ true), leaderboardTimer, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspective.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/MultiRaceLeaderboardWithHeaderPerspective.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspective.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/MultiRaceLeaderboardWithHeaderPerspective.java index ae48943778e..bcf76d5c026 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspective.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/MultiRaceLeaderboardWithHeaderPerspective.java @@ -23,6 +23,7 @@ import com.sap.sailing.gwt.ui.client.LeaderboardUpdateProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; import com.sap.sse.gwt.client.player.Timer; @@ -39,7 +40,7 @@ import com.sap.sse.security.ui.settings.ComponentContextWithSettingsStorage; * @author Frank Mittag * */ -public class LeaderboardWithHeaderPerspective extends AbstractPerspectiveComposite implements LeaderboardUpdateProvider { private final DockLayoutPanel dockPanel; private final static int SAP_HEADER_HEIGHT = 75; @@ -47,7 +48,7 @@ public class LeaderboardWithHeaderPerspective extends AbstractPerspectiveComposi private final LeaderboardPanel leaderboardPanel; private final StringMessages stringMessages; - public LeaderboardWithHeaderPerspective(Component parent, + public MultiRaceLeaderboardWithHeaderPerspective(Component parent, ComponentContextWithSettingsStorage> componentContext, LeaderboardWithHeaderPerspectiveLifecycle lifecycle, PerspectiveCompositeSettings settings, @@ -60,7 +61,7 @@ public class LeaderboardWithHeaderPerspective extends AbstractPerspectiveComposi Window.addResizeHandler(new ResizeHandler() { @Override public void onResize(ResizeEvent event) { - if (LeaderboardWithHeaderPerspective.this.getPerspectiveSettings().isLeaderboardAutoZoom()) { + if (MultiRaceLeaderboardWithHeaderPerspective.this.getPerspectiveSettings().isLeaderboardAutoZoom()) { autoZoomContentWidget(SAP_HEADER_HEIGHT, currentContentWidget); } } @@ -201,7 +202,7 @@ public class LeaderboardWithHeaderPerspective extends AbstractPerspectiveComposi LeaderboardSettings leaderboardSettings = settings .findSettingsByComponentId(leaderboardPanelLifecycle.getComponentId()); - LeaderboardPanel leaderboardPanel = new LeaderboardPanel(this, getComponentContext(), sailingService, + LeaderboardPanel leaderboardPanel = new MultiRaceLeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, leaderboardSettings, /*isEmbedded*/true, /* preSelectedRace */null, competitorSelectionProvider, timer, /* leaderboardGroupName */"", diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java index 09ad00cc801..a9fb21ebbc0 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java @@ -10,6 +10,7 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; @@ -44,12 +45,12 @@ public class RegattaAnalyticsDataManager { this.multiCompetitorChart = null; } - public LeaderboardPanel createLeaderboardPanel(Component parent, ComponentContext context, + public LeaderboardPanel createMultiRaceLeaderboardPanel(Component parent, ComponentContext context, final LeaderboardSettings leaderboardSettings, final RegattaAndRaceIdentifier preselectedRace, final String leaderboardGroupName, String leaderboardName, boolean showRaceDetails, boolean autoExpandLastRaceColumn) { if (leaderboardPanel == null) { - leaderboardPanel = new LeaderboardPanel(parent, context, sailingService, + leaderboardPanel = new MultiRaceLeaderboardPanel(parent, context, sailingService, asyncActionsExecutor, leaderboardSettings, true, preselectedRace, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java index 93623800759..47254eb228c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java @@ -42,7 +42,7 @@ public abstract class SharedLeaderboardRegattaTabView() { @Override public void onSuccess(LeaderboardSettings leaderboardSettings) { - final LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createLeaderboardPanel(null, componentContext, // + final LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiRaceLeaderboardPanel(null, componentContext, // leaderboardSettings, // null, // "leaderboardGroupName", // TODO: keep using magic string? ask frank! diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java index 23d5148fbc3..f61e3b25690 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java @@ -18,6 +18,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.MultiLeaderboardProxyPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.common.Util; import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.ErrorReporter; @@ -57,12 +58,12 @@ public class EventSeriesAnalyticsDataManager { this.multiCompetitorChart = null; } - public LeaderboardPanel createOverallLeaderboardPanel(Component parent, ComponentContext context, + public LeaderboardPanel createMultiRaceOverallLeaderboardPanel(Component parent, ComponentContext context, final LeaderboardSettings leaderboardSettings, final RegattaAndRaceIdentifier preselectedRace, final String leaderboardGroupName, String leaderboardName, boolean showRaceDetails, boolean autoExpandLastRaceColumn) { if(overallLeaderboardPanel == null) { - overallLeaderboardPanel = new LeaderboardPanel(parent, context, sailingService, asyncActionsExecutor, + overallLeaderboardPanel = new MultiRaceLeaderboardPanel(parent, context, sailingService, asyncActionsExecutor, leaderboardSettings, true, preselectedRace, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, StringMessages.INSTANCE, showRaceDetails, /* competitorSearchTextBox */ null, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java index ccd9ebea607..5dc0b862304 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java @@ -40,7 +40,7 @@ public abstract class SharedLeaderboardEventSeriesTabView() { @Override public void onSuccess(LeaderboardSettings leaderboardSettings) { - LeaderboardPanel leaderboardPanel = eventSeriesAnalyticsManager.createOverallLeaderboardPanel(null, + LeaderboardPanel leaderboardPanel = eventSeriesAnalyticsManager.createMultiRaceOverallLeaderboardPanel(null, componentContext, leaderboardSettings, null, "leaderboardGroupName", leaderboardName, true, // this information came from place, now hard coded. check with frank autoExpandLastRaceColumn); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java index 5b0f841f93d..cb90b43db7b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java @@ -28,6 +28,7 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; @@ -315,7 +316,7 @@ public class RegattaOverviewPanel extends SimplePanel { public void onSuccess(List result) { leaderboardsTabPanel.clear(); for (StrippedLeaderboardDTO leaderboard : result) { - LeaderboardPanel leaderboardPanel = new LeaderboardPanel(null, null, sailingService, + LeaderboardPanel leaderboardPanel = new MultiRaceLeaderboardPanel(null, null, sailingService, new AsyncActionsExecutor(), leaderboardSettings, false, /*preSelectedRace*/null, competitorSelectionProvider, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java index 24e1a282d90..b2efc04bb6a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java @@ -161,7 +161,7 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint { PerspectiveCompositeSettings defaultSettings) { configureWithSettings(defaultSettings, timer); - final LeaderboardViewer leaderboardViewer = new LeaderboardViewer(null, context, + final MultiRaceLeaderboardViewer leaderboardViewer = new MultiRaceLeaderboardViewer(null, context, rootComponentLifeCycle, defaultSettings, sailingService, new AsyncActionsExecutor(), timer, null, leaderboardGroupName, leaderboardName, LeaderboardEntryPoint.this, getStringMessages(), getActualChartDetailType(defaultSettings)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index b002e08a24e..4fd469be5ad 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -97,7 +97,6 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.AbstractSortableColumnWithMinMax; import com.sap.sailing.gwt.ui.client.shared.controls.FlushableSortedCellTableWithStylableHeaders; import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn; -import com.sap.sailing.gwt.ui.client.shared.filter.CompetitorRaceRankFilter; import com.sap.sailing.gwt.ui.client.shared.filter.FilterWithUI; import com.sap.sailing.gwt.ui.client.shared.filter.LeaderboardFetcher; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; @@ -106,10 +105,8 @@ import com.sap.sailing.gwt.ui.shared.RaceTimesInfoDTO; import com.sap.sse.common.Duration; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; -import com.sap.sse.common.filter.BinaryOperator; import com.sap.sse.common.filter.Filter; import com.sap.sse.common.filter.FilterSet; -import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; import com.sap.sse.gwt.client.async.MarkedAsyncCallback; @@ -138,7 +135,7 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; * @author Axel Uhl (D043530) * */ -public class LeaderboardPanel extends AbstractCompositeComponent +public abstract class LeaderboardPanel extends AbstractCompositeComponent implements TimeListener, PlayStateListener, DisplayedLeaderboardRowsProvider, IsEmbeddableComponent, CompetitorSelectionChangeListener, LeaderboardFetcher, BusyStateProvider, LeaderboardUpdateProvider { private static final LeaderboardResources RESOURCES = GWT.create(LeaderboardResources.class); @@ -202,7 +199,7 @@ public class LeaderboardPanel extends AbstractCompositeComponent leaderboardSelectionModel; - private LeaderboardDTO leaderboard; + protected LeaderboardDTO leaderboard; private final TotalRankColumn totalRankColumn; @@ -224,25 +221,25 @@ public class LeaderboardPanel extends AbstractCompositeComponent selectedManeuverDetails = new ArrayList();; + protected final List selectedManeuverDetails = new ArrayList();; /** * Passed to the {@link LegColumn}. Modifications to this list will modify the column's children list when updated * the next time. */ - private final List selectedLegDetails = new ArrayList(); + protected final List selectedLegDetails = new ArrayList(); /** * Passed to the {@link TextRaceColumn}. Modifications to this list will modify the column's children list when * updated the next time. */ - private final List selectedRaceDetails = new ArrayList(); + protected final List selectedRaceDetails = new ArrayList(); - private final List selectedOverallDetailColumns = new ArrayList();; + protected final List selectedOverallDetailColumns = new ArrayList();; private final Map> overallDetailColumnMap; - private RaceColumnSelection raceColumnSelection; + protected RaceColumnSelection raceColumnSelection; protected final String RACE_COLUMN_HEADER_STYLE = TABLE_RESOURCES.cellTableStyle().cellTableRaceColumnHeader(); @@ -259,7 +256,7 @@ public class LeaderboardPanel extends AbstractCompositeComponentnull, all leaderboard columns added by updating the leaderboard from the server are - * automatically added to the table. Otherwise, only the column whose {@link RaceColumnDTO#getRaceIdentifier(String) - * race identifier} matches the value of this attribute will be added. - */ - private final RegattaAndRaceIdentifier preSelectedRace; - private final FlowPanel contentPanel = new FlowPanel(); private HorizontalPanel refreshAndSettingsPanel; @@ -336,7 +324,7 @@ public class LeaderboardPanel extends AbstractCompositeComponent valuesToSet, DetailType[] referenceOrder, List collectionToSetValuesTo) { collectionToSetValuesTo.clear(); @@ -874,59 +861,6 @@ public class LeaderboardPanel extends AbstractCompositeComponent { - private final CompetitorColumnBase base; - - protected CompetitorColumn(CompetitorColumnBase base) { - super(base.getCell(getLeaderboard()), SortingOrder.ASCENDING, LeaderboardPanel.this); - this.base = base; - } - - public CompetitorColumn(CompositeCell compositeCell, - CompetitorColumnBase base) { - super(compositeCell, SortingOrder.ASCENDING, LeaderboardPanel.this); - this.base = base; - } - - @Override - public InvertibleComparator getComparator() { - return new InvertibleComparatorAdapter() { - @Override - public int compare(LeaderboardRowDTO o1, LeaderboardRowDTO o2) { - return Collator.getInstance().compare(getLeaderboard().getDisplayName(o1.competitor), - getLeaderboard().getDisplayName(o2.competitor)); - } - }; - } - - @Override - public SafeHtmlHeader getHeader() { - return base.getHeader(); - } - - @Override - public LeaderboardRowDTO getValue(LeaderboardRowDTO object) { - return object; - } - - protected void defaultRender(Context context, LeaderboardRowDTO object, SafeHtmlBuilder sb) { - super.render(context, object, sb); - } - - @Override - public void render(Context context, LeaderboardRowDTO object, SafeHtmlBuilder sb) { - String competitorColor = LeaderboardPanel.this.competitorSelectionProvider - .getColor(object.competitor, LeaderboardPanel.this.preSelectedRace).getAsHtml(); - String competitorColorBarStyle; - if (LeaderboardPanel.this.isEmbedded && preSelectedRace != null) { - competitorColorBarStyle = "style=\"border-bottom: 2px solid " + competitorColor + ";\""; - } else { - competitorColorBarStyle = "style=\"border: none;\""; - } - base.render(object, competitorColorBarStyle, sb); - } - } - /** * Shows the country flag and sail ID, if present * @@ -971,14 +905,8 @@ public class LeaderboardPanel extends AbstractCompositeComponent"); - } + boolean boatColorShown = renderBoatColorIfNecessary(competitorFetcher.getCompetitor(object),sb); + if (isShowCompetitorNationality || flagImageURL == null || flagImageURL.isEmpty()) { final ImageResource nationalityFlagImageResource; @@ -997,7 +925,7 @@ public class LeaderboardPanel extends AbstractCompositeComponent"); } } @@ -1191,6 +1119,8 @@ public class LeaderboardPanel extends AbstractCompositeComponent() { @Override public void onSuccess(LeaderboardDTO result) { - if(preSelectedRace == null) { - currentSettings = currentSettings.overrideDefaultsForNamesOfRaceColumns(result.getNamesOfRaceColumns()); - } + currentSettings = overrideDefaultsForNamesOfRaceColumns(currentSettings,result); try { updateLeaderboard(result); @@ -2425,6 +2345,8 @@ public class LeaderboardPanel extends AbstractCompositeComponent= 40) { - CompetitorRaceRankFilter raceRankFilter = new CompetitorRaceRankFilter(); - raceRankFilter.setLeaderboardFetcher(this); - raceRankFilter.setSelectedRace(preSelectedRace); - raceRankFilter.setQuickRankProvider(this.competitorFilterPanel.getQuickRankProvider()); - raceRankFilter.setOperator(new BinaryOperator(BinaryOperator.Operators.LessThanEquals)); - raceRankFilter.setValue(maxRaceRank); - FilterSet> activeFilterSet = competitorSelectionProvider - .getOrCreateCompetitorsFilterSet(stringMessages.topNCompetitorsByRaceRank(maxRaceRank)); - activeFilterSet.addFilter(raceRankFilter); - competitorSelectionProvider.setCompetitorsFilterSet(activeFilterSet); - } - } - /** * Assigns leaderboard to {@link #leaderboard} and updates the UI accordingly. Also updates the min/max * values on the columns. @@ -2544,21 +2450,7 @@ public class LeaderboardPanel extends AbstractCompositeComponent c = (AbstractSortableColumnWithMinMax) getLeaderboardTable() .getColumn(i); c.updateMinMax(); - // Toggle pre-selected race, if the setting is set and it isn't open yet, or the last race column if - // that was requested - if ((!autoExpandPerformedOnce && isAutoExpandPreSelectedRace() && c instanceof RaceColumn - && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) - || (isAutoExpandLastRaceColumn() && c == lastRaceColumn)) { - ExpandableSortableColumn expandableSortableColumn = (ExpandableSortableColumn) c; - if (!expandableSortableColumn.isExpanded()) { - expandableSortableColumn.changeExpansionState(/* expand */ true); - autoExpandPerformedOnce = true; - } - } - if (c instanceof RaceColumn && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) { - RaceColumnDTO raceColumn = ((RaceColumn) c).getRace(); - informLeaderboardUpdateListenersAboutRaceSelected(preSelectedRace, raceColumn); - } + processAutoExpands(c,lastRaceColumn); } if (leaderboardTable.getCurrentlySortedColumn() != null) { leaderboardTable.sort(); @@ -2586,6 +2478,10 @@ public class LeaderboardPanel extends AbstractCompositeComponent c, RaceColumn lastRaceColumn); + + protected abstract void applyTop30FilterIfCompetitorSizeGreaterEqual40(LeaderboardDTO leaderboard); + /** * Adjusts the row's selection in the {@link #leaderboardSelectionModel} so it matches its selection state in the * {@link #competitorSelectionProvider}. @@ -2644,8 +2540,8 @@ public class LeaderboardPanel extends AbstractCompositeComponent getRowsToDisplay() { - Map result; - Iterable allFilteredCompetitors = competitorSelectionProvider.getFilteredCompetitors(); - result = new HashMap(); - if (preSelectedRace == null) { - for (CompetitorDTO competitor : leaderboard.rows.keySet()) { - if (Util.contains(allFilteredCompetitors, competitor)) { - result.put(competitor, leaderboard.rows.get(competitor)); - } - } - } else { - for (CompetitorDTO competitorInPreSelectedRace : getCompetitors(preSelectedRace)) { - if (Util.contains(allFilteredCompetitors, competitorInPreSelectedRace)) { - result.put(competitorInPreSelectedRace, leaderboard.rows.get(competitorInPreSelectedRace)); - } - } - } - return result; - } + public abstract Map getRowsToDisplay(); /** * The {@link LeaderboardDTO} holds {@link LeaderboardDTO#getRaceList() races} as {@link RaceColumnDTO} objects. @@ -3274,27 +3152,6 @@ public class LeaderboardPanel extends AbstractCompositeComponent selectedRaceColumns = raceColumnSelection - .getSelectedRaceColumnsOrderedAsInLeaderboard(leaderboard); - List namesOfRaceColumnsToShow = new ArrayList<>(); - for (RaceColumnDTO raceColumn : selectedRaceColumns) { - namesOfRaceColumnsToShow.add(raceColumn.getName()); - } - LeaderboardSettings leaderboardSettings = new LeaderboardSettings( - Collections.unmodifiableList(selectedManeuverDetails), Collections.unmodifiableList(selectedLegDetails), - Collections.unmodifiableList(selectedRaceDetails), - Collections.unmodifiableList(selectedOverallDetailColumns), namesOfRaceColumnsToShow, - /* namesOfRacesToShow */ null, raceColumnSelection.getNumberOfLastRaceColumnsToShow(), - autoExpandPreSelectedRace, timer.getRefreshInterval(), /* nameOfRaceToSort */ null, - /* sortAscending */ true, /* updateUponPlayStateChange */ true, raceColumnSelection.getType(), - isShowAddedScores(), isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), - isShowCompetitorSailId(), isShowCompetitorFullName(), isShowCompetitorNationality); - SettingsDefaultValuesUtils.keepDefaults(currentSettings, leaderboardSettings); - return leaderboardSettings; - } - @Override public String getLocalizedShortName() { return stringMessages.leaderboard(); @@ -3508,5 +3365,60 @@ public class LeaderboardPanel extends AbstractCompositeComponent { + private final CompetitorColumnBase base; + + protected CompetitorColumn(CompetitorColumnBase base) { + super(base.getCell(getLeaderboard()), SortingOrder.ASCENDING, LeaderboardPanel.this); + this.base = base; + } + + public CompetitorColumn(CompositeCell compositeCell, + CompetitorColumnBase base) { + super(compositeCell, SortingOrder.ASCENDING, LeaderboardPanel.this); + this.base = base; + } + + @Override + public InvertibleComparator getComparator() { + return new InvertibleComparatorAdapter() { + @Override + public int compare(LeaderboardRowDTO o1, LeaderboardRowDTO o2) { + return Collator.getInstance().compare(getLeaderboard().getDisplayName(o1.competitor), + getLeaderboard().getDisplayName(o2.competitor)); + } + }; + } + + @Override + public SafeHtmlHeader getHeader() { + return base.getHeader(); + } + + @Override + public LeaderboardRowDTO getValue(LeaderboardRowDTO object) { + return object; + } + + protected void defaultRender(Context context, LeaderboardRowDTO object, SafeHtmlBuilder sb) { + super.render(context, object, sb); + } + + @Override + public void render(Context context, LeaderboardRowDTO object, SafeHtmlBuilder sb) { + String competitorColor = getCompetitorColor(object.competitor); + String competitorColorBarStyle; + if (LeaderboardPanel.this.isEmbedded && competitorColor != null) { + competitorColorBarStyle = "style=\"border-bottom: 2px solid " + competitorColor + ";\""; + } else { + competitorColorBarStyle = "style=\"border: none;\""; + } + base.render(object, competitorColorBarStyle, sb); + } + } + + public abstract String getCompetitorColor(CompetitorDTO competitor); + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MetaLeaderboardViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MetaLeaderboardViewer.java index 3cb2d243a72..0ac2a3850ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MetaLeaderboardViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MetaLeaderboardViewer.java @@ -63,7 +63,7 @@ public class MetaLeaderboardViewer extends AbstractLeaderboardViewer parent, ComponentContext context, +public class MultiMultiRaceLeaderboardPanel extends MultiRaceLeaderboardPanel { + public MultiMultiRaceLeaderboardPanel(Component parent, ComponentContext context, SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java new file mode 100644 index 00000000000..dd8683cf0c8 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -0,0 +1,143 @@ +package com.sap.sailing.gwt.ui.leaderboard; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; +import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; +import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.domain.common.dto.LeaderboardDTO; +import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; +import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; +import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.client.shared.controls.AbstractSortableColumnWithMinMax; +import com.sap.sailing.gwt.ui.client.shared.filter.CompetitorRaceRankFilter; +import com.sap.sse.common.Util; +import com.sap.sse.common.filter.BinaryOperator; +import com.sap.sse.common.filter.Filter; +import com.sap.sse.common.filter.FilterSet; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.async.AsyncActionsExecutor; +import com.sap.sse.gwt.client.player.Timer; +import com.sap.sse.gwt.client.shared.components.Component; +import com.sap.sse.gwt.client.shared.settings.ComponentContext; + +public class MultiRaceLeaderboardPanel extends LeaderboardPanel { + + public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, + boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, + CompetitorSelectionProvider competitorSelectionProvider, String leaderboardGroupName, + String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, + boolean showRaceDetails) { + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + competitorSelectionProvider, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, + showRaceDetails); + updateSettings(settings); + } + + public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, + boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, + CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, + String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails, + CompetitorFilterPanel competitorSearchTextBox, boolean showSelectionCheckbox, + RaceTimesInfoProvider optionalRaceTimesInfoProvider, boolean autoExpandLastRaceColumn, + boolean adjustTimerDelay, boolean autoApplyTopNFilter, boolean showCompetitorFilterStatus, + boolean enableSyncScroller) { + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, + stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, + optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, + showCompetitorFilterStatus, enableSyncScroller); + updateSettings(settings); + } + + public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, + CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, + ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails) { + super(parent, context, sailingService, asyncActionsExecutor, settings, competitorSelectionProvider, + leaderboardName, errorReporter, stringMessages, showRaceDetails); + updateSettings(settings); + } + + @Override + public LeaderboardSettings getSettings() { + // TODO Auto-generated method stub + return null; + } + + @Override + protected RaceColumnSelection getDefaultRaceColumnSelection() { + return new ExplicitRaceColumnSelection(); + } + + @Override + public String getCompetitorColor(CompetitorDTO competitor) { + // not used for multi + return null; + } + + @Override + public boolean renderBoatColorIfNecessary(CompetitorDTO competitor, SafeHtmlBuilder sb) { + return false; + } + + @Override + public int getLegCount(LeaderboardDTO leaderboardDTO, String raceColumnName) { + return leaderboardDTO.getLegCount(raceColumnName, null); + } + + @Override + protected LeaderboardSettings overrideDefaultsForNamesOfRaceColumns(LeaderboardSettings currentSettings, + LeaderboardDTO result) { + return currentSettings.overrideDefaultsForNamesOfRaceColumns(result.getNamesOfRaceColumns()); + } + + @Override + protected void applyTop30FilterIfCompetitorSizeGreaterEqual40(LeaderboardDTO leaderboard) { + int maxRaceRank = 30; + if (leaderboard.competitors.size() >= 40) { + CompetitorRaceRankFilter raceRankFilter = new CompetitorRaceRankFilter(); + raceRankFilter.setLeaderboardFetcher(this); + raceRankFilter.setQuickRankProvider(this.competitorFilterPanel.getQuickRankProvider()); + raceRankFilter.setOperator(new BinaryOperator(BinaryOperator.Operators.LessThanEquals)); + raceRankFilter.setValue(maxRaceRank); + FilterSet> activeFilterSet = competitorSelectionProvider + .getOrCreateCompetitorsFilterSet(stringMessages.topNCompetitorsByRaceRank(maxRaceRank)); + activeFilterSet.addFilter(raceRankFilter); + competitorSelectionProvider.setCompetitorsFilterSet(activeFilterSet); + } + } + + @Override + protected void processAutoExpands(AbstractSortableColumnWithMinMax c, RaceColumn lastRaceColumn) { + } + + @Override + protected void updateExpansionStates(boolean expand) { + } + + /** + * Extracts the rows to display of the leaderboard. These are all {@link AbstractLeaderboardDTO#rows + * rows} in case {@link #preSelectedRace} is null, or only the rows of the competitors who scored in + * the race identified by {@link #preSelectedRace} otherwise. + */ + @Override + public Map getRowsToDisplay() { + Map result; + Iterable allFilteredCompetitors = competitorSelectionProvider.getFilteredCompetitors(); + result = new HashMap(); + for (CompetitorDTO competitor : leaderboard.rows.keySet()) { + if (Util.contains(allFilteredCompetitors, competitor)) { + result.put(competitor, leaderboard.rows.get(competitor)); + } + } + return result; + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardViewer.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java index aff7f65ccf6..d5890748658 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java @@ -28,11 +28,11 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; * @author Frank Mittag (c163874) * */ -public class LeaderboardViewer extends AbstractLeaderboardViewer { +public class MultiRaceLeaderboardViewer extends AbstractLeaderboardViewer { private final MultiCompetitorLeaderboardChart multiCompetitorChart; private LeaderboardPanel overallLeaderboardPanel; - public LeaderboardViewer(Component parent, + public MultiRaceLeaderboardViewer(Component parent, ComponentContext> componentContext, LeaderboardPerspectiveLifecycle lifecycle, PerspectiveCompositeSettings settings, @@ -46,7 +46,7 @@ public class LeaderboardViewer extends AbstractLeaderboardViewer parent, + private MultiRaceLeaderboardViewer(Component parent, ComponentContext> componentContext, LeaderboardPerspectiveLifecycle lifecycle, PerspectiveCompositeSettings settings, @@ -58,7 +58,7 @@ public class LeaderboardViewer extends AbstractLeaderboardViewer result) { if(result.size() == 1) { String overallLeaderboardName = result.get(0); - overallLeaderboardPanel = new OverallLeaderboardPanel(LeaderboardViewer.this, + overallLeaderboardPanel = new OverallLeaderboardPanel(MultiRaceLeaderboardViewer.this, getComponentContext(), sailingService, asyncActionsExecutor, settings.findSettingsByComponentId(OverallLeaderboardPanelLifecycle.ID), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/OverallLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/OverallLeaderboardPanel.java index b24d89d855f..22fe6402ae2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/OverallLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/OverallLeaderboardPanel.java @@ -13,7 +13,7 @@ import com.sap.sse.gwt.client.player.Timer; import com.sap.sse.gwt.client.shared.components.Component; import com.sap.sse.gwt.client.shared.settings.ComponentContext; -public class OverallLeaderboardPanel extends LeaderboardPanel { +public class OverallLeaderboardPanel extends MultiRaceLeaderboardPanel { public OverallLeaderboardPanel(Component parent, ComponentContext context, SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleLeaderboardPanel.java new file mode 100644 index 00000000000..72dffc48874 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleLeaderboardPanel.java @@ -0,0 +1,184 @@ +package com.sap.sailing.gwt.ui.leaderboard; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; +import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; +import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.domain.common.dto.LeaderboardDTO; +import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; +import com.sap.sailing.domain.common.dto.RaceColumnDTO; +import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; +import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.client.shared.controls.AbstractSortableColumnWithMinMax; +import com.sap.sailing.gwt.ui.client.shared.filter.CompetitorRaceRankFilter; +import com.sap.sse.common.Util; +import com.sap.sse.common.filter.BinaryOperator; +import com.sap.sse.common.filter.Filter; +import com.sap.sse.common.filter.FilterSet; +import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.async.AsyncActionsExecutor; +import com.sap.sse.gwt.client.player.Timer; +import com.sap.sse.gwt.client.shared.components.Component; +import com.sap.sse.gwt.client.shared.settings.ComponentContext; + +public class SingleLeaderboardPanel extends LeaderboardPanel { + private boolean autoExpandPreSelectedRace; + + /** + * If this is null, all leaderboard columns added by updating the leaderboard from the server are + * automatically added to the table. Otherwise, only the column whose {@link RaceColumnDTO#getRaceIdentifier(String) + * race identifier} matches the value of this attribute will be added. + */ + private final RegattaAndRaceIdentifier preSelectedRace; + + public SingleLeaderboardPanel(Component parent, ComponentContext context, SailingServiceAsync sailingService, + AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, + RegattaAndRaceIdentifier preSelectedRace, CompetitorSelectionProvider competitorSelectionProvider, + Timer timer, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, + StringMessages stringMessages, boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, + boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, + boolean autoExpandLastRaceColumn, boolean adjustTimerDelay, boolean autoApplyTopNFilter, + boolean showCompetitorFilterStatus, boolean enableSyncScroller) { + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, + stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, + optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, + showCompetitorFilterStatus, enableSyncScroller); + assert preSelectedRace != null; + this.preSelectedRace = preSelectedRace; + + updateSettings(settings); + } + + @Override + protected RaceColumnSelection getDefaultRaceColumnSelection() { + return new ExplicitRaceColumnSelectionWithPreselectedRace(preSelectedRace); + } + + @Override + public LeaderboardSettings getSettings() { + Iterable selectedRaceColumns = raceColumnSelection + .getSelectedRaceColumnsOrderedAsInLeaderboard(leaderboard); + List namesOfRaceColumnsToShow = new ArrayList<>(); + for (RaceColumnDTO raceColumn : selectedRaceColumns) { + namesOfRaceColumnsToShow.add(raceColumn.getName()); + } + LeaderboardSettings leaderboardSettings = new LeaderboardSettings( + Collections.unmodifiableList(selectedManeuverDetails), Collections.unmodifiableList(selectedLegDetails), + Collections.unmodifiableList(selectedRaceDetails), + Collections.unmodifiableList(selectedOverallDetailColumns), namesOfRaceColumnsToShow, + /* namesOfRacesToShow */ null, raceColumnSelection.getNumberOfLastRaceColumnsToShow(), + autoExpandPreSelectedRace, timer.getRefreshInterval(), /* nameOfRaceToSort */ null, + /* sortAscending */ true, /* updateUponPlayStateChange */ true, raceColumnSelection.getType(), + isShowAddedScores(), isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + isShowCompetitorSailId(), isShowCompetitorFullName(), isShowCompetitorNationality); + SettingsDefaultValuesUtils.keepDefaults(currentSettings, leaderboardSettings); + return leaderboardSettings; + } + + private void setAutoExpandPreSelectedRace(boolean autoExpandPreSelectedRace) { + this.autoExpandPreSelectedRace = autoExpandPreSelectedRace; + if (autoExpandPreSelectedRace) { + autoExpandPerformedOnce = false; + } + } + + private boolean isAutoExpandPreSelectedRace() { + return autoExpandPreSelectedRace; + } + + @Override + public String getCompetitorColor(CompetitorDTO competitor) { + return competitorSelectionProvider.getColor(competitor, preSelectedRace).getAsHtml(); + } + + @Override + public boolean renderBoatColorIfNecessary(CompetitorDTO competitor, SafeHtmlBuilder sb) { + boolean showBoatColor = !isShowCompetitorFullName() && isEmbedded; + if (showBoatColor) { + String competitorColor = competitorSelectionProvider.getColor(competitor, preSelectedRace).getAsHtml(); + sb.appendHtmlConstant("
"); + } + return showBoatColor; + } + + @Override + public int getLegCount(LeaderboardDTO leaderboardDTO, String raceColumnName) { + return leaderboardDTO.getLegCount(raceColumnName, preSelectedRace); + } + + @Override + protected LeaderboardSettings overrideDefaultsForNamesOfRaceColumns(LeaderboardSettings currentSettings, + LeaderboardDTO result) { + return currentSettings; + } + + @Override + protected void applyTop30FilterIfCompetitorSizeGreaterEqual40(LeaderboardDTO leaderboard) { + int maxRaceRank = 30; + if (leaderboard.competitors.size() >= 40) { + CompetitorRaceRankFilter raceRankFilter = new CompetitorRaceRankFilter(); + raceRankFilter.setLeaderboardFetcher(this); + raceRankFilter.setSelectedRace(preSelectedRace); + raceRankFilter.setQuickRankProvider(this.competitorFilterPanel.getQuickRankProvider()); + raceRankFilter.setOperator(new BinaryOperator(BinaryOperator.Operators.LessThanEquals)); + raceRankFilter.setValue(maxRaceRank); + FilterSet> activeFilterSet = competitorSelectionProvider + .getOrCreateCompetitorsFilterSet(stringMessages.topNCompetitorsByRaceRank(maxRaceRank)); + activeFilterSet.addFilter(raceRankFilter); + competitorSelectionProvider.setCompetitorsFilterSet(activeFilterSet); + } + } + + @Override + protected void processAutoExpands(AbstractSortableColumnWithMinMax c, RaceColumn lastRaceColumn) { + // Toggle pre-selected race, if the setting is set and it isn't open yet, or the last race column if + // that was requested + if ((!autoExpandPerformedOnce && isAutoExpandPreSelectedRace() && c instanceof RaceColumn + && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) + || (isAutoExpandLastRaceColumn() && c == lastRaceColumn)) { + ExpandableSortableColumn expandableSortableColumn = (ExpandableSortableColumn) c; + if (!expandableSortableColumn.isExpanded()) { + expandableSortableColumn.changeExpansionState(/* expand */ true); + autoExpandPerformedOnce = true; + } + } + if (c instanceof RaceColumn && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) { + RaceColumnDTO raceColumn = ((RaceColumn) c).getRace(); + informLeaderboardUpdateListenersAboutRaceSelected(preSelectedRace, raceColumn); + } + } + + @Override + protected void updateExpansionStates(boolean expand) { + setAutoExpandPreSelectedRace(expand); + } + + /** + * Extracts the rows to display of the leaderboard. These are all {@link AbstractLeaderboardDTO#rows + * rows} in case {@link #preSelectedRace} is null, or only the rows of the competitors who scored in + * the race identified by {@link #preSelectedRace} otherwise. + */ + @Override + public Map getRowsToDisplay() { + Map result; + Iterable allFilteredCompetitors = competitorSelectionProvider.getFilteredCompetitors(); + result = new HashMap(); + for (CompetitorDTO competitorInPreSelectedRace : getCompetitors(preSelectedRace)) { + if (Util.contains(allFilteredCompetitors, competitorInPreSelectedRace)) { + result.put(competitorInPreSelectedRace, leaderboard.rows.get(competitorInPreSelectedRace)); + } + } + return result; + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java index d432df66dbb..2c4bea76ab6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java @@ -63,6 +63,7 @@ import com.sap.sailing.gwt.ui.leaderboard.CompetitorColumnBase; import com.sap.sailing.gwt.ui.leaderboard.CompetitorFetcher; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSortableColumnWithMinMax; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.common.Util; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; @@ -78,7 +79,7 @@ import com.sap.sse.gwt.client.useragent.UserAgentDetails; * @author Axel Uhl (d043530) * */ -public class EditableLeaderboardPanel extends LeaderboardPanel { +public class EditableLeaderboardPanel extends MultiRaceLeaderboardPanel { private static EditableLeaderboardResources resources = GWT.create(EditableLeaderboardResources.class); final DateBox lastScoreCorrectionTimeBox; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 15577924386..720121464d1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -76,6 +76,7 @@ import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; import com.sap.sailing.gwt.ui.leaderboard.CompetitorFilterPanel; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.SingleLeaderboardPanel; import com.sap.sailing.gwt.ui.raceboard.RaceBoardResources.RaceBoardMainCss; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sse.common.Util; @@ -452,7 +453,7 @@ public class RaceBoardPanel LeaderboardPanelLifecycle leaderboardPanelLifecycle = getPerspectiveLifecycle().getLeaderboardPanelLifecycle(); LeaderboardSettings leaderboardSettings = settings .findSettingsByComponentId(leaderboardPanelLifecycle.getComponentId()); - return new LeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, + return new SingleLeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, leaderboardSettings, selectedRaceIdentifier != null, selectedRaceIdentifier, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, From 6ae04f0935b2f812fcbbabf454a6f7b123010206 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Tue, 4 Jul 2017 18:23:27 +0200 Subject: [PATCH 02/26] settings and livecycle seperation preparation --- .../gwt/ui/test/LeaderboardPanelMock.java | 4 +- ...erboardWithHeaderPerspectiveLifecycle.java | 8 +- ...iRaceLeaderboardWithHeaderPerspective.java | 17 ++-- .../multileaderboard/OldMultiLeaderboard.java | 4 +- .../regatta/RegattaAnalyticsDataManager.java | 14 ++- .../SharedLeaderboardRegattaTabView.java | 23 +++-- .../RegattaCompetitorAnalyticsTabView.java | 6 +- .../RegattaLeaderboardTabView.java | 14 +-- .../EventSeriesAnalyticsDataManager.java | 21 ++-- .../SharedLeaderboardEventSeriesTabView.java | 24 ++--- ...EventSeriesCompetitorAnalyticsTabView.java | 6 +- .../EventSeriesLeaderboardsTabView.java | 18 ++-- .../EventSeriesOverallLeaderboardTabView.java | 14 +-- .../client/RegattaOverviewPanel.java | 5 +- ...stractLeaderboardPerspectiveLifecycle.java | 2 +- .../LeaderboardPanelLifecycle.java | 44 +-------- .../leaderboard/LeaderboardSettings.java | 70 ++++--------- .../LeaderboardSettingsDialogComponent.java | 98 +++++-------------- .../LeaderboardSettingsFactory.java | 24 ++--- .../MetaLeaderboardPerspectiveLifecycle.java | 6 +- .../MultiRaceLeaderboardPanelLifecycle.java | 65 ++++++++++++ .../MultiRaceLeaderboardSettings.java | 65 ++++++++++++ ...aceLeaderboardSettingsDialogComponent.java | 73 ++++++++++++++ ...ltipleMultiLeaderboardPanelLifecycle.java} | 6 +- .../OverallLeaderboardPanelLifecycle.java | 4 +- ...allLeaderboardSettingsDialogComponent.java | 2 +- .../SingleRaceLeaderboardSettings.java | 35 +++++++ ...aceLeaderboardSettingsDialogComponent.java | 72 ++++++++++++++ .../ui/leaderboard/LeaderboardEntryPoint.java | 2 +- .../gwt/ui/leaderboard/LeaderboardPanel.java | 84 +++++++--------- .../ui/leaderboard/MetaLeaderboardViewer.java | 10 +- .../MultiLeaderboardProxyPanel.java | 33 +++---- .../MultiMultiRaceLeaderboardPanel.java | 10 +- .../MultiRaceLeaderboardPanel.java | 79 +++++++++++---- .../MultiRaceLeaderboardViewer.java | 13 ++- .../leaderboard/OverallLeaderboardPanel.java | 9 +- .../SelectedLeaderboardChangeProvider.java | 2 +- ...l.java => SingleRaceLeaderboardPanel.java} | 51 +++++++--- .../EditableLeaderboardPanel.java | 6 +- .../ui/raceboard/AbstractRaceBoardMode.java | 5 +- .../gwt/ui/raceboard/FullAnalysisMode.java | 11 ++- .../sailing/gwt/ui/raceboard/PlayerMode.java | 11 ++- .../gwt/ui/raceboard/RaceBoardPanel.java | 11 +-- .../RaceBoardPerspectiveLifecycle.java | 7 +- .../SingleRaceLeaderboardPanelLifecycle.java | 45 +++++++-- .../gwt/ui/raceboard/StartAnalysisMode.java | 11 ++- .../gwt/ui/raceboard/WinningLanesMode.java | 14 +-- 47 files changed, 708 insertions(+), 450 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/{MultiLeaderboardPanelLifecycle.java => MultipleMultiLeaderboardPanelLifecycle.java} (67%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/{SingleLeaderboardPanel.java => SingleRaceLeaderboardPanel.java} (80%) diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java index e71cc00fa03..b150b00d4f6 100644 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java @@ -3,7 +3,7 @@ package com.sap.sailing.gwt.ui.test; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -18,7 +18,7 @@ public class LeaderboardPanelMock extends MultiRaceLeaderboardPanel { public LeaderboardPanelMock(SailingServiceAsync sailingService, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages) { - super(null, null, sailingService, new AsyncActionsExecutor(), new LeaderboardSettings(), + super(null, null, sailingService, new AsyncActionsExecutor(), new MultiRaceLeaderboardSettings(), new CompetitorSelectionModel( /* hasMultiSelection */true), leaderboardName, errorReporter, stringMessages, /* showRaceDetails */ true); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspectiveLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspectiveLifecycle.java index ad4f5b82fdb..ae787326c58 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspectiveLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspectiveLifecycle.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.autoplay.client.shared.leaderboard; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.gwt.autoplay.client.shared.header.SAPHeaderComponentLifecycle; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardPanelLifecycle; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; import com.sap.sse.gwt.client.shared.perspective.AbstractPerspectiveLifecycle; @@ -14,14 +14,14 @@ import com.sap.sse.gwt.client.shared.perspective.AbstractPerspectiveLifecycle; public class LeaderboardWithHeaderPerspectiveLifecycle extends AbstractPerspectiveLifecycle { private final SAPHeaderComponentLifecycle sapHeaderLifecycle; - private final LeaderboardPanelLifecycle leaderboardPanelLifecycle; + private final MultiRaceLeaderboardPanelLifecycle leaderboardPanelLifecycle; private final StringMessages stringMessages; public static final String ID = "lbwh"; public LeaderboardWithHeaderPerspectiveLifecycle(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { this.stringMessages = stringMessages; - this.leaderboardPanelLifecycle = new LeaderboardPanelLifecycle(leaderboard, stringMessages); + this.leaderboardPanelLifecycle = new MultiRaceLeaderboardPanelLifecycle(leaderboard, stringMessages); this.sapHeaderLifecycle = new SAPHeaderComponentLifecycle(stringMessages.leaderboard() + ": " + (leaderboard.getDisplayName() == null ? leaderboard.name : leaderboard.getDisplayName()), stringMessages); @@ -54,7 +54,7 @@ public class LeaderboardWithHeaderPerspectiveLifecycle extends AbstractPerspecti return sapHeaderLifecycle; } - public LeaderboardPanelLifecycle getLeaderboardPanelLifecycle() { + public MultiRaceLeaderboardPanelLifecycle getLeaderboardPanelLifecycle() { return leaderboardPanelLifecycle; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/MultiRaceLeaderboardWithHeaderPerspective.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/MultiRaceLeaderboardWithHeaderPerspective.java index bcf76d5c026..11fda42a585 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/MultiRaceLeaderboardWithHeaderPerspective.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/MultiRaceLeaderboardWithHeaderPerspective.java @@ -15,14 +15,13 @@ import com.sap.sailing.gwt.autoplay.client.shared.header.SAPHeaderComponentSetti import com.sap.sailing.gwt.autoplay.client.shared.oldleaderboard.OldLeaderboard; import com.sap.sailing.gwt.common.client.CSS3Util; import com.sap.sailing.gwt.common.client.FullscreenUtil; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardPanelLifecycle; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; @@ -45,7 +44,7 @@ public class MultiRaceLeaderboardWithHeaderPerspective extends AbstractPerspecti private final DockLayoutPanel dockPanel; private final static int SAP_HEADER_HEIGHT = 75; private final Widget currentContentWidget; - private final LeaderboardPanel leaderboardPanel; + private final MultiRaceLeaderboardPanel leaderboardPanel; private final StringMessages stringMessages; public MultiRaceLeaderboardWithHeaderPerspective(Component parent, @@ -193,18 +192,18 @@ public class MultiRaceLeaderboardWithHeaderPerspective extends AbstractPerspecti withFullscreenButton); } - private LeaderboardPanel createLeaderboardPanel(LeaderboardWithHeaderPerspectiveLifecycle lifecycle, + private MultiRaceLeaderboardPanel createLeaderboardPanel(LeaderboardWithHeaderPerspectiveLifecycle lifecycle, PerspectiveCompositeSettings settings, SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages) { - LeaderboardPanelLifecycle leaderboardPanelLifecycle = getPerspectiveLifecycle().getLeaderboardPanelLifecycle(); - LeaderboardSettings leaderboardSettings = settings + MultiRaceLeaderboardPanelLifecycle leaderboardPanelLifecycle = getPerspectiveLifecycle().getLeaderboardPanelLifecycle(); + MultiRaceLeaderboardSettings leaderboardSettings = settings .findSettingsByComponentId(leaderboardPanelLifecycle.getComponentId()); - LeaderboardPanel leaderboardPanel = new MultiRaceLeaderboardPanel(this, getComponentContext(), sailingService, + MultiRaceLeaderboardPanel leaderboardPanel = new MultiRaceLeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, - leaderboardSettings, /*isEmbedded*/true, /* preSelectedRace */null, + leaderboardSettings, /*isEmbedded*/true, competitorSelectionProvider, timer, /* leaderboardGroupName */"", leaderboardName, errorReporter, stringMessages, /* showRaceDetails */false, /* competitorSearchTextBox */ null, /* showRegattaRank */ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java index fd75e0cfcf5..7ec8e3668e9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java @@ -23,7 +23,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.gwt.home.desktop.partials.old.EventRegattaLeaderboardResources; import com.sap.sailing.gwt.home.desktop.partials.old.LeaderboardDelegate; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.DebugIdHelper; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; @@ -160,7 +160,7 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar final String componentName = multiLeaderboardPanel.getLocalizedShortName(); final String debugIdPrefix = DebugIdHelper.createDebugId(componentName); - SettingsDialog dialog = new SettingsDialog(multiLeaderboardPanel, StringMessages.INSTANCE) { + SettingsDialog dialog = new SettingsDialog(multiLeaderboardPanel, StringMessages.INSTANCE) { protected Widget getAdditionalWidget() { Widget additionalWidget = super.getAdditionalWidget(); if (!oldMultiLeaderboardPanel.getElement().isOrHasChild(multiLeaderboardPanel.getElement())) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java index a9fb21ebbc0..7e92224e7f3 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java @@ -1,15 +1,13 @@ package com.sap.sailing.gwt.home.desktop.places.event.regatta; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.MultiCompetitorLeaderboardChartSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.DebugIdHelper; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.ErrorReporter; @@ -25,7 +23,7 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; * @author Frank Mittag (c163874) */ public class RegattaAnalyticsDataManager { - private LeaderboardPanel leaderboardPanel; + private MultiRaceLeaderboardPanel leaderboardPanel; private MultiCompetitorLeaderboardChart multiCompetitorChart; private final CompetitorSelectionModel competitorSelectionProvider; @@ -45,15 +43,15 @@ public class RegattaAnalyticsDataManager { this.multiCompetitorChart = null; } - public LeaderboardPanel createMultiRaceLeaderboardPanel(Component parent, ComponentContext context, - final LeaderboardSettings leaderboardSettings, final RegattaAndRaceIdentifier preselectedRace, + public MultiRaceLeaderboardPanel createMultiRaceLeaderboardPanel(Component parent, ComponentContext context, + final MultiRaceLeaderboardSettings leaderboardSettings, final String leaderboardGroupName, String leaderboardName, boolean showRaceDetails, boolean autoExpandLastRaceColumn) { if (leaderboardPanel == null) { leaderboardPanel = new MultiRaceLeaderboardPanel(parent, context, sailingService, asyncActionsExecutor, leaderboardSettings, - true, preselectedRace, + true, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, StringMessages.INSTANCE, showRaceDetails, /* competitorSearchTextBox */ null, /* showSelectionCheckbox */ true, /* raceTimesInfoProvider */ null, autoExpandLastRaceColumn, @@ -72,7 +70,7 @@ public class RegattaAnalyticsDataManager { return multiCompetitorChart; } - public LeaderboardPanel getLeaderboardPanel() { + public MultiRaceLeaderboardPanel getLeaderboardPanel() { return leaderboardPanel; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java index 47254eb228c..a5c708e492d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java @@ -4,13 +4,13 @@ import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.event.logical.shared.AttachEvent.Handler; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.gwt.home.desktop.places.Consumer; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardUrlSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardPanelLifecycle; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.settings.client.utils.StoredSettingsLocationFactory; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.gwt.client.mutationobserver.ElementSizeMutationObserver; import com.sap.sse.gwt.client.mutationobserver.ElementSizeMutationObserver.DomMutationCallback; import com.sap.sse.gwt.client.shared.settings.ComponentContext; @@ -31,20 +31,19 @@ public abstract class SharedLeaderboardRegattaTabView consumer) { + String placeToken, final Consumer consumer) { // FIXME remove boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter( LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); - final ComponentContext componentContext = createLeaderboardComponentContext(leaderboardName, userService, + final ComponentContext componentContext = createLeaderboardComponentContext(leaderboardName, userService, placeToken); - componentContext.getInitialSettings(new DefaultOnSettingsLoadedCallback() { + componentContext.getInitialSettings(new DefaultOnSettingsLoadedCallback() { @Override - public void onSuccess(LeaderboardSettings leaderboardSettings) { - final LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiRaceLeaderboardPanel(null, componentContext, // + public void onSuccess(MultiRaceLeaderboardSettings leaderboardSettings) { + final MultiRaceLeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiRaceLeaderboardPanel(null, componentContext, // leaderboardSettings, // - null, // "leaderboardGroupName", // TODO: keep using magic string? ask frank! leaderboardName, // true, @@ -78,12 +77,12 @@ public abstract class SharedLeaderboardRegattaTabView createLeaderboardComponentContext(String leaderboardName, UserService userService, + protected ComponentContext createLeaderboardComponentContext(String leaderboardName, UserService userService, String placeToken) { - final LeaderboardPanelLifecycle lifecycle = new LeaderboardPanelLifecycle(null, StringMessages.INSTANCE); + final MultiRaceLeaderboardPanelLifecycle lifecycle = new MultiRaceLeaderboardPanelLifecycle(null, StringMessages.INSTANCE); final StoredSettingsLocation storageDefinition = StoredSettingsLocationFactory.createStoredSettingsLocatorForEventRegattaLeaderboard(leaderboardName); - final ComponentContext componentContext = new PlaceBasedComponentContextWithSettingsStorage<>( + final ComponentContext componentContext = new PlaceBasedComponentContextWithSettingsStorage<>( lifecycle, userService, storageDefinition, placeToken); return componentContext; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.java index fefc27fb73d..ed1a46f70b5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.java @@ -29,7 +29,7 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateProvider; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.common.Util; /** @@ -96,9 +96,9 @@ public class RegattaCompetitorAnalyticsTabView extends SharedLeaderboardRegattaT } }; if(regattaAnalyticsManager.getLeaderboardPanel() == null) { - createSharedLeaderboardPanel(leaderboardName, regattaAnalyticsManager, currentPresenter.getUserService(), null, new Consumer() { + createSharedLeaderboardPanel(leaderboardName, regattaAnalyticsManager, currentPresenter.getUserService(), null, new Consumer() { @Override - public void consume(LeaderboardPanel object) { + public void consume(MultiRaceLeaderboardPanel object) { callback.run(); } }); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.java index 9ef6501d0e0..c29c700c1a2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.java @@ -29,10 +29,10 @@ import com.sap.sailing.gwt.home.shared.partials.placeholder.InfoPlaceholder; import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.shared.refresh.RefreshManagerWithErrorAndBusy; import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateProvider; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.gwt.client.shared.settings.DefaultOnSettingsLoadedCallback; import com.sap.sse.gwt.dispatch.shared.commands.CollectionResult; @@ -88,10 +88,10 @@ public class RegattaLeaderboardTabView extends SharedLeaderboardRegattaTabView leaderboardConsumer = new Consumer() { + MultiRaceLeaderboardPanel leaderboardPanel = regattaAnalyticsManager.getLeaderboardPanel(); + final Consumer leaderboardConsumer = new Consumer() { @Override - public void consume(LeaderboardPanel leaderboardPanel) { + public void consume(MultiRaceLeaderboardPanel leaderboardPanel) { leaderboardUpdateProvider = leaderboardPanel; leaderboardUpdateProvider.addLeaderboardUpdateListener(RegattaLeaderboardTabView.this); OldLeaderboardDelegateFullscreenViewer leaderboardDelegate = new OldLeaderboardDelegateFullscreenViewer(); @@ -123,9 +123,9 @@ public class RegattaLeaderboardTabView extends SharedLeaderboardRegattaTabView() { + .getInitialSettings(new DefaultOnSettingsLoadedCallback() { @Override - public void onSuccess(LeaderboardSettings settings) { + public void onSuccess(MultiRaceLeaderboardSettings settings) { leaderboardPanel.updateSettings(settings); leaderboardConsumer.consume(leaderboardPanel); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java index f61e3b25690..db942b9bc20 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java @@ -5,18 +5,15 @@ import java.util.Iterator; import java.util.List; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.domain.common.RaceIdentifier; -import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.CompetitorDTO; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.MultiCompetitorLeaderboardChartSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.DebugIdHelper; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.MultiLeaderboardProxyPanel; import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.common.Util; @@ -36,7 +33,7 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; * @author Axel Uhl (d043530) */ public class EventSeriesAnalyticsDataManager { - private LeaderboardPanel overallLeaderboardPanel; + private MultiRaceLeaderboardPanel overallLeaderboardPanel; private MultiCompetitorLeaderboardChart multiCompetitorChart; private MultiLeaderboardProxyPanel multiLeaderboardPanel; @@ -58,13 +55,13 @@ public class EventSeriesAnalyticsDataManager { this.multiCompetitorChart = null; } - public LeaderboardPanel createMultiRaceOverallLeaderboardPanel(Component parent, ComponentContext context, - final LeaderboardSettings leaderboardSettings, final RegattaAndRaceIdentifier preselectedRace, + public MultiRaceLeaderboardPanel createMultiRaceOverallLeaderboardPanel(Component parent, ComponentContext context, + final MultiRaceLeaderboardSettings leaderboardSettings, final String leaderboardGroupName, String leaderboardName, boolean showRaceDetails, boolean autoExpandLastRaceColumn) { if(overallLeaderboardPanel == null) { overallLeaderboardPanel = new MultiRaceLeaderboardPanel(parent, context, sailingService, asyncActionsExecutor, - leaderboardSettings, true, preselectedRace, + leaderboardSettings, true, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, StringMessages.INSTANCE, showRaceDetails, /* competitorSearchTextBox */ null, /* showSelectionCheckbox */ true, @@ -88,13 +85,13 @@ public class EventSeriesAnalyticsDataManager { } public MultiLeaderboardProxyPanel createMultiLeaderboardPanel(Component parent, ComponentContext context, - LeaderboardSettings leaderboardSettings, - String preselectedLeaderboardName, RaceIdentifier preselectedRace, String leaderboardGroupName, + MultiRaceLeaderboardSettings leaderboardSettings, + String preselectedLeaderboardName, String leaderboardGroupName, String metaLeaderboardName, boolean showRaceDetails, boolean autoExpandLastRaceColumn) { if(multiLeaderboardPanel == null) { multiLeaderboardPanel = new MultiLeaderboardProxyPanel(parent, context, sailingService, metaLeaderboardName, asyncActionsExecutor, timer, true /* isEmbedded */, - preselectedLeaderboardName, preselectedRace, errorReporter, StringMessages.INSTANCE, + preselectedLeaderboardName, errorReporter, StringMessages.INSTANCE, showRaceDetails, autoExpandLastRaceColumn, leaderboardSettings); } return multiLeaderboardPanel; @@ -104,7 +101,7 @@ public class EventSeriesAnalyticsDataManager { return multiLeaderboardPanel; } - public LeaderboardPanel getLeaderboardPanel() { + public MultiRaceLeaderboardPanel getLeaderboardPanel() { return overallLeaderboardPanel; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java index 5dc0b862304..cf3f67027b5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java @@ -4,13 +4,13 @@ import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.event.logical.shared.AttachEvent.Handler; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.gwt.home.desktop.places.Consumer; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardUrlSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardPanelLifecycle; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.settings.client.utils.StoredSettingsLocationFactory; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.gwt.client.shared.settings.ComponentContext; import com.sap.sse.gwt.client.shared.settings.DefaultOnSettingsLoadedCallback; import com.sap.sse.gwt.shared.GwtHttpRequestUtils; @@ -29,19 +29,19 @@ public abstract class SharedLeaderboardEventSeriesTabView consumer) { + String placeToken, final Consumer consumer) { // FIXME remove boolean autoExpandLastRaceColumn = GwtHttpRequestUtils .getBooleanParameter(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); - final ComponentContext componentContext = createLeaderboardComponentContext(leaderboardName, userService, + final ComponentContext componentContext = createLeaderboardComponentContext(leaderboardName, userService, placeToken); - componentContext.getInitialSettings(new DefaultOnSettingsLoadedCallback() { + componentContext.getInitialSettings(new DefaultOnSettingsLoadedCallback() { @Override - public void onSuccess(LeaderboardSettings leaderboardSettings) { - LeaderboardPanel leaderboardPanel = eventSeriesAnalyticsManager.createMultiRaceOverallLeaderboardPanel(null, - componentContext, leaderboardSettings, null, "leaderboardGroupName", + public void onSuccess(MultiRaceLeaderboardSettings leaderboardSettings) { + MultiRaceLeaderboardPanel leaderboardPanel = eventSeriesAnalyticsManager.createMultiRaceOverallLeaderboardPanel(null, + componentContext, leaderboardSettings, "leaderboardGroupName", leaderboardName, true, // this information came from place, now hard coded. check with frank autoExpandLastRaceColumn); leaderboardPanel.addAttachHandler(new Handler() { @@ -60,12 +60,12 @@ public abstract class SharedLeaderboardEventSeriesTabView createLeaderboardComponentContext(String leaderboardName, UserService userService, + protected ComponentContext createLeaderboardComponentContext(String leaderboardName, UserService userService, String placeToken) { - final LeaderboardPanelLifecycle lifecycle = new LeaderboardPanelLifecycle(null, StringMessages.INSTANCE); + final MultiRaceLeaderboardPanelLifecycle lifecycle = new MultiRaceLeaderboardPanelLifecycle(null, StringMessages.INSTANCE); final StoredSettingsLocation storageDefinition = StoredSettingsLocationFactory.createStoredSettingsLocatorForSeriesOverallLeaderboard(leaderboardName); - final ComponentContext componentContext = new PlaceBasedComponentContextWithSettingsStorage<>( + final ComponentContext componentContext = new PlaceBasedComponentContextWithSettingsStorage<>( lifecycle, userService, storageDefinition, placeToken); return componentContext; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.java index 7ef01d972de..5bf74c3d03f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.java @@ -25,7 +25,7 @@ import com.sap.sailing.gwt.home.desktop.places.fakeseries.SharedLeaderboardEvent import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.common.Util; /** @@ -78,9 +78,9 @@ public class EventSeriesCompetitorAnalyticsTabView extends SharedLeaderboardEven } }; if(eventSeriesAnalyticsManager.getLeaderboardPanel() == null) { - createSharedLeaderboardPanel(leaderboardName, eventSeriesAnalyticsManager, currentPresenter.getUserService(), null, new Consumer() { + createSharedLeaderboardPanel(leaderboardName, eventSeriesAnalyticsManager, currentPresenter.getUserService(), null, new Consumer() { @Override - public void consume(LeaderboardPanel object) { + public void consume(MultiRaceLeaderboardPanel object) { callback.run(); } }); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java index ac1c68a4c79..b6b195a56f5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java @@ -19,9 +19,9 @@ import com.sap.sailing.gwt.home.desktop.partials.old.multileaderboard.OldMultiLe import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesTabView; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardUrlSettings; -import com.sap.sailing.gwt.settings.client.leaderboard.MultiLeaderboardPanelLifecycle; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultipleMultiLeaderboardPanelLifecycle; import com.sap.sailing.gwt.settings.client.utils.StoredSettingsLocationFactory; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -74,14 +74,14 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT final EventSeriesAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getAnalyticsManager(); final boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); - final ComponentContext componentContext = createLeaderboardComponentContext(leaderboardName, currentPresenter.getUserService(), /*FIXME placeToken */ null); - componentContext.getInitialSettings(new DefaultOnSettingsLoadedCallback() { + final ComponentContext componentContext = createLeaderboardComponentContext(leaderboardName, currentPresenter.getUserService(), /*FIXME placeToken */ null); + componentContext.getInitialSettings(new DefaultOnSettingsLoadedCallback() { @Override - public void onSuccess(LeaderboardSettings settings) { + public void onSuccess(MultiRaceLeaderboardSettings settings) { MultiLeaderboardProxyPanel leaderboardPanel = regattaAnalyticsManager.createMultiLeaderboardPanel(null, componentContext, settings, null, // TODO: preselectedLeaderboardName - null, + "leaderboardGroupName", leaderboardName, true, // TODO @FM this information came from place, now hard coded. check with frank @@ -124,12 +124,12 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT } } - private ComponentContext createLeaderboardComponentContext(String leaderboardName, UserService userService, + private ComponentContext createLeaderboardComponentContext(String leaderboardName, UserService userService, String placeToken) { - final MultiLeaderboardPanelLifecycle lifecycle = new MultiLeaderboardPanelLifecycle(null, StringMessages.INSTANCE); + final MultipleMultiLeaderboardPanelLifecycle lifecycle = new MultipleMultiLeaderboardPanelLifecycle(null, StringMessages.INSTANCE); final StoredSettingsLocation storageDefinition = StoredSettingsLocationFactory.createStoredSettingsLocatorForSeriesRegattaLeaderboards(leaderboardName); - final ComponentContext componentContext = new PlaceBasedComponentContextWithSettingsStorage<>( + final ComponentContext componentContext = new PlaceBasedComponentContextWithSettingsStorage<>( lifecycle, userService, storageDefinition, placeToken); return componentContext; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.java index e11e2e5b4d8..c61a840af81 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.java @@ -16,8 +16,8 @@ import com.sap.sailing.gwt.home.desktop.places.Consumer; import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SharedLeaderboardEventSeriesTabView; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sse.gwt.client.shared.settings.DefaultOnSettingsLoadedCallback; /** @@ -62,9 +62,9 @@ public class EventSeriesOverallLeaderboardTabView extends SharedLeaderboardEvent String leaderboardName = currentPresenter.getSeriesDTO().getLeaderboardId(); if (leaderboardName != null && !leaderboardName.isEmpty()) { EventSeriesAnalyticsDataManager eventSeriesAnalyticsManager = currentPresenter.getCtx().getAnalyticsManager(); - final Consumer leaderboardConsumer = new Consumer() { + final Consumer leaderboardConsumer = new Consumer() { @Override - public void consume(LeaderboardPanel leaderboardPanel) { + public void consume(MultiRaceLeaderboardPanel leaderboardPanel) { initWidget(ourUiBinder.createAndBindUi(EventSeriesOverallLeaderboardTabView.this)); leaderboard.setLeaderboard(leaderboardPanel, currentPresenter.getAutoRefreshTimer()); eventSeriesAnalyticsManager.hideCompetitorChart(); @@ -74,13 +74,13 @@ public class EventSeriesOverallLeaderboardTabView extends SharedLeaderboardEvent } } }; - LeaderboardPanel leaderboardPanel = eventSeriesAnalyticsManager.getLeaderboardPanel(); + MultiRaceLeaderboardPanel leaderboardPanel = eventSeriesAnalyticsManager.getLeaderboardPanel(); if(leaderboardPanel == null) { createSharedLeaderboardPanel(leaderboardName, eventSeriesAnalyticsManager, currentPresenter.getUserService(), /*FIXME placeToken */ null, leaderboardConsumer); } else if( /*FIXME placeToken not empty */ false) { - createLeaderboardComponentContext(leaderboardName, currentPresenter.getUserService(), /*FIXME placeToken */ null).getInitialSettings(new DefaultOnSettingsLoadedCallback() { + createLeaderboardComponentContext(leaderboardName, currentPresenter.getUserService(), /*FIXME placeToken */ null).getInitialSettings(new DefaultOnSettingsLoadedCallback() { @Override - public void onSuccess(LeaderboardSettings settings) { + public void onSuccess(MultiRaceLeaderboardSettings settings) { leaderboardPanel.updateSettings(settings); leaderboardConsumer.consume(leaderboardPanel); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java index cb90b43db7b..5c5ef173dbd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java @@ -20,7 +20,7 @@ import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.regattaoverview.client.RegattaRaceStatesComponent.EntryHandler; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaOverviewContextDefinition; import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaRaceStatesSettings; import com.sap.sailing.gwt.settings.client.utils.StoredSettingsLocationFactory; @@ -309,7 +309,7 @@ public class RegattaOverviewPanel extends SimplePanel { if (leaderboardsTabPanel != null) { if (showLeaderboard) { final CompetitorSelectionModel competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true); - final LeaderboardSettings leaderboardSettings = new LeaderboardSettings(); + final MultiRaceLeaderboardSettings leaderboardSettings = new MultiRaceLeaderboardSettings(); sailingService.getLeaderboardsByEvent(eventDTO, new MarkedAsyncCallback>( new AsyncCallback>() { @Override @@ -318,7 +318,6 @@ public class RegattaOverviewPanel extends SimplePanel { for (StrippedLeaderboardDTO leaderboard : result) { LeaderboardPanel leaderboardPanel = new MultiRaceLeaderboardPanel(null, null, sailingService, new AsyncActionsExecutor(), leaderboardSettings, false, - /*preSelectedRace*/null, competitorSelectionProvider, null, leaderboard.name, errorReporter, stringMessages, /* showRaceDetails */false); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/AbstractLeaderboardPerspectiveLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/AbstractLeaderboardPerspectiveLifecycle.java index 78ecea8f5dc..6e63cc16374 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/AbstractLeaderboardPerspectiveLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/AbstractLeaderboardPerspectiveLifecycle.java @@ -9,7 +9,7 @@ public abstract class AbstractLeaderboardPerspectiveLifecycle extends AbstractPe protected AbstractLeaderboardPerspectiveLifecycle(StringMessages stringMessages, AbstractLeaderboardDTO leaderboard, boolean isOverall) { - addLifeCycle(new LeaderboardPanelLifecycle(leaderboard, stringMessages)); + addLifeCycle(new MultiRaceLeaderboardPanelLifecycle(leaderboard, stringMessages)); addLifeCycle(new MultiCompetitorLeaderboardChartLifecycle(isOverall)); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardPanelLifecycle.java index 0612f7804ff..8d51e52c2bc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardPanelLifecycle.java @@ -5,11 +5,10 @@ import java.util.List; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sse.common.settings.generic.support.SettingsUtil; import com.sap.sse.gwt.client.shared.components.ComponentLifecycle; -public class LeaderboardPanelLifecycle - implements ComponentLifecycle { +public abstract class LeaderboardPanelLifecycle + implements ComponentLifecycle { public static final String ID = "lb"; protected final StringMessages stringMessages; @@ -20,17 +19,6 @@ public class LeaderboardPanelLifecycle this.namesOfRaceColumns = leaderboard != null ? leaderboard.getNamesOfRaceColumns() : new ArrayList(); } - @Override - public LeaderboardSettingsDialogComponent getSettingsDialogComponent(LeaderboardSettings settings) { - return new LeaderboardSettingsDialogComponent(settings, namesOfRaceColumns, stringMessages); - } - - @Override - public LeaderboardSettings createDefaultSettings() { - return LeaderboardSettingsFactory.getInstance() - .createNewDefaultSettingsWithRaceColumns(namesOfRaceColumns); - } - @Override public String getLocalizedShortName() { return stringMessages.leaderboard(); @@ -45,32 +33,4 @@ public class LeaderboardPanelLifecycle public boolean hasSettings() { return true; } - - @Override - public LeaderboardSettings extractUserSettings(LeaderboardSettings currentLeaderboardSettings) { - LeaderboardSettings defaultLeaderboardSettings = createDefaultSettings(); - LeaderboardSettings globalLeaderboardSettings = new LeaderboardSettings( - currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), - currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), - defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), - defaultLeaderboardSettings.getNamesOfRacesToShow(), - currentLeaderboardSettings.getNumberOfLastRacesToShow(), - defaultLeaderboardSettings.isAutoExpandPreSelectedRace(), - currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - defaultLeaderboardSettings.getNameOfRaceToSort(), defaultLeaderboardSettings.isSortAscending(), - currentLeaderboardSettings.isUpdateUponPlayStateChange(), - currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), - currentLeaderboardSettings.isShowAddedScores(), - currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), - currentLeaderboardSettings.isShowCompetitorSailIdColumn(), - currentLeaderboardSettings.isShowCompetitorFullNameColumn(), - currentLeaderboardSettings.isShowCompetitorNationality()); - return SettingsUtil.copyValues(globalLeaderboardSettings, defaultLeaderboardSettings); - } - - @Override - public LeaderboardSettings extractDocumentSettings(LeaderboardSettings leaderboardSettings) { - return leaderboardSettings; - } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java index 8ce27b8eed9..209164101f7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java @@ -16,7 +16,6 @@ import com.sap.sse.common.settings.generic.IntegerSetting; import com.sap.sse.common.settings.generic.LongSetting; import com.sap.sse.common.settings.generic.StringSetSetting; import com.sap.sse.common.settings.generic.StringSetting; -import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; /** * Settings for the {@link LeaderboardPanel} component. If you change here, please also visit @@ -26,34 +25,34 @@ import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; * @author Axel Uhl (d043530) * */ -public class LeaderboardSettings extends AbstractGenericSerializableSettings { +public abstract class LeaderboardSettings extends AbstractGenericSerializableSettings { private static final long serialVersionUID = 2625004077963291333L; /** * Only one of {@link #namesOfRaceColumnsToShow} and {@link #namesOfRacesToShow} must be non-null. * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to EXPLIZIT */ - private StringSetSetting namesOfRaceColumnsToShow; + protected StringSetSetting namesOfRaceColumnsToShow; /** * Only one of {@link #namesOfRaceColumnsToShow} and {@link #namesOfRacesToShow} must be non-null. * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to EXPLIZIT */ - private StringSetSetting namesOfRacesToShow; + protected StringSetSetting namesOfRacesToShow; /** * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to LAST_N */ - private IntegerSetting numberOfLastRacesToShow; + protected IntegerSetting numberOfLastRacesToShow; - private EnumSetSetting maneuverDetailsToShow; - private EnumSetSetting legDetailsToShow; - private EnumSetSetting raceDetailsToShow; - private EnumSetSetting overallDetailsToShow; - private boolean autoExpandPreSelectedRace = false; - private LongSetting delayBetweenAutoAdvancesInMilliseconds; - private BooleanSetting updateUponPlayStateChange; - private BooleanSetting isShowCompetitorNationality; + protected EnumSetSetting maneuverDetailsToShow; + protected EnumSetSetting legDetailsToShow; + protected EnumSetSetting raceDetailsToShow; + protected EnumSetSetting overallDetailsToShow; + protected boolean autoExpandPreSelectedRace = false; + protected LongSetting delayBetweenAutoAdvancesInMilliseconds; + protected BooleanSetting updateUponPlayStateChange; + protected BooleanSetting isShowCompetitorNationality; /** * There are two ways to select race columns. @@ -61,27 +60,27 @@ public class LeaderboardSettings extends AbstractGenericSerializableSettings { */ public static enum RaceColumnSelectionStrategies { EXPLICIT, LAST_N; } - private EnumSetting activeRaceColumnSelectionStrategy; + protected EnumSetting activeRaceColumnSelectionStrategy; /** * An optional sort column; if null, the leaderboard sorting won't be touched when updating the settings. * Otherwise, the leaderboard will be sorted by the race column (ascending if {@link #sortAscending}, descending otherwise. */ - private StringSetting nameOfRaceToSort; - private BooleanSetting sortAscending; + protected StringSetting nameOfRaceToSort; + protected BooleanSetting sortAscending; /** * Shows scores sum'd up for each race column */ - private BooleanSetting showAddedScores; + protected BooleanSetting showAddedScores; - private BooleanSetting showCompetitorSailIdColumn; - private BooleanSetting showCompetitorFullNameColumn; + protected BooleanSetting showCompetitorSailIdColumn; + protected BooleanSetting showCompetitorFullNameColumn; /** * Show a column with total number of races completed */ - private BooleanSetting showOverallColumnWithNumberOfRacesCompletedPerCompetitor; + protected BooleanSetting showOverallColumnWithNumberOfRacesCompletedPerCompetitor; @Override protected void addChildSettings() { @@ -263,35 +262,4 @@ public class LeaderboardSettings extends AbstractGenericSerializableSettings { public boolean isShowCompetitorNationality() { return isShowCompetitorNationality.getValue(); } - - public LeaderboardSettings overrideDefaultsForNamesOfRaceColumns(List namesOfRaceColumns) { - LeaderboardSettings newSettings = new LeaderboardSettings(); - newSettings.legDetailsToShow.setValues(this.getLegDetailsToShow()); - newSettings.raceDetailsToShow.setValues(this.getRaceDetailsToShow()); - newSettings.overallDetailsToShow.setValues(this.getOverallDetailsToShow()); - newSettings.numberOfLastRacesToShow.setValue(this.getNumberOfLastRacesToShow()); - newSettings.activeRaceColumnSelectionStrategy.setValue(this.getActiveRaceColumnSelectionStrategy()); - newSettings.autoExpandPreSelectedRace = this.isAutoExpandPreSelectedRace(); - newSettings.delayBetweenAutoAdvancesInMilliseconds.setValue(this.getDelayBetweenAutoAdvancesInMilliseconds()); - newSettings.maneuverDetailsToShow.setValues(this.getManeuverDetailsToShow()); - newSettings.nameOfRaceToSort.setValue(this.getNameOfRaceToSort()); - newSettings.sortAscending.setValue(this.isSortAscending()); - newSettings.updateUponPlayStateChange.setValue(this.isUpdateUponPlayStateChange()); - newSettings.showAddedScores.setValue(this.isShowAddedScores()); - newSettings.showCompetitorSailIdColumn.setValue(this.isShowCompetitorSailIdColumn()); - newSettings.showCompetitorFullNameColumn.setValue(this.isShowCompetitorFullNameColumn()); - newSettings.showOverallColumnWithNumberOfRacesCompletedPerCompetitor.setValue(this.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor()); - newSettings.isShowCompetitorNationality.setValue(this.isShowCompetitorNationality()); - if(namesOfRaceColumns != null && !namesOfRaceColumns.isEmpty()) { - newSettings.namesOfRacesToShow.setValues(null); - } - newSettings.namesOfRaceColumnsToShow.setValues(this.getNamesOfRaceColumnsToShow()); - SettingsDefaultValuesUtils.keepDefaults(this, newSettings); - if(namesOfRaceColumns != null && !namesOfRaceColumns.isEmpty()) { - newSettings.namesOfRacesToShow.setDefaultValues(null); - } - newSettings.namesOfRaceColumnsToShow.setDefaultValues(namesOfRaceColumns); - return newSettings; - } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java index b0123809777..8f01c053c00 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java @@ -1,6 +1,5 @@ package com.sap.sailing.gwt.settings.client.leaderboard; -import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; @@ -30,32 +29,31 @@ import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.LegColumn; import com.sap.sailing.gwt.ui.leaderboard.ManeuverCountRaceColumn; import com.sap.sse.common.Util; -import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; import com.sap.sse.gwt.client.controls.IntegerBox; import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class LeaderboardSettingsDialogComponent implements SettingsDialogComponent { - private final Map raceColumnCheckboxes; - private final List raceAllRaceColumnNames; - private final Map maneuverDetailCheckboxes; - private final Map legDetailCheckboxes; - private final Map raceDetailCheckboxes; - private final Map overallDetailCheckboxes; - private final StringMessages stringMessages; - private LongBox refreshIntervalInSecondsBox; - private RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy; +public abstract class LeaderboardSettingsDialogComponent implements SettingsDialogComponent { + protected final Map raceColumnCheckboxes; + protected final List raceAllRaceColumnNames; + protected final Map maneuverDetailCheckboxes; + protected final Map legDetailCheckboxes; + protected final Map raceDetailCheckboxes; + protected final Map overallDetailCheckboxes; + protected final StringMessages stringMessages; + protected LongBox refreshIntervalInSecondsBox; + protected RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy; - private RadioButton explicitRaceColumnSelectionRadioBtn; - private RadioButton lastNRacesColumnSelectionRadioBtn; - private IntegerBox numberOfLastRacesToShowBox; - private CheckBox showAddedScoresCheckBox; - private CheckBox showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox; - private CheckBox showCompetitorSailIdColumnheckBox; - private CheckBox showCompetitorFullNameColumnCheckBox; - private CheckBox isCompetitorNationalityColumnVisible; - private LeaderboardSettings initialSettings; + protected RadioButton explicitRaceColumnSelectionRadioBtn; + protected RadioButton lastNRacesColumnSelectionRadioBtn; + protected IntegerBox numberOfLastRacesToShowBox; + protected CheckBox showAddedScoresCheckBox; + protected CheckBox showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox; + protected CheckBox showCompetitorSailIdColumnheckBox; + protected CheckBox showCompetitorFullNameColumnCheckBox; + protected CheckBox isCompetitorNationalityColumnVisible; + protected LeaderboardSettings initialSettings; public LeaderboardSettingsDialogComponent(LeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { this.initialSettings = initialSettings; @@ -357,62 +355,10 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone } @Override - public LeaderboardSettings getResult() { - List maneuverDetailsToShow = new ArrayList(); - for (Map.Entry entry : maneuverDetailCheckboxes.entrySet()) { - if (entry.getValue().getValue()) { - maneuverDetailsToShow.add(entry.getKey()); - } - } - List overallDetailsToShow = new ArrayList(); - for (Map.Entry entry : overallDetailCheckboxes.entrySet()) { - if (entry.getValue().getValue()) { - overallDetailsToShow.add(entry.getKey()); - } - } - List raceDetailsToShow = new ArrayList(); - for (Map.Entry entry : raceDetailCheckboxes.entrySet()) { - if (entry.getValue().getValue()) { - raceDetailsToShow.add(entry.getKey()); - } - } - List legDetailsToShow = new ArrayList(); - for (Map.Entry entry : legDetailCheckboxes.entrySet()) { - if (entry.getValue().getValue()) { - legDetailsToShow.add(entry.getKey()); - } - } - List namesOfRaceColumnsToShow = null; - if (activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT) { - namesOfRaceColumnsToShow = new ArrayList(); - for (Map.Entry entry : raceColumnCheckboxes.entrySet()) { - if (entry.getValue().getValue()) { - namesOfRaceColumnsToShow.add(entry.getKey()); - } - } - } - Long delayBetweenAutoAdvancesValue = refreshIntervalInSecondsBox.getValue(); - Integer lastNRacesToShowValue = activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N ? - numberOfLastRacesToShowBox.getValue() : null; - LeaderboardSettings newSettings = new LeaderboardSettings(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, - overallDetailsToShow, namesOfRaceColumnsToShow, /* nameOfRacesToShow */null, - lastNRacesToShowValue, - initialSettings.isAutoExpandPreSelectedRace(), 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), - null, - true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, - /*showAddedScores*/ showAddedScoresCheckBox.getValue().booleanValue(), - /*showOverallColumnWithNumberOfRacesSailedPerCompetitor*/ showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox.getValue().booleanValue(), - showCompetitorSailIdColumnheckBox.getValue(), showCompetitorFullNameColumnCheckBox.getValue(), - isCompetitorNationalityColumnVisible.getValue()); - SettingsDefaultValuesUtils.keepDefaults(initialSettings, newSettings); - return newSettings; - } - - @Override - public Validator getValidator() { - return new Validator() { + public Validator getValidator() { + return new Validator() { @Override - public String getErrorMessage(LeaderboardSettings valueToValidate) { + public String getErrorMessage(T valueToValidate) { final String result; if (valueToValidate.getLegDetailsToShow().isEmpty()) { result = stringMessages.selectAtLeastOneLegDetail(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java index edfb17a754d..2ffdd288e4b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java @@ -23,15 +23,15 @@ public class LeaderboardSettingsFactory { return instance; } - public LeaderboardSettings createNewDefaultSettingsWithRaceColumns(List namesOfRaceColumns) { - LeaderboardSettings leaderboardSettings = new LeaderboardSettings(namesOfRaceColumns); + public MultiRaceLeaderboardSettings createNewDefaultSettingsWithRaceColumns(List namesOfRaceColumns) { + MultiRaceLeaderboardSettings leaderboardSettings = new MultiRaceLeaderboardSettings(namesOfRaceColumns); SettingsUtil.copyDefaultsFromValues(leaderboardSettings, leaderboardSettings); return leaderboardSettings; } - public LeaderboardSettings createNewSettingsWithCustomRaceDetails(List raceDetailsToShow) { - LeaderboardSettings defaultSettings = new LeaderboardSettings(); - return new LeaderboardSettings( + public SingleRaceLeaderboardSettings createNewSettingsWithCustomRaceDetails(List raceDetailsToShow) { + LeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); + return new SingleRaceLeaderboardSettings( defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), raceDetailsToShow, defaultSettings.getOverallDetailsToShow(), @@ -50,8 +50,8 @@ public class LeaderboardSettingsFactory { defaultSettings.isShowCompetitorNationality()); } - public LeaderboardSettings createSettingsWithCustomExpandPreselectedRaceState(LeaderboardSettings settings, boolean expandPreselectedRace) { - return new LeaderboardSettings( + public SingleRaceLeaderboardSettings createSettingsWithCustomExpandPreselectedRaceState(SingleRaceLeaderboardSettings settings, boolean expandPreselectedRace) { + return new SingleRaceLeaderboardSettings( settings.getManeuverDetailsToShow(), settings.getLegDetailsToShow(), settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(), @@ -69,14 +69,14 @@ public class LeaderboardSettingsFactory { settings.isShowCompetitorNationality()); } - public LeaderboardSettings mergeLeaderboardSettings(LeaderboardSettings settingsWithRaceSelection, LeaderboardSettings settingsWithDetails) { - LeaderboardSettings newSettings = mergeLeaderboardSettingsHelper(settingsWithRaceSelection, settingsWithDetails); - LeaderboardSettings newDefaultSettings = mergeLeaderboardSettingsHelper(SettingsDefaultValuesUtils.getDefaultSettings(new LeaderboardSettings(), settingsWithRaceSelection), SettingsDefaultValuesUtils.getDefaultSettings(new LeaderboardSettings(), settingsWithDetails)); + public MultiRaceLeaderboardSettings mergeLeaderboardSettings(MultiRaceLeaderboardSettings settingsWithRaceSelection, MultiRaceLeaderboardSettings settingsWithDetails) { + MultiRaceLeaderboardSettings newSettings = mergeLeaderboardSettingsHelper(settingsWithRaceSelection, settingsWithDetails); + MultiRaceLeaderboardSettings newDefaultSettings = mergeLeaderboardSettingsHelper(SettingsDefaultValuesUtils.getDefaultSettings(new MultiRaceLeaderboardSettings(), settingsWithRaceSelection), SettingsDefaultValuesUtils.getDefaultSettings(new MultiRaceLeaderboardSettings(), settingsWithDetails)); SettingsDefaultValuesUtils.keepDefaults(newDefaultSettings, newSettings); return newSettings; } - private LeaderboardSettings mergeLeaderboardSettingsHelper(LeaderboardSettings settingsWithRaceSelection, LeaderboardSettings settingsWithDetails) { + private MultiRaceLeaderboardSettings mergeLeaderboardSettingsHelper(MultiRaceLeaderboardSettings settingsWithRaceSelection, MultiRaceLeaderboardSettings settingsWithDetails) { Collection maneuverDetails = settingsWithDetails.getManeuverDetailsToShow(); Collection legDetails = settingsWithDetails.getLegDetailsToShow(); Collection raceDetails = settingsWithDetails.getRaceDetailsToShow(); @@ -94,7 +94,7 @@ public class LeaderboardSettingsFactory { boolean sortAscending = settingsWithRaceSelection.isSortAscending(); boolean updateUponPlayStateChange = settingsWithRaceSelection.isUpdateUponPlayStateChange(); - return new LeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetailsToShow, + return new MultiRaceLeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetailsToShow, namesOfRaceColumnsToShow, namesOfRacesToShow, numberOfLastRacesToShow, autoExpandPreSelectedRace, refreshIntervalInMs, nameOfRaceToSort, sortAscending, updateUponPlayStateChange, strategy, /*showAddedScores*/ false, /* showOverallRacesCompleted */ false, showCompetitorSailIdColumn, showCompetitorFullNameColumns, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MetaLeaderboardPerspectiveLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MetaLeaderboardPerspectiveLifecycle.java index 48fe492747e..3cfcff07e98 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MetaLeaderboardPerspectiveLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MetaLeaderboardPerspectiveLifecycle.java @@ -7,11 +7,11 @@ public class MetaLeaderboardPerspectiveLifecycle extends AbstractLeaderboardPers public static final String ID = "mlbh"; - private final MultiLeaderboardPanelLifecycle multiLeaderboardPanelLifecycle; + private final MultipleMultiLeaderboardPanelLifecycle multiLeaderboardPanelLifecycle; public MetaLeaderboardPerspectiveLifecycle(StringMessages stringMessages, AbstractLeaderboardDTO leaderboard) { super(stringMessages, leaderboard, true); - multiLeaderboardPanelLifecycle = new MultiLeaderboardPanelLifecycle(null, stringMessages); + multiLeaderboardPanelLifecycle = new MultipleMultiLeaderboardPanelLifecycle(null, stringMessages); addLifeCycle(multiLeaderboardPanelLifecycle); } @@ -25,7 +25,7 @@ public class MetaLeaderboardPerspectiveLifecycle extends AbstractLeaderboardPers return ID; } - public MultiLeaderboardPanelLifecycle getMultiLeaderboardPanelLifecycle() { + public MultipleMultiLeaderboardPanelLifecycle getMultiLeaderboardPanelLifecycle() { return multiLeaderboardPanelLifecycle; } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java new file mode 100644 index 00000000000..05a225f7fa6 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java @@ -0,0 +1,65 @@ +package com.sap.sailing.gwt.settings.client.leaderboard; + +import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.settings.generic.support.SettingsUtil; + +public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle { + public MultiRaceLeaderboardPanelLifecycle(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { + super(leaderboard, stringMessages); + } + @Override + public MultiRaceLeaderboardSettings extractUserSettings(MultiRaceLeaderboardSettings currentLeaderboardSettings) { + MultiRaceLeaderboardSettings defaultLeaderboardSettings = createDefaultSettings(); + MultiRaceLeaderboardSettings globalLeaderboardSettings = new MultiRaceLeaderboardSettings( + currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), + currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), + defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), + defaultLeaderboardSettings.getNamesOfRacesToShow(), + currentLeaderboardSettings.getNumberOfLastRacesToShow(), + defaultLeaderboardSettings.isAutoExpandPreSelectedRace(), + currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), + defaultLeaderboardSettings.getNameOfRaceToSort(), defaultLeaderboardSettings.isSortAscending(), + currentLeaderboardSettings.isUpdateUponPlayStateChange(), + currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), + currentLeaderboardSettings.isShowAddedScores(), + currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + currentLeaderboardSettings.isShowCompetitorSailIdColumn(), + currentLeaderboardSettings.isShowCompetitorFullNameColumn(), + currentLeaderboardSettings.isShowCompetitorNationality()); + return SettingsUtil.copyValues(globalLeaderboardSettings, defaultLeaderboardSettings); + } + + @Override + public MultiRaceLeaderboardSettings extractDocumentSettings(MultiRaceLeaderboardSettings currentLeaderboardSettings) { + MultiRaceLeaderboardSettings defaultLeaderboardSettings = createDefaultSettings(); + MultiRaceLeaderboardSettings contextSpecificLeaderboardSettings = new MultiRaceLeaderboardSettings( + currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), + currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), + defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), + defaultLeaderboardSettings.getNamesOfRacesToShow(), + currentLeaderboardSettings.getNumberOfLastRacesToShow(), + currentLeaderboardSettings.isAutoExpandPreSelectedRace(), + currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), + defaultLeaderboardSettings.getNameOfRaceToSort(), currentLeaderboardSettings.isSortAscending(), + currentLeaderboardSettings.isUpdateUponPlayStateChange(), + currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), + currentLeaderboardSettings.isShowAddedScores(), + currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + currentLeaderboardSettings.isShowCompetitorSailIdColumn(), + currentLeaderboardSettings.isShowCompetitorFullNameColumn(), + currentLeaderboardSettings.isShowCompetitorNationality()); + return SettingsUtil.copyValues(contextSpecificLeaderboardSettings, defaultLeaderboardSettings); + } + + @Override + public MultiRaceLeaderboardSettingsDialogComponent getSettingsDialogComponent(MultiRaceLeaderboardSettings settings) { + return new MultiRaceLeaderboardSettingsDialogComponent(settings, namesOfRaceColumns, stringMessages); + } + + @Override + public MultiRaceLeaderboardSettings createDefaultSettings() { + return LeaderboardSettingsFactory.getInstance() + .createNewDefaultSettingsWithRaceColumns(namesOfRaceColumns); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java new file mode 100644 index 00000000000..fe5bebd13a6 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java @@ -0,0 +1,65 @@ +package com.sap.sailing.gwt.settings.client.leaderboard; + +import java.util.Collection; +import java.util.List; + +import com.sap.sailing.domain.common.DetailType; +import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; + +public class MultiRaceLeaderboardSettings extends LeaderboardSettings { + + public MultiRaceLeaderboardSettings() { + super(); + } + + public MultiRaceLeaderboardSettings(Collection maneuverDetailsToShow, + Collection legDetailsToShow, Collection raceDetailsToShow, + Collection overallDetailsToShow, List namesOfRaceColumnsToShow, + List namesOfRacesToShow, Integer numberOfLastRacesToShow, boolean autoExpandPreSelectedRace, + Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, boolean sortAscending, + boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, + boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, + boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, + boolean isCompetitorNationalityColumnVisible) { + super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, + namesOfRacesToShow, numberOfLastRacesToShow, autoExpandPreSelectedRace, delayBetweenAutoAdvancesInMilliseconds, + nameOfRaceToSort, sortAscending, updateUponPlayStateChange, activeRaceColumnSelectionStrategy, showAddedScores, + showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, + showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); + } + + public MultiRaceLeaderboardSettings(Iterable namesOfRaceColumnsToShow) { + super(namesOfRaceColumnsToShow); + } + + public LeaderboardSettings overrideDefaultsForNamesOfRaceColumns(List namesOfRaceColumns) { + LeaderboardSettings newSettings = new MultiRaceLeaderboardSettings(); + newSettings.legDetailsToShow.setValues(this.getLegDetailsToShow()); + newSettings.raceDetailsToShow.setValues(this.getRaceDetailsToShow()); + newSettings.overallDetailsToShow.setValues(this.getOverallDetailsToShow()); + newSettings.numberOfLastRacesToShow.setValue(this.getNumberOfLastRacesToShow()); + newSettings.activeRaceColumnSelectionStrategy.setValue(this.getActiveRaceColumnSelectionStrategy()); + newSettings.autoExpandPreSelectedRace = this.isAutoExpandPreSelectedRace(); + newSettings.delayBetweenAutoAdvancesInMilliseconds.setValue(this.getDelayBetweenAutoAdvancesInMilliseconds()); + newSettings.maneuverDetailsToShow.setValues(this.getManeuverDetailsToShow()); + newSettings.nameOfRaceToSort.setValue(this.getNameOfRaceToSort()); + newSettings.sortAscending.setValue(this.isSortAscending()); + newSettings.updateUponPlayStateChange.setValue(this.isUpdateUponPlayStateChange()); + newSettings.showAddedScores.setValue(this.isShowAddedScores()); + newSettings.showCompetitorSailIdColumn.setValue(this.isShowCompetitorSailIdColumn()); + newSettings.showCompetitorFullNameColumn.setValue(this.isShowCompetitorFullNameColumn()); + newSettings.showOverallColumnWithNumberOfRacesCompletedPerCompetitor.setValue(this.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor()); + newSettings.isShowCompetitorNationality.setValue(this.isShowCompetitorNationality()); + if(namesOfRaceColumns != null && !namesOfRaceColumns.isEmpty()) { + newSettings.namesOfRacesToShow.setValues(null); + } + newSettings.namesOfRaceColumnsToShow.setValues(this.getNamesOfRaceColumnsToShow()); + SettingsDefaultValuesUtils.keepDefaults(this, newSettings); + if(namesOfRaceColumns != null && !namesOfRaceColumns.isEmpty()) { + newSettings.namesOfRacesToShow.setDefaultValues(null); + } + newSettings.namesOfRaceColumnsToShow.setDefaultValues(namesOfRaceColumns); + return newSettings; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java new file mode 100644 index 00000000000..7df34697d3f --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java @@ -0,0 +1,73 @@ +package com.sap.sailing.gwt.settings.client.leaderboard; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.google.gwt.user.client.ui.CheckBox; +import com.sap.sailing.domain.common.DetailType; +import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; + +public class MultiRaceLeaderboardSettingsDialogComponent + extends LeaderboardSettingsDialogComponent { + + public MultiRaceLeaderboardSettingsDialogComponent(LeaderboardSettings initialSettings, + List allRaceColumnNames, StringMessages stringMessages) { + super(initialSettings, allRaceColumnNames, stringMessages); + } + + @Override + public MultiRaceLeaderboardSettings getResult() { + List maneuverDetailsToShow = new ArrayList(); + for (Map.Entry entry : maneuverDetailCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + maneuverDetailsToShow.add(entry.getKey()); + } + } + List overallDetailsToShow = new ArrayList(); + for (Map.Entry entry : overallDetailCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + overallDetailsToShow.add(entry.getKey()); + } + } + List raceDetailsToShow = new ArrayList(); + for (Map.Entry entry : raceDetailCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + raceDetailsToShow.add(entry.getKey()); + } + } + List legDetailsToShow = new ArrayList(); + for (Map.Entry entry : legDetailCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + legDetailsToShow.add(entry.getKey()); + } + } + List namesOfRaceColumnsToShow = null; + if (activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT) { + namesOfRaceColumnsToShow = new ArrayList(); + for (Map.Entry entry : raceColumnCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + namesOfRaceColumnsToShow.add(entry.getKey()); + } + } + } + Long delayBetweenAutoAdvancesValue = refreshIntervalInSecondsBox.getValue(); + Integer lastNRacesToShowValue = activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N + ? numberOfLastRacesToShowBox.getValue() : null; + MultiRaceLeaderboardSettings newSettings = new MultiRaceLeaderboardSettings(maneuverDetailsToShow, + legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, + /* nameOfRacesToShow */null, lastNRacesToShowValue, initialSettings.isAutoExpandPreSelectedRace(), + 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), null, + true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, + /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), + /* showOverallColumnWithNumberOfRacesSailedPerCompetitor */ showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox + .getValue().booleanValue(), + showCompetitorSailIdColumnheckBox.getValue(), showCompetitorFullNameColumnCheckBox.getValue(), + isCompetitorNationalityColumnVisible.getValue()); + SettingsDefaultValuesUtils.keepDefaults(initialSettings, newSettings); + return newSettings; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultipleMultiLeaderboardPanelLifecycle.java similarity index 67% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiLeaderboardPanelLifecycle.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultipleMultiLeaderboardPanelLifecycle.java index 2b380edfcf6..4358d26874a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultipleMultiLeaderboardPanelLifecycle.java @@ -7,10 +7,10 @@ import com.sap.sailing.gwt.ui.client.StringMessages; * This is a special lifecycle that uses a different ID, which is required to allow a MultiLeaderboard and a normal * Leaderboard to coexist. */ -public class MultiLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle { +public class MultipleMultiLeaderboardPanelLifecycle extends MultiRaceLeaderboardPanelLifecycle { public static final String MID = "mlb"; - public MultiLeaderboardPanelLifecycle(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { + public MultipleMultiLeaderboardPanelLifecycle(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { super(leaderboard, stringMessages); } @@ -20,7 +20,7 @@ public class MultiLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle { } @Override - public LeaderboardSettings extractDocumentSettings(LeaderboardSettings leaderboardSettings) { + public MultiRaceLeaderboardSettings extractDocumentSettings(MultiRaceLeaderboardSettings leaderboardSettings) { return createDefaultSettings(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardPanelLifecycle.java index 9ffb5d5ac11..fb8f9c9172b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardPanelLifecycle.java @@ -7,7 +7,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; * This is a special lifecycle that uses a different ID, which is required to allow a OverallLeaderboard and a normal * Leaderboard to coexist. */ -public class OverallLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle { +public class OverallLeaderboardPanelLifecycle extends MultiRaceLeaderboardPanelLifecycle { public static final String ID = "olb"; @@ -26,7 +26,7 @@ public class OverallLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle } @Override - public LeaderboardSettingsDialogComponent getSettingsDialogComponent(LeaderboardSettings settings) { + public MultiRaceLeaderboardSettingsDialogComponent getSettingsDialogComponent(MultiRaceLeaderboardSettings settings) { return new OverallLeaderboardSettingsDialogComponent(settings, namesOfRaceColumns, stringMessages); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardSettingsDialogComponent.java index c3e9896e33b..66e62774066 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardSettingsDialogComponent.java @@ -6,7 +6,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.gwt.client.dialog.DataEntryDialog; -public class OverallLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { +public class OverallLeaderboardSettingsDialogComponent extends MultiRaceLeaderboardSettingsDialogComponent { public OverallLeaderboardSettingsDialogComponent(LeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { super(initialSettings, allRaceColumnNames, stringMessages); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java new file mode 100644 index 00000000000..4276cd573e3 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java @@ -0,0 +1,35 @@ +package com.sap.sailing.gwt.settings.client.leaderboard; + +import java.util.Collection; +import java.util.List; + +import com.sap.sailing.domain.common.DetailType; + +public class SingleRaceLeaderboardSettings extends LeaderboardSettings { + + public SingleRaceLeaderboardSettings() { + super(); + // TODO Auto-generated constructor stub + } + + public SingleRaceLeaderboardSettings(Collection maneuverDetailsToShow, + Collection legDetailsToShow, Collection raceDetailsToShow, + Collection overallDetailsToShow, List namesOfRaceColumnsToShow, + List namesOfRacesToShow, Integer numberOfLastRacesToShow, boolean autoExpandPreSelectedRace, + Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, boolean sortAscending, + boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, + boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, + boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, + boolean isCompetitorNationalityColumnVisible) { + super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, + namesOfRacesToShow, numberOfLastRacesToShow, autoExpandPreSelectedRace, delayBetweenAutoAdvancesInMilliseconds, + nameOfRaceToSort, sortAscending, updateUponPlayStateChange, activeRaceColumnSelectionStrategy, showAddedScores, + showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, + showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); + } + + public SingleRaceLeaderboardSettings(Iterable namesOfRaceColumnsToShow) { + super(namesOfRaceColumnsToShow); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java new file mode 100644 index 00000000000..e4373b7bbc3 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java @@ -0,0 +1,72 @@ +package com.sap.sailing.gwt.settings.client.leaderboard; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.google.gwt.user.client.ui.CheckBox; +import com.sap.sailing.domain.common.DetailType; +import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; + +public class SingleRaceLeaderboardSettingsDialogComponent + extends LeaderboardSettingsDialogComponent { + + public SingleRaceLeaderboardSettingsDialogComponent(SingleRaceLeaderboardSettings initialSettings, + List allRaceColumnNames, StringMessages stringMessages) { + super(initialSettings, allRaceColumnNames, stringMessages); + } + + @Override + public SingleRaceLeaderboardSettings getResult() { + List maneuverDetailsToShow = new ArrayList(); + for (Map.Entry entry : maneuverDetailCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + maneuverDetailsToShow.add(entry.getKey()); + } + } + List overallDetailsToShow = new ArrayList(); + for (Map.Entry entry : overallDetailCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + overallDetailsToShow.add(entry.getKey()); + } + } + List raceDetailsToShow = new ArrayList(); + for (Map.Entry entry : raceDetailCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + raceDetailsToShow.add(entry.getKey()); + } + } + List legDetailsToShow = new ArrayList(); + for (Map.Entry entry : legDetailCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + legDetailsToShow.add(entry.getKey()); + } + } + List namesOfRaceColumnsToShow = null; + if (activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT) { + namesOfRaceColumnsToShow = new ArrayList(); + for (Map.Entry entry : raceColumnCheckboxes.entrySet()) { + if (entry.getValue().getValue()) { + namesOfRaceColumnsToShow.add(entry.getKey()); + } + } + } + Long delayBetweenAutoAdvancesValue = refreshIntervalInSecondsBox.getValue(); + Integer lastNRacesToShowValue = activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N + ? numberOfLastRacesToShowBox.getValue() : null; + SingleRaceLeaderboardSettings newSettings = new SingleRaceLeaderboardSettings(maneuverDetailsToShow, + legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, + /* nameOfRacesToShow */null, lastNRacesToShowValue, initialSettings.isAutoExpandPreSelectedRace(), + 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), null, + true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, + /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), + /* showOverallColumnWithNumberOfRacesSailedPerCompetitor */ showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox + .getValue().booleanValue(), + showCompetitorSailIdColumnheckBox.getValue(), showCompetitorFullNameColumnCheckBox.getValue(), + isCompetitorNationalityColumnVisible.getValue()); + SettingsDefaultValuesUtils.keepDefaults(initialSettings, newSettings); + return newSettings; + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java index b2efc04bb6a..f1786188b49 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java @@ -163,7 +163,7 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint { final MultiRaceLeaderboardViewer leaderboardViewer = new MultiRaceLeaderboardViewer(null, context, rootComponentLifeCycle, defaultSettings, sailingService, new AsyncActionsExecutor(), - timer, null, leaderboardGroupName, leaderboardName, + timer, leaderboardGroupName, leaderboardName, LeaderboardEntryPoint.this, getStringMessages(), getActualChartDetailType(defaultSettings)); createUi(leaderboardViewer, defaultSettings, timer, leaderboardContextDefinition); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index 4fd469be5ad..7688f109bad 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -82,7 +82,6 @@ import com.sap.sailing.domain.common.impl.InvertibleComparatorAdapter; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettingsDialogComponent; import com.sap.sailing.gwt.ui.actions.GetLeaderboardByNameAction; import com.sap.sailing.gwt.ui.client.Collator; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; @@ -125,8 +124,6 @@ import com.sap.sse.gwt.client.shared.components.AbstractCompositeComponent; import com.sap.sse.gwt.client.shared.components.Component; import com.sap.sse.gwt.client.shared.components.ComponentResources; import com.sap.sse.gwt.client.shared.components.IsEmbeddableComponent; -import com.sap.sse.gwt.client.shared.components.SettingsDialog; -import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; import com.sap.sse.gwt.client.shared.settings.ComponentContext; /** @@ -135,7 +132,7 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; * @author Axel Uhl (D043530) * */ -public abstract class LeaderboardPanel extends AbstractCompositeComponent +public abstract class LeaderboardPanel extends AbstractCompositeComponent implements TimeListener, PlayStateListener, DisplayedLeaderboardRowsProvider, IsEmbeddableComponent, CompetitorSelectionChangeListener, LeaderboardFetcher, BusyStateProvider, LeaderboardUpdateProvider { private static final LeaderboardResources RESOURCES = GWT.create(LeaderboardResources.class); @@ -387,16 +384,15 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent parent, ComponentContext context, SailingServiceAsync sailingService, - AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, - RegattaAndRaceIdentifier preSelectedRace, CompetitorSelectionProvider competitorSelectionProvider, + AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, CompetitorSelectionProvider competitorSelectionProvider, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, final StringMessages stringMessages, boolean showRaceDetails) { - this(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + this(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, new Timer( // perform the first request as "live" but don't by default auto-play @@ -410,8 +406,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent parent, ComponentContext context, SailingServiceAsync sailingService, - AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, - RegattaAndRaceIdentifier preSelectedRace, CompetitorSelectionProvider competitorSelectionProvider, + AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages, boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, @@ -425,7 +420,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent(/* pageSize */10000, TABLE_RESOURCES); @@ -523,9 +505,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent settingsDialog = new SettingsDialog(LeaderboardPanel.this, stringMessages); - settingsDialog.ensureDebugId("LeaderboardSettingsDialog"); - settingsDialog.show(); + openSettingsDialog(); } }); this.competitorFilterPanel = competitorSearchTextBox; @@ -543,9 +523,23 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent getRaceColumnByRaceName(String raceName) { for (int i = 0; i < getLeaderboardTable().getColumnCount(); i++) { Column column = getLeaderboardTable().getColumn(i); - if (column instanceof RaceColumn) { + if (column instanceof LeaderboardPanel.RaceColumn) { RaceColumnDTO raceInLeaderboard = ((RaceColumn) column).getRace(); for (FleetDTO fleet : raceInLeaderboard.getFleets()) { final RegattaAndRaceIdentifier raceIdentifier = raceInLeaderboard.getRaceIdentifier(fleet); @@ -2156,7 +2150,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent getRaceColumnByRaceColumnName(String raceColumnName) { for (int i = 0; i < getLeaderboardTable().getColumnCount(); i++) { Column column = getLeaderboardTable().getColumn(i); - if (column instanceof RaceColumn) { + if (column instanceof LeaderboardPanel.RaceColumn) { if (((RaceColumn) column).getRaceColumnName().equals(raceColumnName)) { return (RaceColumn) column; } @@ -2373,7 +2367,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent namesOfExpandedRaceColumns = new ArrayList(); for (int i = 0; i < getLeaderboardTable().getColumnCount(); i++) { Column column = getLeaderboardTable().getColumn(i); - if (column instanceof RaceColumn) { + if (column instanceof LeaderboardPanel.RaceColumn) { RaceColumn raceColumn = (RaceColumn) column; if (raceColumn.isExpanded()) { namesOfExpandedRaceColumns.add(raceColumn.getRaceColumnName()); @@ -2441,7 +2435,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent lastRaceColumn = null; for (int i = getLeaderboardTable().getColumnCount() - 1; i >= 0; i--) { - if (getLeaderboardTable().getColumn(i) instanceof RaceColumn) { + if (getLeaderboardTable().getColumn(i) instanceof LeaderboardPanel.RaceColumn) { lastRaceColumn = (RaceColumn) getLeaderboardTable().getColumn(i); break; } @@ -2532,7 +2526,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent c = getLeaderboardTable().getColumn(i); - if (c instanceof RaceColumn) { + if (c instanceof LeaderboardPanel.RaceColumn) { RaceColumn rc = (RaceColumn) c; // If the new leaderboard no longer contains the column, getLegCount will return -1, causing the // column @@ -2885,7 +2879,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent raceColumn) { if (getLeaderboardTable() - .getColumn(getLeaderboardTable().getColumnCount() - 1) instanceof TotalNetPointssColumn) { + .getColumn(getLeaderboardTable().getColumnCount() - 1) instanceof LeaderboardPanel.TotalNetPointssColumn) { removeColumn(getLeaderboardTable().getColumnCount() - 1); } addColumn(raceColumn); @@ -2960,7 +2954,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent)) { + .getColumn(columnIndexWhereToInsertTheNextColumn) instanceof SailIDColumn)) { insertColumn(columnIndexWhereToInsertTheNextColumn, new SailIDColumn(new CompetitorFetcher() { @Override @@ -2972,20 +2966,20 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent columnIndexWhereToInsertTheNextColumn && getLeaderboardTable() - .getColumn(columnIndexWhereToInsertTheNextColumn) instanceof SailIDColumn) { + .getColumn(columnIndexWhereToInsertTheNextColumn) instanceof SailIDColumn) { removeColumn(columnIndexWhereToInsertTheNextColumn); } } if (isShowCompetitorFullName()) { if (getLeaderboardTable().getColumnCount() <= columnIndexWhereToInsertTheNextColumn || !(getLeaderboardTable() - .getColumn(columnIndexWhereToInsertTheNextColumn) instanceof CompetitorColumn)) { + .getColumn(columnIndexWhereToInsertTheNextColumn) instanceof LeaderboardPanel.CompetitorColumn)) { insertColumn(columnIndexWhereToInsertTheNextColumn, createCompetitorColumn()); } columnIndexWhereToInsertTheNextColumn++; } else { if (getLeaderboardTable().getColumnCount() > columnIndexWhereToInsertTheNextColumn && getLeaderboardTable() - .getColumn(columnIndexWhereToInsertTheNextColumn) instanceof CompetitorColumn) { + .getColumn(columnIndexWhereToInsertTheNextColumn) instanceof LeaderboardPanel.CompetitorColumn) { removeColumn(columnIndexWhereToInsertTheNextColumn); } } @@ -3005,7 +2999,7 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent zeroBasedIndexOfCarryColumn - && getLeaderboardTable().getColumn(zeroBasedIndexOfCarryColumn) instanceof CarryColumn) { + && getLeaderboardTable().getColumn(zeroBasedIndexOfCarryColumn) instanceof LeaderboardPanel.CarryColumn) { removeColumn(zeroBasedIndexOfCarryColumn); } } protected void ensureCarryColumn(int zeroBasedIndexOfCarryColumn) { if (getLeaderboardTable().getColumnCount() <= zeroBasedIndexOfCarryColumn - || !(getLeaderboardTable().getColumn(zeroBasedIndexOfCarryColumn) instanceof CarryColumn)) { + || !(getLeaderboardTable().getColumn(zeroBasedIndexOfCarryColumn) instanceof LeaderboardPanel.CarryColumn)) { while (getLeaderboardTable().getColumnCount() > zeroBasedIndexOfCarryColumn) { removeColumn(zeroBasedIndexOfCarryColumn); } @@ -3146,12 +3140,6 @@ public abstract class LeaderboardPanel extends AbstractCompositeComponent getSettingsDialogComponent(LeaderboardSettings settings) { - return new LeaderboardSettingsDialogComponent(settings, leaderboard.getNamesOfRaceColumns(), - stringMessages); - } - @Override public String getLocalizedShortName() { return stringMessages.leaderboard(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MetaLeaderboardViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MetaLeaderboardViewer.java index 0ac2a3850ee..8675871cecb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MetaLeaderboardViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MetaLeaderboardViewer.java @@ -7,9 +7,9 @@ import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPerspectiveOwnSettings; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.MetaLeaderboardPerspectiveLifecycle; -import com.sap.sailing.gwt.settings.client.leaderboard.MultiLeaderboardPanelLifecycle; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultipleMultiLeaderboardPanelLifecycle; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -63,7 +63,7 @@ public class MetaLeaderboardViewer extends AbstractLeaderboardViewer implements TimeListener, SelectedLeaderboardChangeProvider { +public class MultiLeaderboardProxyPanel extends AbstractLazyComponent implements TimeListener, SelectedLeaderboardChangeProvider { - private LeaderboardPanel selectedLeaderboardPanel; + private MultiRaceLeaderboardPanel selectedLeaderboardPanel; private FlowPanel selectedLeaderboardFlowPanel; private final StringMessages stringMessages; @@ -65,16 +64,16 @@ public class MultiLeaderboardProxyPanel extends AbstractLazyComponent leaderboardUpdateListeners; private final Set selectedLeaderboardChangeListeners; - private HashMap contextStore; - private LeaderboardSettings loadedSettings; + private HashMap contextStore; + private MultiRaceLeaderboardSettings loadedSettings; public MultiLeaderboardProxyPanel(Component parent, ComponentContext context, SailingServiceAsync sailingService, String metaLeaderboardName, AsyncActionsExecutor asyncActionsExecutor, - Timer timer, boolean isEmbedded, String preselectedLeaderboardName, RaceIdentifier preselectedRace, + Timer timer, boolean isEmbedded, String preselectedLeaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails, boolean autoExpandLastRaceColumn, - LeaderboardSettings settings) { + MultiRaceLeaderboardSettings settings) { super(parent, context); loadedSettings = settings; @@ -146,17 +145,17 @@ public class MultiLeaderboardProxyPanel extends AbstractLazyComponent getSettingsDialogComponent(LeaderboardSettings settings) { + public SettingsDialogComponent getSettingsDialogComponent(MultiRaceLeaderboardSettings settings) { return selectedLeaderboardPanel.getSettingsDialogComponent(settings); } @Override - public void updateSettings(LeaderboardSettings newSettings) { + public void updateSettings(MultiRaceLeaderboardSettings newSettings) { // store contextspecific setting in this hashmap, so they are not lost on tab change contextStore.put(selectedLeaderboardPanel.getLeaderboardName(), newSettings); selectedLeaderboardPanel.updateSettings(newSettings); @@ -225,7 +224,7 @@ public class MultiLeaderboardProxyPanel extends AbstractLazyComponent parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, - boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, - CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, + boolean isEmbedded, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, boolean autoExpandLastRaceColumn, boolean adjustTimerDelay, boolean autoApplyTopNFilter, boolean showCompetitorFilterStatus, boolean enableSyncScroller) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index dd8683cf0c8..84a6414309f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -1,15 +1,20 @@ package com.sap.sailing.gwt.ui.leaderboard; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; +import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettingsDialogComponent; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -20,56 +25,74 @@ import com.sap.sse.common.Util; import com.sap.sse.common.filter.BinaryOperator; import com.sap.sse.common.filter.Filter; import com.sap.sse.common.filter.FilterSet; +import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; import com.sap.sse.gwt.client.player.Timer; import com.sap.sse.gwt.client.shared.components.Component; +import com.sap.sse.gwt.client.shared.components.SettingsDialog; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; import com.sap.sse.gwt.client.shared.settings.ComponentContext; -public class MultiRaceLeaderboardPanel extends LeaderboardPanel { +public class MultiRaceLeaderboardPanel extends LeaderboardPanel { public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, - boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, + boolean isEmbedded, CompetitorSelectionProvider competitorSelectionProvider, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails); - updateSettings(settings); + initialize(settings); } public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, - boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, + boolean isEmbedded, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, boolean autoExpandLastRaceColumn, boolean adjustTimerDelay, boolean autoApplyTopNFilter, boolean showCompetitorFilterStatus, boolean enableSyncScroller) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, showCompetitorFilterStatus, enableSyncScroller); - updateSettings(settings); + initialize(settings); } public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails) { super(parent, context, sailingService, asyncActionsExecutor, settings, competitorSelectionProvider, leaderboardName, errorReporter, stringMessages, showRaceDetails); - updateSettings(settings); + initialize(settings); } @Override - public LeaderboardSettings getSettings() { - // TODO Auto-generated method stub - return null; + public MultiRaceLeaderboardSettings getSettings() { + Iterable selectedRaceColumns = raceColumnSelection + .getSelectedRaceColumnsOrderedAsInLeaderboard(leaderboard); + List namesOfRaceColumnsToShow = new ArrayList<>(); + for (RaceColumnDTO raceColumn : selectedRaceColumns) { + namesOfRaceColumnsToShow.add(raceColumn.getName()); + } + MultiRaceLeaderboardSettings leaderboardSettings = new MultiRaceLeaderboardSettings( + Collections.unmodifiableList(selectedManeuverDetails), Collections.unmodifiableList(selectedLegDetails), + Collections.unmodifiableList(selectedRaceDetails), + Collections.unmodifiableList(selectedOverallDetailColumns), namesOfRaceColumnsToShow, + /* namesOfRacesToShow */ null, raceColumnSelection.getNumberOfLastRaceColumnsToShow(), + false, timer.getRefreshInterval(), /* nameOfRaceToSort */ null, + /* sortAscending */ true, /* updateUponPlayStateChange */ true, raceColumnSelection.getType(), + isShowAddedScores(), isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + isShowCompetitorSailId(), isShowCompetitorFullName(), isShowCompetitorNationality); + SettingsDefaultValuesUtils.keepDefaults(currentSettings, leaderboardSettings); + return leaderboardSettings; } @Override @@ -96,7 +119,7 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel { @Override protected LeaderboardSettings overrideDefaultsForNamesOfRaceColumns(LeaderboardSettings currentSettings, LeaderboardDTO result) { - return currentSettings.overrideDefaultsForNamesOfRaceColumns(result.getNamesOfRaceColumns()); + return ((MultiRaceLeaderboardSettings) currentSettings).overrideDefaultsForNamesOfRaceColumns(result.getNamesOfRaceColumns()); } @Override @@ -115,10 +138,6 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel { } } - @Override - protected void processAutoExpands(AbstractSortableColumnWithMinMax c, RaceColumn lastRaceColumn) { - } - @Override protected void updateExpansionStates(boolean expand) { } @@ -140,4 +159,24 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel { } return result; } + + @Override + public SettingsDialogComponent getSettingsDialogComponent( + MultiRaceLeaderboardSettings useTheseSettings) { + return new MultiRaceLeaderboardSettingsDialogComponent((MultiRaceLeaderboardSettings) useTheseSettings, leaderboard.getNamesOfRaceColumns(), + stringMessages); + } + + @Override + protected void openSettingsDialog() { + SettingsDialog settingsDialog = new SettingsDialog(this, stringMessages); + settingsDialog.ensureDebugId("LeaderboardSettingsDialog"); + settingsDialog.show(); + } + + @Override + protected void processAutoExpands(AbstractSortableColumnWithMinMax c, RaceColumn lastRaceColumn) { + } + + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java index d5890748658..3f8944d5ce3 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java @@ -6,7 +6,6 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.FlowPanel; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPerspectiveLifecycle; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPerspectiveOwnSettings; @@ -37,12 +36,12 @@ public class MultiRaceLeaderboardViewer extends AbstractLeaderboardViewer settings, final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, - final Timer timer, final RegattaAndRaceIdentifier preselectedRace, + final Timer timer, final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages, DetailType chartDetailType) { this(parent, componentContext, lifecycle, settings, new CompetitorSelectionModel(/* hasMultiSelection */true), sailingService, asyncActionsExecutor, timer, - preselectedRace, leaderboardGroupName, leaderboardName, errorReporter, + leaderboardGroupName, leaderboardName, errorReporter, stringMessages, chartDetailType); } @@ -52,15 +51,15 @@ public class MultiRaceLeaderboardViewer extends AbstractLeaderboardViewer settings, CompetitorSelectionModel competitorSelectionModel, final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, - final Timer timer, final RegattaAndRaceIdentifier preselectedRace, + final Timer timer, final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages, DetailType chartDetailType) { super(parent, componentContext, lifecycle, settings, competitorSelectionModel, asyncActionsExecutor, timer, stringMessages); // FIXME: Cleanup with java8 using supplier init(new MultiRaceLeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, - settings.findSettingsByComponentId(LeaderboardPanelLifecycle.ID), preselectedRace != null, - preselectedRace, competitorSelectionModel, timer, leaderboardGroupName, leaderboardName, errorReporter, + settings.findSettingsByComponentId(LeaderboardPanelLifecycle.ID), false, + competitorSelectionModel, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, settings.getPerspectiveOwnSettings().isShowRaceDetails(), /* competitorSearchTextBox */ null, /* showSelectionCheckbox */ true, /* raceTimesInfoProvider */ null, settings.getPerspectiveOwnSettings().isAutoExpandLastRaceColumn(), /* adjustTimerDelay */ true, @@ -103,7 +102,7 @@ public class MultiRaceLeaderboardViewer extends AbstractLeaderboardViewer parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, - boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, + boolean isEmbedded, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, boolean autoExpandLastRaceColumn, boolean adjustTimerDelay, boolean autoApplyTopNFilter, boolean showCompetitorFilterStatus, boolean enableSyncScroller) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeProvider.java index e19f52bd4bb..90934b70f2e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeProvider.java @@ -7,5 +7,5 @@ public interface SelectedLeaderboardChangeProvider { void removeSelectedLeaderboardChangeListener(SelectedLeaderboardChangeListener listener); - void setSelectedLeaderboard(LeaderboardPanel selectedLeaderboard); + void setSelectedLeaderboard(MultiRaceLeaderboardPanel selectedLeaderboard); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java similarity index 80% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleLeaderboardPanel.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java index 72dffc48874..dd37c0eeaf1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java @@ -1,7 +1,6 @@ package com.sap.sailing.gwt.ui.leaderboard; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -14,6 +13,8 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettingsDialogComponent; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -29,9 +30,11 @@ import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; import com.sap.sse.gwt.client.player.Timer; import com.sap.sse.gwt.client.shared.components.Component; +import com.sap.sse.gwt.client.shared.components.SettingsDialog; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; import com.sap.sse.gwt.client.shared.settings.ComponentContext; -public class SingleLeaderboardPanel extends LeaderboardPanel { +public class SingleRaceLeaderboardPanel extends LeaderboardPanel { private boolean autoExpandPreSelectedRace; /** @@ -41,7 +44,7 @@ public class SingleLeaderboardPanel extends LeaderboardPanel { */ private final RegattaAndRaceIdentifier preSelectedRace; - public SingleLeaderboardPanel(Component parent, ComponentContext context, SailingServiceAsync sailingService, + public SingleRaceLeaderboardPanel(Component parent, ComponentContext context, SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, @@ -49,7 +52,7 @@ public class SingleLeaderboardPanel extends LeaderboardPanel { boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, boolean autoExpandLastRaceColumn, boolean adjustTimerDelay, boolean autoApplyTopNFilter, boolean showCompetitorFilterStatus, boolean enableSyncScroller) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, @@ -57,7 +60,7 @@ public class SingleLeaderboardPanel extends LeaderboardPanel { assert preSelectedRace != null; this.preSelectedRace = preSelectedRace; - updateSettings(settings); + initialize(settings); } @Override @@ -66,17 +69,17 @@ public class SingleLeaderboardPanel extends LeaderboardPanel { } @Override - public LeaderboardSettings getSettings() { + public SingleRaceLeaderboardSettings getSettings() { Iterable selectedRaceColumns = raceColumnSelection .getSelectedRaceColumnsOrderedAsInLeaderboard(leaderboard); List namesOfRaceColumnsToShow = new ArrayList<>(); for (RaceColumnDTO raceColumn : selectedRaceColumns) { namesOfRaceColumnsToShow.add(raceColumn.getName()); } - LeaderboardSettings leaderboardSettings = new LeaderboardSettings( - Collections.unmodifiableList(selectedManeuverDetails), Collections.unmodifiableList(selectedLegDetails), - Collections.unmodifiableList(selectedRaceDetails), - Collections.unmodifiableList(selectedOverallDetailColumns), namesOfRaceColumnsToShow, + SingleRaceLeaderboardSettings leaderboardSettings = new SingleRaceLeaderboardSettings( + selectedManeuverDetails,selectedLegDetails, + selectedRaceDetails, + selectedOverallDetailColumns, namesOfRaceColumnsToShow, /* namesOfRacesToShow */ null, raceColumnSelection.getNumberOfLastRaceColumnsToShow(), autoExpandPreSelectedRace, timer.getRefreshInterval(), /* nameOfRaceToSort */ null, /* sortAscending */ true, /* updateUponPlayStateChange */ true, raceColumnSelection.getType(), @@ -144,7 +147,7 @@ public class SingleLeaderboardPanel extends LeaderboardPanel { protected void processAutoExpands(AbstractSortableColumnWithMinMax c, RaceColumn lastRaceColumn) { // Toggle pre-selected race, if the setting is set and it isn't open yet, or the last race column if // that was requested - if ((!autoExpandPerformedOnce && isAutoExpandPreSelectedRace() && c instanceof RaceColumn + if ((!autoExpandPerformedOnce && isAutoExpandPreSelectedRace() && c instanceof LeaderboardPanel.RaceColumn && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) || (isAutoExpandLastRaceColumn() && c == lastRaceColumn)) { ExpandableSortableColumn expandableSortableColumn = (ExpandableSortableColumn) c; @@ -153,8 +156,8 @@ public class SingleLeaderboardPanel extends LeaderboardPanel { autoExpandPerformedOnce = true; } } - if (c instanceof RaceColumn && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) { - RaceColumnDTO raceColumn = ((RaceColumn) c).getRace(); + if (c instanceof RaceColumn && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) { + RaceColumnDTO raceColumn = ((RaceColumn) c).getRace(); informLeaderboardUpdateListenersAboutRaceSelected(preSelectedRace, raceColumn); } } @@ -181,4 +184,26 @@ public class SingleLeaderboardPanel extends LeaderboardPanel { } return result; } + + + @Override + public void updateSettings(SingleRaceLeaderboardSettings newSettings) { + SettingsDialog settingsDialog = new SettingsDialog(this, stringMessages); + settingsDialog.ensureDebugId("LeaderboardSettingsDialog"); + settingsDialog.show(); + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent( + SingleRaceLeaderboardSettings useTheseSettings) { + return new SingleRaceLeaderboardSettingsDialogComponent(useTheseSettings, leaderboard.getNamesOfRaceColumns(), + stringMessages); + } + + @Override + protected void openSettingsDialog() { + SettingsDialog settingsDialog = new SettingsDialog(this, stringMessages); + settingsDialog.ensureDebugId("LeaderboardSettingsDialog"); + settingsDialog.show(); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java index 2c4bea76ab6..1033e67ea1e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java @@ -52,7 +52,7 @@ import com.sap.sailing.domain.common.dto.LeaderboardEntryDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.impl.InvertibleComparatorAdapter; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.adminconsole.AdminConsoleTableResources; import com.sap.sailing.gwt.ui.client.Collator; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; @@ -99,7 +99,7 @@ public class EditableLeaderboardPanel extends MultiRaceLeaderboardPanel { @Override public void onClick(ClickEvent event) { - new SettingsDialog(EditableLeaderboardPanel.this, stringMessages).show(); + new SettingsDialog(EditableLeaderboardPanel.this, stringMessages).show(); } } @@ -584,7 +584,7 @@ public class EditableLeaderboardPanel extends MultiRaceLeaderboardPanel { public EditableLeaderboardPanel(final SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, String leaderboardName, String leaderboardGroupName, final ErrorReporter errorReporter, final StringMessages stringMessages, UserAgentDetails userAgent) { - super(null, null, sailingService, asyncActionsExecutor, new LeaderboardSettings(), + super(null, null, sailingService, asyncActionsExecutor, new MultiRaceLeaderboardSettings(), new CompetitorSelectionModel(/* hasMultiSelection */true), leaderboardName, errorReporter, stringMessages, /* showRaceDetails */ true); suppressedCompetitorsShown = new ListDataProvider(new ArrayList()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/AbstractRaceBoardMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/AbstractRaceBoardMode.java index bdec28a4646..8b4acd0a936 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/AbstractRaceBoardMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/AbstractRaceBoardMode.java @@ -17,6 +17,7 @@ import com.sap.sailing.gwt.ui.client.RaceTimesInfoProviderListener; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceCompetitorSet.CompetitorsForRaceDefinedListener; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.SingleRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.shared.RaceTimesInfoDTO; import com.sap.sse.gwt.client.player.Timer; @@ -53,7 +54,7 @@ public abstract class AbstractRaceBoardMode implements RaceBoardMode, RaceTimesI private Timer timer; private RegattaAndRaceIdentifier raceIdentifier; private RaceTimePanel raceTimePanel; - private LeaderboardPanel leaderboardPanel; + private SingleRaceLeaderboardPanel leaderboardPanel; private RaceBoardPanel raceBoardPanel; private Map raceTimesInfo; @@ -91,7 +92,7 @@ public abstract class AbstractRaceBoardMode implements RaceBoardMode, RaceTimesI return raceTimePanel; } - protected LeaderboardPanel getLeaderboardPanel() { + protected SingleRaceLeaderboardPanel getLeaderboardPanel() { return leaderboardPanel; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/FullAnalysisMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/FullAnalysisMode.java index 92252acd620..dcb6d796795 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/FullAnalysisMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/FullAnalysisMode.java @@ -6,7 +6,8 @@ import java.util.List; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettingsFactory; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettings; +import com.sap.sailing.gwt.ui.leaderboard.SingleRaceLeaderboardPanel; import com.sap.sse.gwt.client.player.Timer.PlayModes; import com.sap.sse.gwt.client.player.Timer.PlayStates; import com.sap.sse.security.ui.settings.ComponentContextWithSettingsStorageAndAdditionalSettingsLayers.OnSettingsReloadedCallback; @@ -46,17 +47,17 @@ public class FullAnalysisMode extends AbstractRaceBoardMode { } private void adjustLeaderboardSettings() { - final LeaderboardPanel leaderboardPanel = getLeaderboardPanel(); + final SingleRaceLeaderboardPanel leaderboardPanel = getLeaderboardPanel(); final List raceDetailsToShow = new ArrayList<>(); raceDetailsToShow.add(DetailType.DISPLAY_LEGS); raceDetailsToShow.add(DetailType.RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS); raceDetailsToShow.add(DetailType.RACE_DISTANCE_TRAVELED); raceDetailsToShow.add(DetailType.RACE_GAP_TO_LEADER_IN_SECONDS); - final LeaderboardSettings additiveSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsWithCustomRaceDetails(raceDetailsToShow); - ((RaceBoardComponentContext) leaderboardPanel.getComponentContext()).addModesPatching(leaderboardPanel, additiveSettings, new OnSettingsReloadedCallback() { + final SingleRaceLeaderboardSettings additiveSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsWithCustomRaceDetails(raceDetailsToShow); + ((RaceBoardComponentContext) leaderboardPanel.getComponentContext()).addModesPatching(leaderboardPanel, additiveSettings, new OnSettingsReloadedCallback() { @Override - public void onSettingsReloaded(LeaderboardSettings patchedSettings) { + public void onSettingsReloaded(SingleRaceLeaderboardSettings patchedSettings) { LeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); leaderboardPanel.updateSettings(settingsToUse); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/PlayerMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/PlayerMode.java index 826d66da3a5..eaa09003926 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/PlayerMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/PlayerMode.java @@ -6,7 +6,8 @@ import java.util.List; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettingsFactory; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettings; +import com.sap.sailing.gwt.ui.leaderboard.SingleRaceLeaderboardPanel; import com.sap.sse.common.Duration; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.client.player.Timer.PlayModes; @@ -28,16 +29,16 @@ public class PlayerMode extends AbstractRaceBoardMode { private boolean timerAdjusted; private void adjustLeaderboardSettings() { - final LeaderboardPanel leaderboardPanel = getLeaderboardPanel(); + final SingleRaceLeaderboardPanel leaderboardPanel = getLeaderboardPanel(); final List raceDetailsToShow = new ArrayList<>(); raceDetailsToShow.add(DetailType.DISPLAY_LEGS); raceDetailsToShow.add(DetailType.RACE_CURRENT_SPEED_OVER_GROUND_IN_KNOTS); raceDetailsToShow.add(DetailType.RACE_GAP_TO_LEADER_IN_SECONDS); - final LeaderboardSettings additiveSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsWithCustomRaceDetails(raceDetailsToShow); - ((RaceBoardComponentContext) leaderboardPanel.getComponentContext()).addModesPatching(leaderboardPanel, additiveSettings, new OnSettingsReloadedCallback() { + final SingleRaceLeaderboardSettings additiveSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsWithCustomRaceDetails(raceDetailsToShow); + ((RaceBoardComponentContext) leaderboardPanel.getComponentContext()).addModesPatching(leaderboardPanel, additiveSettings, new OnSettingsReloadedCallback() { @Override - public void onSettingsReloaded(LeaderboardSettings patchedSettings) { + public void onSettingsReloaded(SingleRaceLeaderboardSettings patchedSettings) { LeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); leaderboardPanel.updateSettings(settingsToUse); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 720121464d1..6b3a2380fc7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -75,8 +75,7 @@ import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapLifecycle; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapResources; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; import com.sap.sailing.gwt.ui.leaderboard.CompetitorFilterPanel; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; -import com.sap.sailing.gwt.ui.leaderboard.SingleLeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.SingleRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.raceboard.RaceBoardResources.RaceBoardMainCss; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sse.common.Util; @@ -129,7 +128,7 @@ public class RaceBoardPanel private final RegattaAndRaceIdentifier selectedRaceIdentifier; private final String leaderboardName; - private final LeaderboardPanel leaderboardPanel; + private final SingleRaceLeaderboardPanel leaderboardPanel; private WindChart windChart; private MultiCompetitorRaceChart competitorChart; private MediaPlayerManagerComponent mediaPlayerManagerComponent; @@ -446,14 +445,14 @@ public class RaceBoardPanel } } - private LeaderboardPanel createLeaderboardPanel(RaceBoardPerspectiveLifecycle lifecycle, + private SingleRaceLeaderboardPanel createLeaderboardPanel(RaceBoardPerspectiveLifecycle lifecycle, PerspectiveCompositeSettings settings, String leaderboardName, String leaderboardGroupName, CompetitorFilterPanel competitorSearchTextBox) { LeaderboardPanelLifecycle leaderboardPanelLifecycle = getPerspectiveLifecycle().getLeaderboardPanelLifecycle(); LeaderboardSettings leaderboardSettings = settings .findSettingsByComponentId(leaderboardPanelLifecycle.getComponentId()); - return new SingleLeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, + return new SingleRaceLeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, leaderboardSettings, selectedRaceIdentifier != null, selectedRaceIdentifier, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, @@ -468,7 +467,7 @@ public class RaceBoardPanel componentViewer.forceLayout(); } - LeaderboardPanel getLeaderboardPanel() { + SingleRaceLeaderboardPanel getLeaderboardPanel() { return leaderboardPanel; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java index c3a6aa96402..d82f20d5522 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java @@ -19,7 +19,7 @@ public class RaceBoardPerspectiveLifecycle extends AbstractPerspectiveLifecycle< private final StringMessages stringMessages; private final RaceMapLifecycle raceMapLifecycle; private final WindChartLifecycle windChartLifecycle; - private final LeaderboardPanelLifecycle leaderboardPanelLifecycle; + private final SingleRaceLeaderboardPanelLifecycle leaderboardPanelLifecycle; private final MultiCompetitorRaceChartLifecycle multiCompetitorRaceChartLifecycle; private final MediaPlayerLifecycle mediaPlayerLifecycle; private final RaceTimePanelLifecycle raceTimePanelLifecycle; @@ -37,10 +37,13 @@ public class RaceBoardPerspectiveLifecycle extends AbstractPerspectiveLifecycle< } private RaceBoardPerspectiveLifecycle(RegattaAndRaceIdentifier raceIdentifier, AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { + if(raceIdentifier == null){ + throw new IllegalStateException("Started ReaceBoardPerspective without any raceidentifier"); + } this.stringMessages = stringMessages; raceMapLifecycle = new RaceMapLifecycle(stringMessages); windChartLifecycle = new WindChartLifecycle(stringMessages); - leaderboardPanelLifecycle = raceIdentifier == null ? new LeaderboardPanelLifecycle(leaderboard, stringMessages) : new SingleRaceLeaderboardPanelLifecycle(raceIdentifier, stringMessages); + leaderboardPanelLifecycle = new SingleRaceLeaderboardPanelLifecycle(raceIdentifier, stringMessages); multiCompetitorRaceChartLifecycle = new MultiCompetitorRaceChartLifecycle(stringMessages, false); mediaPlayerLifecycle = new MediaPlayerLifecycle(stringMessages); raceTimePanelLifecycle = new RaceTimePanelLifecycle(stringMessages); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java index 7d1fa3e0f31..6b1be0a784e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java @@ -8,11 +8,12 @@ import com.google.gwt.dom.client.Document; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettingsDialogComponent; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.common.settings.generic.support.SettingsUtil; -public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle { +public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle { private static final long DEFAULT_REFRESH_INTERVAL = 1000L; @@ -26,7 +27,7 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc } @Override - public LeaderboardSettings createDefaultSettings() { + public SingleRaceLeaderboardSettings createDefaultSettings() { List namesOfRaceColumnsToShow = null; List namesOfRacesToShow = Collections.singletonList(raceIdentifier.getRaceName()); @@ -37,8 +38,8 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc raceDetails.add(DetailType.NUMBER_OF_MANEUVERS); raceDetails.add(DetailType.DISPLAY_LEGS); List overallDetails = new ArrayList<>(); - LeaderboardSettings defaultSettings = new LeaderboardSettings(); - LeaderboardSettings settings = new LeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, namesOfRaceColumnsToShow, namesOfRacesToShow, + SingleRaceLeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); + SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, namesOfRaceColumnsToShow, namesOfRacesToShow, defaultSettings.getNumberOfLastRacesToShow(), false, DEFAULT_REFRESH_INTERVAL, raceIdentifier.getRaceName(), defaultSettings.isSortAscending(), defaultSettings.isUpdateUponPlayStateChange(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), /*showCompetitorSailIdColumn*/ true, /* don't showCompetitorFullNameColumn in case screen is so small that we don't @@ -54,9 +55,9 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc } @Override - public LeaderboardSettings extractDocumentSettings(LeaderboardSettings currentLeaderboardSettings) { - LeaderboardSettings defaultLeaderboardSettings = createDefaultSettings(); - LeaderboardSettings contextSpecificLeaderboardSettings = new LeaderboardSettings( + public SingleRaceLeaderboardSettings extractDocumentSettings(SingleRaceLeaderboardSettings currentLeaderboardSettings) { + SingleRaceLeaderboardSettings defaultLeaderboardSettings = createDefaultSettings(); + SingleRaceLeaderboardSettings contextSpecificLeaderboardSettings = new SingleRaceLeaderboardSettings( currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), @@ -74,4 +75,32 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.isShowCompetitorNationality()); return SettingsUtil.copyValues(contextSpecificLeaderboardSettings, defaultLeaderboardSettings); } + + @Override + public SingleRaceLeaderboardSettings extractUserSettings(SingleRaceLeaderboardSettings currentLeaderboardSettings) { + SingleRaceLeaderboardSettings defaultLeaderboardSettings = createDefaultSettings(); + SingleRaceLeaderboardSettings globalLeaderboardSettings = new SingleRaceLeaderboardSettings( + currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), + currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), + defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), + defaultLeaderboardSettings.getNamesOfRacesToShow(), + currentLeaderboardSettings.getNumberOfLastRacesToShow(), + defaultLeaderboardSettings.isAutoExpandPreSelectedRace(), + currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), + defaultLeaderboardSettings.getNameOfRaceToSort(), defaultLeaderboardSettings.isSortAscending(), + currentLeaderboardSettings.isUpdateUponPlayStateChange(), + currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), + currentLeaderboardSettings.isShowAddedScores(), + currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + currentLeaderboardSettings.isShowCompetitorSailIdColumn(), + currentLeaderboardSettings.isShowCompetitorFullNameColumn(), + currentLeaderboardSettings.isShowCompetitorNationality()); + return SettingsUtil.copyValues(globalLeaderboardSettings, defaultLeaderboardSettings); + } + + @Override + public SingleRaceLeaderboardSettingsDialogComponent getSettingsDialogComponent(SingleRaceLeaderboardSettings settings) { + return new SingleRaceLeaderboardSettingsDialogComponent(settings, namesOfRaceColumns, stringMessages); + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/StartAnalysisMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/StartAnalysisMode.java index 76b810ba7af..d366c52149d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/StartAnalysisMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/StartAnalysisMode.java @@ -13,6 +13,7 @@ import com.google.gwt.maps.client.events.idle.IdleMapHandler; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettingsFactory; +import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.shared.charts.ChartSettings; import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorRaceChart; import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorRaceChartSettings; @@ -20,7 +21,7 @@ import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMap; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapZoomSettings; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapZoomSettings.ZoomTypes; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.SingleRaceLeaderboardPanel; import com.sap.sse.common.Duration; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; @@ -178,7 +179,7 @@ public class StartAnalysisMode extends RaceBoardModeWithPerRaceCompetitors { } private void adjustLeaderboardSettings() { - final LeaderboardPanel leaderboardPanel = getLeaderboardPanel(); + final SingleRaceLeaderboardPanel leaderboardPanel = getLeaderboardPanel(); final List raceDetailsToShow = new ArrayList<>(); raceDetailsToShow.add(DetailType.RACE_SPEED_OVER_GROUND_FIVE_SECONDS_BEFORE_START); raceDetailsToShow.add(DetailType.RACE_DISTANCE_TO_START_FIVE_SECONDS_BEFORE_RACE_START); @@ -188,11 +189,11 @@ public class StartAnalysisMode extends RaceBoardModeWithPerRaceCompetitors { raceDetailsToShow.add(DetailType.SPEED_OVER_GROUND_WHEN_PASSING_START); raceDetailsToShow.add(DetailType.START_TACK); raceDetailsToShow.add(DetailType.RACE_GAP_TO_LEADER_IN_SECONDS); - final LeaderboardSettings additiveSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsWithCustomRaceDetails(raceDetailsToShow); - ((RaceBoardComponentContext) leaderboardPanel.getComponentContext()).addModesPatching(leaderboardPanel, additiveSettings, new OnSettingsReloadedCallback() { + final SingleRaceLeaderboardSettings additiveSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsWithCustomRaceDetails(raceDetailsToShow); + ((RaceBoardComponentContext) leaderboardPanel.getComponentContext()).addModesPatching(leaderboardPanel, additiveSettings, new OnSettingsReloadedCallback() { @Override - public void onSettingsReloaded(LeaderboardSettings patchedSettings) { + public void onSettingsReloaded(SingleRaceLeaderboardSettings patchedSettings) { LeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); leaderboardPanel.updateSettings(settingsToUse); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/WinningLanesMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/WinningLanesMode.java index e1846c8065e..e52b73ad50e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/WinningLanesMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/WinningLanesMode.java @@ -6,11 +6,11 @@ import java.util.List; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.dto.CompetitorDTO; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettingsFactory; +import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMap; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.SingleRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.shared.MarkPassingTimesDTO; import com.sap.sse.common.Duration; import com.sap.sse.common.Util; @@ -41,18 +41,18 @@ public class WinningLanesMode extends RaceBoardModeWithPerRaceCompetitors { } private void adjustLeaderboardSettings() { - final LeaderboardPanel leaderboardPanel = getLeaderboardPanel(); + final SingleRaceLeaderboardPanel leaderboardPanel = getLeaderboardPanel(); final List raceDetailsToShow = new ArrayList<>(); raceDetailsToShow.add(DetailType.RACE_AVERAGE_ABSOLUTE_CROSS_TRACK_ERROR_IN_METERS); raceDetailsToShow.add(DetailType.RACE_AVERAGE_SIGNED_CROSS_TRACK_ERROR_IN_METERS); raceDetailsToShow.add(DetailType.RACE_DISTANCE_TRAVELED); raceDetailsToShow.add(DetailType.RACE_TIME_TRAVELED); - final LeaderboardSettings additiveSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsWithCustomRaceDetails(raceDetailsToShow); - ((RaceBoardComponentContext) leaderboardPanel.getComponentContext()).addModesPatching(leaderboardPanel, additiveSettings, new OnSettingsReloadedCallback() { + final SingleRaceLeaderboardSettings additiveSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsWithCustomRaceDetails(raceDetailsToShow); + ((RaceBoardComponentContext) leaderboardPanel.getComponentContext()).addModesPatching(leaderboardPanel, additiveSettings, new OnSettingsReloadedCallback() { @Override - public void onSettingsReloaded(LeaderboardSettings patchedSettings) { - LeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); + public void onSettingsReloaded(SingleRaceLeaderboardSettings patchedSettings) { + SingleRaceLeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); leaderboardPanel.updateSettings(settingsToUse); } From 449e82848e81e1a9725e428ccd61e943b04dfa63 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Thu, 6 Jul 2017 15:15:07 +0200 Subject: [PATCH 03/26] further splitted settings and fixed compiler warnings --- .../shared/oldleaderboard/OldLeaderboard.java | 6 +- .../old/leaderboard/OldLeaderboard.java | 10 +- .../multileaderboard/OldMultiLeaderboard.java | 8 +- .../client/RegattaOverviewPanel.java | 3 +- .../leaderboard/LeaderboardSettings.java | 68 +----- .../LeaderboardSettingsDialogComponent.java | 131 +---------- .../LeaderboardSettingsFactory.java | 13 +- .../MultiRaceLeaderboardPanelLifecycle.java | 2 - .../MultiRaceLeaderboardSettings.java | 74 ++++++- ...aceLeaderboardSettingsDialogComponent.java | 127 ++++++++++- ...allLeaderboardSettingsDialogComponent.java | 2 +- .../SingleRaceLeaderboardSettings.java | 20 +- ...aceLeaderboardSettingsDialogComponent.java | 31 +-- .../shared/charts/EditMarkPositionPanel.java | 6 +- .../AbstractLeaderboardViewer.java | 6 +- .../leaderboard/ExpandableSortableColumn.java | 8 +- .../gwt/ui/leaderboard/LeaderboardPanel.java | 205 +++++++----------- .../sailing/gwt/ui/leaderboard/LegColumn.java | 4 +- .../leaderboard/ManeuverCountRaceColumn.java | 4 +- .../MultiLeaderboardProxyPanel.java | 12 +- .../MultiRaceLeaderboardPanel.java | 154 ++++++++++--- .../MultiRaceLeaderboardViewer.java | 2 +- .../OverallTimeTraveledColumn.java | 4 +- .../SelectedLeaderboardChangeListener.java | 4 +- .../SelectedLeaderboardChangeProvider.java | 6 +- .../SingleRaceLeaderboardPanel.java | 50 ++--- .../SortableExpandableColumnHeader.java | 10 +- .../leaderboard/TimeTraveledRaceColumn.java | 4 +- .../gwt/ui/raceboard/RaceBoardPanel.java | 3 +- .../RaceBoardPerspectiveLifecycle.java | 3 +- .../SingleRaceLeaderboardPanelLifecycle.java | 13 +- .../client/async/AsyncActionsExecutor.java | 2 +- 32 files changed, 496 insertions(+), 499 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/oldleaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/oldleaderboard/OldLeaderboard.java index a1d8160504b..a5e9b30bb2e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/oldleaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/oldleaderboard/OldLeaderboard.java @@ -15,7 +15,7 @@ import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter; public class OldLeaderboard extends Composite implements LeaderboardUpdateListener { @@ -32,10 +32,10 @@ public class OldLeaderboard extends Composite implements LeaderboardUpdateListen @UiField DivElement lastScoringCommentDiv; @UiField DivElement scoringSchemeDiv; - private LeaderboardPanel leaderboardPanel; + private MultiRaceLeaderboardPanel leaderboardPanel; private final StringMessages stringmessages; - public OldLeaderboard(LeaderboardPanel leaderboardPanel, StringMessages stringmessages) { + public OldLeaderboard(MultiRaceLeaderboardPanel leaderboardPanel, StringMessages stringmessages) { this.stringmessages = stringmessages; this.leaderboardPanel = leaderboardPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java index 8a6c93f4f4c..10c0426a48a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java @@ -29,12 +29,12 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.home.desktop.partials.old.EventRegattaLeaderboardResources; import com.sap.sailing.gwt.home.desktop.partials.old.LeaderboardDelegate; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; +import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.client.DebugIdHelper; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter; import com.sap.sse.gwt.client.controls.busyindicator.BusyIndicator; import com.sap.sse.gwt.client.controls.busyindicator.BusyStateChangeListener; @@ -63,7 +63,7 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener @UiField BusyIndicator busyIndicator; @UiField EventRegattaLeaderboardResources local_res; - private LeaderboardPanel leaderboardPanel; + private MultiRaceLeaderboardPanel leaderboardPanel; private Timer autoRefreshTimer; private final OldLeaderboardDelegate delegate; @@ -182,7 +182,7 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener final String componentName = leaderboardPanel.getLocalizedShortName(); final String debugIdPrefix = DebugIdHelper.createDebugId(componentName); - SettingsDialog dialog = new SettingsDialog(leaderboardPanel, StringMessages.INSTANCE) { + SettingsDialog dialog = new SettingsDialog(leaderboardPanel, StringMessages.INSTANCE) { protected Widget getAdditionalWidget() { Widget additionalWidget = super.getAdditionalWidget(); if (!oldLeaderboardPanel.getElement().isOrHasChild(leaderboardPanel.getElement())) { @@ -223,7 +223,7 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener return fullscreenAnchor; } - public void setLeaderboard(LeaderboardPanel leaderboardPanel, final Timer timer) { + public void setLeaderboard(MultiRaceLeaderboardPanel leaderboardPanel, final Timer timer) { this.autoRefreshTimer = timer; this.leaderboardPanel = leaderboardPanel; if (leaderboardPanel.getComponentContext() == null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java index 7ec8e3668e9..57b14a87665 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java @@ -27,8 +27,8 @@ import com.sap.sailing.gwt.settings.client.leaderboard.MultiRaceLeaderboardSetti import com.sap.sailing.gwt.ui.client.DebugIdHelper; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.MultiLeaderboardProxyPanel; +import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter; import com.sap.sailing.gwt.ui.leaderboard.SelectedLeaderboardChangeListener; import com.sap.sse.gwt.client.controls.busyindicator.BusyIndicator; @@ -38,7 +38,7 @@ import com.sap.sse.gwt.client.player.Timer.PlayModes; import com.sap.sse.gwt.client.player.Timer.PlayStates; import com.sap.sse.gwt.client.shared.components.SettingsDialog; -public class OldMultiLeaderboard extends Composite implements SelectedLeaderboardChangeListener, BusyStateChangeListener { +public class OldMultiLeaderboard extends Composite implements SelectedLeaderboardChangeListener, BusyStateChangeListener { private static OldMultiLeaderboardUiBinder uiBinder = GWT.create(OldMultiLeaderboardUiBinder.class); interface OldMultiLeaderboardUiBinder extends UiBinder { @@ -59,7 +59,7 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar private MultiLeaderboardProxyPanel multiLeaderboardPanel; private Timer autoRefreshTimer; private final OldMultiLeaderboardDelegate delegate; - private LeaderboardPanel lastSelectedLeaderboardPanel; + private MultiRaceLeaderboardPanel lastSelectedLeaderboardPanel; public OldMultiLeaderboard() { this(null); @@ -232,7 +232,7 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar } @Override - public void onSelectedLeaderboardChanged(LeaderboardPanel selectedLeaderboard) { + public void onSelectedLeaderboardChanged(MultiRaceLeaderboardPanel selectedLeaderboard) { if(lastSelectedLeaderboardPanel != null) { lastSelectedLeaderboardPanel.removeBusyStateChangeListener(this); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java index 5c5ef173dbd..99f1aae8320 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java @@ -27,7 +27,6 @@ import com.sap.sailing.gwt.settings.client.utils.StoredSettingsLocationFactory; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.MultiRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; @@ -316,7 +315,7 @@ public class RegattaOverviewPanel extends SimplePanel { public void onSuccess(List result) { leaderboardsTabPanel.clear(); for (StrippedLeaderboardDTO leaderboard : result) { - LeaderboardPanel leaderboardPanel = new MultiRaceLeaderboardPanel(null, null, sailingService, + MultiRaceLeaderboardPanel leaderboardPanel = new MultiRaceLeaderboardPanel(null, null, sailingService, new AsyncActionsExecutor(), leaderboardSettings, false, competitorSelectionProvider, null, leaderboard.name, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java index 209164101f7..c80eceb5bd9 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java @@ -12,9 +12,7 @@ import com.sap.sse.common.settings.generic.AbstractGenericSerializableSettings; import com.sap.sse.common.settings.generic.BooleanSetting; import com.sap.sse.common.settings.generic.EnumSetSetting; import com.sap.sse.common.settings.generic.EnumSetting; -import com.sap.sse.common.settings.generic.IntegerSetting; import com.sap.sse.common.settings.generic.LongSetting; -import com.sap.sse.common.settings.generic.StringSetSetting; import com.sap.sse.common.settings.generic.StringSetting; /** @@ -28,28 +26,10 @@ import com.sap.sse.common.settings.generic.StringSetting; public abstract class LeaderboardSettings extends AbstractGenericSerializableSettings { private static final long serialVersionUID = 2625004077963291333L; - /** - * Only one of {@link #namesOfRaceColumnsToShow} and {@link #namesOfRacesToShow} must be non-null. - * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to EXPLIZIT - */ - protected StringSetSetting namesOfRaceColumnsToShow; - - /** - * Only one of {@link #namesOfRaceColumnsToShow} and {@link #namesOfRacesToShow} must be non-null. - * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to EXPLIZIT - */ - protected StringSetSetting namesOfRacesToShow; - - /** - * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to LAST_N - */ - protected IntegerSetting numberOfLastRacesToShow; - protected EnumSetSetting maneuverDetailsToShow; protected EnumSetSetting legDetailsToShow; protected EnumSetSetting raceDetailsToShow; protected EnumSetSetting overallDetailsToShow; - protected boolean autoExpandPreSelectedRace = false; protected LongSetting delayBetweenAutoAdvancesInMilliseconds; protected BooleanSetting updateUponPlayStateChange; protected BooleanSetting isShowCompetitorNationality; @@ -85,9 +65,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet @Override protected void addChildSettings() { isShowCompetitorNationality = new BooleanSetting("showCompetitorNationality", this, false); - namesOfRaceColumnsToShow = new StringSetSetting("namesOfRaceColumnsToShow", this); - namesOfRacesToShow = new StringSetSetting("namesOfRacesToShow", this, null); - numberOfLastRacesToShow = new IntegerSetting("numberOfLastRacesToShow", this, null); List maneuverDetails = new ArrayList(); maneuverDetails.add(DetailType.TACK); maneuverDetails.add(DetailType.JIBE); @@ -118,35 +95,22 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet public LeaderboardSettings() { } - public LeaderboardSettings(Iterable namesOfRaceColumnsToShow) { - this.namesOfRaceColumnsToShow.setValues(namesOfRaceColumnsToShow); - } - /** * @param raceColumnsToShow null means don't modify the list of races shown */ public LeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, - List namesOfRaceColumnsToShow, List namesOfRacesToShow, Integer numberOfLastRacesToShow, - boolean autoExpandPreSelectedRace, Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, + Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, boolean sortAscending, boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { - if (namesOfRacesToShow != null && namesOfRaceColumnsToShow != null) { - throw new IllegalArgumentException("You can identify races either only by their race or by their column names, not both"); - } this.legDetailsToShow.setValues(legDetailsToShow); this.raceDetailsToShow.setValues(raceDetailsToShow); this.overallDetailsToShow.setValues(overallDetailsToShow); - this.namesOfRacesToShow.setValues(namesOfRacesToShow); - this.namesOfRaceColumnsToShow.setValues(namesOfRaceColumnsToShow); - this.numberOfLastRacesToShow.setValue(numberOfLastRacesToShow); this.activeRaceColumnSelectionStrategy.setValue(activeRaceColumnSelectionStrategy); - this.autoExpandPreSelectedRace = autoExpandPreSelectedRace; this.delayBetweenAutoAdvancesInMilliseconds.setValue(delayBetweenAutoAdvancesInMilliseconds); this.maneuverDetailsToShow.setValues(maneuverDetailsToShow); - this.nameOfRaceToSort.setValue(nameOfRaceToSort); this.sortAscending.setValue(sortAscending); this.updateUponPlayStateChange.setValue(updateUponPlayStateChange); this.showAddedScores.setValue(showAddedScores); @@ -185,36 +149,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet return Util.createSet(overallDetailsToShow.getValues()); } - /** - * If null, this is to mean that the race columns should not be modified by - * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. Otherwise a - * live collection that reflects the current state of the settings of a leaderboard panel - */ - public List getNamesOfRaceColumnsToShow() { - return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.EXPLICIT ? (namesOfRaceColumnsToShow.isValuesEmpty() ? null : Util.createList(namesOfRaceColumnsToShow.getValues())) : null; - } - - /** - * If null, this is to mean that the race columns should not be modified by - * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. Otherwise - * a live collection that reflects the current state of the settings of a leaderboard panel - */ - public List getNamesOfRacesToShow() { - return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.EXPLICIT ? (namesOfRacesToShow.isValuesEmpty() ? null : Util.createList(namesOfRacesToShow.getValues())) : null; - } - - /** - * If null, this is to mean that the race columns should not be modified by - * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. - */ - public Integer getNumberOfLastRacesToShow() { - return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.LAST_N ? numberOfLastRacesToShow.getValue() : null; - } - - public boolean isAutoExpandPreSelectedRace() { - return autoExpandPreSelectedRace; - } - /** * @return if null, leave refresh interval alone (don't change in * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java index 8f01c053c00..1cf05314abd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java @@ -7,18 +7,12 @@ import java.util.Map; import com.google.gwt.dom.client.Style.Float; import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.FocusWidget; -import com.google.gwt.user.client.ui.Grid; -import com.google.gwt.user.client.ui.HasVerticalAlignment; -import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.LongBox; import com.google.gwt.user.client.ui.RadioButton; -import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; import com.sap.sailing.gwt.ui.client.DebugIdHelper; @@ -28,7 +22,6 @@ import com.sap.sailing.gwt.ui.leaderboard.LeaderboardEntryPoint; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.LegColumn; import com.sap.sailing.gwt.ui.leaderboard.ManeuverCountRaceColumn; -import com.sap.sse.common.Util; import com.sap.sse.gwt.client.controls.IntegerBox; import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; @@ -68,21 +61,7 @@ public abstract class LeaderboardSettingsDialogComponent(); } - @Override - public Widget getAdditionalWidget(DataEntryDialog dialog) { - FlowPanel dialogPanel = new FlowPanel(); - dialogPanel.ensureDebugId("LeaderboardSettingsPanel"); - dialogPanel.add(createSelectedRacesPanel(dialog)); - dialogPanel.add(createOverallDetailPanel(dialog)); - dialogPanel.add(createRaceDetailPanel(dialog)); - dialogPanel.add(createRaceStartAnalysisPanel(dialog)); - dialogPanel.add(createLegDetailsPanel(dialog)); - dialogPanel.add(createManeuverDetailsPanel(dialog)); - dialogPanel.add(createTimingDetailsPanel(dialog)); - return dialogPanel; - } - - private FlowPanel createManeuverDetailsPanel(DataEntryDialog dialog) { + protected FlowPanel createManeuverDetailsPanel(DataEntryDialog dialog) { FlowPanel meneuverPanel = new FlowPanel(); meneuverPanel.ensureDebugId("ManeuverSettingsPanel"); meneuverPanel.add(dialog.createHeadline(stringMessages.maneuverTypes(), true)); @@ -100,7 +79,7 @@ public abstract class LeaderboardSettingsDialogComponent dialog) { + protected FlowPanel createTimingDetailsPanel(DataEntryDialog dialog) { FlowPanel timingPanel = new FlowPanel(); timingPanel.ensureDebugId("TimingSettingsPanel"); refreshIntervalInSecondsBox = dialog.createLongBox( @@ -125,7 +104,7 @@ public abstract class LeaderboardSettingsDialogComponent dialog) { + protected FlowPanel createRaceDetailPanel(DataEntryDialog dialog) { FlowPanel raceDetailDialog = new FlowPanel(); raceDetailDialog.ensureDebugId("RaceDetailsSettingsPanel"); raceDetailDialog.add(dialog.createHeadline(stringMessages.raceDetailsToShow(), true)); @@ -155,7 +134,7 @@ public abstract class LeaderboardSettingsDialogComponent dialog) { + protected FlowPanel createRaceStartAnalysisPanel(DataEntryDialog dialog) { FlowPanel raceStartAnalysisDialog = new FlowPanel(); raceStartAnalysisDialog.ensureDebugId("RaceStartAnalysisDialog"); raceStartAnalysisDialog.add(dialog.createHeadline(stringMessages.raceStartAnalysis(), true)); @@ -177,7 +156,7 @@ public abstract class LeaderboardSettingsDialogComponent dialog) { + protected FlowPanel createOverallDetailPanel(DataEntryDialog dialog) { FlowPanel overallDetailDialog = new FlowPanel(); overallDetailDialog.ensureDebugId("OverallDetailsSettingsPanel"); overallDetailDialog.add(dialog.createHeadline(stringMessages.overallDetailsToShow(), true)); @@ -214,7 +193,7 @@ public abstract class LeaderboardSettingsDialogComponent dialog) { + protected FlowPanel createLegDetailsPanel(DataEntryDialog dialog) { FlowPanel legDetailsToShow = new FlowPanel(); legDetailsToShow.ensureDebugId("LegDetailsSettingsPanel"); legDetailsToShow.add(dialog.createHeadline(stringMessages.legDetailsToShow(), true)); @@ -236,101 +215,7 @@ public abstract class LeaderboardSettingsDialogComponent dialog) { - FlowPanel selectedRacesPanel = new FlowPanel(); - selectedRacesPanel.ensureDebugId("RaceSelectionSettingsPanel"); - selectedRacesPanel.addStyleName("SettingsDialogComponent"); - selectedRacesPanel.add(dialog.createHeadline(stringMessages.selectedRaces(), true)); - // race selection strategy elements - HorizontalPanel racesSelectionStrategyPanel = new HorizontalPanel(); - selectedRacesPanel.add(racesSelectionStrategyPanel); - - FlowPanel selectedRacesContent = new FlowPanel(); - selectedRacesContent.addStyleName("dialogInnerContent"); - selectedRacesPanel.add(selectedRacesContent); - - // Attention: We need to consider that there are regattas with more than 30 races - int racesCount = raceAllRaceColumnNames.size(); - if (racesCount > 0) { - final FlowPanel explicitRaceSelectionContent = new FlowPanel(); - explicitRaceSelectionContent.ensureDebugId("ExplicitRaceSelectionPanel"); - final FlowPanel lastNRacesSelectionContent = new FlowPanel(); - lastNRacesSelectionContent.ensureDebugId("MostCurrentRacesSelectionPanel"); - - String radioButtonGroupName = "raceSelectionStrategyGroup"; - Label raceSelectionWayLabel = new Label(stringMessages.chooseTheWayYouSelectRaces() + ":"); - raceSelectionWayLabel.getElement().getStyle().setPaddingRight(5, Unit.PX); - racesSelectionStrategyPanel.add(raceSelectionWayLabel); - explicitRaceColumnSelectionRadioBtn = dialog.createRadioButton(radioButtonGroupName, stringMessages.selectFromAllRaces()); - explicitRaceColumnSelectionRadioBtn.ensureDebugId("ExplicitRaceSelectionRadioButton"); - racesSelectionStrategyPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); - explicitRaceColumnSelectionRadioBtn.setValue(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT); - explicitRaceColumnSelectionRadioBtn.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - explicitRaceSelectionContent.setVisible(true); - lastNRacesSelectionContent.setVisible(false); - activeRaceColumnSelectionStrategy = RaceColumnSelectionStrategies.EXPLICIT; - } - }); - racesSelectionStrategyPanel.add(explicitRaceColumnSelectionRadioBtn); - - // content of explicit race selection - int maxRacesPerRow = 10; - int rowIndex = 0; - int columnIndex = 0; - int rowCount = racesCount / maxRacesPerRow; - if(racesCount % maxRacesPerRow != 0) { - rowCount++; - } - Grid grid = new Grid(rowCount, maxRacesPerRow); - List namesOfRaceColumnsToShow = initialSettings.getNamesOfRaceColumnsToShow(); - for (String raceColumnName : raceAllRaceColumnNames) { - CheckBox checkbox = createCheckbox(dialog, raceColumnName, - Util.contains(namesOfRaceColumnsToShow, raceColumnName), null); - raceColumnCheckboxes.put(raceColumnName, checkbox); - grid.setWidget(rowIndex, columnIndex++, checkbox); - if(columnIndex == maxRacesPerRow) { - rowIndex++; - columnIndex = 0; - } - } - explicitRaceSelectionContent.add(grid); - explicitRaceSelectionContent.setVisible(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT); - selectedRacesContent.add(explicitRaceSelectionContent); - - lastNRacesColumnSelectionRadioBtn = dialog.createRadioButton(radioButtonGroupName, stringMessages.selectANumberOfRaces()); - lastNRacesColumnSelectionRadioBtn.ensureDebugId("MostCurrentRacesSelectionRadioButton"); - lastNRacesColumnSelectionRadioBtn.setValue(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N); - lastNRacesColumnSelectionRadioBtn.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - explicitRaceSelectionContent.setVisible(false); - lastNRacesSelectionContent.setVisible(true); - activeRaceColumnSelectionStrategy = RaceColumnSelectionStrategies.LAST_N; - } - }); - racesSelectionStrategyPanel.add(lastNRacesColumnSelectionRadioBtn); - dialog.alignAllPanelWidgetsVertically(racesSelectionStrategyPanel, HasVerticalAlignment.ALIGN_MIDDLE); - - // content of 'number of races' selection - HorizontalPanel hPanel = new HorizontalPanel(); - lastNRacesSelectionContent.add(hPanel); - Label numberOfLastRacesLabel = new Label(stringMessages.numberOfLastNRaces() + ":"); - numberOfLastRacesLabel.getElement().getStyle().setPaddingRight(10, Unit.PX); - hPanel.add(numberOfLastRacesLabel); - Integer numberOfLastRacesToShow = initialSettings.getNumberOfLastRacesToShow(); - numberOfLastRacesToShowBox = dialog.createIntegerBox(numberOfLastRacesToShow != null ? numberOfLastRacesToShow : racesCount, 3); - numberOfLastRacesToShowBox.ensureDebugId("NumberOfMostCurrentRacesIntegerBox"); - hPanel.add(numberOfLastRacesToShowBox); - dialog.alignAllPanelWidgetsVertically(hPanel, HasVerticalAlignment.ALIGN_MIDDLE); - lastNRacesSelectionContent.setVisible(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N); - selectedRacesContent.add(lastNRacesSelectionContent); - } else { - selectedRacesContent.add(new Label(stringMessages.noRacesYet())); - } - return selectedRacesPanel; - } + private CheckBox createAndRegisterCheckbox(DataEntryDialog dialog, DetailType detailType, boolean selected, Map registry) { @@ -346,7 +231,7 @@ public abstract class LeaderboardSettingsDialogComponent dialog, String label, boolean selected, String tooltip) { + protected CheckBox createCheckbox(DataEntryDialog dialog, String label, boolean selected, String tooltip) { CheckBox checkbox = dialog.createCheckbox(label); checkbox.ensureDebugId(DebugIdHelper.createDebugId(label) + "CheckBox"); checkbox.setValue(selected); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java index 2ffdd288e4b..ae1662cbf8c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java @@ -6,7 +6,6 @@ import java.util.List; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; -import com.sap.sse.common.Util; import com.sap.sse.common.settings.generic.support.SettingsUtil; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; @@ -30,14 +29,11 @@ public class LeaderboardSettingsFactory { } public SingleRaceLeaderboardSettings createNewSettingsWithCustomRaceDetails(List raceDetailsToShow) { - LeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); + SingleRaceLeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); return new SingleRaceLeaderboardSettings( defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), raceDetailsToShow, defaultSettings.getOverallDetailsToShow(), - Util.cloneListOrNull(defaultSettings.getNamesOfRaceColumnsToShow()), - Util.cloneListOrNull(defaultSettings.getNamesOfRacesToShow()), - defaultSettings.getNumberOfLastRacesToShow(), defaultSettings.isAutoExpandPreSelectedRace(), defaultSettings.getDelayBetweenAutoAdvancesInMilliseconds(), defaultSettings.getNameOfRaceToSort(), defaultSettings.isSortAscending(), @@ -55,9 +51,7 @@ public class LeaderboardSettingsFactory { settings.getManeuverDetailsToShow(), settings.getLegDetailsToShow(), settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(), - Util.cloneListOrNull(settings.getNamesOfRaceColumnsToShow()), - Util.cloneListOrNull(settings.getNamesOfRacesToShow()), - settings.getNumberOfLastRacesToShow(), expandPreselectedRace, + expandPreselectedRace, settings.getDelayBetweenAutoAdvancesInMilliseconds(), settings.getNameOfRaceToSort(), settings.isSortAscending(), settings.isUpdateUponPlayStateChange(), @@ -87,7 +81,6 @@ public class LeaderboardSettingsFactory { List namesOfRaceColumnsToShow = copyRaceNamesList(settingsWithRaceSelection.getNamesOfRaceColumnsToShow()); List namesOfRacesToShow = copyRaceNamesList(settingsWithRaceSelection.getNamesOfRacesToShow()); Integer numberOfLastRacesToShow = settingsWithRaceSelection.getNumberOfLastRacesToShow(); - boolean autoExpandPreSelectedRace = settingsWithRaceSelection.isAutoExpandPreSelectedRace(); boolean showCompetitorSailIdColumn = settingsWithRaceSelection.isShowCompetitorSailIdColumn(); boolean showCompetitorFullNameColumns = settingsWithRaceSelection.isShowCompetitorFullNameColumn(); String nameOfRaceToSort = settingsWithRaceSelection.getNameOfRaceToSort(); @@ -95,7 +88,7 @@ public class LeaderboardSettingsFactory { boolean updateUponPlayStateChange = settingsWithRaceSelection.isUpdateUponPlayStateChange(); return new MultiRaceLeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetailsToShow, - namesOfRaceColumnsToShow, namesOfRacesToShow, numberOfLastRacesToShow, autoExpandPreSelectedRace, refreshIntervalInMs, + namesOfRaceColumnsToShow, namesOfRacesToShow, numberOfLastRacesToShow, refreshIntervalInMs, nameOfRaceToSort, sortAscending, updateUponPlayStateChange, strategy, /*showAddedScores*/ false, /* showOverallRacesCompleted */ false, showCompetitorSailIdColumn, showCompetitorFullNameColumns, settingsWithRaceSelection.isShowCompetitorNationality()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java index 05a225f7fa6..039ea3cbd59 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java @@ -17,7 +17,6 @@ public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycl defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), defaultLeaderboardSettings.getNamesOfRacesToShow(), currentLeaderboardSettings.getNumberOfLastRacesToShow(), - defaultLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), defaultLeaderboardSettings.getNameOfRaceToSort(), defaultLeaderboardSettings.isSortAscending(), currentLeaderboardSettings.isUpdateUponPlayStateChange(), @@ -39,7 +38,6 @@ public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycl defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), defaultLeaderboardSettings.getNamesOfRacesToShow(), currentLeaderboardSettings.getNumberOfLastRacesToShow(), - currentLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), defaultLeaderboardSettings.getNameOfRaceToSort(), currentLeaderboardSettings.isSortAscending(), currentLeaderboardSettings.isUpdateUponPlayStateChange(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java index fe5bebd13a6..12198c08d5e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java @@ -4,10 +4,33 @@ import java.util.Collection; import java.util.List; import com.sap.sailing.domain.common.DetailType; +import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sse.common.Util; +import com.sap.sse.common.settings.generic.IntegerSetting; +import com.sap.sse.common.settings.generic.StringSetSetting; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; public class MultiRaceLeaderboardSettings extends LeaderboardSettings { + private static final long serialVersionUID = -3445146715292390755L; + /** + * Only one of {@link #namesOfRaceColumnsToShow} and {@link #namesOfRacesToShow} must be non-null. + * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to EXPLIZIT + */ + protected StringSetSetting namesOfRaceColumnsToShow; + + /** + * Only one of {@link #namesOfRaceColumnsToShow} and {@link #namesOfRacesToShow} must be non-null. + * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to EXPLIZIT + */ + protected StringSetSetting namesOfRacesToShow; + + /** + * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to LAST_N + */ + protected IntegerSetting numberOfLastRacesToShow; + + public MultiRaceLeaderboardSettings() { super(); } @@ -15,31 +38,36 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { public MultiRaceLeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, List namesOfRaceColumnsToShow, - List namesOfRacesToShow, Integer numberOfLastRacesToShow, boolean autoExpandPreSelectedRace, + List namesOfRacesToShow, Integer numberOfLastRacesToShow, Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, boolean sortAscending, boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { - super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, - namesOfRacesToShow, numberOfLastRacesToShow, autoExpandPreSelectedRace, delayBetweenAutoAdvancesInMilliseconds, + super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, delayBetweenAutoAdvancesInMilliseconds, nameOfRaceToSort, sortAscending, updateUponPlayStateChange, activeRaceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); + + this.namesOfRacesToShow.setValues(namesOfRacesToShow); + this.namesOfRaceColumnsToShow.setValues(namesOfRaceColumnsToShow); + this.numberOfLastRacesToShow.setValue(numberOfLastRacesToShow); + if (namesOfRacesToShow != null && namesOfRaceColumnsToShow != null) { + throw new IllegalArgumentException("You can identify races either only by their race or by their column names, not both"); + } } public MultiRaceLeaderboardSettings(Iterable namesOfRaceColumnsToShow) { - super(namesOfRaceColumnsToShow); + this.namesOfRaceColumnsToShow.setValues(namesOfRaceColumnsToShow); } public LeaderboardSettings overrideDefaultsForNamesOfRaceColumns(List namesOfRaceColumns) { - LeaderboardSettings newSettings = new MultiRaceLeaderboardSettings(); + MultiRaceLeaderboardSettings newSettings = new MultiRaceLeaderboardSettings(); newSettings.legDetailsToShow.setValues(this.getLegDetailsToShow()); newSettings.raceDetailsToShow.setValues(this.getRaceDetailsToShow()); newSettings.overallDetailsToShow.setValues(this.getOverallDetailsToShow()); newSettings.numberOfLastRacesToShow.setValue(this.getNumberOfLastRacesToShow()); newSettings.activeRaceColumnSelectionStrategy.setValue(this.getActiveRaceColumnSelectionStrategy()); - newSettings.autoExpandPreSelectedRace = this.isAutoExpandPreSelectedRace(); newSettings.delayBetweenAutoAdvancesInMilliseconds.setValue(this.getDelayBetweenAutoAdvancesInMilliseconds()); newSettings.maneuverDetailsToShow.setValues(this.getManeuverDetailsToShow()); newSettings.nameOfRaceToSort.setValue(this.getNameOfRaceToSort()); @@ -61,5 +89,39 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { newSettings.namesOfRaceColumnsToShow.setDefaultValues(namesOfRaceColumns); return newSettings; } + + @Override + protected void addChildSettings() { + super.addChildSettings(); + namesOfRaceColumnsToShow = new StringSetSetting("namesOfRaceColumnsToShow", this); + namesOfRacesToShow = new StringSetSetting("namesOfRacesToShow", this, null); + numberOfLastRacesToShow = new IntegerSetting("numberOfLastRacesToShow", this, null); + } + + /** + * If null, this is to mean that the race columns should not be modified by + * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. Otherwise a + * live collection that reflects the current state of the settings of a leaderboard panel + */ + public List getNamesOfRaceColumnsToShow() { + return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.EXPLICIT ? (namesOfRaceColumnsToShow.isValuesEmpty() ? null : Util.createList(namesOfRaceColumnsToShow.getValues())) : null; + } + + /** + * If null, this is to mean that the race columns should not be modified by + * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. Otherwise + * a live collection that reflects the current state of the settings of a leaderboard panel + */ + public List getNamesOfRacesToShow() { + return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.EXPLICIT ? (namesOfRacesToShow.isValuesEmpty() ? null : Util.createList(namesOfRacesToShow.getValues())) : null; + } + + /** + * If null, this is to mean that the race columns should not be modified by + * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. + */ + public Integer getNumberOfLastRacesToShow() { + return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.LAST_N ? numberOfLastRacesToShow.getValue() : null; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java index 7df34697d3f..fadc2fddd7c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java @@ -4,18 +4,32 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.CheckBox; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.HasVerticalAlignment; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.Util; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; public class MultiRaceLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { - public MultiRaceLeaderboardSettingsDialogComponent(LeaderboardSettings initialSettings, + MultiRaceLeaderboardSettings initialSettings; + + public MultiRaceLeaderboardSettingsDialogComponent(MultiRaceLeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { super(initialSettings, allRaceColumnNames, stringMessages); + this.initialSettings = initialSettings; } @Override @@ -58,7 +72,7 @@ public class MultiRaceLeaderboardSettingsDialogComponent ? numberOfLastRacesToShowBox.getValue() : null; MultiRaceLeaderboardSettings newSettings = new MultiRaceLeaderboardSettings(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, - /* nameOfRacesToShow */null, lastNRacesToShowValue, initialSettings.isAutoExpandPreSelectedRace(), + /* nameOfRacesToShow */null, lastNRacesToShowValue, 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), null, true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), @@ -69,5 +83,114 @@ public class MultiRaceLeaderboardSettingsDialogComponent SettingsDefaultValuesUtils.keepDefaults(initialSettings, newSettings); return newSettings; } + + private FlowPanel createSelectedRacesPanel(DataEntryDialog dialog) { + FlowPanel selectedRacesPanel = new FlowPanel(); + selectedRacesPanel.ensureDebugId("RaceSelectionSettingsPanel"); + selectedRacesPanel.addStyleName("SettingsDialogComponent"); + selectedRacesPanel.add(dialog.createHeadline(stringMessages.selectedRaces(), true)); + // race selection strategy elements + HorizontalPanel racesSelectionStrategyPanel = new HorizontalPanel(); + selectedRacesPanel.add(racesSelectionStrategyPanel); + FlowPanel selectedRacesContent = new FlowPanel(); + selectedRacesContent.addStyleName("dialogInnerContent"); + selectedRacesPanel.add(selectedRacesContent); + + // Attention: We need to consider that there are regattas with more than 30 races + int racesCount = raceAllRaceColumnNames.size(); + if (racesCount > 0) { + final FlowPanel explicitRaceSelectionContent = new FlowPanel(); + explicitRaceSelectionContent.ensureDebugId("ExplicitRaceSelectionPanel"); + final FlowPanel lastNRacesSelectionContent = new FlowPanel(); + lastNRacesSelectionContent.ensureDebugId("MostCurrentRacesSelectionPanel"); + + String radioButtonGroupName = "raceSelectionStrategyGroup"; + Label raceSelectionWayLabel = new Label(stringMessages.chooseTheWayYouSelectRaces() + ":"); + raceSelectionWayLabel.getElement().getStyle().setPaddingRight(5, Unit.PX); + racesSelectionStrategyPanel.add(raceSelectionWayLabel); + explicitRaceColumnSelectionRadioBtn = dialog.createRadioButton(radioButtonGroupName, stringMessages.selectFromAllRaces()); + explicitRaceColumnSelectionRadioBtn.ensureDebugId("ExplicitRaceSelectionRadioButton"); + racesSelectionStrategyPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); + explicitRaceColumnSelectionRadioBtn.setValue(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT); + explicitRaceColumnSelectionRadioBtn.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + explicitRaceSelectionContent.setVisible(true); + lastNRacesSelectionContent.setVisible(false); + activeRaceColumnSelectionStrategy = RaceColumnSelectionStrategies.EXPLICIT; + } + }); + racesSelectionStrategyPanel.add(explicitRaceColumnSelectionRadioBtn); + + // content of explicit race selection + int maxRacesPerRow = 10; + int rowIndex = 0; + int columnIndex = 0; + int rowCount = racesCount / maxRacesPerRow; + if(racesCount % maxRacesPerRow != 0) { + rowCount++; + } + Grid grid = new Grid(rowCount, maxRacesPerRow); + List namesOfRaceColumnsToShow = initialSettings.getNamesOfRaceColumnsToShow(); + for (String raceColumnName : raceAllRaceColumnNames) { + CheckBox checkbox = createCheckbox(dialog, raceColumnName, + Util.contains(namesOfRaceColumnsToShow, raceColumnName), null); + raceColumnCheckboxes.put(raceColumnName, checkbox); + grid.setWidget(rowIndex, columnIndex++, checkbox); + if(columnIndex == maxRacesPerRow) { + rowIndex++; + columnIndex = 0; + } + } + explicitRaceSelectionContent.add(grid); + explicitRaceSelectionContent.setVisible(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT); + selectedRacesContent.add(explicitRaceSelectionContent); + + lastNRacesColumnSelectionRadioBtn = dialog.createRadioButton(radioButtonGroupName, stringMessages.selectANumberOfRaces()); + lastNRacesColumnSelectionRadioBtn.ensureDebugId("MostCurrentRacesSelectionRadioButton"); + lastNRacesColumnSelectionRadioBtn.setValue(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N); + lastNRacesColumnSelectionRadioBtn.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + explicitRaceSelectionContent.setVisible(false); + lastNRacesSelectionContent.setVisible(true); + activeRaceColumnSelectionStrategy = RaceColumnSelectionStrategies.LAST_N; + } + }); + racesSelectionStrategyPanel.add(lastNRacesColumnSelectionRadioBtn); + dialog.alignAllPanelWidgetsVertically(racesSelectionStrategyPanel, HasVerticalAlignment.ALIGN_MIDDLE); + + // content of 'number of races' selection + HorizontalPanel hPanel = new HorizontalPanel(); + lastNRacesSelectionContent.add(hPanel); + Label numberOfLastRacesLabel = new Label(stringMessages.numberOfLastNRaces() + ":"); + numberOfLastRacesLabel.getElement().getStyle().setPaddingRight(10, Unit.PX); + hPanel.add(numberOfLastRacesLabel); + Integer numberOfLastRacesToShow = initialSettings.getNumberOfLastRacesToShow(); + numberOfLastRacesToShowBox = dialog.createIntegerBox(numberOfLastRacesToShow != null ? numberOfLastRacesToShow : racesCount, 3); + numberOfLastRacesToShowBox.ensureDebugId("NumberOfMostCurrentRacesIntegerBox"); + hPanel.add(numberOfLastRacesToShowBox); + dialog.alignAllPanelWidgetsVertically(hPanel, HasVerticalAlignment.ALIGN_MIDDLE); + lastNRacesSelectionContent.setVisible(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N); + selectedRacesContent.add(lastNRacesSelectionContent); + } else { + selectedRacesContent.add(new Label(stringMessages.noRacesYet())); + } + return selectedRacesPanel; + } + + @Override + public Widget getAdditionalWidget(DataEntryDialog dialog) { + FlowPanel dialogPanel = new FlowPanel(); + dialogPanel.ensureDebugId("LeaderboardSettingsPanel"); + dialogPanel.add(createSelectedRacesPanel(dialog)); + dialogPanel.add(createOverallDetailPanel(dialog)); + dialogPanel.add(createRaceDetailPanel(dialog)); + dialogPanel.add(createRaceStartAnalysisPanel(dialog)); + dialogPanel.add(createLegDetailsPanel(dialog)); + dialogPanel.add(createManeuverDetailsPanel(dialog)); + dialogPanel.add(createTimingDetailsPanel(dialog)); + return dialogPanel; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardSettingsDialogComponent.java index 66e62774066..e4fa940e63f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/OverallLeaderboardSettingsDialogComponent.java @@ -8,7 +8,7 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog; public class OverallLeaderboardSettingsDialogComponent extends MultiRaceLeaderboardSettingsDialogComponent { - public OverallLeaderboardSettingsDialogComponent(LeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { + public OverallLeaderboardSettingsDialogComponent(MultiRaceLeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { super(initialSettings, allRaceColumnNames, stringMessages); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java index 4276cd573e3..074e0b1d3ce 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java @@ -1,35 +1,35 @@ package com.sap.sailing.gwt.settings.client.leaderboard; import java.util.Collection; -import java.util.List; import com.sap.sailing.domain.common.DetailType; public class SingleRaceLeaderboardSettings extends LeaderboardSettings { - + private static final long serialVersionUID = 2891220120957743158L; + + protected boolean autoExpandPreSelectedRace = false; + public SingleRaceLeaderboardSettings() { super(); - // TODO Auto-generated constructor stub } public SingleRaceLeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, - Collection overallDetailsToShow, List namesOfRaceColumnsToShow, - List namesOfRacesToShow, Integer numberOfLastRacesToShow, boolean autoExpandPreSelectedRace, + Collection overallDetailsToShow, boolean autoExpandPreSelectedRace, Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, boolean sortAscending, boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { - super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, - namesOfRacesToShow, numberOfLastRacesToShow, autoExpandPreSelectedRace, delayBetweenAutoAdvancesInMilliseconds, + super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, delayBetweenAutoAdvancesInMilliseconds, nameOfRaceToSort, sortAscending, updateUponPlayStateChange, activeRaceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); + + this.autoExpandPreSelectedRace = autoExpandPreSelectedRace; } - public SingleRaceLeaderboardSettings(Iterable namesOfRaceColumnsToShow) { - super(namesOfRaceColumnsToShow); + public boolean isAutoExpandPreSelectedRace() { + return autoExpandPreSelectedRace; } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java index e4373b7bbc3..c89328f61d0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java @@ -5,10 +5,12 @@ import java.util.List; import java.util.Map; import com.google.gwt.user.client.ui.CheckBox; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; public class SingleRaceLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { @@ -44,21 +46,9 @@ public class SingleRaceLeaderboardSettingsDialogComponent legDetailsToShow.add(entry.getKey()); } } - List namesOfRaceColumnsToShow = null; - if (activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT) { - namesOfRaceColumnsToShow = new ArrayList(); - for (Map.Entry entry : raceColumnCheckboxes.entrySet()) { - if (entry.getValue().getValue()) { - namesOfRaceColumnsToShow.add(entry.getKey()); - } - } - } Long delayBetweenAutoAdvancesValue = refreshIntervalInSecondsBox.getValue(); - Integer lastNRacesToShowValue = activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N - ? numberOfLastRacesToShowBox.getValue() : null; SingleRaceLeaderboardSettings newSettings = new SingleRaceLeaderboardSettings(maneuverDetailsToShow, - legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, - /* nameOfRacesToShow */null, lastNRacesToShowValue, initialSettings.isAutoExpandPreSelectedRace(), + legDetailsToShow, raceDetailsToShow, overallDetailsToShow, ((SingleRaceLeaderboardSettings) initialSettings).isAutoExpandPreSelectedRace(), 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), null, true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), @@ -69,4 +59,17 @@ public class SingleRaceLeaderboardSettingsDialogComponent SettingsDefaultValuesUtils.keepDefaults(initialSettings, newSettings); return newSettings; } + + @Override + public Widget getAdditionalWidget(DataEntryDialog dialog) { + FlowPanel dialogPanel = new FlowPanel(); + dialogPanel.ensureDebugId("LeaderboardSettingsPanel"); + dialogPanel.add(createOverallDetailPanel(dialog)); + dialogPanel.add(createRaceDetailPanel(dialog)); + dialogPanel.add(createRaceStartAnalysisPanel(dialog)); + dialogPanel.add(createLegDetailsPanel(dialog)); + dialogPanel.add(createManeuverDetailsPanel(dialog)); + dialogPanel.add(createTimingDetailsPanel(dialog)); + return dialogPanel; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPositionPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPositionPanel.java index 4e9eee0e6a4..73c5782f448 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPositionPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPositionPanel.java @@ -87,7 +87,7 @@ import com.sap.sailing.gwt.ui.client.shared.racemap.BoundsUtil; import com.sap.sailing.gwt.ui.client.shared.racemap.CourseMarkOverlay; import com.sap.sailing.gwt.ui.client.shared.racemap.FixOverlay; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMap; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; +import com.sap.sailing.gwt.ui.leaderboard.SingleRaceLeaderboardPanel; import com.sap.sailing.gwt.ui.raceboard.SideBySideComponentViewer; import com.sap.sailing.gwt.ui.shared.GPSFixDTO; import com.sap.sailing.gwt.ui.shared.GPSFixDTOWithSpeedWindTackAndLegType; @@ -108,7 +108,7 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; public class EditMarkPositionPanel extends AbstractRaceChart implements RequiresResize, SelectionChangeEvent.Handler { protected static final int FIX_OVERLAY_Z_ORDER = 230; private final RaceMap raceMap; - private final LeaderboardPanel leaderboardPanel; + private final SingleRaceLeaderboardPanel leaderboardPanel; private final MarksPanel marksPanel; private Series markSeries; private LinePlotOptions markSeriesPlotOptions; @@ -134,7 +134,7 @@ public class EditMarkPositionPanel extends AbstractRaceChart i private final RaceIdentifierToLeaderboardRaceColumnAndFleetMapper raceIdentifierToLeaderboardRaceColumnAndFleetMapper; public EditMarkPositionPanel(Component parent, ComponentContext context, final RaceMap raceMap, - final LeaderboardPanel leaderboardPanel, + final SingleRaceLeaderboardPanel leaderboardPanel, RegattaAndRaceIdentifier selectedRaceIdentifier, String leaderboardName, final StringMessages stringMessages, SailingServiceAsync sailingService, Timer timer, TimeRangeWithZoomProvider timeRangeWithZoomProvider, AsyncActionsExecutor asyncActionsExecutor, ErrorReporter errorReporter) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractLeaderboardViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractLeaderboardViewer.java index 0f9dba3dd70..388e4df35f8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractLeaderboardViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractLeaderboardViewer.java @@ -35,7 +35,7 @@ public abstract class AbstractLeaderboardViewer leaderboardPanel; protected final CompetitorSelectionModel competitorSelectionProvider; protected final AsyncActionsExecutor asyncActionsExecutor; @@ -63,12 +63,12 @@ public abstract class AbstractLeaderboardViewer leaderboardPanel) { addChildComponent(leaderboardPanel); this.leaderboardPanel = leaderboardPanel; } - public LeaderboardPanel getLeaderboardPanel() { + public LeaderboardPanel getLeaderboardPanel() { return leaderboardPanel; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java index 973b34ab80c..ed2f7d1d87d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java @@ -52,7 +52,7 @@ public abstract class ExpandableSortableColumn extends LeaderboardSortableCol private final LinkedList queuedToggleRequests; private boolean suppressSortingOnce; - private final LeaderboardPanel leaderboardPanel; + private final LeaderboardPanel leaderboardPanel; private final Map> detailColumnsMap; private final List detailSelection; @@ -71,7 +71,7 @@ public abstract class ExpandableSortableColumn extends LeaderboardSortableCol */ private boolean expanded; - public ExpandableSortableColumn(LeaderboardPanel leaderboardPanel, boolean enableExpansion, Cell cell, + public ExpandableSortableColumn(LeaderboardPanel leaderboardPanel, boolean enableExpansion, Cell cell, SortingOrder preferredSortingOrder, StringMessages stringConstants, String detailHeaderStyle, String detailColumnStyle, List detailSelection, DisplayedLeaderboardRowsProvider displayedLeaderboardRowsProvider) { super(cell, preferredSortingOrder, displayedLeaderboardRowsProvider); @@ -87,12 +87,12 @@ public abstract class ExpandableSortableColumn extends LeaderboardSortableCol * override this method. */ protected Map> getDetailColumnMap( - LeaderboardPanel leaderboardPanel, StringMessages stringConstants, String detailHeaderStyle, + LeaderboardPanel leaderboardPanel, StringMessages stringConstants, String detailHeaderStyle, String detailColumnStyle) { return Collections.emptyMap(); } - protected LeaderboardPanel getLeaderboardPanel() { + protected LeaderboardPanel getLeaderboardPanel() { return leaderboardPanel; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index 7688f109bad..416f21e5281 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -528,14 +528,8 @@ public abstract class LeaderboardPanel extends A protected abstract void openSettingsDialog(); protected void initialize(LeaderboardSettings settings){ - switch (settings.getActiveRaceColumnSelectionStrategy()) { - case EXPLICIT: - raceColumnSelection = getDefaultRaceColumnSelection(); - break; - case LAST_N: - setRaceColumnSelectionToLastNStrategy(settings.getNumberOfLastRacesToShow()); - break; - } + setDefaultRaceColumnSelection(settings); + if (timer.isInitialized()) { loadCompleteLeaderboard(/* showProgress */ false); } @@ -642,18 +636,7 @@ public abstract class LeaderboardPanel extends A public void updateSettings(final LeaderboardSettings newSettings) { this.currentSettings = newSettings; - boolean oldShallAddOverallDetails = shallAddOverallDetails(); - if (newSettings.getOverallDetailsToShow() != null) { - setValuesWithReferenceOrder(newSettings.getOverallDetailsToShow(), getAvailableOverallDetailColumnTypes(), - selectedOverallDetailColumns); - } - - setShowCompetitorNationality(newSettings.isShowCompetitorNationality()); - setShowAddedScores(newSettings.isShowAddedScores()); - setShowCompetitorSailId(newSettings.isShowCompetitorSailIdColumn()); - setShowCompetitorFullName(newSettings.isShowCompetitorFullNameColumn()); - setShowOverallColumnWithNumberOfRacesCompletedPerCompetitor( - newSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor()); + final List> columnsToExpandAgain = new ArrayList>(); for (int i = 0; i < getLeaderboardTable().getColumnCount(); i++) { Column c = getLeaderboardTable().getColumn(i); @@ -668,6 +651,73 @@ public abstract class LeaderboardPanel extends A } } } + + boolean oldShallAddOverallDetails = applyDetailSettings(newSettings); + + addBusyTask(); + Runnable doWhenNecessaryDetailHasBeenLoaded = new Runnable() { + @Override + public void run() { + try { + // avoid expansion during updateLeaderboard(...); will expand + // later + // if it was expanded before + updateExpansionStates(null); + applyRaceSelection(newSettings); + + updateLeaderboard(leaderboard); + updateExpansionStates(newSettings); + + + postApplySettings(newSettings, columnsToExpandAgain); + } finally { + removeBusyTask(); + } + } + + + }; + if (oldShallAddOverallDetails == shallAddOverallDetails() || oldShallAddOverallDetails + || getLeaderboard().hasOverallDetails()) { + doWhenNecessaryDetailHasBeenLoaded.run(); + } else { // meaning that now the details need to be loaded from the server + updateLeaderboardAndRun(doWhenNecessaryDetailHasBeenLoaded); + } + } + + private void postApplySettings(final LeaderboardSettings newSettings, + final List> columnsToExpandAgain) { + if (newSettings.getDelayBetweenAutoAdvancesInMilliseconds() != null) { + timer.setRefreshInterval(newSettings.getDelayBetweenAutoAdvancesInMilliseconds()); + } + for (ExpandableSortableColumn expandableSortableColumn : columnsToExpandAgain) { + expandableSortableColumn.changeExpansionState(/* expand */ true); + } + if (newSettings.getNameOfRaceToSort() != null) { + final RaceColumn raceColumnByRaceName = getRaceColumnByRaceName( + newSettings.getNameOfRaceToSort()); + if (raceColumnByRaceName != null) { + getLeaderboardTable().sortColumn(raceColumnByRaceName, /* ascending */true); + } + } + } + + protected abstract void applyRaceSelection(final LeaderboardSettings newSettings); + + private boolean applyDetailSettings(final LeaderboardSettings newSettings) { + boolean oldShallAddOverallDetails = shallAddOverallDetails(); + if (newSettings.getOverallDetailsToShow() != null) { + setValuesWithReferenceOrder(newSettings.getOverallDetailsToShow(), getAvailableOverallDetailColumnTypes(), + selectedOverallDetailColumns); + } + + setShowCompetitorNationality(newSettings.isShowCompetitorNationality()); + setShowAddedScores(newSettings.isShowAddedScores()); + setShowCompetitorSailId(newSettings.isShowCompetitorSailIdColumn()); + setShowCompetitorFullName(newSettings.isShowCompetitorFullNameColumn()); + setShowOverallColumnWithNumberOfRacesCompletedPerCompetitor( + newSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor()); + if (newSettings.getManeuverDetailsToShow() != null) { setValuesWithReferenceOrder(newSettings.getManeuverDetailsToShow(), ManeuverCountRaceColumn.getAvailableManeuverDetailColumnTypes(), selectedManeuverDetails); @@ -683,94 +733,12 @@ public abstract class LeaderboardPanel extends A setValuesWithReferenceOrder(newSettings.getRaceDetailsToShow(), allRaceDetailsTypes.toArray(new DetailType[allRaceDetailsTypes.size()]), selectedRaceDetails); } - - addBusyTask(); - Runnable doWhenNecessaryDetailHasBeenLoaded = new Runnable() { - @Override - public void run() { - try { - updateExpansionStates(false); - // avoid expansion during updateLeaderboard(...); will expand - // later - // if it was expanded before - // update leaderboard after settings panel column selection change - - // update strategy for determining the race columns to show; if settings' race columns to show is - // null, use the - // previously selected race columns / number of race columns for the new configuration - Iterable oldNamesOfRaceColumnsToShow = null; - if (newSettings.getNamesOfRaceColumnsToShow() == null) { - oldNamesOfRaceColumnsToShow = raceColumnSelection.getSelectedRaceColumnNames(); - } - switch (newSettings.getActiveRaceColumnSelectionStrategy()) { - case EXPLICIT: - raceColumnSelection = getDefaultRaceColumnSelection(); - if (newSettings.getNamesOfRaceColumnsToShow() != null) { - raceColumnSelection.requestClear(); - for (String nameOfRaceColumnToShow : newSettings.getNamesOfRaceColumnsToShow()) { - RaceColumnDTO raceColumnToShow = getRaceByColumnName(nameOfRaceColumnToShow); - if (raceColumnToShow != null) { - raceColumnSelection.requestRaceColumnSelection(raceColumnToShow); - } - } - } else { - // apply the old column selections again - for (String oldNameOfRaceColumnToShow : oldNamesOfRaceColumnsToShow) { - final RaceColumnDTO raceColumnByName = getLeaderboard() - .getRaceColumnByName(oldNameOfRaceColumnToShow); - if (raceColumnByName != null) { - raceColumnSelection.requestRaceColumnSelection(raceColumnByName); - } - } - if (newSettings.getNamesOfRacesToShow() != null) { - raceColumnSelection.requestClear(); - for (String nameOfRaceToShow : newSettings.getNamesOfRacesToShow()) { - RaceColumnDTO raceColumnToShow = getRaceByName(nameOfRaceToShow); - if (raceColumnToShow != null) { - raceColumnSelection.requestRaceColumnSelection(raceColumnToShow); - } - } - } - } - break; - case LAST_N: - setRaceColumnSelectionToLastNStrategy(newSettings.getNumberOfLastRacesToShow()); - break; - } - - updateLeaderboard(leaderboard); - updateExpansionStates(newSettings.isAutoExpandPreSelectedRace()); - - - if (newSettings.getDelayBetweenAutoAdvancesInMilliseconds() != null) { - timer.setRefreshInterval(newSettings.getDelayBetweenAutoAdvancesInMilliseconds()); - } - for (ExpandableSortableColumn expandableSortableColumn : columnsToExpandAgain) { - expandableSortableColumn.changeExpansionState(/* expand */ true); - } - if (newSettings.getNameOfRaceToSort() != null) { - final RaceColumn raceColumnByRaceName = getRaceColumnByRaceName( - newSettings.getNameOfRaceToSort()); - if (raceColumnByRaceName != null) { - getLeaderboardTable().sortColumn(raceColumnByRaceName, /* ascending */true); - } - } - } finally { - removeBusyTask(); - } - } - }; - if (oldShallAddOverallDetails == shallAddOverallDetails() || oldShallAddOverallDetails - || getLeaderboard().hasOverallDetails()) { - doWhenNecessaryDetailHasBeenLoaded.run(); - } else { // meaning that now the details need to be loaded from the server - updateLeaderboardAndRun(doWhenNecessaryDetailHasBeenLoaded); - } + return oldShallAddOverallDetails; } - protected abstract void updateExpansionStates(boolean expand); + protected abstract void updateExpansionStates(LeaderboardSettings newSettings); - protected abstract RaceColumnSelection getDefaultRaceColumnSelection(); + protected abstract void setDefaultRaceColumnSelection(LeaderboardSettings settings); private void setValuesWithReferenceOrder(Collection valuesToSet, DetailType[] referenceOrder, List collectionToSetValuesTo) { @@ -1162,7 +1130,7 @@ public abstract class LeaderboardPanel extends A @Override protected Map> getDetailColumnMap( - LeaderboardPanel leaderboardPanel, StringMessages stringMessages, String detailHeaderStyle, + LeaderboardPanel leaderboardPanel, StringMessages stringMessages, String detailHeaderStyle, String detailColumnStyle) { Map> result = new HashMap<>(); result.put(DetailType.RACE_RATIO_BETWEEN_TIME_SINCE_LAST_POSITION_FIX_AND_AVERAGE_SAMPLING_INTERVAL, @@ -2106,31 +2074,6 @@ public abstract class LeaderboardPanel extends A return refreshAndSettingsPanel; } - private RaceColumnDTO getRaceByName(String raceName) { - if (getLeaderboard() != null) { - for (RaceColumnDTO race : getLeaderboard().getRaceList()) { - for (FleetDTO fleet : race.getFleets()) { - if (race.getRaceIdentifier(fleet) != null - && raceName.equals(race.getRaceIdentifier(fleet).getRaceName())) { - return race; - } - } - } - } - return null; - } - - private RaceColumnDTO getRaceByColumnName(String columnName) { - if (getLeaderboard() != null) { - for (RaceColumnDTO race : getLeaderboard().getRaceList()) { - if (columnName.equals(race.getRaceColumnName())) { - return race; - } - } - } - return null; - } - private RaceColumn getRaceColumnByRaceName(String raceName) { for (int i = 0; i < getLeaderboardTable().getColumnCount(); i++) { Column column = getLeaderboardTable().getColumn(i); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LegColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LegColumn.java index 6d7691859b8..ad17c4e613b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LegColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LegColumn.java @@ -255,7 +255,7 @@ public class LegColumn extends ExpandableSortableColumn { } } - public LegColumn(LeaderboardPanel leaderboardPanel, String raceColumnName, int legIndex, SortingOrder preferredSortingOrder, StringMessages stringMessages, + public LegColumn(LeaderboardPanel leaderboardPanel, String raceColumnName, int legIndex, SortingOrder preferredSortingOrder, StringMessages stringMessages, List legDetailSelection, String headerStyle, String columnStyle, String detailHeaderStyle, String detailColumnStyle) { super(leaderboardPanel, /* expandable */true /* all legs have details */, new TextCell(), preferredSortingOrder, @@ -282,7 +282,7 @@ public class LegColumn extends ExpandableSortableColumn { @Override protected Map> getDetailColumnMap( - LeaderboardPanel leaderboardPanel, StringMessages stringMessages, String detailHeaderStyle, + LeaderboardPanel leaderboardPanel, StringMessages stringMessages, String detailHeaderStyle, String detailColumnStyle) { Map> result = new HashMap<>(); result.put(DetailType.DISTANCE_TRAVELED, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ManeuverCountRaceColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ManeuverCountRaceColumn.java index 0eb3dff2801..68f0bf9e4ff 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ManeuverCountRaceColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ManeuverCountRaceColumn.java @@ -85,7 +85,7 @@ public class ManeuverCountRaceColumn extends ExpandableSortableColumn im } } - public ManeuverCountRaceColumn(LeaderboardPanel leaderboardPanel, RaceNameProvider raceNameProvider, + public ManeuverCountRaceColumn(LeaderboardPanel leaderboardPanel, RaceNameProvider raceNameProvider, StringMessages stringConstants, List maneuverDetailSelection, String headerStyle, String columnStylee, String detailHeaderStyle, String detailColumnStyle, DisplayedLeaderboardRowsProvider displayedLeaderboardRowsProvider) { super(leaderboardPanel, /* expandable */true /* all legs have details */, new TextCell(), DetailType.NUMBER_OF_MANEUVERS.getDefaultSortingOrder(), @@ -235,7 +235,7 @@ public class ManeuverCountRaceColumn extends ExpandableSortableColumn im @Override protected Map> getDetailColumnMap( - LeaderboardPanel leaderboardPanel, StringMessages stringMessages, String detailHeaderStyle, + LeaderboardPanel leaderboardPanel, StringMessages stringMessages, String detailHeaderStyle, String detailColumnStyle) { Map> result = new HashMap<>(); result.put(DetailType.TACK, new FormattedDoubleDetailTypeColumn(DetailType.TACK, new NumberOfTacks(), detailHeaderStyle, detailColumnStyle, leaderboardPanel)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardProxyPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardProxyPanel.java index 07f7e541333..f25bf3dd9a8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardProxyPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardProxyPanel.java @@ -39,7 +39,7 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; * A panel managing multiple {@link LeaderboardPanel}s (e.g. from a meta leaderboard) so that the user can switch between them. * @author Frank */ -public class MultiLeaderboardProxyPanel extends AbstractLazyComponent implements TimeListener, SelectedLeaderboardChangeProvider { +public class MultiLeaderboardProxyPanel extends AbstractLazyComponent implements TimeListener, SelectedLeaderboardChangeProvider { private MultiRaceLeaderboardPanel selectedLeaderboardPanel; private FlowPanel selectedLeaderboardFlowPanel; @@ -63,7 +63,7 @@ public class MultiLeaderboardProxyPanel extends AbstractLazyComponent leaderboardUpdateListeners; - private final Set selectedLeaderboardChangeListeners; + private final Set> selectedLeaderboardChangeListeners; private HashMap contextStore; private MultiRaceLeaderboardSettings loadedSettings; @@ -96,7 +96,7 @@ public class MultiLeaderboardProxyPanel extends AbstractLazyComponent(); - selectedLeaderboardChangeListeners = new HashSet(); + selectedLeaderboardChangeListeners = new HashSet>(); contextStore = new HashMap<>(); } @@ -277,12 +277,12 @@ public class MultiLeaderboardProxyPanel extends AbstractLazyComponent listener) { selectedLeaderboardChangeListeners.add(listener); } @Override - public void removeSelectedLeaderboardChangeListener(SelectedLeaderboardChangeListener listener) { + public void removeSelectedLeaderboardChangeListener(SelectedLeaderboardChangeListener listener) { selectedLeaderboardChangeListeners.remove(listener); } @@ -290,7 +290,7 @@ public class MultiLeaderboardProxyPanel extends AbstractLazyComponent listener : selectedLeaderboardChangeListeners) { listener.onSelectedLeaderboardChanged(selectedLeaderboardPanel); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index 84a6414309f..fcfac8f6ff2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -1,7 +1,6 @@ package com.sap.sailing.gwt.ui.leaderboard; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -9,6 +8,7 @@ import java.util.Map; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; @@ -37,38 +37,37 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; public class MultiRaceLeaderboardPanel extends LeaderboardPanel { public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, - boolean isEmbedded, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, + MultiRaceLeaderboardSettings settings, boolean isEmbedded, CompetitorSelectionProvider competitorSelectionProvider, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, - competitorSelectionProvider, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, - showRaceDetails); + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, + leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails); initialize(settings); } public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, - boolean isEmbedded, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, + MultiRaceLeaderboardSettings settings, boolean isEmbedded, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, boolean autoExpandLastRaceColumn, boolean adjustTimerDelay, boolean autoApplyTopNFilter, boolean showCompetitorFilterStatus, boolean enableSyncScroller) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, - competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, - stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, - optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, - showCompetitorFilterStatus, enableSyncScroller); + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, + timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails, + competitorSearchTextBox, showSelectionCheckbox, optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, + adjustTimerDelay, autoApplyTopNFilter, showCompetitorFilterStatus, enableSyncScroller); initialize(settings); } public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, - CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, - ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails) { + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, + MultiRaceLeaderboardSettings settings, CompetitorSelectionProvider competitorSelectionProvider, + String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, + boolean showRaceDetails) { super(parent, context, sailingService, asyncActionsExecutor, settings, competitorSelectionProvider, leaderboardName, errorReporter, stringMessages, showRaceDetails); initialize(settings); @@ -82,22 +81,28 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel getSettingsDialogComponent( MultiRaceLeaderboardSettings useTheseSettings) { - return new MultiRaceLeaderboardSettingsDialogComponent((MultiRaceLeaderboardSettings) useTheseSettings, leaderboard.getNamesOfRaceColumns(), - stringMessages); + return new MultiRaceLeaderboardSettingsDialogComponent((MultiRaceLeaderboardSettings) useTheseSettings, + leaderboard.getNamesOfRaceColumns(), stringMessages); } @Override protected void openSettingsDialog() { - SettingsDialog settingsDialog = new SettingsDialog(this, stringMessages); + SettingsDialog settingsDialog = new SettingsDialog( + this, stringMessages); settingsDialog.ensureDebugId("LeaderboardSettingsDialog"); - settingsDialog.show(); + settingsDialog.show(); } @Override - protected void processAutoExpands(AbstractSortableColumnWithMinMax c, RaceColumn lastRaceColumn) { + protected void applyRaceSelection(final LeaderboardSettings ns) { + MultiRaceLeaderboardSettings newSettings = (MultiRaceLeaderboardSettings) ns; + Iterable oldNamesOfRaceColumnsToShow = null; + if (newSettings.getNamesOfRaceColumnsToShow() == null) { + oldNamesOfRaceColumnsToShow = raceColumnSelection.getSelectedRaceColumnNames(); + } + switch (newSettings.getActiveRaceColumnSelectionStrategy()) { + case EXPLICIT: + setDefaultRaceColumnSelection(newSettings); + if (newSettings.getNamesOfRaceColumnsToShow() != null) { + raceColumnSelection.requestClear(); + for (String nameOfRaceColumnToShow : newSettings.getNamesOfRaceColumnsToShow()) { + RaceColumnDTO raceColumnToShow = getRaceByColumnName(nameOfRaceColumnToShow); + if (raceColumnToShow != null) { + raceColumnSelection.requestRaceColumnSelection(raceColumnToShow); + } + } + } else { + // apply the old column selections again + for (String oldNameOfRaceColumnToShow : oldNamesOfRaceColumnsToShow) { + final RaceColumnDTO raceColumnByName = getLeaderboard() + .getRaceColumnByName(oldNameOfRaceColumnToShow); + if (raceColumnByName != null) { + raceColumnSelection.requestRaceColumnSelection(raceColumnByName); + } + } + if (newSettings.getNamesOfRacesToShow() != null) { + raceColumnSelection.requestClear(); + for (String nameOfRaceToShow : newSettings.getNamesOfRacesToShow()) { + RaceColumnDTO raceColumnToShow = getRaceByName(nameOfRaceToShow); + if (raceColumnToShow != null) { + raceColumnSelection.requestRaceColumnSelection(raceColumnToShow); + } + } + } + } + break; + case LAST_N: + setRaceColumnSelectionToLastNStrategy(newSettings.getNumberOfLastRacesToShow()); + break; + } + } + + private RaceColumnDTO getRaceByColumnName(String columnName) { + if (getLeaderboard() != null) { + for (RaceColumnDTO race : getLeaderboard().getRaceList()) { + if (columnName.equals(race.getRaceColumnName())) { + return race; + } + } + } + return null; + } + + private RaceColumnDTO getRaceByName(String raceName) { + if (getLeaderboard() != null) { + for (RaceColumnDTO race : getLeaderboard().getRaceList()) { + for (FleetDTO fleet : race.getFleets()) { + if (race.getRaceIdentifier(fleet) != null + && raceName.equals(race.getRaceIdentifier(fleet).getRaceName())) { + return race; + } + } + } + } + return null; + } + + @Override + protected void processAutoExpands(AbstractSortableColumnWithMinMax c, RaceColumn lastRaceColumn) { + // Toggle or the last race column if that was requested + if (isAutoExpandLastRaceColumn() && c == lastRaceColumn) { + ExpandableSortableColumn expandableSortableColumn = (ExpandableSortableColumn) c; + if (!expandableSortableColumn.isExpanded()) { + expandableSortableColumn.changeExpansionState(/* expand */ true); + autoExpandPerformedOnce = true; + } + } } - - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java index 3f8944d5ce3..76e0aa7ee36 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java @@ -29,7 +29,7 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; */ public class MultiRaceLeaderboardViewer extends AbstractLeaderboardViewer { private final MultiCompetitorLeaderboardChart multiCompetitorChart; - private LeaderboardPanel overallLeaderboardPanel; + private MultiRaceLeaderboardPanel overallLeaderboardPanel; public MultiRaceLeaderboardViewer(Component parent, ComponentContext> componentContext, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/OverallTimeTraveledColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/OverallTimeTraveledColumn.java index 743eb65195a..8fd662fa112 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/OverallTimeTraveledColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/OverallTimeTraveledColumn.java @@ -30,7 +30,7 @@ public class OverallTimeTraveledColumn extends ExpandableSortableColumn private String headerStyle; private MinMaxRenderer minmaxRenderer; - public OverallTimeTraveledColumn(LeaderboardPanel leaderboardPanel, StringMessages stringMessages, String headerStyle, String columnStyle, String detailHeaderStyle, + public OverallTimeTraveledColumn(LeaderboardPanel leaderboardPanel, StringMessages stringMessages, String headerStyle, String columnStyle, String detailHeaderStyle, String detailColumnStyle) { super(leaderboardPanel, /* expandable */true, new TextCell(), DETAIL_TYPE.getDefaultSortingOrder(), stringMessages, detailHeaderStyle, detailColumnStyle, @@ -49,7 +49,7 @@ public class OverallTimeTraveledColumn extends ExpandableSortableColumn @Override protected Map> getDetailColumnMap( - LeaderboardPanel leaderboardPanel, StringMessages stringConstants, String detailHeaderStyle, + LeaderboardPanel leaderboardPanel, StringMessages stringConstants, String detailHeaderStyle, String detailColumnStyle) { Map> result = new HashMap<>(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeListener.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeListener.java index f4bf4168b97..0466d9c8058 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeListener.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeListener.java @@ -4,11 +4,11 @@ package com.sap.sailing.gwt.ui.leaderboard; /** * Allows UI components to observe a change of the selected leaderboard in a Multi-Leaderboard scenario. */ -public interface SelectedLeaderboardChangeListener { +public interface SelectedLeaderboardChangeListener> { /** * @param selectedLeaderboard the selected non-null LeaderboardPanel */ - void onSelectedLeaderboardChanged(LeaderboardPanel selectedLeaderboard); + void onSelectedLeaderboardChanged(T selectedLeaderboard); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeProvider.java index 90934b70f2e..6bf30f0d9d7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SelectedLeaderboardChangeProvider.java @@ -1,11 +1,11 @@ package com.sap.sailing.gwt.ui.leaderboard; -public interface SelectedLeaderboardChangeProvider { +public interface SelectedLeaderboardChangeProvider > { - void addSelectedLeaderboardChangeListener(SelectedLeaderboardChangeListener listener); + void addSelectedLeaderboardChangeListener(SelectedLeaderboardChangeListener listener); - void removeSelectedLeaderboardChangeListener(SelectedLeaderboardChangeListener listener); + void removeSelectedLeaderboardChangeListener(SelectedLeaderboardChangeListener listener); void setSelectedLeaderboard(MultiRaceLeaderboardPanel selectedLeaderboard); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java index dd37c0eeaf1..ad904d416c5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java @@ -1,8 +1,6 @@ package com.sap.sailing.gwt.ui.leaderboard; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; @@ -64,24 +62,16 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel selectedRaceColumns = raceColumnSelection - .getSelectedRaceColumnsOrderedAsInLeaderboard(leaderboard); - List namesOfRaceColumnsToShow = new ArrayList<>(); - for (RaceColumnDTO raceColumn : selectedRaceColumns) { - namesOfRaceColumnsToShow.add(raceColumn.getName()); - } SingleRaceLeaderboardSettings leaderboardSettings = new SingleRaceLeaderboardSettings( selectedManeuverDetails,selectedLegDetails, selectedRaceDetails, - selectedOverallDetailColumns, namesOfRaceColumnsToShow, - /* namesOfRacesToShow */ null, raceColumnSelection.getNumberOfLastRaceColumnsToShow(), - autoExpandPreSelectedRace, timer.getRefreshInterval(), /* nameOfRaceToSort */ null, + selectedOverallDetailColumns, autoExpandPreSelectedRace, timer.getRefreshInterval(), /* nameOfRaceToSort */ null, /* sortAscending */ true, /* updateUponPlayStateChange */ true, raceColumnSelection.getType(), isShowAddedScores(), isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), isShowCompetitorSailId(), isShowCompetitorFullName(), isShowCompetitorNationality); @@ -89,13 +79,6 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel c, RaceColumn lastRaceColumn) { // Toggle pre-selected race, if the setting is set and it isn't open yet, or the last race column if // that was requested if ((!autoExpandPerformedOnce && isAutoExpandPreSelectedRace() && c instanceof LeaderboardPanel.RaceColumn - && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) + && ((RaceColumn) c).getRace().hasTrackedRace(preSelectedRace)) || (isAutoExpandLastRaceColumn() && c == lastRaceColumn)) { ExpandableSortableColumn expandableSortableColumn = (ExpandableSortableColumn) c; if (!expandableSortableColumn.isExpanded()) { @@ -163,8 +147,16 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel settingsDialog = new SettingsDialog(this, stringMessages); - settingsDialog.ensureDebugId("LeaderboardSettingsDialog"); - settingsDialog.show(); - } - @Override public SettingsDialogComponent getSettingsDialogComponent( SingleRaceLeaderboardSettings useTheseSettings) { @@ -206,4 +190,8 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel { private static CellTemplates template = GWT.create(CellTemplates.class); - public SortableExpandableColumnHeader(String title, String iconURL, LeaderboardPanel leaderboardPanel, + public SortableExpandableColumnHeader(String title, String iconURL, LeaderboardPanel leaderboardPanel, ExpandableSortableColumn column, StringMessages stringConstants) { this(title, null, null, iconURL, leaderboardPanel, column, stringConstants); } public SortableExpandableColumnHeader(String title, String tooltip, String iconURL, - LeaderboardPanel leaderboardPanel, ExpandableSortableColumn column, StringMessages stringConstants) { + LeaderboardPanel leaderboardPanel, ExpandableSortableColumn column, StringMessages stringConstants) { this(title, tooltip, null, iconURL, leaderboardPanel, column, stringConstants); } public SortableExpandableColumnHeader(String title, String tooltip, String iconURL, - LeaderboardPanel leaderboardPanel, ExpandableSortableColumn column, StringMessages stringConstants, String unit) { + LeaderboardPanel leaderboardPanel, ExpandableSortableColumn column, StringMessages stringConstants, String unit) { this(title, tooltip, unit, iconURL, leaderboardPanel, column, stringConstants); } public SortableExpandableColumnHeader(String title, String tooltip, String unit, - String iconURL, LeaderboardPanel leaderboardPanel, ExpandableSortableColumn column, StringMessages stringConstants) { + String iconURL, LeaderboardPanel leaderboardPanel, ExpandableSortableColumn column, StringMessages stringConstants) { super(constructCell(title, tooltip, unit, iconURL, column.isExpansionEnabled(), leaderboardPanel, column, stringConstants)); } private static Cell constructCell(final String title, final String tooltip, final String unit, - final String iconURL, boolean isExpansionEnabled, final LeaderboardPanel leaderboardPanel, final ExpandableSortableColumn column, final StringMessages stringConstants) { + final String iconURL, boolean isExpansionEnabled, final LeaderboardPanel leaderboardPanel, final ExpandableSortableColumn column, final StringMessages stringConstants) { final List> cells = new ArrayList>(3); // if it's a medal race, add the cell rendering the medal image // add the cell rendering the expand/collapse button: diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/TimeTraveledRaceColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/TimeTraveledRaceColumn.java index bb41254b070..67ec895ba76 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/TimeTraveledRaceColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/TimeTraveledRaceColumn.java @@ -32,7 +32,7 @@ public class TimeTraveledRaceColumn extends ExpandableSortableColumn imp private String headerStyle; private MinMaxRenderer minmaxRenderer; - public TimeTraveledRaceColumn(LeaderboardPanel leaderboardPanel, RaceNameProvider raceNameProvider, StringMessages stringMessages, String headerStyle, String columnStyle, + public TimeTraveledRaceColumn(LeaderboardPanel leaderboardPanel, RaceNameProvider raceNameProvider, StringMessages stringMessages, String headerStyle, String columnStyle, String detailHeaderStyle, String detailColumnStyle) { super(leaderboardPanel, /* expandable */true, new TextCell(), DETAIL_TYPE.getDefaultSortingOrder(), stringMessages, detailHeaderStyle, detailColumnStyle, @@ -82,7 +82,7 @@ public class TimeTraveledRaceColumn extends ExpandableSortableColumn imp @Override protected Map> getDetailColumnMap( - LeaderboardPanel leaderboardPanel, StringMessages stringConstants, String detailHeaderStyle, + LeaderboardPanel leaderboardPanel, StringMessages stringConstants, String detailHeaderStyle, String detailColumnStyle) { Map> result = new HashMap<>(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 6b3a2380fc7..aa93bdaf2ce 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -39,7 +39,6 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.dto.RaceDTO; import com.sap.sailing.gwt.common.authentication.SailingAuthenticationEntryPointLinkFactory; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.raceboard.RaceBoardPerspectiveOwnSettings; import com.sap.sailing.gwt.ui.client.CompetitorColorProvider; @@ -449,7 +448,7 @@ public class RaceBoardPanel PerspectiveCompositeSettings settings, String leaderboardName, String leaderboardGroupName, CompetitorFilterPanel competitorSearchTextBox) { - LeaderboardPanelLifecycle leaderboardPanelLifecycle = getPerspectiveLifecycle().getLeaderboardPanelLifecycle(); + SingleRaceLeaderboardPanelLifecycle leaderboardPanelLifecycle = getPerspectiveLifecycle().getLeaderboardPanelLifecycle(); LeaderboardSettings leaderboardSettings = settings .findSettingsByComponentId(leaderboardPanelLifecycle.getComponentId()); return new SingleRaceLeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java index d82f20d5522..e454823ca1f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java @@ -2,7 +2,6 @@ package com.sap.sailing.gwt.ui.raceboard; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; import com.sap.sailing.gwt.settings.client.raceboard.RaceBoardPerspectiveOwnSettings; import com.sap.sailing.gwt.ui.client.RaceTimePanelLifecycle; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -84,7 +83,7 @@ public class RaceBoardPerspectiveLifecycle extends AbstractPerspectiveLifecycle< return windChartLifecycle; } - public LeaderboardPanelLifecycle getLeaderboardPanelLifecycle() { + public SingleRaceLeaderboardPanelLifecycle getLeaderboardPanelLifecycle() { return leaderboardPanelLifecycle; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java index 6b1be0a784e..28d9f124da5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java @@ -1,7 +1,6 @@ package com.sap.sailing.gwt.ui.raceboard; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import com.google.gwt.dom.client.Document; @@ -28,9 +27,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc @Override public SingleRaceLeaderboardSettings createDefaultSettings() { - List namesOfRaceColumnsToShow = null; - List namesOfRacesToShow = Collections.singletonList(raceIdentifier.getRaceName()); - List raceDetails = new ArrayList(); raceDetails.add(DetailType.RACE_DISTANCE_TRAVELED); raceDetails.add(DetailType.RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS); @@ -39,8 +35,7 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc raceDetails.add(DetailType.DISPLAY_LEGS); List overallDetails = new ArrayList<>(); SingleRaceLeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); - SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, namesOfRaceColumnsToShow, namesOfRacesToShow, - defaultSettings.getNumberOfLastRacesToShow(), false, DEFAULT_REFRESH_INTERVAL, raceIdentifier.getRaceName(), defaultSettings.isSortAscending(), defaultSettings.isUpdateUponPlayStateChange(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, false, DEFAULT_REFRESH_INTERVAL, raceIdentifier.getRaceName(), defaultSettings.isSortAscending(), defaultSettings.isUpdateUponPlayStateChange(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), /*showCompetitorSailIdColumn*/ true, /* don't showCompetitorFullNameColumn in case screen is so small that we don't * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard, false); @@ -60,9 +55,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc SingleRaceLeaderboardSettings contextSpecificLeaderboardSettings = new SingleRaceLeaderboardSettings( currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), - defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), - defaultLeaderboardSettings.getNamesOfRacesToShow(), - currentLeaderboardSettings.getNumberOfLastRacesToShow(), currentLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), defaultLeaderboardSettings.getNameOfRaceToSort(), currentLeaderboardSettings.isSortAscending(), @@ -82,9 +74,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc SingleRaceLeaderboardSettings globalLeaderboardSettings = new SingleRaceLeaderboardSettings( currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), - defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), - defaultLeaderboardSettings.getNamesOfRacesToShow(), - currentLeaderboardSettings.getNumberOfLastRacesToShow(), defaultLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), defaultLeaderboardSettings.getNameOfRaceToSort(), defaultLeaderboardSettings.isSortAscending(), diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/async/AsyncActionsExecutor.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/async/AsyncActionsExecutor.java index fb04024a105..2436a6ed465 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/async/AsyncActionsExecutor.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/async/AsyncActionsExecutor.java @@ -44,7 +44,7 @@ public class AsyncActionsExecutor { @Override public void onSuccess(T result) { try { - GWT.log("Execution success for action of type " + getType() + ", category "+getCategory()); +// GWT.log("Execution success for action of type " + getType() + ", category "+getCategory()); this.callback.onSuccess(result); } finally { AsyncActionsExecutor.this.callCompleted(this); From a13df711efd534a41d4a6c1545940d3c173eedf0 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Thu, 6 Jul 2017 16:22:59 +0200 Subject: [PATCH 04/26] removed setting only used for singlerace from multiracesettings --- .../LeaderboardSettingsFactory.java | 14 +------ .../MultiRaceLeaderboardPanelLifecycle.java | 2 - .../MultiRaceLeaderboardSettings.java | 3 +- ...aceLeaderboardSettingsDialogComponent.java | 39 +++++++++++-------- .../MultiRaceLeaderboardPanel.java | 2 +- 5 files changed, 27 insertions(+), 33 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java index ae1662cbf8c..eb9a7bc28ef 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java @@ -1,6 +1,5 @@ package com.sap.sailing.gwt.settings.client.leaderboard; -import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -78,8 +77,7 @@ public class LeaderboardSettingsFactory { Long refreshIntervalInMs = settingsWithDetails.getDelayBetweenAutoAdvancesInMilliseconds(); RaceColumnSelectionStrategies strategy = settingsWithRaceSelection.getActiveRaceColumnSelectionStrategy(); - List namesOfRaceColumnsToShow = copyRaceNamesList(settingsWithRaceSelection.getNamesOfRaceColumnsToShow()); - List namesOfRacesToShow = copyRaceNamesList(settingsWithRaceSelection.getNamesOfRacesToShow()); + List namesOfRaceColumnsToShow = settingsWithRaceSelection.getNamesOfRaceColumnsToShow(); Integer numberOfLastRacesToShow = settingsWithRaceSelection.getNumberOfLastRacesToShow(); boolean showCompetitorSailIdColumn = settingsWithRaceSelection.isShowCompetitorSailIdColumn(); boolean showCompetitorFullNameColumns = settingsWithRaceSelection.isShowCompetitorFullNameColumn(); @@ -88,18 +86,10 @@ public class LeaderboardSettingsFactory { boolean updateUponPlayStateChange = settingsWithRaceSelection.isUpdateUponPlayStateChange(); return new MultiRaceLeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetailsToShow, - namesOfRaceColumnsToShow, namesOfRacesToShow, numberOfLastRacesToShow, refreshIntervalInMs, + namesOfRaceColumnsToShow, numberOfLastRacesToShow, refreshIntervalInMs, nameOfRaceToSort, sortAscending, updateUponPlayStateChange, strategy, /*showAddedScores*/ false, /* showOverallRacesCompleted */ false, showCompetitorSailIdColumn, showCompetitorFullNameColumns, settingsWithRaceSelection.isShowCompetitorNationality()); } - private List copyRaceNamesList(List raceNames) { - List result = null; - if(raceNames != null) { - result = new ArrayList(raceNames); - } - return result; - } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java index 039ea3cbd59..bc41b7f7701 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java @@ -15,7 +15,6 @@ public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycl currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), - defaultLeaderboardSettings.getNamesOfRacesToShow(), currentLeaderboardSettings.getNumberOfLastRacesToShow(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), defaultLeaderboardSettings.getNameOfRaceToSort(), defaultLeaderboardSettings.isSortAscending(), @@ -36,7 +35,6 @@ public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycl currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), - defaultLeaderboardSettings.getNamesOfRacesToShow(), currentLeaderboardSettings.getNumberOfLastRacesToShow(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), defaultLeaderboardSettings.getNameOfRaceToSort(), currentLeaderboardSettings.isSortAscending(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java index 12198c08d5e..49d0a34bc68 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java @@ -38,7 +38,7 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { public MultiRaceLeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, List namesOfRaceColumnsToShow, - List namesOfRacesToShow, Integer numberOfLastRacesToShow, + Integer numberOfLastRacesToShow, Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, boolean sortAscending, boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, @@ -49,7 +49,6 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); - this.namesOfRacesToShow.setValues(namesOfRacesToShow); this.namesOfRaceColumnsToShow.setValues(namesOfRaceColumnsToShow); this.numberOfLastRacesToShow.setValue(numberOfLastRacesToShow); if (namesOfRacesToShow != null && namesOfRaceColumnsToShow != null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java index fadc2fddd7c..88052f04fe4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java @@ -25,7 +25,7 @@ public class MultiRaceLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { MultiRaceLeaderboardSettings initialSettings; - + public MultiRaceLeaderboardSettingsDialogComponent(MultiRaceLeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { super(initialSettings, allRaceColumnNames, stringMessages); @@ -72,7 +72,7 @@ public class MultiRaceLeaderboardSettingsDialogComponent ? numberOfLastRacesToShowBox.getValue() : null; MultiRaceLeaderboardSettings newSettings = new MultiRaceLeaderboardSettings(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, - /* nameOfRacesToShow */null, lastNRacesToShowValue, + lastNRacesToShowValue, 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), null, true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), @@ -83,7 +83,7 @@ public class MultiRaceLeaderboardSettingsDialogComponent SettingsDefaultValuesUtils.keepDefaults(initialSettings, newSettings); return newSettings; } - + private FlowPanel createSelectedRacesPanel(DataEntryDialog dialog) { FlowPanel selectedRacesPanel = new FlowPanel(); selectedRacesPanel.ensureDebugId("RaceSelectionSettingsPanel"); @@ -96,7 +96,7 @@ public class MultiRaceLeaderboardSettingsDialogComponent FlowPanel selectedRacesContent = new FlowPanel(); selectedRacesContent.addStyleName("dialogInnerContent"); selectedRacesPanel.add(selectedRacesContent); - + // Attention: We need to consider that there are regattas with more than 30 races int racesCount = raceAllRaceColumnNames.size(); if (racesCount > 0) { @@ -104,15 +104,17 @@ public class MultiRaceLeaderboardSettingsDialogComponent explicitRaceSelectionContent.ensureDebugId("ExplicitRaceSelectionPanel"); final FlowPanel lastNRacesSelectionContent = new FlowPanel(); lastNRacesSelectionContent.ensureDebugId("MostCurrentRacesSelectionPanel"); - + String radioButtonGroupName = "raceSelectionStrategyGroup"; Label raceSelectionWayLabel = new Label(stringMessages.chooseTheWayYouSelectRaces() + ":"); raceSelectionWayLabel.getElement().getStyle().setPaddingRight(5, Unit.PX); racesSelectionStrategyPanel.add(raceSelectionWayLabel); - explicitRaceColumnSelectionRadioBtn = dialog.createRadioButton(radioButtonGroupName, stringMessages.selectFromAllRaces()); + explicitRaceColumnSelectionRadioBtn = dialog.createRadioButton(radioButtonGroupName, + stringMessages.selectFromAllRaces()); explicitRaceColumnSelectionRadioBtn.ensureDebugId("ExplicitRaceSelectionRadioButton"); racesSelectionStrategyPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); - explicitRaceColumnSelectionRadioBtn.setValue(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT); + explicitRaceColumnSelectionRadioBtn + .setValue(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT); explicitRaceColumnSelectionRadioBtn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { @@ -128,7 +130,7 @@ public class MultiRaceLeaderboardSettingsDialogComponent int rowIndex = 0; int columnIndex = 0; int rowCount = racesCount / maxRacesPerRow; - if(racesCount % maxRacesPerRow != 0) { + if (racesCount % maxRacesPerRow != 0) { rowCount++; } Grid grid = new Grid(rowCount, maxRacesPerRow); @@ -138,18 +140,21 @@ public class MultiRaceLeaderboardSettingsDialogComponent Util.contains(namesOfRaceColumnsToShow, raceColumnName), null); raceColumnCheckboxes.put(raceColumnName, checkbox); grid.setWidget(rowIndex, columnIndex++, checkbox); - if(columnIndex == maxRacesPerRow) { + if (columnIndex == maxRacesPerRow) { rowIndex++; columnIndex = 0; } } explicitRaceSelectionContent.add(grid); - explicitRaceSelectionContent.setVisible(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT); + explicitRaceSelectionContent + .setVisible(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT); selectedRacesContent.add(explicitRaceSelectionContent); - - lastNRacesColumnSelectionRadioBtn = dialog.createRadioButton(radioButtonGroupName, stringMessages.selectANumberOfRaces()); + + lastNRacesColumnSelectionRadioBtn = dialog.createRadioButton(radioButtonGroupName, + stringMessages.selectANumberOfRaces()); lastNRacesColumnSelectionRadioBtn.ensureDebugId("MostCurrentRacesSelectionRadioButton"); - lastNRacesColumnSelectionRadioBtn.setValue(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N); + lastNRacesColumnSelectionRadioBtn + .setValue(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N); lastNRacesColumnSelectionRadioBtn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { @@ -160,7 +165,7 @@ public class MultiRaceLeaderboardSettingsDialogComponent }); racesSelectionStrategyPanel.add(lastNRacesColumnSelectionRadioBtn); dialog.alignAllPanelWidgetsVertically(racesSelectionStrategyPanel, HasVerticalAlignment.ALIGN_MIDDLE); - + // content of 'number of races' selection HorizontalPanel hPanel = new HorizontalPanel(); lastNRacesSelectionContent.add(hPanel); @@ -168,11 +173,13 @@ public class MultiRaceLeaderboardSettingsDialogComponent numberOfLastRacesLabel.getElement().getStyle().setPaddingRight(10, Unit.PX); hPanel.add(numberOfLastRacesLabel); Integer numberOfLastRacesToShow = initialSettings.getNumberOfLastRacesToShow(); - numberOfLastRacesToShowBox = dialog.createIntegerBox(numberOfLastRacesToShow != null ? numberOfLastRacesToShow : racesCount, 3); + numberOfLastRacesToShowBox = dialog + .createIntegerBox(numberOfLastRacesToShow != null ? numberOfLastRacesToShow : racesCount, 3); numberOfLastRacesToShowBox.ensureDebugId("NumberOfMostCurrentRacesIntegerBox"); hPanel.add(numberOfLastRacesToShowBox); dialog.alignAllPanelWidgetsVertically(hPanel, HasVerticalAlignment.ALIGN_MIDDLE); - lastNRacesSelectionContent.setVisible(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N); + lastNRacesSelectionContent + .setVisible(activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.LAST_N); selectedRacesContent.add(lastNRacesSelectionContent); } else { selectedRacesContent.add(new Label(stringMessages.noRacesYet())); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index fcfac8f6ff2..2f6faa51001 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -83,7 +83,7 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel Date: Thu, 6 Jul 2017 16:26:54 +0200 Subject: [PATCH 05/26] further cleanup --- .../MultiRaceLeaderboardSettings.java | 25 ------------------- .../MultiRaceLeaderboardPanel.java | 24 ------------------ 2 files changed, 49 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java index 49d0a34bc68..c5638e0ea1a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java @@ -19,12 +19,6 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { */ protected StringSetSetting namesOfRaceColumnsToShow; - /** - * Only one of {@link #namesOfRaceColumnsToShow} and {@link #namesOfRacesToShow} must be non-null. - * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to EXPLIZIT - */ - protected StringSetSetting namesOfRacesToShow; - /** * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to LAST_N */ @@ -51,9 +45,6 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { this.namesOfRaceColumnsToShow.setValues(namesOfRaceColumnsToShow); this.numberOfLastRacesToShow.setValue(numberOfLastRacesToShow); - if (namesOfRacesToShow != null && namesOfRaceColumnsToShow != null) { - throw new IllegalArgumentException("You can identify races either only by their race or by their column names, not both"); - } } public MultiRaceLeaderboardSettings(Iterable namesOfRaceColumnsToShow) { @@ -77,14 +68,8 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { newSettings.showCompetitorFullNameColumn.setValue(this.isShowCompetitorFullNameColumn()); newSettings.showOverallColumnWithNumberOfRacesCompletedPerCompetitor.setValue(this.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor()); newSettings.isShowCompetitorNationality.setValue(this.isShowCompetitorNationality()); - if(namesOfRaceColumns != null && !namesOfRaceColumns.isEmpty()) { - newSettings.namesOfRacesToShow.setValues(null); - } newSettings.namesOfRaceColumnsToShow.setValues(this.getNamesOfRaceColumnsToShow()); SettingsDefaultValuesUtils.keepDefaults(this, newSettings); - if(namesOfRaceColumns != null && !namesOfRaceColumns.isEmpty()) { - newSettings.namesOfRacesToShow.setDefaultValues(null); - } newSettings.namesOfRaceColumnsToShow.setDefaultValues(namesOfRaceColumns); return newSettings; } @@ -93,7 +78,6 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { protected void addChildSettings() { super.addChildSettings(); namesOfRaceColumnsToShow = new StringSetSetting("namesOfRaceColumnsToShow", this); - namesOfRacesToShow = new StringSetSetting("namesOfRacesToShow", this, null); numberOfLastRacesToShow = new IntegerSetting("numberOfLastRacesToShow", this, null); } @@ -106,15 +90,6 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.EXPLICIT ? (namesOfRaceColumnsToShow.isValuesEmpty() ? null : Util.createList(namesOfRaceColumnsToShow.getValues())) : null; } - /** - * If null, this is to mean that the race columns should not be modified by - * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. Otherwise - * a live collection that reflects the current state of the settings of a leaderboard panel - */ - public List getNamesOfRacesToShow() { - return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.EXPLICIT ? (namesOfRacesToShow.isValuesEmpty() ? null : Util.createList(namesOfRacesToShow.getValues())) : null; - } - /** * If null, this is to mean that the race columns should not be modified by * {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index 2f6faa51001..e892307391e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -8,7 +8,6 @@ import java.util.Map; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.domain.common.dto.CompetitorDTO; -import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; @@ -208,15 +207,6 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel c, RaceColumn lastRaceColumn) { // Toggle or the last race column if that was requested From ebd232ad7835f818df437b75edded7352debe889 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Mon, 10 Jul 2017 09:57:14 +0200 Subject: [PATCH 06/26] cleanup of state entries that are in settings --- .../leaderboard/LeaderboardSettings.java | 23 +------ .../LeaderboardSettingsDialogComponent.java | 4 +- .../LeaderboardSettingsFactory.java | 6 +- .../MultiRaceLeaderboardPanelLifecycle.java | 2 - .../MultiRaceLeaderboardSettings.java | 6 +- ...aceLeaderboardSettingsDialogComponent.java | 7 +- .../SingleRaceLeaderboardSettings.java | 22 +++--- ...aceLeaderboardSettingsDialogComponent.java | 6 +- .../gwt/ui/leaderboard/LeaderboardPanel.java | 12 +--- .../MultiRaceLeaderboardPanel.java | 2 +- .../SingleRaceLeaderboardPanel.java | 69 ++++++++++++------- .../gwt/ui/raceboard/FullAnalysisMode.java | 3 +- .../RaceBoardPerspectiveLifecycle.java | 2 +- .../SingleRaceLeaderboardPanelLifecycle.java | 9 +-- 14 files changed, 73 insertions(+), 100 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java index c80eceb5bd9..38a7a947100 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java @@ -13,7 +13,6 @@ import com.sap.sse.common.settings.generic.BooleanSetting; import com.sap.sse.common.settings.generic.EnumSetSetting; import com.sap.sse.common.settings.generic.EnumSetting; import com.sap.sse.common.settings.generic.LongSetting; -import com.sap.sse.common.settings.generic.StringSetting; /** * Settings for the {@link LeaderboardPanel} component. If you change here, please also visit @@ -42,13 +41,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet protected EnumSetting activeRaceColumnSelectionStrategy; - /** - * An optional sort column; if null, the leaderboard sorting won't be touched when updating the settings. - * Otherwise, the leaderboard will be sorted by the race column (ascending if {@link #sortAscending}, descending otherwise. - */ - protected StringSetting nameOfRaceToSort; - protected BooleanSetting sortAscending; - /** * Shows scores sum'd up for each race column */ @@ -83,9 +75,7 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet overallDetailsToShow = new EnumSetSetting<>("overallDetailsToShow", this, overallDetails, DetailType::valueOf); delayBetweenAutoAdvancesInMilliseconds = new LongSetting("delayBetweenAutoAdvancesInMilliseconds", this, LeaderboardEntryPoint.DEFAULT_REFRESH_INTERVAL_MILLIS); activeRaceColumnSelectionStrategy = new EnumSetting<>("activeRaceColumnSelectionStrategy", this, RaceColumnSelectionStrategies.EXPLICIT, RaceColumnSelectionStrategies::valueOf); - nameOfRaceToSort = new StringSetting("nameOfRaceToSort", this, null); updateUponPlayStateChange = new BooleanSetting("updateUponPlayStateChange", this, true); - sortAscending = new BooleanSetting("sortAscending", this, true); showAddedScores = new BooleanSetting("showAddedScores", this, false); showCompetitorSailIdColumn = new BooleanSetting("showCompetitorSailIdColumn", this, true); showCompetitorFullNameColumn = new BooleanSetting("showCompetitorFullNameColumn", this, true); @@ -100,8 +90,8 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet */ public LeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, - Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, - boolean sortAscending, boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, + Long delayBetweenAutoAdvancesInMilliseconds, + boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { @@ -111,7 +101,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet this.activeRaceColumnSelectionStrategy.setValue(activeRaceColumnSelectionStrategy); this.delayBetweenAutoAdvancesInMilliseconds.setValue(delayBetweenAutoAdvancesInMilliseconds); this.maneuverDetailsToShow.setValues(maneuverDetailsToShow); - this.sortAscending.setValue(sortAscending); this.updateUponPlayStateChange.setValue(updateUponPlayStateChange); this.showAddedScores.setValue(showAddedScores); this.showCompetitorSailIdColumn.setValue(showCompetitorSailIdColumn); @@ -157,14 +146,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet return delayBetweenAutoAdvancesInMilliseconds.getValue(); } - public String getNameOfRaceToSort() { - return nameOfRaceToSort.getValue(); - } - - public boolean isSortAscending() { - return sortAscending.getValue(); - } - /** * If true, an update of the settings will behave like a manual settings update, meaning that * the settings won't automatically be replaced / adjusted when the play state changes. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java index 1cf05314abd..dd992c31789 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java @@ -46,9 +46,9 @@ public abstract class LeaderboardSettingsDialogComponent allRaceColumnNames, StringMessages stringMessages) { + public LeaderboardSettingsDialogComponent(T initialSettings, List allRaceColumnNames, StringMessages stringMessages) { this.initialSettings = initialSettings; this.stringMessages = stringMessages; this.raceAllRaceColumnNames = allRaceColumnNames; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java index eb9a7bc28ef..a33aa773b63 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java @@ -35,7 +35,6 @@ public class LeaderboardSettingsFactory { raceDetailsToShow, defaultSettings.getOverallDetailsToShow(), defaultSettings.isAutoExpandPreSelectedRace(), defaultSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - defaultSettings.getNameOfRaceToSort(), defaultSettings.isSortAscending(), defaultSettings.isUpdateUponPlayStateChange(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), @@ -52,7 +51,6 @@ public class LeaderboardSettingsFactory { settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(), expandPreselectedRace, settings.getDelayBetweenAutoAdvancesInMilliseconds(), - settings.getNameOfRaceToSort(), settings.isSortAscending(), settings.isUpdateUponPlayStateChange(), settings.getActiveRaceColumnSelectionStrategy(), settings.isShowAddedScores(), @@ -81,13 +79,11 @@ public class LeaderboardSettingsFactory { Integer numberOfLastRacesToShow = settingsWithRaceSelection.getNumberOfLastRacesToShow(); boolean showCompetitorSailIdColumn = settingsWithRaceSelection.isShowCompetitorSailIdColumn(); boolean showCompetitorFullNameColumns = settingsWithRaceSelection.isShowCompetitorFullNameColumn(); - String nameOfRaceToSort = settingsWithRaceSelection.getNameOfRaceToSort(); - boolean sortAscending = settingsWithRaceSelection.isSortAscending(); boolean updateUponPlayStateChange = settingsWithRaceSelection.isUpdateUponPlayStateChange(); return new MultiRaceLeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetailsToShow, namesOfRaceColumnsToShow, numberOfLastRacesToShow, refreshIntervalInMs, - nameOfRaceToSort, sortAscending, updateUponPlayStateChange, strategy, /*showAddedScores*/ false, + updateUponPlayStateChange, strategy, /*showAddedScores*/ false, /* showOverallRacesCompleted */ false, showCompetitorSailIdColumn, showCompetitorFullNameColumns, settingsWithRaceSelection.isShowCompetitorNationality()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java index bc41b7f7701..82b0c3a7941 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java @@ -17,7 +17,6 @@ public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycl defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), currentLeaderboardSettings.getNumberOfLastRacesToShow(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - defaultLeaderboardSettings.getNameOfRaceToSort(), defaultLeaderboardSettings.isSortAscending(), currentLeaderboardSettings.isUpdateUponPlayStateChange(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), @@ -37,7 +36,6 @@ public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycl defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), currentLeaderboardSettings.getNumberOfLastRacesToShow(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - defaultLeaderboardSettings.getNameOfRaceToSort(), currentLeaderboardSettings.isSortAscending(), currentLeaderboardSettings.isUpdateUponPlayStateChange(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java index c5638e0ea1a..02daa7f3120 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java @@ -33,13 +33,13 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, List namesOfRaceColumnsToShow, Integer numberOfLastRacesToShow, - Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, boolean sortAscending, + Long delayBetweenAutoAdvancesInMilliseconds, boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, delayBetweenAutoAdvancesInMilliseconds, - nameOfRaceToSort, sortAscending, updateUponPlayStateChange, activeRaceColumnSelectionStrategy, showAddedScores, + updateUponPlayStateChange, activeRaceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); @@ -60,8 +60,6 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { newSettings.activeRaceColumnSelectionStrategy.setValue(this.getActiveRaceColumnSelectionStrategy()); newSettings.delayBetweenAutoAdvancesInMilliseconds.setValue(this.getDelayBetweenAutoAdvancesInMilliseconds()); newSettings.maneuverDetailsToShow.setValues(this.getManeuverDetailsToShow()); - newSettings.nameOfRaceToSort.setValue(this.getNameOfRaceToSort()); - newSettings.sortAscending.setValue(this.isSortAscending()); newSettings.updateUponPlayStateChange.setValue(this.isUpdateUponPlayStateChange()); newSettings.showAddedScores.setValue(this.isShowAddedScores()); newSettings.showCompetitorSailIdColumn.setValue(this.isShowCompetitorSailIdColumn()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java index 88052f04fe4..6500f262119 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java @@ -24,12 +24,9 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog; public class MultiRaceLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { - MultiRaceLeaderboardSettings initialSettings; - public MultiRaceLeaderboardSettingsDialogComponent(MultiRaceLeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { super(initialSettings, allRaceColumnNames, stringMessages); - this.initialSettings = initialSettings; } @Override @@ -73,8 +70,8 @@ public class MultiRaceLeaderboardSettingsDialogComponent MultiRaceLeaderboardSettings newSettings = new MultiRaceLeaderboardSettings(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, lastNRacesToShowValue, - 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), null, - true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, + 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), + /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), /* showOverallColumnWithNumberOfRacesSailedPerCompetitor */ showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox .getValue().booleanValue(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java index 074e0b1d3ce..ddbaffbefd2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java @@ -6,9 +6,9 @@ import com.sap.sailing.domain.common.DetailType; public class SingleRaceLeaderboardSettings extends LeaderboardSettings { private static final long serialVersionUID = 2891220120957743158L; - + protected boolean autoExpandPreSelectedRace = false; - + public SingleRaceLeaderboardSettings() { super(); } @@ -16,20 +16,20 @@ public class SingleRaceLeaderboardSettings extends LeaderboardSettings { public SingleRaceLeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, boolean autoExpandPreSelectedRace, - Long delayBetweenAutoAdvancesInMilliseconds, String nameOfRaceToSort, boolean sortAscending, - boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, - boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, - boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, - boolean isCompetitorNationalityColumnVisible) { - super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, delayBetweenAutoAdvancesInMilliseconds, - nameOfRaceToSort, sortAscending, updateUponPlayStateChange, activeRaceColumnSelectionStrategy, showAddedScores, - showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, + Long delayBetweenAutoAdvancesInMilliseconds, boolean updateUponPlayStateChange, + RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, + boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, + boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { + super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, + delayBetweenAutoAdvancesInMilliseconds, updateUponPlayStateChange, activeRaceColumnSelectionStrategy, + showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); - + this.autoExpandPreSelectedRace = autoExpandPreSelectedRace; } public boolean isAutoExpandPreSelectedRace() { return autoExpandPreSelectedRace; } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java index c89328f61d0..a974aba8818 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java @@ -48,9 +48,9 @@ public class SingleRaceLeaderboardSettingsDialogComponent } Long delayBetweenAutoAdvancesValue = refreshIntervalInSecondsBox.getValue(); SingleRaceLeaderboardSettings newSettings = new SingleRaceLeaderboardSettings(maneuverDetailsToShow, - legDetailsToShow, raceDetailsToShow, overallDetailsToShow, ((SingleRaceLeaderboardSettings) initialSettings).isAutoExpandPreSelectedRace(), - 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), null, - true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, + legDetailsToShow, raceDetailsToShow, overallDetailsToShow, initialSettings.isAutoExpandPreSelectedRace(), + 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), + /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), /* showOverallColumnWithNumberOfRacesSailedPerCompetitor */ showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox .getValue().booleanValue(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index 416f21e5281..0189bf14eb2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -432,7 +432,6 @@ public abstract class LeaderboardPanel extends A this.autoExpandLastRaceColumn = autoExpandLastRaceColumn; this.timer = timer; overallDetailColumnMap = createOverallDetailColumnMap(); - raceNameForDefaultSorting = settings.getNameOfRaceToSort(); if (settings.getLegDetailsToShow() != null) { selectedLegDetails.addAll(settings.getLegDetailsToShow()); @@ -685,7 +684,7 @@ public abstract class LeaderboardPanel extends A } } - private void postApplySettings(final LeaderboardSettings newSettings, + protected void postApplySettings(final LeaderboardSettings newSettings, final List> columnsToExpandAgain) { if (newSettings.getDelayBetweenAutoAdvancesInMilliseconds() != null) { timer.setRefreshInterval(newSettings.getDelayBetweenAutoAdvancesInMilliseconds()); @@ -693,13 +692,6 @@ public abstract class LeaderboardPanel extends A for (ExpandableSortableColumn expandableSortableColumn : columnsToExpandAgain) { expandableSortableColumn.changeExpansionState(/* expand */ true); } - if (newSettings.getNameOfRaceToSort() != null) { - final RaceColumn raceColumnByRaceName = getRaceColumnByRaceName( - newSettings.getNameOfRaceToSort()); - if (raceColumnByRaceName != null) { - getLeaderboardTable().sortColumn(raceColumnByRaceName, /* ascending */true); - } - } } protected abstract void applyRaceSelection(final LeaderboardSettings newSettings); @@ -2074,7 +2066,7 @@ public abstract class LeaderboardPanel extends A return refreshAndSettingsPanel; } - private RaceColumn getRaceColumnByRaceName(String raceName) { + protected RaceColumn getRaceColumnByRaceName(String raceName) { for (int i = 0; i < getLeaderboardTable().getColumnCount(); i++) { Column column = getLeaderboardTable().getColumn(i); if (column instanceof LeaderboardPanel.RaceColumn) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index e892307391e..10a4de68bed 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -83,7 +83,7 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel parent, ComponentContext context, SailingServiceAsync sailingService, - AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, boolean isEmbedded, - RegattaAndRaceIdentifier preSelectedRace, CompetitorSelectionProvider competitorSelectionProvider, - Timer timer, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, - StringMessages stringMessages, boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, - boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, - boolean autoExpandLastRaceColumn, boolean adjustTimerDelay, boolean autoApplyTopNFilter, - boolean showCompetitorFilterStatus, boolean enableSyncScroller) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, - competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, - stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, - optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, - showCompetitorFilterStatus, enableSyncScroller); + private boolean notSortedYet = true; + + public SingleRaceLeaderboardPanel(Component parent, ComponentContext context, + SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, + boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, + CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, + String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails, + CompetitorFilterPanel competitorSearchTextBox, boolean showSelectionCheckbox, + RaceTimesInfoProvider optionalRaceTimesInfoProvider, boolean autoExpandLastRaceColumn, + boolean adjustTimerDelay, boolean autoApplyTopNFilter, boolean showCompetitorFilterStatus, + boolean enableSyncScroller) { + super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, + timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails, + competitorSearchTextBox, showSelectionCheckbox, optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, + adjustTimerDelay, autoApplyTopNFilter, showCompetitorFilterStatus, enableSyncScroller); assert preSelectedRace != null; this.preSelectedRace = preSelectedRace; - + initialize(settings); } @@ -68,13 +71,12 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel> columnsToExpandAgain) { + super.postApplySettings(newSettings, columnsToExpandAgain); + + if(notSortedYet ){ + final RaceColumn raceColumnByRaceName = getRaceColumnByRaceName(preSelectedRace.getRaceName()); + if (raceColumnByRaceName != null) { + getLeaderboardTable().sortColumn(raceColumnByRaceName, /* ascending */true); + notSortedYet=false; + } + } } /** @@ -183,12 +199,13 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel settingsDialog = new SettingsDialog(this, stringMessages); + SettingsDialog settingsDialog = new SettingsDialog( + this, stringMessages); settingsDialog.ensureDebugId("LeaderboardSettingsDialog"); - settingsDialog.show(); + settingsDialog.show(); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/FullAnalysisMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/FullAnalysisMode.java index dcb6d796795..0b8e4500d7a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/FullAnalysisMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/FullAnalysisMode.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettingsFactory; import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettings; import com.sap.sailing.gwt.ui.leaderboard.SingleRaceLeaderboardPanel; @@ -58,7 +57,7 @@ public class FullAnalysisMode extends AbstractRaceBoardMode { @Override public void onSettingsReloaded(SingleRaceLeaderboardSettings patchedSettings) { - LeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); + SingleRaceLeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); leaderboardPanel.updateSettings(settingsToUse); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java index e454823ca1f..f2ed782b618 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java @@ -42,7 +42,7 @@ public class RaceBoardPerspectiveLifecycle extends AbstractPerspectiveLifecycle< this.stringMessages = stringMessages; raceMapLifecycle = new RaceMapLifecycle(stringMessages); windChartLifecycle = new WindChartLifecycle(stringMessages); - leaderboardPanelLifecycle = new SingleRaceLeaderboardPanelLifecycle(raceIdentifier, stringMessages); + leaderboardPanelLifecycle = new SingleRaceLeaderboardPanelLifecycle(stringMessages); multiCompetitorRaceChartLifecycle = new MultiCompetitorRaceChartLifecycle(stringMessages, false); mediaPlayerLifecycle = new MediaPlayerLifecycle(stringMessages); raceTimePanelLifecycle = new RaceTimePanelLifecycle(stringMessages); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java index 28d9f124da5..d3fa4acfbeb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java @@ -5,7 +5,6 @@ import java.util.List; import com.google.gwt.dom.client.Document; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettings; import com.sap.sailing.gwt.settings.client.leaderboard.SingleRaceLeaderboardSettingsDialogComponent; @@ -17,11 +16,9 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc private static final long DEFAULT_REFRESH_INTERVAL = 1000L; private final boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard; - private final RegattaAndRaceIdentifier raceIdentifier; - public SingleRaceLeaderboardPanelLifecycle(RegattaAndRaceIdentifier raceIdentifier, StringMessages stringMessages) { + public SingleRaceLeaderboardPanelLifecycle(StringMessages stringMessages) { super(null, stringMessages); - this.raceIdentifier = raceIdentifier; this.isScreenLargeEnoughToInitiallyDisplayLeaderboard = Document.get().getClientWidth() >= 1024; } @@ -35,7 +32,7 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc raceDetails.add(DetailType.DISPLAY_LEGS); List overallDetails = new ArrayList<>(); SingleRaceLeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); - SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, false, DEFAULT_REFRESH_INTERVAL, raceIdentifier.getRaceName(), defaultSettings.isSortAscending(), defaultSettings.isUpdateUponPlayStateChange(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, false, DEFAULT_REFRESH_INTERVAL, defaultSettings.isUpdateUponPlayStateChange(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), /*showCompetitorSailIdColumn*/ true, /* don't showCompetitorFullNameColumn in case screen is so small that we don't * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard, false); @@ -57,7 +54,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), currentLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - defaultLeaderboardSettings.getNameOfRaceToSort(), currentLeaderboardSettings.isSortAscending(), currentLeaderboardSettings.isUpdateUponPlayStateChange(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), @@ -76,7 +72,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), defaultLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - defaultLeaderboardSettings.getNameOfRaceToSort(), defaultLeaderboardSettings.isSortAscending(), currentLeaderboardSettings.isUpdateUponPlayStateChange(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), From 37c212afbc23f54fc1976d117ee35a663ab292cf Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Mon, 10 Jul 2017 10:13:38 +0200 Subject: [PATCH 07/26] cleaned up updateUponPlayStateChange --- .../client/leaderboard/LeaderboardSettings.java | 13 +------------ .../leaderboard/LeaderboardSettingsFactory.java | 5 +---- .../MultiRaceLeaderboardPanelLifecycle.java | 2 -- .../leaderboard/MultiRaceLeaderboardSettings.java | 5 ++--- ...MultiRaceLeaderboardSettingsDialogComponent.java | 2 +- .../leaderboard/SingleRaceLeaderboardSettings.java | 6 +++--- ...ingleRaceLeaderboardSettingsDialogComponent.java | 2 +- .../ui/leaderboard/MultiRaceLeaderboardPanel.java | 2 +- .../ui/leaderboard/SingleRaceLeaderboardPanel.java | 2 +- .../SingleRaceLeaderboardPanelLifecycle.java | 4 +--- 10 files changed, 12 insertions(+), 31 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java index 38a7a947100..db968bb9374 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java @@ -30,7 +30,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet protected EnumSetSetting raceDetailsToShow; protected EnumSetSetting overallDetailsToShow; protected LongSetting delayBetweenAutoAdvancesInMilliseconds; - protected BooleanSetting updateUponPlayStateChange; protected BooleanSetting isShowCompetitorNationality; /** @@ -75,7 +74,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet overallDetailsToShow = new EnumSetSetting<>("overallDetailsToShow", this, overallDetails, DetailType::valueOf); delayBetweenAutoAdvancesInMilliseconds = new LongSetting("delayBetweenAutoAdvancesInMilliseconds", this, LeaderboardEntryPoint.DEFAULT_REFRESH_INTERVAL_MILLIS); activeRaceColumnSelectionStrategy = new EnumSetting<>("activeRaceColumnSelectionStrategy", this, RaceColumnSelectionStrategies.EXPLICIT, RaceColumnSelectionStrategies::valueOf); - updateUponPlayStateChange = new BooleanSetting("updateUponPlayStateChange", this, true); showAddedScores = new BooleanSetting("showAddedScores", this, false); showCompetitorSailIdColumn = new BooleanSetting("showCompetitorSailIdColumn", this, true); showCompetitorFullNameColumn = new BooleanSetting("showCompetitorFullNameColumn", this, true); @@ -91,7 +89,7 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet public LeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, Long delayBetweenAutoAdvancesInMilliseconds, - boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, + RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { @@ -101,7 +99,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet this.activeRaceColumnSelectionStrategy.setValue(activeRaceColumnSelectionStrategy); this.delayBetweenAutoAdvancesInMilliseconds.setValue(delayBetweenAutoAdvancesInMilliseconds); this.maneuverDetailsToShow.setValues(maneuverDetailsToShow); - this.updateUponPlayStateChange.setValue(updateUponPlayStateChange); this.showAddedScores.setValue(showAddedScores); this.showCompetitorSailIdColumn.setValue(showCompetitorSailIdColumn); this.showCompetitorFullNameColumn.setValue(showCompetitorFullNameColumn); @@ -146,14 +143,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet return delayBetweenAutoAdvancesInMilliseconds.getValue(); } - /** - * If true, an update of the settings will behave like a manual settings update, meaning that - * the settings won't automatically be replaced / adjusted when the play state changes. - */ - public boolean isUpdateUponPlayStateChange() { - return updateUponPlayStateChange.getValue(); - } - public RaceColumnSelectionStrategies getActiveRaceColumnSelectionStrategy() { return activeRaceColumnSelectionStrategy.getValue(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java index a33aa773b63..2018c01dc7b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java @@ -35,7 +35,6 @@ public class LeaderboardSettingsFactory { raceDetailsToShow, defaultSettings.getOverallDetailsToShow(), defaultSettings.isAutoExpandPreSelectedRace(), defaultSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - defaultSettings.isUpdateUponPlayStateChange(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), @@ -51,7 +50,6 @@ public class LeaderboardSettingsFactory { settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(), expandPreselectedRace, settings.getDelayBetweenAutoAdvancesInMilliseconds(), - settings.isUpdateUponPlayStateChange(), settings.getActiveRaceColumnSelectionStrategy(), settings.isShowAddedScores(), settings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), @@ -79,11 +77,10 @@ public class LeaderboardSettingsFactory { Integer numberOfLastRacesToShow = settingsWithRaceSelection.getNumberOfLastRacesToShow(); boolean showCompetitorSailIdColumn = settingsWithRaceSelection.isShowCompetitorSailIdColumn(); boolean showCompetitorFullNameColumns = settingsWithRaceSelection.isShowCompetitorFullNameColumn(); - boolean updateUponPlayStateChange = settingsWithRaceSelection.isUpdateUponPlayStateChange(); return new MultiRaceLeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetailsToShow, namesOfRaceColumnsToShow, numberOfLastRacesToShow, refreshIntervalInMs, - updateUponPlayStateChange, strategy, /*showAddedScores*/ false, + strategy, /*showAddedScores*/ false, /* showOverallRacesCompleted */ false, showCompetitorSailIdColumn, showCompetitorFullNameColumns, settingsWithRaceSelection.isShowCompetitorNationality()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java index 82b0c3a7941..45965c51d3c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java @@ -17,7 +17,6 @@ public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycl defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), currentLeaderboardSettings.getNumberOfLastRacesToShow(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - currentLeaderboardSettings.isUpdateUponPlayStateChange(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), @@ -36,7 +35,6 @@ public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycl defaultLeaderboardSettings.getNamesOfRaceColumnsToShow(), currentLeaderboardSettings.getNumberOfLastRacesToShow(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - currentLeaderboardSettings.isUpdateUponPlayStateChange(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java index 02daa7f3120..1256852d169 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java @@ -34,12 +34,12 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { Collection overallDetailsToShow, List namesOfRaceColumnsToShow, Integer numberOfLastRacesToShow, Long delayBetweenAutoAdvancesInMilliseconds, - boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, + RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, delayBetweenAutoAdvancesInMilliseconds, - updateUponPlayStateChange, activeRaceColumnSelectionStrategy, showAddedScores, + activeRaceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); @@ -60,7 +60,6 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { newSettings.activeRaceColumnSelectionStrategy.setValue(this.getActiveRaceColumnSelectionStrategy()); newSettings.delayBetweenAutoAdvancesInMilliseconds.setValue(this.getDelayBetweenAutoAdvancesInMilliseconds()); newSettings.maneuverDetailsToShow.setValues(this.getManeuverDetailsToShow()); - newSettings.updateUponPlayStateChange.setValue(this.isUpdateUponPlayStateChange()); newSettings.showAddedScores.setValue(this.isShowAddedScores()); newSettings.showCompetitorSailIdColumn.setValue(this.isShowCompetitorSailIdColumn()); newSettings.showCompetitorFullNameColumn.setValue(this.isShowCompetitorFullNameColumn()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java index 6500f262119..0930e2a33a5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java @@ -71,7 +71,7 @@ public class MultiRaceLeaderboardSettingsDialogComponent legDetailsToShow, raceDetailsToShow, overallDetailsToShow, namesOfRaceColumnsToShow, lastNRacesToShowValue, 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), - /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, + activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), /* showOverallColumnWithNumberOfRacesSailedPerCompetitor */ showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox .getValue().booleanValue(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java index ddbaffbefd2..eb3cb59471f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java @@ -16,13 +16,13 @@ public class SingleRaceLeaderboardSettings extends LeaderboardSettings { public SingleRaceLeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, boolean autoExpandPreSelectedRace, - Long delayBetweenAutoAdvancesInMilliseconds, boolean updateUponPlayStateChange, + Long delayBetweenAutoAdvancesInMilliseconds, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, - delayBetweenAutoAdvancesInMilliseconds, updateUponPlayStateChange, activeRaceColumnSelectionStrategy, - showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, + delayBetweenAutoAdvancesInMilliseconds, activeRaceColumnSelectionStrategy, showAddedScores, + showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); this.autoExpandPreSelectedRace = autoExpandPreSelectedRace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java index a974aba8818..512a8f2ff22 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java @@ -50,7 +50,7 @@ public class SingleRaceLeaderboardSettingsDialogComponent SingleRaceLeaderboardSettings newSettings = new SingleRaceLeaderboardSettings(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, initialSettings.isAutoExpandPreSelectedRace(), 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), - /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy, + activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), /* showOverallColumnWithNumberOfRacesSailedPerCompetitor */ showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox .getValue().booleanValue(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index 10a4de68bed..1662b83f2eb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -84,7 +84,7 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel overallDetails = new ArrayList<>(); SingleRaceLeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); - SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, false, DEFAULT_REFRESH_INTERVAL, defaultSettings.isUpdateUponPlayStateChange(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, false, DEFAULT_REFRESH_INTERVAL, defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), /*showCompetitorSailIdColumn*/ true, /* don't showCompetitorFullNameColumn in case screen is so small that we don't * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard, false); @@ -54,7 +54,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), currentLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - currentLeaderboardSettings.isUpdateUponPlayStateChange(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), @@ -72,7 +71,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), defaultLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - currentLeaderboardSettings.isUpdateUponPlayStateChange(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), From 73ab50de9c5c26b9a8f29c8930c88164ff92df5f Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Mon, 10 Jul 2017 11:35:47 +0200 Subject: [PATCH 08/26] changed expandPreSelected race to be configured by Modes directly without settings --- .../LeaderboardSettingsFactory.java | 4 +-- .../SingleRaceLeaderboardSettings.java | 12 +------- ...aceLeaderboardSettingsDialogComponent.java | 2 +- .../gwt/ui/leaderboard/LeaderboardPanel.java | 7 ----- .../MultiRaceLeaderboardPanel.java | 4 --- .../SingleRaceLeaderboardPanel.java | 28 ++++++++----------- .../ui/raceboard/AbstractRaceBoardMode.java | 1 + .../gwt/ui/raceboard/FullAnalysisMode.java | 3 +- .../sailing/gwt/ui/raceboard/PlayerMode.java | 4 +-- .../gwt/ui/raceboard/RaceBoardPanel.java | 1 + .../SingleRaceLeaderboardPanelLifecycle.java | 4 +-- .../gwt/ui/raceboard/StartAnalysisMode.java | 3 +- .../gwt/ui/raceboard/WinningLanesMode.java | 3 +- 13 files changed, 21 insertions(+), 55 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java index 2018c01dc7b..56750555c01 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java @@ -33,7 +33,6 @@ public class LeaderboardSettingsFactory { defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), raceDetailsToShow, defaultSettings.getOverallDetailsToShow(), - defaultSettings.isAutoExpandPreSelectedRace(), defaultSettings.getDelayBetweenAutoAdvancesInMilliseconds(), defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), @@ -43,12 +42,11 @@ public class LeaderboardSettingsFactory { defaultSettings.isShowCompetitorNationality()); } - public SingleRaceLeaderboardSettings createSettingsWithCustomExpandPreselectedRaceState(SingleRaceLeaderboardSettings settings, boolean expandPreselectedRace) { + public SingleRaceLeaderboardSettings createSettingsWithCustomExpandPreselectedRaceState(SingleRaceLeaderboardSettings settings) { return new SingleRaceLeaderboardSettings( settings.getManeuverDetailsToShow(), settings.getLegDetailsToShow(), settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(), - expandPreselectedRace, settings.getDelayBetweenAutoAdvancesInMilliseconds(), settings.getActiveRaceColumnSelectionStrategy(), settings.isShowAddedScores(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java index eb3cb59471f..34b0d7012ba 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java @@ -7,16 +7,13 @@ import com.sap.sailing.domain.common.DetailType; public class SingleRaceLeaderboardSettings extends LeaderboardSettings { private static final long serialVersionUID = 2891220120957743158L; - protected boolean autoExpandPreSelectedRace = false; - public SingleRaceLeaderboardSettings() { super(); } public SingleRaceLeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, - Collection overallDetailsToShow, boolean autoExpandPreSelectedRace, - Long delayBetweenAutoAdvancesInMilliseconds, + Collection overallDetailsToShow, Long delayBetweenAutoAdvancesInMilliseconds, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { @@ -24,12 +21,5 @@ public class SingleRaceLeaderboardSettings extends LeaderboardSettings { delayBetweenAutoAdvancesInMilliseconds, activeRaceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); - - this.autoExpandPreSelectedRace = autoExpandPreSelectedRace; } - - public boolean isAutoExpandPreSelectedRace() { - return autoExpandPreSelectedRace; - } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java index 512a8f2ff22..9a266be37e6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java @@ -48,7 +48,7 @@ public class SingleRaceLeaderboardSettingsDialogComponent } Long delayBetweenAutoAdvancesValue = refreshIntervalInSecondsBox.getValue(); SingleRaceLeaderboardSettings newSettings = new SingleRaceLeaderboardSettings(maneuverDetailsToShow, - legDetailsToShow, raceDetailsToShow, overallDetailsToShow, initialSettings.isAutoExpandPreSelectedRace(), + legDetailsToShow, raceDetailsToShow, overallDetailsToShow, 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index 0189bf14eb2..5deb85f904f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -661,13 +661,8 @@ public abstract class LeaderboardPanel extends A // avoid expansion during updateLeaderboard(...); will expand // later // if it was expanded before - updateExpansionStates(null); applyRaceSelection(newSettings); - updateLeaderboard(leaderboard); - updateExpansionStates(newSettings); - - postApplySettings(newSettings, columnsToExpandAgain); } finally { removeBusyTask(); @@ -728,8 +723,6 @@ public abstract class LeaderboardPanel extends A return oldShallAddOverallDetails; } - protected abstract void updateExpansionStates(LeaderboardSettings newSettings); - protected abstract void setDefaultRaceColumnSelection(LeaderboardSettings settings); private void setValuesWithReferenceOrder(Collection valuesToSet, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index 1662b83f2eb..de8834ecdaf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -143,10 +143,6 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanelleaderboard. These are all {@link AbstractLeaderboardDTO#rows * rows} in case {@link #preSelectedRace} is null, or only the rows of the competitors who scored in diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java index 7889c7e43b1..c56509eb78a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java @@ -72,8 +72,7 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel> columnsToExpandAgain) { super.postApplySettings(newSettings, columnsToExpandAgain); - if(notSortedYet ){ + if (notSortedYet) { final RaceColumn raceColumnByRaceName = getRaceColumnByRaceName(preSelectedRace.getRaceName()); if (raceColumnByRaceName != null) { getLeaderboardTable().sortColumn(raceColumnByRaceName, /* ascending */true); - notSortedYet=false; + notSortedYet = false; } } } @@ -211,4 +197,12 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel overallDetails = new ArrayList<>(); SingleRaceLeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); - SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, false, DEFAULT_REFRESH_INTERVAL, defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, DEFAULT_REFRESH_INTERVAL, defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), /*showCompetitorSailIdColumn*/ true, /* don't showCompetitorFullNameColumn in case screen is so small that we don't * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard, false); @@ -52,7 +52,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc SingleRaceLeaderboardSettings contextSpecificLeaderboardSettings = new SingleRaceLeaderboardSettings( currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), - currentLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), @@ -69,7 +68,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc SingleRaceLeaderboardSettings globalLeaderboardSettings = new SingleRaceLeaderboardSettings( currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), - defaultLeaderboardSettings.isAutoExpandPreSelectedRace(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/StartAnalysisMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/StartAnalysisMode.java index d366c52149d..897e44846f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/StartAnalysisMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/StartAnalysisMode.java @@ -194,8 +194,7 @@ public class StartAnalysisMode extends RaceBoardModeWithPerRaceCompetitors { @Override public void onSettingsReloaded(SingleRaceLeaderboardSettings patchedSettings) { - LeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); - leaderboardPanel.updateSettings(settingsToUse); + leaderboardPanel.updateSettings(patchedSettings); } }); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/WinningLanesMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/WinningLanesMode.java index e52b73ad50e..86efd7239e0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/WinningLanesMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/WinningLanesMode.java @@ -52,8 +52,7 @@ public class WinningLanesMode extends RaceBoardModeWithPerRaceCompetitors { @Override public void onSettingsReloaded(SingleRaceLeaderboardSettings patchedSettings) { - SingleRaceLeaderboardSettings settingsToUse = LeaderboardSettingsFactory.getInstance().createSettingsWithCustomExpandPreselectedRaceState(patchedSettings, true); - leaderboardPanel.updateSettings(settingsToUse); + leaderboardPanel.updateSettings(patchedSettings); } }); From debd06cc2cade3044f8bc9c0ad973f4ffe1f2c6f Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Mon, 10 Jul 2017 13:48:53 +0200 Subject: [PATCH 09/26] removed now unused parameter --- .../gwt/ui/raceboard/RaceBoardEntryPoint.java | 2 +- .../raceboard/RaceBoardPerspectiveLifecycle.java | 15 +++------------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java index 842239471cb..f9c9394f744 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java @@ -103,7 +103,7 @@ public class RaceBoardEntryPoint extends AbstractSailingEntryPoint { final StoredSettingsLocation storageDefinition = StoredSettingsLocationFactory .createStoredSettingsLocatorForRaceBoard(raceboardContextDefinition, finalMode != null ? finalMode.name() : null); - final RaceBoardPerspectiveLifecycle lifeCycle = new RaceBoardPerspectiveLifecycle(raceboardData.getRace().getRaceIdentifier(), StringMessages.INSTANCE); + final RaceBoardPerspectiveLifecycle lifeCycle = new RaceBoardPerspectiveLifecycle(StringMessages.INSTANCE); RaceBoardComponentContext componentContext = new RaceBoardComponentContext(lifeCycle, getUserService(), storageDefinition); componentContext.getInitialSettings(new DefaultOnSettingsLoadedCallback>() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java index f2ed782b618..1c034fcc524 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPerspectiveLifecycle.java @@ -1,6 +1,5 @@ package com.sap.sailing.gwt.ui.raceboard; -import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.gwt.settings.client.raceboard.RaceBoardPerspectiveOwnSettings; import com.sap.sailing.gwt.ui.client.RaceTimePanelLifecycle; @@ -26,19 +25,11 @@ public class RaceBoardPerspectiveLifecycle extends AbstractPerspectiveLifecycle< public static final String ID = "rb"; //constructor used by Standalone RaceBoard - public RaceBoardPerspectiveLifecycle(RegattaAndRaceIdentifier raceIdentifier, StringMessages stringMessages) { - this(raceIdentifier, null, stringMessages); + public RaceBoardPerspectiveLifecycle(StringMessages stringMessages) { + this(null, stringMessages); } - - //constructor used by AutoPlay raceBoard + public RaceBoardPerspectiveLifecycle(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { - this(null, leaderboard, stringMessages); - } - - private RaceBoardPerspectiveLifecycle(RegattaAndRaceIdentifier raceIdentifier, AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { - if(raceIdentifier == null){ - throw new IllegalStateException("Started ReaceBoardPerspective without any raceidentifier"); - } this.stringMessages = stringMessages; raceMapLifecycle = new RaceMapLifecycle(stringMessages); windChartLifecycle = new WindChartLifecycle(stringMessages); From 9e9061115fc23a0195dddf7362c2f565088abe9b Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Tue, 11 Jul 2017 13:50:54 +0200 Subject: [PATCH 10/26] fixed bug with modes in singlerace case --- .../gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java index c56509eb78a..a8ec0c08ac2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java @@ -198,10 +198,6 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel Date: Wed, 12 Jul 2017 16:19:30 +0200 Subject: [PATCH 11/26] Bug 3851: activeRaceColumnSelectionStrategy is only a setting for multi race column Leaderboard --- .../leaderboard/LeaderboardSettings.java | 16 ------------ .../LeaderboardSettingsDialogComponent.java | 25 ------------------ .../LeaderboardSettingsFactory.java | 3 --- .../MultiRaceLeaderboardSettings.java | 12 +++++++-- ...aceLeaderboardSettingsDialogComponent.java | 26 ++++++++++++++++++- .../RaceColumnSelectionStrategies.java | 9 +++++++ .../SingleRaceLeaderboardSettings.java | 4 +-- ...aceLeaderboardSettingsDialogComponent.java | 20 +++++++++++++- .../ExplicitRaceColumnSelection.java | 2 +- .../LastNRacesColumnSelection.java | 2 +- .../gwt/ui/leaderboard/LeaderboardPanel.java | 2 +- .../ui/leaderboard/RaceColumnSelection.java | 2 +- .../SingleRaceLeaderboardPanel.java | 2 +- .../SingleRaceLeaderboardPanelLifecycle.java | 4 +-- 14 files changed, 71 insertions(+), 58 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/RaceColumnSelectionStrategies.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java index db968bb9374..07db3b3e736 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettings.java @@ -11,7 +11,6 @@ import com.sap.sse.common.Util; import com.sap.sse.common.settings.generic.AbstractGenericSerializableSettings; import com.sap.sse.common.settings.generic.BooleanSetting; import com.sap.sse.common.settings.generic.EnumSetSetting; -import com.sap.sse.common.settings.generic.EnumSetting; import com.sap.sse.common.settings.generic.LongSetting; /** @@ -32,14 +31,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet protected LongSetting delayBetweenAutoAdvancesInMilliseconds; protected BooleanSetting isShowCompetitorNationality; - /** - * There are two ways to select race columns. - * Either you select races from the list of all races or you select the last N races. - */ - public static enum RaceColumnSelectionStrategies { EXPLICIT, LAST_N; } - - protected EnumSetting activeRaceColumnSelectionStrategy; - /** * Shows scores sum'd up for each race column */ @@ -73,7 +64,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet overallDetails.add(DetailType.REGATTA_RANK); overallDetailsToShow = new EnumSetSetting<>("overallDetailsToShow", this, overallDetails, DetailType::valueOf); delayBetweenAutoAdvancesInMilliseconds = new LongSetting("delayBetweenAutoAdvancesInMilliseconds", this, LeaderboardEntryPoint.DEFAULT_REFRESH_INTERVAL_MILLIS); - activeRaceColumnSelectionStrategy = new EnumSetting<>("activeRaceColumnSelectionStrategy", this, RaceColumnSelectionStrategies.EXPLICIT, RaceColumnSelectionStrategies::valueOf); showAddedScores = new BooleanSetting("showAddedScores", this, false); showCompetitorSailIdColumn = new BooleanSetting("showCompetitorSailIdColumn", this, true); showCompetitorFullNameColumn = new BooleanSetting("showCompetitorFullNameColumn", this, true); @@ -89,14 +79,12 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet public LeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, Long delayBetweenAutoAdvancesInMilliseconds, - RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { this.legDetailsToShow.setValues(legDetailsToShow); this.raceDetailsToShow.setValues(raceDetailsToShow); this.overallDetailsToShow.setValues(overallDetailsToShow); - this.activeRaceColumnSelectionStrategy.setValue(activeRaceColumnSelectionStrategy); this.delayBetweenAutoAdvancesInMilliseconds.setValue(delayBetweenAutoAdvancesInMilliseconds); this.maneuverDetailsToShow.setValues(maneuverDetailsToShow); this.showAddedScores.setValue(showAddedScores); @@ -143,10 +131,6 @@ public abstract class LeaderboardSettings extends AbstractGenericSerializableSet return delayBetweenAutoAdvancesInMilliseconds.getValue(); } - public RaceColumnSelectionStrategies getActiveRaceColumnSelectionStrategy() { - return activeRaceColumnSelectionStrategy.getValue(); - } - public boolean isShowAddedScores() { return showAddedScores.getValue(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java index dd992c31789..eb6c6d556f9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java @@ -14,7 +14,6 @@ import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.LongBox; import com.google.gwt.user.client.ui.RadioButton; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; import com.sap.sailing.gwt.ui.client.DebugIdHelper; import com.sap.sailing.gwt.ui.client.DetailTypeFormatter; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -24,7 +23,6 @@ import com.sap.sailing.gwt.ui.leaderboard.LegColumn; import com.sap.sailing.gwt.ui.leaderboard.ManeuverCountRaceColumn; import com.sap.sse.gwt.client.controls.IntegerBox; import com.sap.sse.gwt.client.dialog.DataEntryDialog; -import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; public abstract class LeaderboardSettingsDialogComponent implements SettingsDialogComponent { @@ -36,7 +34,6 @@ public abstract class LeaderboardSettingsDialogComponent overallDetailCheckboxes; protected final StringMessages stringMessages; protected LongBox refreshIntervalInSecondsBox; - protected RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy; protected RadioButton explicitRaceColumnSelectionRadioBtn; protected RadioButton lastNRacesColumnSelectionRadioBtn; @@ -52,7 +49,6 @@ public abstract class LeaderboardSettingsDialogComponent(); raceColumnCheckboxes = new LinkedHashMap<>(); @@ -239,27 +235,6 @@ public abstract class LeaderboardSettingsDialogComponent getValidator() { - return new Validator() { - @Override - public String getErrorMessage(T valueToValidate) { - final String result; - if (valueToValidate.getLegDetailsToShow().isEmpty()) { - result = stringMessages.selectAtLeastOneLegDetail(); - } else if (valueToValidate.getDelayBetweenAutoAdvancesInMilliseconds() < 1000) { - result = stringMessages.chooseUpdateIntervalOfAtLeastOneSecond(); - } else if (valueToValidate.getActiveRaceColumnSelectionStrategy() == RaceColumnSelectionStrategies.LAST_N - && (numberOfLastRacesToShowBox.getValue() == null || numberOfLastRacesToShowBox.getValue() < 0)) { - result = stringMessages.numberOfRacesMustBeNonNegativeNumber(); - } else { - result = null; - } - return result; - } - }; - } - @Override public FocusWidget getFocusWidget() { final FocusWidget result; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java index 56750555c01..e6cb29a277e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsFactory.java @@ -4,7 +4,6 @@ import java.util.Collection; import java.util.List; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; import com.sap.sse.common.settings.generic.support.SettingsUtil; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; @@ -34,7 +33,6 @@ public class LeaderboardSettingsFactory { defaultSettings.getLegDetailsToShow(), raceDetailsToShow, defaultSettings.getOverallDetailsToShow(), defaultSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), defaultSettings.isShowCompetitorSailIdColumn(), @@ -48,7 +46,6 @@ public class LeaderboardSettingsFactory { settings.getLegDetailsToShow(), settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(), settings.getDelayBetweenAutoAdvancesInMilliseconds(), - settings.getActiveRaceColumnSelectionStrategy(), settings.isShowAddedScores(), settings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), settings.isShowCompetitorSailIdColumn(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java index 1256852d169..57ef748384e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettings.java @@ -6,6 +6,7 @@ import java.util.List; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sse.common.Util; +import com.sap.sse.common.settings.generic.EnumSetting; import com.sap.sse.common.settings.generic.IntegerSetting; import com.sap.sse.common.settings.generic.StringSetSetting; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; @@ -23,6 +24,8 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { * Only valid when the {@link #activeRaceColumnSelectionStrategy} is set to LAST_N */ protected IntegerSetting numberOfLastRacesToShow; + + protected EnumSetting activeRaceColumnSelectionStrategy; public MultiRaceLeaderboardSettings() { @@ -39,12 +42,12 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, delayBetweenAutoAdvancesInMilliseconds, - activeRaceColumnSelectionStrategy, showAddedScores, - showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, + showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); this.namesOfRaceColumnsToShow.setValues(namesOfRaceColumnsToShow); this.numberOfLastRacesToShow.setValue(numberOfLastRacesToShow); + this.activeRaceColumnSelectionStrategy.setValue(activeRaceColumnSelectionStrategy); } public MultiRaceLeaderboardSettings(Iterable namesOfRaceColumnsToShow) { @@ -76,6 +79,7 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { super.addChildSettings(); namesOfRaceColumnsToShow = new StringSetSetting("namesOfRaceColumnsToShow", this); numberOfLastRacesToShow = new IntegerSetting("numberOfLastRacesToShow", this, null); + activeRaceColumnSelectionStrategy = new EnumSetting<>("activeRaceColumnSelectionStrategy", this, RaceColumnSelectionStrategies.EXPLICIT, RaceColumnSelectionStrategies::valueOf); } /** @@ -95,4 +99,8 @@ public class MultiRaceLeaderboardSettings extends LeaderboardSettings { return activeRaceColumnSelectionStrategy.getValue() == RaceColumnSelectionStrategies.LAST_N ? numberOfLastRacesToShow.getValue() : null; } + public RaceColumnSelectionStrategies getActiveRaceColumnSelectionStrategy() { + return activeRaceColumnSelectionStrategy.getValue(); + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java index 0930e2a33a5..2ac6e2d3272 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java @@ -15,18 +15,21 @@ import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.common.Util; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; import com.sap.sse.gwt.client.dialog.DataEntryDialog; +import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; public class MultiRaceLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { + + protected RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy; public MultiRaceLeaderboardSettingsDialogComponent(MultiRaceLeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { super(initialSettings, allRaceColumnNames, stringMessages); + this.activeRaceColumnSelectionStrategy = initialSettings.getActiveRaceColumnSelectionStrategy(); } @Override @@ -197,4 +200,25 @@ public class MultiRaceLeaderboardSettingsDialogComponent dialogPanel.add(createTimingDetailsPanel(dialog)); return dialogPanel; } + + @Override + public Validator getValidator() { + return new Validator() { + @Override + public String getErrorMessage(MultiRaceLeaderboardSettings valueToValidate) { + final String result; + if (valueToValidate.getLegDetailsToShow().isEmpty()) { + result = stringMessages.selectAtLeastOneLegDetail(); + } else if (valueToValidate.getDelayBetweenAutoAdvancesInMilliseconds() < 1000) { + result = stringMessages.chooseUpdateIntervalOfAtLeastOneSecond(); + } else if (valueToValidate.getActiveRaceColumnSelectionStrategy() == RaceColumnSelectionStrategies.LAST_N + && (numberOfLastRacesToShowBox.getValue() == null || numberOfLastRacesToShowBox.getValue() < 0)) { + result = stringMessages.numberOfRacesMustBeNonNegativeNumber(); + } else { + result = null; + } + return result; + } + }; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/RaceColumnSelectionStrategies.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/RaceColumnSelectionStrategies.java new file mode 100644 index 00000000000..d85a5469f5c --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/RaceColumnSelectionStrategies.java @@ -0,0 +1,9 @@ +package com.sap.sailing.gwt.settings.client.leaderboard; + +/** + * There are two ways to select race columns. + * Either you select races from the list of all races or you select the last N races. + */ +public enum RaceColumnSelectionStrategies { + EXPLICIT, LAST_N; +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java index 34b0d7012ba..b4979d0b02d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettings.java @@ -14,11 +14,11 @@ public class SingleRaceLeaderboardSettings extends LeaderboardSettings { public SingleRaceLeaderboardSettings(Collection maneuverDetailsToShow, Collection legDetailsToShow, Collection raceDetailsToShow, Collection overallDetailsToShow, Long delayBetweenAutoAdvancesInMilliseconds, - RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showAddedScores, + boolean showAddedScores, boolean showOverallColumnWithNumberOfRacesCompletedPerCompetitor, boolean showCompetitorSailIdColumn, boolean showCompetitorFullNameColumn, boolean isCompetitorNationalityColumnVisible) { super(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, - delayBetweenAutoAdvancesInMilliseconds, activeRaceColumnSelectionStrategy, showAddedScores, + delayBetweenAutoAdvancesInMilliseconds, showAddedScores, showOverallColumnWithNumberOfRacesCompletedPerCompetitor, showCompetitorSailIdColumn, showCompetitorFullNameColumn, isCompetitorNationalityColumnVisible); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java index 9a266be37e6..a96e8b58d15 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java @@ -11,6 +11,7 @@ import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.common.settings.util.SettingsDefaultValuesUtils; import com.sap.sse.gwt.client.dialog.DataEntryDialog; +import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; public class SingleRaceLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { @@ -50,7 +51,6 @@ public class SingleRaceLeaderboardSettingsDialogComponent SingleRaceLeaderboardSettings newSettings = new SingleRaceLeaderboardSettings(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, overallDetailsToShow, 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), - activeRaceColumnSelectionStrategy, /* showAddedScores */ showAddedScoresCheckBox.getValue().booleanValue(), /* showOverallColumnWithNumberOfRacesSailedPerCompetitor */ showOverallColumnWithNumberOfRacesSailedPerCompetitorCheckBox .getValue().booleanValue(), @@ -72,4 +72,22 @@ public class SingleRaceLeaderboardSettingsDialogComponent dialogPanel.add(createTimingDetailsPanel(dialog)); return dialogPanel; } + + @Override + public Validator getValidator() { + return new Validator() { + @Override + public String getErrorMessage(SingleRaceLeaderboardSettings valueToValidate) { + final String result; + if (valueToValidate.getLegDetailsToShow().isEmpty()) { + result = stringMessages.selectAtLeastOneLegDetail(); + } else if (valueToValidate.getDelayBetweenAutoAdvancesInMilliseconds() < 1000) { + result = stringMessages.chooseUpdateIntervalOfAtLeastOneSecond(); + } else { + result = null; + } + return result; + } + }; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExplicitRaceColumnSelection.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExplicitRaceColumnSelection.java index c50b1165870..1759eaee97c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExplicitRaceColumnSelection.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExplicitRaceColumnSelection.java @@ -7,7 +7,7 @@ import java.util.Map; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; +import com.sap.sailing.gwt.settings.client.leaderboard.RaceColumnSelectionStrategies; /** * An explicit selection of race columns. Requests to add to or clear the selection are respected. If an updated version diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LastNRacesColumnSelection.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LastNRacesColumnSelection.java index be4ad9ac704..20b453b9efd 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LastNRacesColumnSelection.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LastNRacesColumnSelection.java @@ -17,7 +17,7 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardEntryDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; +import com.sap.sailing.gwt.settings.client.leaderboard.RaceColumnSelectionStrategies; import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider; import com.sap.sailing.gwt.ui.client.RaceTimesInfoProviderListener; import com.sap.sailing.gwt.ui.shared.RaceTimesInfoDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index 5deb85f904f..dc2a7a165bf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -81,7 +81,7 @@ import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.impl.InvertibleComparatorAdapter; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardPanelLifecycle; import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; +import com.sap.sailing.gwt.settings.client.leaderboard.RaceColumnSelectionStrategies; import com.sap.sailing.gwt.ui.actions.GetLeaderboardByNameAction; import com.sap.sailing.gwt.ui.client.Collator; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/RaceColumnSelection.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/RaceColumnSelection.java index 256f387d80f..02783a39a2a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/RaceColumnSelection.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/RaceColumnSelection.java @@ -4,7 +4,7 @@ import java.util.Set; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings.RaceColumnSelectionStrategies; +import com.sap.sailing.gwt.settings.client.leaderboard.RaceColumnSelectionStrategies; /** * Represents a set of race columns that are currently to be shown in a leaderboard. Implementations may, e.g., diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java index a8ec0c08ac2..9796d5059cc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java @@ -73,7 +73,7 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel overallDetails = new ArrayList<>(); SingleRaceLeaderboardSettings defaultSettings = new SingleRaceLeaderboardSettings(); - SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, DEFAULT_REFRESH_INTERVAL, defaultSettings.getActiveRaceColumnSelectionStrategy(), defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), + SingleRaceLeaderboardSettings settings = new SingleRaceLeaderboardSettings(defaultSettings.getManeuverDetailsToShow(), defaultSettings.getLegDetailsToShow(), defaultSettings.getRaceDetailsToShow(), overallDetails, DEFAULT_REFRESH_INTERVAL, defaultSettings.isShowAddedScores(), defaultSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), /*showCompetitorSailIdColumn*/ true, /* don't showCompetitorFullNameColumn in case screen is so small that we don't * even display the leaderboard initially */ isScreenLargeEnoughToInitiallyDisplayLeaderboard, false); @@ -53,7 +53,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), currentLeaderboardSettings.isShowCompetitorSailIdColumn(), @@ -69,7 +68,6 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.getManeuverDetailsToShow(), currentLeaderboardSettings.getLegDetailsToShow(), currentLeaderboardSettings.getRaceDetailsToShow(), currentLeaderboardSettings.getOverallDetailsToShow(), currentLeaderboardSettings.getDelayBetweenAutoAdvancesInMilliseconds(), - currentLeaderboardSettings.getActiveRaceColumnSelectionStrategy(), currentLeaderboardSettings.isShowAddedScores(), currentLeaderboardSettings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(), currentLeaderboardSettings.isShowCompetitorSailIdColumn(), From 834317f2bf032cb2bc82979137832342a8d421ab Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 19 Jul 2017 13:26:43 +0200 Subject: [PATCH 12/26] Bug 3851: Added JavaDocs and release notes --- .../places/whatsnew/resources/SailingAnalyticsNotes.html | 3 +++ .../sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java | 4 ++++ .../gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html index e029d82e5a4..bdedb9ad1d6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html @@ -11,6 +11,9 @@ in the Mark Position Editor. It will require removing and re-tracking the race to make the removal take effect. +
  • In /gwt/RaceBoard.html it isn't possible anymore to select other races to be shown in the embedded leaderboard. + This possibility caused several problems in the past. The leaderboard will now always stick to the single race for which the raceboard was opened. +
  • June 2017
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index de8834ecdaf..f8c1537c12c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -33,6 +33,10 @@ import com.sap.sse.gwt.client.shared.components.SettingsDialog; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; import com.sap.sse.gwt.client.shared.settings.ComponentContext; +/** + * This type of {@link LeaderboardPanel} shows a customizable set of leaderboard columns. In case of fleet racing it's + * not possible to only show a physical race. + */ public class MultiRaceLeaderboardPanel extends LeaderboardPanel { public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java index 9796d5059cc..2789ad976c1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java @@ -33,6 +33,10 @@ import com.sap.sse.gwt.client.shared.components.SettingsDialog; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; import com.sap.sse.gwt.client.shared.settings.ComponentContext; +/** + * This type of {@link LeaderboardPanel} shows a single race. When the leaderboard uses fleet racing, this will cause + * only those competitors to be shown that are part of the specific race. + */ public class SingleRaceLeaderboardPanel extends LeaderboardPanel { private boolean autoExpandPreSelectedRace; From fb95d681c175d1d409adf7cd30564fe4aa0d3649 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Wed, 19 Jul 2017 15:27:18 +0000 Subject: [PATCH 13/26] Translation delivery: commit by SLS (albert.kwiatkowski@sap.com) Change-Id: I4aef12a0c7dc21878f3e5eb17442d21d996ed62a --- .../ui/client/StringMessages_es.properties | 54 +- .../ui/client/StringMessages_fr.properties | 624 ++++++++++-------- .../ui/client/StringMessages_ja.properties | 54 +- .../ui/client/StringMessages_pt.properties | 56 +- .../ui/client/StringMessages_ru.properties | 54 +- .../ui/client/StringMessages_zh.properties | 54 +- 6 files changed, 604 insertions(+), 292 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties index 96cd41167f3..27f89d2895b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties @@ -1540,7 +1540,7 @@ theDeletionOfThisFix=La supresión de esta fijación no es posible actualmente. loadingMarkFixes=Cargando fijaciones de marca… fixSuccessfullyAdded=Fijación añadida con éxito. fixPositionSuccessfullyEdited=Posición de fijación tratada con éxito. -fixSuccessfullyRemoved=Fijación eliminada con éxito. +fixSuccessfullyRemoved=Fijación eliminada con éxito. Elimine la carrera e inicie de nuevo su rastreo para que la eliminación surta efecto. dragToChangePosition=Arrastrar para modificar posición\nClic con el botón derecho para ver menú para borrar moveFix=Desplazar fijación manage2SailEvent=Evento de Manage2Sail @@ -1789,3 +1789,55 @@ unknownLeaderboardType=Tipo de tabla de clasificación {0} desconocido selectCompetitorsToEliminate=Seleccionar competidores a eliminar trackedRaceAlreadyLinked=La carrera ya se ha vinculado a una columna de la carrera. ¿Desea realmente modificar el enlace? reallyRemoveSeries=¿Desea realmente eliminar la serie "{0}"? Nota: todos los logs de las columnas de carrera anexas también se eliminarán de forma permanente. +settingsId=ID de opciones +documentSettingsId=ID de opciones de documento +settingsForId=Opciones para ID ''{0}'' +userProfileSettingsTabDescription=Las opciones del usuario se generan mediante los diálogos de opciones que se encuentran en varios puntos de la página. Esta vista muestra todas sus opciones agrupadas de una manera técnica para los usuarios expertos. Tenga en cuenta que las entradas eliminadas no se pueden restablecer, por lo que tenga precaución al utilizarlas. +resetToDefault=Reinicializar a valores por defecto +resetToDefaultInProgress=Reinicializando... +settingsRemoved=Opciones por defecto restablecidas +settingsRemovedError=No se han podido restablecer las opciones por defecto +requiresRegattaRaceAndLeaderboard=Esta página requiere un nombre de regata, un nombre de carrera y un nombre de tabla de clasificación válidos. +couldNotFindRaceInRegatte=No se ha podido obtener la carrera con el nombre {0} para la regata con el nombre {1} +algorithmTimeOutText=fuera de límites +mixedLegText=viento ambiguo +pathCanvasOverlayTitle=Ruta a {0} puntos. {1} millas naúticas en {2} +windSpeedInKnots=Velocidad del viento en nudos +activeFilters=Activar filtro(s): {0} +errorLoadingRegattasForLeaderboardGroup=Error al intentar cargar las regatas correspondientes para el grupo de tablas de clasificación {0}: {1} +errorLoadingLeaderBoardGroup=Error al intentar cargar el grupo de tablas de clasificación {0}: {1} +errorLoadingLeaderBoardGroups=Error al intentar obtener los datos: {0} +errorServletCall=Llamada Servlet a ServicioSimulador fallida\n {0} +errorReceivingWindPattern=Error al restablecer los patrones de viento {0} +errorLoadingBoatClasses=Error al inicializar las clases de embarcación\r\n {0} +errorLoadingLegInformation=Error al leer la información sobre los tramos\r\n {0} +errorLoadingRaceNames=Error al leer la información sobre las carreras\r\n {0} +errorLoadingCompetitors=Error al leer la información sobre el competidor\r\n {0} +errorLoadingTotalTime=Error al leer el tiempo total\r\n {0} +errorUpdatingCarriedPoints=Error al intentar actualizar el valor de transporte para el competidor {0} en la tabla de clasificación {1}: {2} \nEs posible que tenga que refrescar la vista. +errorUpdatingLeaderboardScore=Error al intentar actualizar la corrección de puntuación para el competidor {0} en la tabla de clasificación {1} para la carrera {2} : {3} \nEs posible que tenga que refrescar la vista. +errorUpdatingLeaderboardScoreCorrection=Error al intentar actualizar la corrección de puntuación para: {0} \nEs posible que tenga que refrescar la vista. +errorUpdatingMaxPointsReason=Error al intentar actualizar la razón de puntos máximos para el competidor {0} en la tabla de clasificación {1} : {2} \nEs posible que tenga que refrescar la vista. +errorUpdatingDisplayNames=Error al intentar actualizar el nombre de visualización para el competidor {0} en la tabla de clasificación {1}: {2} \nEs posible que tenga que refrescar la vista. +reportError=Error al grabar la información de la corrección de puntuación: {0} +errorGettingScoreCorrectionProvider=Error al obtener los proveedores de la corrección de puntuación: {0} +errorTryingToUnsupressCompetitor=Error al intentar anular la eliminación del competidor {0} +errorLoadingReducedDimensionsMapedByLevel=Error al obtener las dimensiones de la cadena de recuperación del servidor: {0} +errorFetchingDimensionData=Error al obtener los valores de dimensión de {0} : {1} +errorFetchingStatistics=Error al obtener las estadísticas disponibles desde el servidor: {0} +errorFetchingAggregators=Error al obtener los agregadores disponibles desde el servidor: {0} +errorLoadingDataRetrieverChainDefinitions=Error al recuperar las DataRetrieverChainDefinitions disponibles: {0} +errorFetchingComponentsChangedTimepoint=Error al obtener la fecha modificada de los componentes a partir del servidor: {0} +errorRunningQuery=Error al ejecutar la consulta: {0} +errorReadingWindFixes=Error al leer las correcciones de viento {0} +errorAddingWindFixForRace=Error al añadir una corrección de viento para la carrera {0}: {1} +errorSettingStartTime=Error al fijar la fecha de inicio recibida: {0} +errorStoppingRaceTracking=Excepción al intentar parar el rastreo de las carreras {0}: {1} +errorRemovingRace=Excepción al intentar eliminar las carreras {0}: {1} +errorLoadingRegattas=Error al intentar cargar regatas {0}: {1} +errorUpdatingRegatta=Error al intentar actualizar regata {0} : {1} +errorLoadingRaceLog=No se ha podido indicar rastreo de RaceLog: {0} +errorStartingTracking=Error al iniciar el rastreo {0}: {1} +errorLoadingLeaderBoardByEvent=Error al intentar cargar la tabla de clasificación. O bien el evento no se ha podido asociar con la regata o no existen carreras rastreadas. +errorLoadingEvent=Error al cargar el evento con ID {0} : {1} +errorLoadingRegattaStructure=Error al intentar cargar regatas para el evento con ID {0} : {1} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties index 1887bf177c2..1dc61458e89 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties @@ -11,11 +11,11 @@ listRaces=Lister courses listRegattas=Lister régates wind=Vent maneuverType=Manœuvre -windPanelLabel=Ceci est le panneau des mesures du vent, vide pour l''instant. +windPanelLabel=Ceci est le panneau des mesures du vent, vide pour l'instant. refresh=Actualiser remove=Supprimer windSource=Source du vent -dampeningInterval=Intervalle d''atténuation +dampeningInterval=Intervalle d'atténuation map=Carte race=Course races=Courses @@ -31,7 +31,7 @@ timeDelay=Décalage timeDelayHelp=Laissez vide pour effectuer la relecture à un moment de votre choix. Saisissez des secondes de décalage avant le flux des données en direct (p.ex. "60" pour une minute ou "0" pour "Sans décalage"). speedInKnots=Vitesse (nd) fromDeg=De (°) -noRacesYet=Aucune course pour l''instant. +noRacesYet=Aucune course pour l'instant. total=Σ carry=Cumulé competitor=Concurrent @@ -53,8 +53,8 @@ pleaseEnterAName=Saisissez un nom. pleaseEnterABoatClass=Saisissez une catégorie de bateau. discardRacesFromHowManyStartedRacesOn=Éliminez une course de plus en commençant au nombre de courses déjà lancées. leaderboardWithThisNameAlreadyExists=Un palmarès de ce nom existe déjà. -discardThresholdsMustBeNumeric=Les seuils d''élimination doivent être numériques. -discardThresholdsMustBeAscending=Les seuils d''élimination doivent être ascendants. +discardThresholdsMustBeNumeric=Les seuils d'élimination doivent être numériques. +discardThresholdsMustBeAscending=Les seuils d'élimination doivent être ascendants. discarding=Élimination en cours startingFromNumberOfRaces=Début au nombre de courses renameLeaderboard=Renommer palmarès @@ -89,17 +89,17 @@ selectAtLeastOneLegDetail=Sélectionnez au moins un détail de portion de parcou currentSpeedOverGroundInKnots=Vf currentSpeedOverGroundInKnotsTooltip=La vitesse fond actuelle. estimatedTimeToNextWaypointInSeconds=TEA -estimatedTimeToNextWaypointInSecondsTooltip=Temps estimé avant l''arrivée dont aura besoin le concurrent pour atteindre le prochain point de cheminement, basé sur le compromis Cap/Vitesse (VMG) actuel du concurrent, en prenant compte de la direction réelle du vent. +estimatedTimeToNextWaypointInSecondsTooltip=Temps estimé avant l'arrivée dont aura besoin le concurrent pour atteindre le prochain point de cheminement, basé sur le compromis Cap/Vitesse (VMG) actuel du concurrent, en prenant compte de la direction réelle du vent. gapToLeaderInSeconds=Écart par rapport au concurrent en tête -gapToLeaderInSecondsTooltip=Estime l''heure d''arrivée (calculée) à la position actuelle du bateau en tête de la course.\nLe calcul est basé sur le compromis Cap/Vitesse (VMG) moyen de la portion du parcours actuelle, et une performance égale à celle du concurrent en tête de la course pour les portions de parcours suivantes.\nL''écart indique de combien temps plus tôt le concurrent aurait dû arriver là où il/elle se trouve actuellement\nafin de pouvoir prétendre à la même place que le concurrent en tête de la course, à l''arrivée projetée à la position actuelle du bateau en tête. +gapToLeaderInSecondsTooltip=Estime l'heure d'arrivée (calculée) à la position actuelle du bateau en tête de la course.\nLe calcul est basé sur le compromis Cap/Vitesse (VMG) moyen de la portion du parcours actuelle, et une performance égale à celle du concurrent en tête de la course pour les portions de parcours suivantes.\nL'écart indique de combien temps plus tôt le concurrent aurait dû arriver là où il/elle se trouve actuellement\nafin de pouvoir prétendre à la même place que le concurrent en tête de la course, à l'arrivée projetée à la position actuelle du bateau en tête. velocityMadeGoodInKnots=VMG velocityMadeGoodInKnotsTooltip=Le compromis Cap/Vitesse (Velocity Made Good) correspond à la vitesse au vent/sous le vent pour portions de parcours dans le lit du vent/à vent arrière, respectivement, ou à la vitesse de parcours pour atteindre une portion de parcours. windwardDistanceToGoInMeters=Distance au vent/sous le vent restante -windwardDistanceToGoInMetersTooltip=Distance au vent/sous le vent de la position actuelle du concurrent jusqu''à la fin de cette portion de parcours pour les portions dans le lit du vent/à vent arrière, respectivement, ou la distance de parcours pour atteindre une portion de parcours. +windwardDistanceToGoInMetersTooltip=Distance au vent/sous le vent de la position actuelle du concurrent jusqu'à la fin de cette portion de parcours pour les portions dans le lit du vent/à vent arrière, respectivement, ou la distance de parcours pour atteindre une portion de parcours. windwardDistanceToCompetitorFarthestAheadInMeters=Écart -windwardDistanceToCompetitorFarthestAheadInMetersTooltip=Distance au vent/sous le vent entre le concurrent et celui en tête de la course pour les portions de parcours dans le lit du vent/à vent arrière, respectivement, ou la distance de parcours pour atteindre une portion de parcours.\nNotez que le concurrent en tête n''est pas forcément premier de la course si un classement prenant en compte les difficultés est en vigueur. +windwardDistanceToCompetitorFarthestAheadInMetersTooltip=Distance au vent/sous le vent entre le concurrent et celui en tête de la course pour les portions de parcours dans le lit du vent/à vent arrière, respectivement, ou la distance de parcours pour atteindre une portion de parcours.\nNotez que le concurrent en tête n'est pas forcément premier de la course si un classement prenant en compte les difficultés est en vigueur. name=Nom -leaveEmptyForDefault=Laissez vide pour que la valeur par défaut s''applique. +leaveEmptyForDefault=Laissez vide pour que la valeur par défaut s'applique. trackNewEvent=Suivre une nouvelle manifestation trackableRaces=Courses disponibles pour suivi trackWind=Suivre le vent @@ -129,7 +129,7 @@ storedPort=Port données stockées liveUri=URI en direct storedUri=URI stockée eventsConnectedTo=Manifestations actuellement suivies -hostname=Nom de l''hôte +hostname=Nom de l'hôte declinationCheckbox=Corriger la direction du vent par déclinaison raceStartTrackingColumn=Suivi lancé pauseAutomaticRefresh=Arrêter Actualisation automatique @@ -137,10 +137,10 @@ autoRefresh=Actualiser automatiquement delayInSeconds=Décalage (s) delayBetweenAutoAdvances=Décalage entre mises à jour automatiques en secondes : delayMustBeNonNegative=Le décalage doit être supérieur à zéro. -chooseUpdateIntervalOfAtLeastOneSecond=Sélectionnez un intervalle de mise à jour d''au moins une seconde. +chooseUpdateIntervalOfAtLeastOneSecond=Sélectionnez un intervalle de mise à jour d'au moins une seconde. errorSettingWindForRace=Erreur lors de la définition du vent pour la course -errorFetchingWindInformationForRace=Erreur lors de l''accès aux données de vent pour la course -errorWhileTryingToSetWindSourceForRace=Erreur lors de la tentative d''activation de l''indicateur "Vent de début : au vent" +errorFetchingWindInformationForRace=Erreur lors de l'accès aux données de vent pour la course +errorWhileTryingToSetWindSourceForRace=Erreur lors de la tentative d'activation de l'indicateur "Vent de début : au vent" inEvent=dans la manifestation to=à toSide=à @@ -154,7 +154,7 @@ columnMoveDown=Arrière port=À bâbord raceStartTimeColumn=Course lancée showOnlySelectedCompetitors=Afficher uniquement concurrents sélectionnés -showSelectedCompetitorsInfo=Afficher carré d''infos pour concurrents sélectionnés +showSelectedCompetitorsInfo=Afficher carré d'infos pour concurrents sélectionnés tailLength=Longueur du parcours effectué (s) selectedRaces=Quelles courses souhaitez-vous afficher ? lengthInSeconds=Longueur (s) @@ -163,15 +163,15 @@ numberOfManeuvers=Manœuvres numberOfManeuversTooltip=Le nombre de manœuvres effectuées dans cette portion du parcours. numberOfManeuversInRaceTooltip=Le nombre de manœuvres effectuées dans cette course. tacks=Virements -jibes=Changements d''amure +jibes=Changements d'amure penaltyCircles=Tours de pénalité medalRaceIsNull=Valeur de course à la médaille non autorisée configuration=Configuration maneuverTypes=Manœuvres chooseChart=Sélectionner graphique distanceTraveled=Distance parcourue -distanceTraveledTooltip=Distance naviguée du début de la portion de parcours jusqu''à sa fin\nou jusqu''à l''heure actuelle, si la portion de parcours n''est pas terminée. -raceDistanceTraveledTooltip=Distance naviguée du début de la course jusqu''à sa fin\nou jusqu''à l''heure actuelle, si la course n''est pas terminée. +distanceTraveledTooltip=Distance naviguée du début de la portion de parcours jusqu'à sa fin\nou jusqu'à l'heure actuelle, si la portion de parcours n'est pas terminée. +raceDistanceTraveledTooltip=Distance naviguée du début de la course jusqu'à sa fin\nou jusqu'à l'heure actuelle, si la course n'est pas terminée. velocityMadeGoodLong=Compromis Cap/Vitesse (VMG) speedOverGroundLong=Vitesse fond gapToLeaderLong=Écart par rapport au concurrent en tête @@ -198,8 +198,8 @@ headUp=Lofer bearAway=Abattre tack=Virer tackTooltip=Le nombre de virements effectués dans cette course. -jibe=Changement d''amure -jibeTooltip=Le nombre de changements d''amure effectués dans cette course. +jibe=Changement d'amure +jibeTooltip=Le nombre de changements d'amure effectués dans cette course. penaltyCircle=Tour de pénalité penaltyCircleTooltip=Le nombre de tours de pénalité effectués dans cette course. markPassing=Passage de marque @@ -272,11 +272,11 @@ detailsOfLeaderboardGroup=Détails du groupe de palmarès edit=Modifier save=Enregistrer abort=Abandonner -noLeaderboardGroupWithNameFound=Aucun groupe de palmarès ayant pour nom {0} n''a été trouvé. +noLeaderboardGroupWithNameFound=Aucun groupe de palmarès ayant pour nom {0} n'a été trouvé. overview=Synthèse welcomeToSailingAnalytics=Bienvenue dans SAP Sailing Analytics -welcomeToSailingAnalyticsBody=Grâce aux solutions SAP, l''action sur l''eau est à portée de main pour les amateurs de la voile, comme jamais auparavant.\ Le palmarès actualisé en direct ajoute un vrai plus, avec des classements, vitesses de bateaux et marges de victoire en temps réel. Avec SAP, suivez chaque course et ne ratez aucune manœuvre de passage.\ Regarder les compétitions de voile en direct où que vous soyez devient un jeu d''enfant. -home=Page d''accueil +welcomeToSailingAnalyticsBody=Grâce aux solutions SAP, l'action sur l'eau est à portée de main pour les amateurs de la voile, comme jamais auparavant.\ Le palmarès actualisé en direct ajoute un vrai plus, avec des classements, vitesses de bateaux et marges de victoire en temps réel. Avec SAP, suivez chaque course et ne ratez aucune manœuvre de passage.\ Regarder les compétitions de voile en direct où que vous soyez devient un jeu d'enfant. +home=Page d'accueil clickAndDragToZoomIn=Cliquez et faites glisser dans la zone de traçage pour zoomer. windSpeed=Vitesse du vent (en nds) allTimesInUTC=Toutes les heures au format UTC @@ -292,10 +292,10 @@ autoZoomToTails=Parcours effectués autoZoomSelectedCompetitors=Zoomer uniquement sur les concurrents sélectionnés bearing=Direction zoom=Zoom -stepSizeMustBeGreaterThanNull=La taille de l''étape doit être supérieure à 0. -stepSizeInSeconds=Taille de l''étape en secondes -refreshInterval=Intervalle(s) d''actualisation -refreshIntervalMustBeGreaterThanXSeconds=L''intervalle d''actualisation doit être supérieur à {0} secondes. +stepSizeMustBeGreaterThanNull=La taille de l'étape doit être supérieure à 0. +stepSizeInSeconds=Taille de l'étape en secondes +refreshInterval=Intervalle(s) d'actualisation +refreshIntervalMustBeGreaterThanXSeconds=L'intervalle d'actualisation doit être supérieur à {0} secondes. competitorCharts=Graphique de concurrents selectAtLeastOneCompetitor=Pour afficher les graphiques des concurrents, sélectionnez au moins un concurrent. selectAtLeastOneCompetitorForInvitation=Pour envoyer une invitation par e-mail, sélectionnez au moins un concurrent. @@ -314,7 +314,7 @@ trackBasedEstimationWindSourceTypeName=Estimation windSensorWindSourceTypeName=Mesuré webWindSourceTypeName=Manuel raceCommitteeWindSourceTypeName=Comité de course -clickChartToSetTime=Cliquez sur le graphique pour définir l''heure. +clickChartToSetTime=Cliquez sur le graphique pour définir l'heure. position=Position windSourcesUsed=Sources de vent utilisées errorTryingToUpdateWindSourcesToExclude=Erreur lors de la tentative de mise à jour des sources de vent à exclure pour la course {0} : {1} @@ -328,21 +328,21 @@ 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} +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. +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. 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. -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 +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 +finishLine=Ligne d'arrivée +advantageLine=Ligne d'avantage courseMiddleLine=Ligne médiane de course -messagingPortNumber=Numéro de port d''échange de messages +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} @@ -373,14 +373,14 @@ doYouReallyWantToRemoveRegatta=Voulez-vous vraiment supprimer la régate "{0}"  errorLoadingScoreCorrectionProviders=Erreur lors du chargement des fournisseurs de corrections de scores : {0} selectResultListToImportFrom=Sélectionner la liste des résultats depuis laquelle importer of=de -errorObtainingScoreCorrections=Erreur lors de l''accès aux corrections de scores du fournisseur {0} et manifestation {1} pour la catégorie de bateau {2} publié le {3}: {4} +errorObtainingScoreCorrections=Erreur lors de l'accès aux corrections de scores du fournisseur {0} et manifestation {1} pour la catégorie de bateau {2} publié le {3}: {4} assignRaceNumbersToRaceColumns=Affecter numéros de courses des résultats officiels aux colonnes de courses de palmarès importOfficialResults=Importer résultats officiels... selectAll=Sélectionner tout apply=Appliquer successfullyUpdatedScores=Mise à jour des scores réussie errorUpdatingScoresForLeaderboard=Erreur lors de la mise à jour des scores pour le palmarès {0} : {1} -maneuverTypesToShowWhenCompetitorIsClicked=Types de manœuvre à afficher lorsque l''on clique sur le concurrent +maneuverTypesToShowWhenCompetitorIsClicked=Types de manœuvre à afficher lorsque l'on clique sur le concurrent simulateAsLiveRace=Simulation de course en direct simulateWithOffset=Décalage avant le départ (en minutes) : boatClassDoesNotMatchSelectedRegatta=Les courses sélectionnées contiennent des catégories de bateaux qui ne sont pas identiques à la catégorie de bateau "{0}" de la régate sélectionnée. Aucune course ne sera chargée. @@ -388,7 +388,7 @@ regattaExistForSelectedBoatClass=Il existe au moins une régate pour les catégo reload=Recharger addRegatta=Ajouter régate... importRegattas=Importer régates... -exchangeName=Nom d''échange +exchangeName=Nom d'échange course=Parcours courseLayout=Configuration du parcours buoy=Bouée @@ -397,31 +397,31 @@ buoys=Bouées waypoint=Point de cheminement showAllCompetitors=Afficher tous les concurrents boatTails=Parcours effectué par chaque bateau -startFirstMarkTriangle=Triangle ligne de départ jusqu''à la première marque -resultImportUrls=URL d''importation des résultats -errorRefreshingResultImportUrlList=Erreur lors de l''actualisation de la liste des URL d''importation des résultats : {0} -successfullyUpdatedResultImportUrls=Mise à jour de la liste des URL d''importation des résultats réussie -errorRemovingResultImportUrls=Erreur lors de la suppression des URL d''importation des résultats : {0} +startFirstMarkTriangle=Triangle ligne de départ jusqu'à la première marque +resultImportUrls=URL d'importation des résultats +errorRefreshingResultImportUrlList=Erreur lors de l'actualisation de la liste des URL d'importation des résultats : {0} +successfullyUpdatedResultImportUrls=Mise à jour de la liste des URL d'importation des résultats réussie +errorRemovingResultImportUrls=Erreur lors de la suppression des URL d'importation des résultats : {0} pleaseEnterNonEmptyUrl=Saisissez une URL. -addResultImportUrl=Ajouter URL d''importation des résultats -errorAddingResultImportUrl=Erreur lors de l''ajout de l''URL d''importation des résultats : {0} +addResultImportUrl=Ajouter URL d'importation des résultats +errorAddingResultImportUrl=Erreur lors de l'ajout de l'URL d'importation des résultats : {0} remoteServerInstances=Instances de serveur distant localServer=Serveur local errorRefreshingSailingServers=Erreur lors de la mise à jour des instances SailingServer : {0} successfullyUpdatedSailingServers=Instances SailingServer correctement mises à jour errorRemovingSailingServers=Erreur lors de la suppression des instances SailingServer : {0} addSailingServer=Ajouter instance SailingServer -errorAddingSailingServer=Erreur lors de l''ajout de l''instance SailingServer : {0} -errorTryingToObtainLeaderboardContents=Erreur lors de la tentative d''obtention du contenu du palmarès : {0} +errorAddingSailingServer=Erreur lors de l'ajout de l'instance SailingServer : {0} +errorTryingToObtainLeaderboardContents=Erreur lors de la tentative d'obtention du contenu du palmarès : {0} lastScoreUpdate=Dernière mise à jour des scores -warningBrowserUnsupported=Ce site Web n''est pas optimisé pour votre navigateur. Utilisez un navigateur plus récent, tel que Firefox ou Chrome. +warningBrowserUnsupported=Ce site Web n'est pas optimisé pour votre navigateur. Utilisez un navigateur plus récent, tel que Firefox ou Chrome. newMark=Nouvelle marque controlPoint=Nom de la porte/marque errorUpdatingRaceCourse=Erreur lors de la mise à jour du parcours : {0} successfullyUpdatedCourse=Mise à jour du parcours réussie selectTwoMarksForGate=Sélectionnez deux marques pour créer une porte. -errorTryingToObtainTheMarksOfTheRace=Erreur lors de la tentative d''obtention des marques pour le parcours : {0} -errorTryingToObtainRaceCourse=Erreur lors de la tentative d''obtention du parcours : {0} +errorTryingToObtainTheMarksOfTheRace=Erreur lors de la tentative d'obtention des marques pour le parcours : {0} +errorTryingToObtainRaceCourse=Erreur lors de la tentative d'obtention du parcours : {0} insertWaypointBeforeSelected=Insérer point de cheminement avant la sélection insertWaypointAfterSelected=Insérer point de cheminement après la sélection addGate=Ajouter porte @@ -429,30 +429,30 @@ scoringSchemeLowPointSystem=Système de points a minima scoringSchemeHighPointSystem=Système de points avec bonus scoringSchemeHighPointEssOverall=Système de points avec bonus - ESS général (10) scoringSchemeHighPointEssOverall12=Système de points avec bonus - ESS général (12) -scoringSchemeHighPointEssOverall12Description=Score en points. Le vainqueur d''un Act totalise 12 points, le 2e - 11 points, etc. En cas d''égalité au classement général des Extreme Sailing Series, la victoire est accordée au concurrent ayant remporté le plus d''Act. Si l''égalité persiste, le résultat obtenu au dernier Act sera utilisé. +scoringSchemeHighPointEssOverall12Description=Score en points. Le vainqueur d'un Act totalise 12 points, le 2e - 11 points, etc. En cas d'égalité au classement général des Extreme Sailing Series, la victoire est accordée au concurrent ayant remporté le plus d'Act. Si l'égalité persiste, le résultat obtenu au dernier Act sera utilisé. scoringSchemeHighPointLastBreaksTie=Système de points avec bonus, dernière course à égalité scoringSchemeLowPointWinnerGetsZero=Système de points a minima, le vainqueur obtient zéro scoringSchemeWinnerGetsFive=Système de points avec bonus, le vainqueur obtient 5 points scoringSchemeWinnerGetsSix=Système de points avec bonus, le vainqueur obtient 6 points scoringSchemeWinnerGetsEight=Système de points avec bonus, le vainqueur obtient 8 points scoringSchemeHighPointMatchRacing=Système de points avec bonus, Match racing -scoringSchemeHighPointMatchRacingDescription=Le vainqueur d''un duel obtient 1 point, le perdant 0 points +scoringSchemeHighPointMatchRacingDescription=Le vainqueur d'un duel obtient 1 point, le perdant 0 points scoringSchemeWinnerGetsEightAndInterpolation=Système de points avec bonus, vainqueur 8 points, interpolé scoringSchemeLowPointWithEliminationsAndRoundsWinnerGets07=Système de points à minima, avec éliminations et tours, le vainqueur obtient 0.7 points -scoringSchemeLowPointWithEliminationsAndRoundsWinnerGets07Description=Une variante du schéma de scores a minima qui utilise des éliminations sous forme de tours. \nChaque tour est organisé comme série dans la régate, et l''ordre de départ de la flotte est inversé, \ncommençant par le numéro le plus élevé pour le premier tour. \nSi une finale et une finale des perdants ont lieu, utilisez 1 et 2 comme ordre. Commencez à trois pour le tour des demi-finales. -scoringSchemeLowPointForLeagueOverallLeaderboard=Système de points à minima, en cas d''égalité, le total des points de l''Act est utilisé, puis celui du dernier Act -scoringSchemeLowPointForLeagueOverallLeaderboardDescription=À la place du système habituel de comptage pour schémas à minima en cas d''égalité, les concurrents dont le total des points est égal sont départagés en comparant le total des points qu''ils ont obtenus dans tous les Act. Si l''égalité persiste, la victoire est accordée en fonction du classement dans le dernier Act. -scoringSchemeLowPointTieBreakBasedOnLastSeriesOnly=Système de points a minima, en cas d''égalité, seule la dernière série compte -scoringSchemeLowPointTieBreakBasedOnLastSeriesOnlyDescription=À la place du système habituel de comptage pour schémas à minima en cas d''égalité, le score de la dernière série sans exclusion de course est pris en compte si deux concurrents sont à égalité. +scoringSchemeLowPointWithEliminationsAndRoundsWinnerGets07Description=Une variante du schéma de scores a minima qui utilise des éliminations sous forme de tours. \nChaque tour est organisé comme série dans la régate, et l'ordre de départ de la flotte est inversé, \ncommençant par le numéro le plus élevé pour le premier tour. \nSi une finale et une finale des perdants ont lieu, utilisez 1 et 2 comme ordre. Commencez à trois pour le tour des demi-finales. +scoringSchemeLowPointForLeagueOverallLeaderboard=Système de points à minima, en cas d'égalité, le total des points de l'Act est utilisé, puis celui du dernier Act +scoringSchemeLowPointForLeagueOverallLeaderboardDescription=À la place du système habituel de comptage pour schémas à minima en cas d'égalité, les concurrents dont le total des points est égal sont départagés en comparant le total des points qu'ils ont obtenus dans tous les Act. Si l'égalité persiste, la victoire est accordée en fonction du classement dans le dernier Act. +scoringSchemeLowPointTieBreakBasedOnLastSeriesOnly=Système de points a minima, en cas d'égalité, seule la dernière série compte +scoringSchemeLowPointTieBreakBasedOnLastSeriesOnlyDescription=À la place du système habituel de comptage pour schémas à minima en cas d'égalité, le score de la dernière série sans exclusion de course est pris en compte si deux concurrents sont à égalité. scoringSchemeHighPointFirstGetsOne=Système de points avec bonus, le vainqueur obtient 1 point scoringSchemeHighPointFirstGetsTen=Système de points avec bonus, le vainqueur obtient 10 points scoringSchemeHighPointFirstGetsTenOrEight=Système de points avec bonus, le vainqueur obtient 10 points (ou 8) -scoringSchemeHighPointFirstGetsTenOrEightDescription=Score en points. Le vainqueur totalise 10 points, le deuxième 9, etc. En cas d''égalité, la victoire est accordée au concurrent qui a gagné le plus de courses. Si l''égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. +scoringSchemeHighPointFirstGetsTenOrEightDescription=Score en points. Le vainqueur totalise 10 points, le deuxième 9, etc. En cas d'égalité, la victoire est accordée au concurrent qui a gagné le plus de courses. Si l'égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. scoringSchemeHighPointFirstGetsTwelveOrEight=Système de points avec bonus, le vainqueur obtient 12 points (ou 8) -scoringSchemeHighPointFirstGetsTwelveOrEightDescription=Score en points. Le vainqueur totalise 12 points, le deuxième 11, etc. En cas d''égalité, la victoire est accordée au concurrent qui a totalisé le plus de points. Si l''égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. +scoringSchemeHighPointFirstGetsTwelveOrEightDescription=Score en points. Le vainqueur totalise 12 points, le deuxième 11, etc. En cas d'égalité, la victoire est accordée au concurrent qui a totalisé le plus de points. Si l'égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. scoringSchemeHighPointFirstGetsTwelveOrEight2017=Système de points avec bonus - ESS 2017, le vainqueur obtient 12 points (ou 8) -scoringSchemeHighPointFirstGetsTwelveOrEight2017Description=Score en points. Le vainqueur totalise 12 points, le deuxième 11, etc. En cas d''égalité, la victoire est accordée au concurrent qui a totalisé le plus de points. Si l''égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. -scoringSystem=Système d''attribution des points +scoringSchemeHighPointFirstGetsTwelveOrEight2017Description=Score en points. Le vainqueur totalise 12 points, le deuxième 11, etc. En cas d'égalité, la victoire est accordée au concurrent qui a totalisé le plus de points. Si l'égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. +scoringSystem=Système d'attribution des points createFlexibleLeaderboard=Créer palmarès flexible createRegattaLeaderboard=Créer palmarès régate createRegattaLeaderboardWithEliminations=Créer palmarès de régate avec éliminations @@ -471,10 +471,10 @@ totalTimeSailedDownwindInSeconds=Durée totale avec vent arrière totalTimeSailedDownwindInSecondsTooltip=Durée totale pendant laquelle le concurrent a navigué avec un vent arrière au cours de la régate. totalTimeSailedUpwindInSeconds=Durée totale dans le lit du vent totalTimeSailedUpwindInSecondsTooltip=Durée totale pendant laquelle le concurrent a navigué dans le lit du vent au cours de la régate. -totalTimeSailedReachingInSeconds=Durée totale jusqu''à atteindre ce point +totalTimeSailedReachingInSeconds=Durée totale jusqu'à atteindre ce point totalTimeSailedReachingInSecondsTooltip=Durée totale que le concurrent a mis à atteindre des portions de parcours au cours de la régate. totalTimeSailedInSeconds=Durée totale -totalTimeSailedInSecondsTooltip=Durée totale de navigation du concurrent dans la régate, calculée à partir de l''heure du départ de la course. +totalTimeSailedInSecondsTooltip=Durée totale de navigation du concurrent dans la régate, calculée à partir de l'heure du départ de la course. totalDistanceTraveled=Distance totale totalDistanceTraveledTooltip=Distance totale naviguée dans la régate. totalAverageSpeedOverGround=∅ Vf @@ -512,9 +512,9 @@ pleaseSelectASeries=Sélectionnez une série. pleaseSelectARace=Sélectionnez une course. displayGroupsInReverseOrder=Afficher groupes en sens inverse actionConfigureUrl=Configurer URL -configureLeaderboardUrlDescription=Configurer le palmarès et obtenir l''URL correspondante à partir du lien +configureLeaderboardUrlDescription=Configurer le palmarès et obtenir l'URL correspondante à partir du lien embedded=Intégré -additionalUrlSettings=Options d''URL supplémentaires +additionalUrlSettings=Options d'URL supplémentaires restrictToSingleSelectedRace=Limiter à la seule course sélectionnée expandSelectedRace=Développer course sélectionnée showRaceDetails=Autoriser détails de la course @@ -529,17 +529,17 @@ factor=Facteur errorUpdatingIsMedalRace=Erreur lors la mise à jour des options de la course médaillée : {0} maneuverLoss=Perte suite à manœuvre averageManeuverLossInMeters=∅ perte suite à manœuvre -averageManeuverLossInMetersTooltip=Distance moyenne perdue au cours d''une manœuvre. +averageManeuverLossInMetersTooltip=Distance moyenne perdue au cours d'une manœuvre. averageTackLossInMeters=∅ perte suite à un virement averageTackLossInMetersTooltip=Distance moyenne perdue au cours des virements. -averageJibeLossInMeters=∅ perte suite à changement d''amure -averageJibeLossInMetersTooltip=Distance moyenne perdue au cours des changements d''amure. +averageJibeLossInMeters=∅ perte suite à changement d'amure +averageJibeLossInMetersTooltip=Distance moyenne perdue au cours des changements d'amure. shape=Forme pattern=Modèle legend=Légende live=en direct swissTimingArchiveConnector=Manifestations archivées SwissTiming -errorFetchingChartData=Erreur lors de l''accès aux données du graphique : {0} +errorFetchingChartData=Erreur lors de l'accès aux données du graphique : {0} loadingCompetitorData=Chargement des données du concurrent... competitorRegattaDataAfterRaceN={0} après la course {1} rankChart=Classement @@ -548,14 +548,14 @@ raceNetPointsTooltip=Points nets du concurrent dans la course regattaNetPointsTooltip=Points nets du concurrent dans la régate showRankChart=Afficher graphique du classement overallLeaderboardSelection=Palmarès général -errorTryingToObtainOverallLeaderboards=Erreur lors de la tentative d''obtention du palmarès général : {0} +errorTryingToObtainOverallLeaderboards=Erreur lors de la tentative d'obtention du palmarès général : {0} finished=terminé upcoming=à venir next=suivante inProgress=en cours passedTo=passé à {0} -gapChangeSinceLegStartInSeconds=Changement de l''écart -gapChangeSinceLegStartInSecondsTooltip=Changement de l''écart par rapport au concurrent en tête depuis le début de la dernière portion de parcours.\nUn chiffre négatif indique que l''écart a diminué ;\nun chiffre positif indique que l''écart a augmenté. +gapChangeSinceLegStartInSeconds=Changement de l'écart +gapChangeSinceLegStartInSecondsTooltip=Changement de l'écart par rapport au concurrent en tête depuis le début de la dernière portion de parcours.\nUn chiffre négatif indique que l'écart a diminué ;\nun chiffre positif indique que l'écart a augmenté. sideToWhichMarkAtLegStartWasRounded=Marque laissée à sideToWhichMarkAtLegStartWasRoundedTooltip=Côté duquel la marque a été contournée au début de la portion de parcours. raceIsLive=Course en direct : {0} @@ -569,29 +569,29 @@ generatePolarSheet=Générer fiche polaire polars=Diagrammes polaire polarSheetChart=Fiche polaire polarSheetMinimumDataSizePerGraph=Nombre minimum de points de données par diagramme. -polarSheetMinimumDataSizePerGraphTooltip=Les diagrammes comportant moins de points de données sous-jacents ne sont pas affichés visuellement.\nDe cette façon, aucun diagramme inutile n''est affiché pour \nla vitesse du vent s''il n''y a pas suffisamment de données. +polarSheetMinimumDataSizePerGraphTooltip=Les diagrammes comportant moins de points de données sous-jacents ne sont pas affichés visuellement.\nDe cette façon, aucun diagramme inutile n'est affiché pour \nla vitesse du vent s'il n'y a pas suffisamment de données. polarSheetMinimumDataSizePerAngle=Nombre minimum de points de données par angle. -polarSheetMinimumDataSizePerAngleTooltip=Dans chaque diagramme, seules les données relatives à des angles comportant au moins le nombre indiqué de\npoints de données sous-jacents seront affichées. Il est possible de masquer les sections\ninutiles du diagramme à l''aide de ce seuil. +polarSheetMinimumDataSizePerAngleTooltip=Dans chaque diagramme, seules les données relatives à des angles comportant au moins le nombre indiqué de\npoints de données sous-jacents seront affichées. Il est possible de masquer les sections\ninutiles du diagramme à l'aide de ce seuil. polarSheetMinimumWindConfidence=Valeur fiable minimale du vent polarSheetMinimumWindConfidenceTooltip=Seuls les points vent dont la valeur de fiabilité dépasse le seuil indiqué \nsont utilisés. Cette valeur de fiabilité se situe entre 0 et 1. polarSheetMinimumConfidenceMeasure=Indicateur de fiabilité minimale -polarSheetMinimumConfidenceMeasureTooltip=Indicateur de fiabilité minimale pour un point affiché dans le diagramme.\nSi celui-ci se situe en-dessous d''un seuil donné, le point ne sera pas affiché.\nL''indicateur se situe entre 0 et 1, il est déterminé\nà l''aide de mesures statistiques. +polarSheetMinimumConfidenceMeasureTooltip=Indicateur de fiabilité minimale pour un point affiché dans le diagramme.\nSi celui-ci se situe en-dessous d'un seuil donné, le point ne sera pas affiché.\nL'indicateur se situe entre 0 et 1, il est déterminé\nà l'aide de mesures statistiques. polarSheetUseOnlyWindGaugeData=Utiliser uniquement des données de vent de jauges pour la vitesse du vent -polarSheetUseOnlyWindGaugeDataTooltip=Si vous considérez uniquement les données de vitesse provenant de jauges de vent, \nvous vous assurez d''exclure des vitesses de vent estimées et saisies manuellement, susceptibles de fausser le diagramme polaire. -polarSheetUseOnlyEstimationData=Utiliser uniquement l''estimation pour la direction du vent -polarSheetUseOnlyEstimationDataTooltip=En utilisant l''estimation précise du vent pour la direction du vent,\nvous corrigez des diagrammes polaires qui ont pivoté suite à des données de vent \nde jauge non valides. +polarSheetUseOnlyWindGaugeDataTooltip=Si vous considérez uniquement les données de vitesse provenant de jauges de vent, \nvous vous assurez d'exclure des vitesses de vent estimées et saisies manuellement, susceptibles de fausser le diagramme polaire. +polarSheetUseOnlyEstimationData=Utiliser uniquement l'estimation pour la direction du vent +polarSheetUseOnlyEstimationDataTooltip=En utilisant l'estimation précise du vent pour la direction du vent,\nvous corrigez des diagrammes polaires qui ont pivoté suite à des données de vent \nde jauge non valides. polarSheetRemoveOutliers=Supprimer des valeurs aberrantes (approche basée sur la distance) polarSheetRemoveOutliersTooltip=Les valeurs aberrantes sont supprimées par une approche basée sur la distance.\nLes paramètres peuvent être ajustés ci-dessous. polarSheetOutlierDetectionRadius=Rayon de voisinage de détection des valeurs aberrantes -polarSheetOutlierDetectionRadiusTooltip=Le rayon utilisé dans l''algorithme de \ndétection de valeurs aberrantes basé sur la distance. +polarSheetOutlierDetectionRadiusTooltip=Le rayon utilisé dans l'algorithme de \ndétection de valeurs aberrantes basé sur la distance. polarSheetOutlierDetectionMinimumPerc=Pourcentage de voisinage minimal de détection de valeurs aberrantes polarSheetOutlierDetectionMinimumPercTooltip=Le pourcentage de points de données de voisinage/points de données globaux \ndoit être inférieur à la valeur donnée pour que le point soit considéré comme une valeur aberrante. -polarSheetNumberOfHistogramColumns=Nombre de colonnes d''histogramme par plage de vent +polarSheetNumberOfHistogramColumns=Nombre de colonnes d'histogramme par plage de vent polarSheetWindSteppingInKnots=Évolution du vent en nœuds polarSheetWindSteppingMaxDistance=Distance max. au niveau du vent polarSheetWindSteppingMaxDistanceTooltip=Définit un rayon maximal pour lequel des points seront affectés aux niveaux du vent. polarSheetSplitByWindGauges=Fractionner des sources de vent -polarSheetSplitByWindGaugesTooltip=Le fractionnement des sources de vent permet d''améliorer la recherche pour des jauges de vents défavorables. \nLa précision statistique ne peut pas être garantie. Un même point peut être \npris en compte de multiples fois dans les fiches polaires en résultant (pour des jauges de vent différentes). +polarSheetSplitByWindGaugesTooltip=Le fractionnement des sources de vent permet d'améliorer la recherche pour des jauges de vents défavorables. \nLa précision statistique ne peut pas être garantie. Un même point peut être \npris en compte de multiples fois dans les fiches polaires en résultant (pour des jauges de vent différentes). applyMinimumWindConfidence=Appliquer fiabilité minimale du vent applyMinimumWindConfidenceTooltip=Si cette case est cochée, la valeur de la case ci-dessus sera utilisée comme valeur de fiabilité valide minimale du vent au cours de la génération. windRangeDistribution=Distribution dans la plage du vent @@ -601,7 +601,7 @@ competitorNationalityColumnTooltip=Nationalité de ce concurrent sailIdColumnTooltip=Indique le pavillon du pays et le numéro de voile du concurrent. rankColumnTooltip=La place au classement général de ce concurrent dans la régate. carryColumnTooltip=Points accumulés lors des autres courses -totalNetPointsColumnTooltip=Total net des points d''un concurrent dans la régate.\nLe tri est effectué en fonction du classement, et non des points. +totalNetPointsColumnTooltip=Total net des points d'un concurrent dans la régate.\nLe tri est effectué en fonction du classement, et non des points. windData=Données de vent gpsData=Données GPS status=Statut @@ -613,7 +613,7 @@ angleAndTotalNumberOfDataPointsAndCovAndCm=Angle : {0} ; Nombre total de point buoyZone=Zone de bouée radiusInMeters=Rayon (m) filterRegattasByName=Filtrer régates par nom -noRegattasYet=Il n''y a pas encore de régate. +noRegattasYet=Il n'y a pas encore de régate. addCourseArea=Ajouter zone de course courseAreas=Zones de course courseArea=Zone de course @@ -621,13 +621,13 @@ pleaseEnterNonEmptyCourseArea=Saisissez une zone de course. pleaseSelectACourseArea=Sélectionnez une zone de course. lastUpperFlag=Pavillon supérieur lastLowerFlag=Pavillon inférieur -cannotAddRacesToRegattaLeaderboardButOnlyToRegatta=Il s''agit d''un palmarès de régate. Vous pouvez uniquement ajouter des courses à ce palmarès dans la définition de la régate. +cannotAddRacesToRegattaLeaderboardButOnlyToRegatta=Il s'agit d'un palmarès de régate. Vous pouvez uniquement ajouter des courses à ce palmarès dans la définition de la régate. correctScore=Corriger score correctScoreFor=Corriger score pour le concurrent {0} dans la course {1} penaltyOrRedress=Pénalité/Réparation totalScore=Total des points -timePointMustBeAfterStartOfTracking=L''heure doit être postérieure au début du suivi. -timePointMustBeBeforeEndOfTracking=L''heure doit être antérieure au début du suivi. +timePointMustBeAfterStartOfTracking=L'heure doit être postérieure au début du suivi. +timePointMustBeBeforeEndOfTracking=L'heure doit être antérieure au début du suivi. regattaUsedForTheTrackedRace=Régate utilisée pour la course suivie tracTracUpdateUrl=URL de mise à jour du serveur TracTrac passingInstructions=Instructions de passage @@ -635,7 +635,7 @@ refreshNow=Actualiser maintenant stopUpdating=Arrêter mise à jour startUpdating=Lancer mise à jour currentTime=Heure actuelle : -tractracUsername=Nom d''utilisateur TracTrac +tractracUsername=Nom d'utilisateur TracTrac tractracPassword=Mot de passe TracTrac operatorEquals=Égal à operatorNotEqualTo=Non égal à @@ -654,7 +654,7 @@ distanceToLineFiveSecondsBeforeStart=Distance par rapport à la ligne 5 sec. av speedOverGroundAtRaceStart=Vf au départ speedOverGroundFiveSecondsBeforeStart=Vf 5 sec. avant le départ speedOverGroundWhenPassingStart=Vf au moment du départ -distanceToLineAtRaceStartTooltip=Distance par rapport à la ligne de départ à l''heure du départ de la course ; distance par rapport au côté le plus proche de la ligne si le concurrent se trouve au-delà des extrémités de la ligne. +distanceToLineAtRaceStartTooltip=Distance par rapport à la ligne de départ à l'heure du départ de la course ; distance par rapport au côté le plus proche de la ligne si le concurrent se trouve au-delà des extrémités de la ligne. distanceToLineFiveSecondsBeforeStartTooltip=Distance par rapport à la ligne de départ cinq secondes avant le départ ; distance par rapport au côté le plus proche de la ligne si le concurrent se trouve au-delà des extrémités de la ligne. speedOverGroundAtRaceStartTooltip=Vitesse fond au moment du départ de la course speedOverGroundFiveSecondsBeforeStartTooltip=Vitesse fond cinq secondes avant le départ @@ -698,7 +698,7 @@ filterNothing=Ne pas filtrer topNCompetitorsByRaceRank=Tête du classement de la course {0} topNCompetitorsByTotalRank=Tête du classement général {0} simulator=Simulateur -optionsBar=Barre d''options +optionsBar=Barre d'options simulateButton=Prédire setup=Configurer strength=Force (en nd) @@ -747,9 +747,9 @@ showFollowingCourseAreas=Afficher les zones de course suivantes showFollowingRegattas=Afficher les régates suivantes showOnlyRacesOfSameDay=Afficher uniquement les courses du même jour showOnlyCurrentlyRunningRaces=Afficher les courses en cours -seriesDefinesResultDiscardingRule=La série définit les règles d''élimination du résultat. +seriesDefinesResultDiscardingRule=La série définit les règles d'élimination du résultat. addSeries=Ajouter série -regattaDefinesResultDiscardingRules=La régate définit les règles d''élimination du résultat. +regattaDefinesResultDiscardingRules=La régate définit les règles d'élimination du résultat. startsWithZeroScore=La série commence avec un score à zéro. masterDataImportPanel=Importation des données de base importSuccess=Réussite\n{0} groupe(s) de palmarès, {1} palmarès, {2} manifestation(s), {3} régate(s) et {4} pistes de média créés @@ -759,21 +759,21 @@ 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. +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. +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 -raceIsFinishing=En cours d''achèvement +raceIsRunning=En cours d'exécution +raceIsFinishing=En cours d'achèvement raceIsFinished=Terminé raceIsScheduled=Planifié raceIsInStartphase=Lancer phase @@ -790,7 +790,7 @@ protestTimeFinishesAt=se termine protestTimeFinishedAt=terminé flags=Pavillons lastUpdate=Dernière mise à jour -noMoreRacingToday=Plus aucune course aujourd''hui +noMoreRacingToday=Plus aucune course aujourd'hui furtherSignalsAshore=Signaux ultérieurs à terre earlyStarters=Faux départs showingDetailsOfRace=Affichage des détails de la course {0} @@ -817,14 +817,14 @@ zuluIndiaRemoved=Pavillon de départ - départ avec pénalités pour les faux d classFlagRemoved=Pavillon affalé - signal de départ de la course xray=Rappel individuel - faux départs signalés firstSubstitute=Rappel général - trop de faux départs signalés - répétition de la procédure de départ -blueFlagDisplayed=Pavillon envoyé - le premier concurrent a franchi la ligne d''arrivée -blueFlagRemoved=Pavillon affalé - le dernier concurrent a franchi la ligne d''arrivée ou le temps limite d''arrivée est dépassé +blueFlagDisplayed=Pavillon envoyé - le premier concurrent a franchi la ligne d'arrivée +blueFlagRemoved=Pavillon affalé - le dernier concurrent a franchi la ligne d'arrivée ou le temps limite d'arrivée est dépassé golfRemoved=Pavillon supprimé - porte fermée -answeringPennantOverAlphaDisplayed=Pavillon envoyé - départ retardé - plus de courses aujourd''hui +answeringPennantOverAlphaDisplayed=Pavillon envoyé - départ retardé - plus de courses aujourd'hui answeringPennantOverHotelDisplayed=Pavillon envoyé - départ retardé - signaux ultérieurs à terre answeringPennantDisplayed=Pavillon envoyé - départ retardé answeringPennantRemoved=Pavillon affalé - la procédure de départ sera lancée dans une minute -novemberOverAlphaDisplayed=Pavillon envoyé - course annulée - plus de courses aujourd''hui +novemberOverAlphaDisplayed=Pavillon envoyé - course annulée - plus de courses aujourd'hui novemberOverHotelDisplayed=Pavillon envoyé - course annulée - signaux ultérieurs à terre novemberDisplayed=Pavillon envoyé - course annulée bravoDisplayed=Début du temps de réclamation @@ -837,24 +837,24 @@ dataBeforeAfter=Données obtenues avant/après la course rawFixes=Toutes les positions (y compris les valeurs aberrantes) importRemoteHost=Hôte distant : importFetchRemoteLgs=Accéder à la liste des groupes de palmarès -importUrlInvalid=URL non valide pour l''accès aux groupes de palmarès : {0} -importGetLeaderboardsFailed=Échec de la requête GET pour l''obtention des groupes de palmarès pour l''hôte {0}, erreur {1} +importUrlInvalid=URL non valide pour l'accès aux groupes de palmarès : {0} +importGetLeaderboardsFailed=Échec de la requête GET pour l'obtention des groupes de palmarès pour l'hôte {0}, erreur {1} importNoDataReturned=Aucune donnée retournée par le serveur -importServerError=Échec de la requête GET pour l''obtention des groupes de palmarès avec erreur de serveur. Pour plus d''informations, consultez les journaux du serveur. +importServerError=Échec de la requête GET pour l'obtention des groupes de palmarès avec erreur de serveur. Pour plus d'informations, consultez les journaux du serveur. importOverrideSwitchLabel=Remplacer données existantes si les noms et ID correspondent importSelectedLeaderboardGroups=Importer groupes de palmarès sélectionnés importSelectAtLeastOne=Vous devez sélectionner au moins un groupe de palmarès à importer. deselectAll=Désélectionner tout polarDiagramButton=Diagramme polaire ratioBetweenTimeSinceLastPositionFixAndAverageSamplingInterval=Écart GPS -ratioBetweenTimeSinceLastPositionFixAndAverageSamplingIntervalTooltip=Ratio entre l''heure de réception de la dernière position GPS position et l''intervalle d''échantillonnage moyen +ratioBetweenTimeSinceLastPositionFixAndAverageSamplingIntervalTooltip=Ratio entre l'heure de réception de la dernière position GPS position et l'intervalle d'échantillonnage moyen trackingQuality=Qualité du suivi legType=Type de portion de parcours sailID=Numéro de voile seriesLeaderboard=Palmarès de la série regattaLeaderboards=Palmarès de la régate clearSelection=Effacer la sélection -running=En cours d''exécution +running=En cours d'exécution runAsSubstantive=Exécuter done=Terminé lastFinished=Fin de dernière exécution @@ -863,15 +863,15 @@ times=durées dataAmount=Volume de données averageCleanedServerTime=∅ Durée de nettoyage du serveur averageCleanedOverallTime=∅ Durée globale de nettoyage -dataMiningBenchmarkResults=Résultats benchmark d''exploration de données +dataMiningBenchmarkResults=Résultats benchmark d'exploration de données serverTime=Heure du serveur confidenceShouldBeBetween=Les valeurs de fiabilité doivent se situer entre 0 et 1. minDataValuesNeedToBeAtLeastZero=Les valeurs de tailles de données minimales ne peuvent pas être négatives. -numberOfColumnsAtLeast2=Le nombre de colonnes d''histogrammes doit être supérieur à un. +numberOfColumnsAtLeast2=Le nombre de colonnes d'histogrammes doit être supérieur à un. outlierRadiusNeedsToBePositiveString=Le rayon des valeurs aberrantes doit être un nombre positif. outlierMinimumNeighborhoodPctString=Le pourcentage de voisinage des valeurs aberrantes doit être un nombre positif, max. 1. oneOrMoreParametersAreEmpty=Les zones de paramètres ne peuvent pas être vides. -errorWhileAddingSeriesToChart=Une erreur s''est produite lors de la tentative d''ajout\nd''une nouvelle série au graphique. +errorWhileAddingSeriesToChart=Une erreur s'est produite lors de la tentative d'ajout\nd'une nouvelle série au graphique. generatingPolarSheet=Génération de la fiche polaire... dataCount=Volume des données generationFinished=Génération terminée @@ -882,17 +882,17 @@ selectSheet=Sélectionner fiche cleanedServerTime=Durée de nettoyage du serveur overallTime=Durée globale cleanedOverallTime=Durée globale de nettoyage -dataMiningResult=Résultat d''exploration de données +dataMiningResult=Résultat d'exploration de données groupBy=Regrouper par statisticToCalculate=Calculer statistiques queryResultsChartSubtitle={0} entrées de données analysées en {1} secondes noQuerySelected=Aucune requête sélectionnée runAutomatically=Exécuter automatiquement windImport_Upload=Charger -windImport_Title=Importer vent de l''expédition +windImport_Title=Importer vent de l'expédition windImport_BoatId=N° du bateau : -windImport_SelectedRacesWarning=Voulez-vous réellement importer les données de vent dans les {0} courses ?\nNotez que seules les courses dont l''intervalle est pertinent seront prises en compte. -windImport_AllRacesWarning=Voulez-vous réellement importer les données de vent dans toutes les courses ?\nNotez que seules les courses dont l''intervalle est pertinent seront prises en compte. +windImport_SelectedRacesWarning=Voulez-vous réellement importer les données de vent dans les {0} courses ?\nNotez que seules les courses dont l'intervalle est pertinent seront prises en compte. +windImport_AllRacesWarning=Voulez-vous réellement importer les données de vent dans toutes les courses ?\nNotez que seules les courses dont l'intervalle est pertinent seront prises en compte. windImport_ResultHeader=Données de vent importées de : {0} à : {1}. Appliqué à {2} course(s). windImport_ResultEntry=Course : {0} ({1}) - {2} points de : {3} à : {4} windImport_ResultError=Erreur : {0} @@ -900,20 +900,20 @@ gribWindImport_Title=Importer données de vent à partir de fichiers GRIB showWindSpeedSeriesTooltip=Bascule la visibilité de la vitesse du vent pour toutes les sources de données showWindDirectionSeriesTooltip=Bascule la visibilité de la direction du vent pour toutes les sources de données combinedWindSourceTypeTooltip=Combine toutes les autres sources de vent en un ensemble de données -legMiddleWindSourceTypeTooltip=Données de vent combinées au point du milieu de la route loxodromique d''une portion de parcours +legMiddleWindSourceTypeTooltip=Données de vent combinées au point du milieu de la route loxodromique d'une portion de parcours courseBasedWindSourceTypeTooltip=Valeur basée sur la configuration du parcours (supposant que le départ de la course se fait avec une portion de parcours dans le lit du vent) trackBasedEstimationWindSourceTypeTooltip=Données calculées à partir du suivi du concurrent windSensorWindSourceTypeTooltip=Données captées à partir de systèmes de mesure mobiles webWindSourceTypeTooltip=Valeurs de données définies manuellement raceCommitteeWindSourceTypeTooltip=Valeurs de données définies manuellement par les membres du comité de course sheetName=Nom de la fiche -sheetNameTooltip=Vous pouvez nommer votre fiche polaire à l''aide de la zone de texte.\nLe système génère un nom basé sur la catégorie du bateau \nsi aucun nom n''est indiqué. +sheetNameTooltip=Vous pouvez nommer votre fiche polaire à l'aide de la zone de texte.\nLe système génère un nom basé sur la catégorie du bateau \nsi aucun nom n'est indiqué. timeDownwind=Vent arrière (durée) -timeReaching=Durée jusqu''à l''arrivée +timeReaching=Durée jusqu'à l'arrivée timeUpwind=Dans le lit du vent (durée) raceTimeTooltip=Durée de navigation totale dans cette course, chronométrée à partir du moment où le concurrent passe le point de cheminement du départ \n(et non pas lors du départ de la course) raceTimeDownwindTooltip=Durée totale de navigation vent arrière dans cette course -raceTimeReachingTooltip=Durée totale de navigation jusqu''à l''arrivée dans cette course +raceTimeReachingTooltip=Durée totale de navigation jusqu'à l'arrivée dans cette course raceTimeUpwindTooltip=Durée totale de navigation dans le lit du vent dans cette course noStatisticSelectedError=Aucune statistique à calculer sélectionnée noCustomGrouperScriptTextError=Script de regroupement vide @@ -922,11 +922,11 @@ noGrouperSelectedError=Aucun type de regroupement sélectionné noDataRetrieverChainDefinitonSelectedError=Aucun récupérateur de données sélectionné queryNotValidBecause=Aucune requête possible dû à dataMining=Exploration de données -errorRunningDataMiningQuery=Une erreur s''est produite lors de l''exécution de la requête. -hideToolbar=Masquer barre d''outils +errorRunningDataMiningQuery=Une erreur s'est produite lors de l'exécution de la requête. +hideToolbar=Masquer barre d'outils showSeriesLeaderboards=Afficher palmarès de la série showOverallLeaderboard=Afficher palmarès général -lineAngleToWindAndAdvantage=longueur : {0} m\nangle au vent : {1}°\ncôté {2} a {3} m d''avantage +lineAngleToWindAndAdvantage=longueur : {0} m\nangle au vent : {1}°\ncôté {2} a {3} m d'avantage doYouReallyWantToRemoveEvents=Voulez-vous vraiment supprimer les manifestations ? doYouReallyWantToRemoveEvent=Voulez-vous vraiment supprimer la manifestation {0} ? line=Ligne @@ -940,10 +940,10 @@ successfullyAllowedCompetitorReset=Autorisation de rechargement de concurrent(s) id=ID allowReload=Autoriser rechargement compress=Comprimer -compressTooltip=Utiliser seulement si l''instance de serveur d''exportation \ns''exécute au moins avec le commit 0fbf6071dea125bec4a56dee55d61c99def4a62e. -queryRunner=Outil d''exécution de requêtes -rerunQueryAfterRefresh=Exécuter la requête de nouveau après l''actualisation -refreshIntervalMustntBeEmpty=L''intervalle d''actualisation ne doit pas être vide. +compressTooltip=Utiliser seulement si l'instance de serveur d'exportation \ns'exécute au moins avec le commit 0fbf6071dea125bec4a56dee55d61c99def4a62e. +queryRunner=Outil d'exécution de requêtes +rerunQueryAfterRefresh=Exécuter la requête de nouveau après l'actualisation +refreshIntervalMustntBeEmpty=L'intervalle d'actualisation ne doit pas être vide. selectionTables=Tables de sélection addConfiguration=Ajouter configuration noConfigurations=Aucune configuration disponible @@ -952,7 +952,7 @@ allowedCourseAreas=Zones de course autorisées minimumRoundsForCourse=Nombre de tours min. pour la course maximumRoundsForCourse=Nombre de tours max. pour la course resultsMailRecipient=Résultats destinataire du mail -deviceConfiguration=Configuration de l''appareil +deviceConfiguration=Configuration de l'appareil none=Auc. courseDesignerMode=Concepteur de la course racingProcedure=Instructions de course @@ -968,59 +968,59 @@ sailingWorldCupStart=Départ coupe du monde de la voile setConfiguration=Activer configuration classFlag=Pavillon de classe classFlagHelpText=Active le pavillon de la classe utilisée pour {0}. Sélectionnez ''Ne pas écraser'' pour activer le pavillon par défaut pour ces instructions. -individualRecallHelpText=Si cette option est activée, l''officiel de course a la possibilité d''appeler pour un rappel individuel. -resultEntryHelpText=Si cette option est activée, l''officiel de course a la possibilité d''entrer des résultats pendant et après la phase d''arrivée. +individualRecallHelpText=Si cette option est activée, l'officiel de course a la possibilité d'appeler pour un rappel individuel. +resultEntryHelpText=Si cette option est activée, l'officiel de course a la possibilité d'entrer des résultats pendant et après la phase d'arrivée. startmodeFlags=Pavillons de types de départ startmodeFlagsHelpText=Définit les pavillons de types de départ disponibles. Sélectionnez "Auc." pour activer les pavillons par défaut des instructions. gateStart=Départ au lièvre activatePathfinder=Activer bateau ouvreur -pathfinderHelpText=Si cette option est activée, l''officiel de course peut définir le bateau ouvreur. +pathfinderHelpText=Si cette option est activée, l'officiel de course peut définir le bateau ouvreur. essStart=Départ ESS basicStart=Départ basique leagueStart=Départ de ligue configured=Configuré overwriteRacingProceduresConfiguration=Activer configuration de la régate -overwriteRacingProceduresConfigurationHelpText=L''activation de cette option fournira une configuration de base de la régate pour toutes les options non configurées dans la configuration spécifique de la régate. +overwriteRacingProceduresConfigurationHelpText=L'activation de cette option fournira une configuration de base de la régate pour toutes les options non configurées dans la configuration spécifique de la régate. setStartTime=Définir heure de départ currentPass=Passage actuel -setStartTimeDescription=Sélectionnez une nouvelle heure de départ pour la course. Si vous voulez définir une heure de départ qui corresponde à une heure du passé, vous devez cocher cette case pour mettre à jour le nombre de passages. Notez qu''en modifiant le nombre de passages, vous perdrez toutes les informations concernant le passage précédent (comme les pavillons et manifestations). +setStartTimeDescription=Sélectionnez une nouvelle heure de départ pour la course. Si vous voulez définir une heure de départ qui corresponde à une heure du passé, vous devez cocher cette case pour mettre à jour le nombre de passages. Notez qu'en modifiant le nombre de passages, vous perdrez toutes les informations concernant le passage précédent (comme les pavillons et manifestations). setTrackingTimesDescription=Définissez le début et la fin du suivi pour la course. -hasAdditionalGolfDownTime=Activer temps d''arrêt supplémentaire -additionalGolfDownTimeHelpText=Activer temps d''arrêt supplémentaire +hasAdditionalGolfDownTime=Activer temps d'arrêt supplémentaire +additionalGolfDownTimeHelpText=Activer temps d'arrêt supplémentaire invalidColor=Couleur non valide : {0} igtimiAccounts=Comptes Igtimi -errorFetchingIgtimiAccounts=Erreur lors de l''accès à tous les comptes Igtimi : {0} +errorFetchingIgtimiAccounts=Erreur lors de l'accès à tous les comptes Igtimi : {0} addIgtimiAccount=Ajouter compte Igtimi -errorAuthorizingAccessToIgtimiUser=Erreur lors de l''autorisation d''accès pour l''utilisateur {0} : {1} -successfullyAuthorizedAccessToIgtimiUser=Autorisation d''accès réussie pour l''utilisateur : {0} -couldNotAuthorizedAccessToIgtimiUser=Autorisation pour l''utilisateur {0} échouée : mot de passe ou nom d''utilisateur non valide. -errorGettingIgtimiAuthorizationUrl=Erreur lors de l''accès à l''URL d''autorisation Igtimi : {0} +errorAuthorizingAccessToIgtimiUser=Erreur lors de l'autorisation d'accès pour l'utilisateur {0} : {1} +successfullyAuthorizedAccessToIgtimiUser=Autorisation d'accès réussie pour l'utilisateur : {0} +couldNotAuthorizedAccessToIgtimiUser=Autorisation pour l'utilisateur {0} échouée : mot de passe ou nom d'utilisateur non valide. +errorGettingIgtimiAuthorizationUrl=Erreur lors de l'accès à l'URL d'autorisation Igtimi : {0} addIgtimiUser=Ajouter utilisateur Igtimi doYouReallyWantToRemoveLeaderboards=Voulez-vous vraiment supprimer les palmarès ? -errorTryingToRemoveIgtimiAccount=Erreur lors de la tentative de suppression du compte Igtimi pour l''utilisateur {0}. -successfullyRemoveIgtimiAccount=Suppression du compte Igtimi pour l''utilisateur {0} réussie. -eMailMustNotBeEmpty=L''adresse e-mail ne doit pas être vide. +errorTryingToRemoveIgtimiAccount=Erreur lors de la tentative de suppression du compte Igtimi pour l'utilisateur {0}. +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. -failedToSetNewStartTime=Définition de la nouvelle heure de départ échouée. Cela peut arriver lorsque la même heure de départ existe déjà dans le journal de course ou lorsque quelqu''un d''autre a ajouté une heure de départ plus récente (sous forme d''ID de passage et d''heure logique) que celle que vous venez d''ajouter. -doYouReallyWantToRemoveIgtimiAccount=Souhaitez-vous réellement supprimer le compte Igtimi qui permet à l''utilisateur {0} d''accéder aux données ? +failedToSetNewStartTime=Définition de la nouvelle heure de départ échouée. Cela peut arriver lorsque la même heure de départ existe déjà dans le journal de course ou lorsque quelqu'un d'autre a ajouté une heure de départ plus récente (sous forme d'ID de passage et d'heure logique) que celle que vous venez d'ajouter. +doYouReallyWantToRemoveIgtimiAccount=Souhaitez-vous réellement supprimer le compte Igtimi qui permet à l'utilisateur {0} d'accéder aux données ? igtimiWindImport=Importer le vent depuis Igtimi -seeIgtimiTabForAccountSettings=Afficher l''onglet ''Igtimi'' pour voir les options de compte qui déterminent quelles données Igtimi seront prises en compte. +seeIgtimiTabForAccountSettings=Afficher l'onglet ''Igtimi'' pour voir les options de compte qui déterminent quelles données Igtimi seront prises en compte. importWindFromIgtimi=Importer le vent depuis Igtimi -errorImportingIgtimiWind=Erreur lors de l''importation des données du vent depuis Igtimi : {0} +errorImportingIgtimiWind=Erreur lors de l'importation des données du vent depuis Igtimi : {0} resultFromIgtimiWindImport=Le nombre suivant de points vent ont été importés pour les courses référencées : {0} -timeToStart={0} jusqu''au départ +timeToStart={0} jusqu'au départ timeSinceStart={0} depuis le départ -distanceToLine=Distance jusqu''à la ligne de départ -beatAngleTooltip=L''angle entre la direction du concurrent et le vent. -beatAngle=Angle d''attaque +distanceToLine=Distance jusqu'à la ligne de départ +beatAngleTooltip=L'angle entre la direction du concurrent et le vent. +beatAngle=Angle d'attaque showBoatClassChartsLabel=Vous pouvez également afficher le diagramme global pour les catégories de bateau disponibles. showDiagram=Afficher diagramme runAutomaticallyTooltip=Exécutez la requête automatiquement, par exemple après avoir modifié les statistiques ou le regroupement. -rerunQueryAfterRefreshTooltip=Réexécute la requête après l''actualisation des tables. +rerunQueryAfterRefreshTooltip=Réexécute la requête après l'actualisation des tables. queryDefinitionProvider=Fournisseur de définitions de requêtes statisticProvider=Fournisseur de statistiques calculateThe=Calculer le/la @@ -1045,22 +1045,22 @@ remove_what=Supprimer {0} pleaseEnterA=Veuillez saisir un(e) {0} pingPosition=Effectuez un test ping pour la position {0}. pleaseEnterAValidValueFor=Saisissez une valeur valide pour {0} ({1}). -copyCourseAndCompetitors=Copier le parcours et les concurrents dans d''autres courses +copyCourseAndCompetitors=Copier le parcours et les concurrents dans d'autres courses setTrackingTimes=Définissez les durées de suivi. nowSelectRaceColumnAndFleetToCopyTo=Sélectionnez maintenant la colonne de la course et la flotte auxquelles le parcours doit être copié. selectRowInTableToCopyCourse=Sélectionnez une seule ligne dans la table vers laquelle le parcours doit être copié. -deviceId=ID de l''appareil -deviceType=Type d''appareil +deviceId=ID de l'appareil +deviceType=Type d'appareil mappedToType=Mappé au type mappedTo=Mappé à -deviceMappings=Mappages d''appareils -atMostOneEndOfTheTimeRangeMayBeOpen=Au moins une extrémité de l''intervalle de temps du mappage doit rester ouverte (ne pas configurer). -pleaseSelectAnItemToMapTo=Sélectionnez un élément auquel mapper l''appareil. +deviceMappings=Mappages d'appareils +atMostOneEndOfTheTimeRangeMayBeOpen=Au moins une extrémité de l'intervalle de temps du mappage doit rester ouverte (ne pas configurer). +pleaseSelectAnItemToMapTo=Sélectionnez un élément auquel mapper l'appareil. device=Appareil timeRange=Intervalle de temps -closeTimeRange=Fermer extrémité ouverte de l''intervalle de temps -setClosingTimePoint=Définir une heure de fin pour l''intervalle de temps ouvert -startOfTimeRangeMustLieBeforeEnd=Le début de l''intervalle de temps doit se situer avant sa fin. +closeTimeRange=Fermer extrémité ouverte de l'intervalle de temps +setClosingTimePoint=Définir la fin de l'intervalle de temps ouvert +startOfTimeRangeMustLieBeforeEnd=Le début de l'intervalle de temps doit se situer avant sa fin. overallProgress=Progression générale eventOverview=Synthèse de la manifestation start=Départ @@ -1068,12 +1068,12 @@ showAddedScores=Afficher scores ajoutés pour chaque entrée du palmarès ratio=ratio importWind=Importer vent importWindTooltip=Si vous décochez cette option, cela réduira considérablement le volume de données transféré. -importDeviceConfigurations=Importer configurations de l''appareil -importDeviceConfigurationsTooltip=Si vous cochez cette option, TOUTES les configurations de l''appareil seront importées dans le serveur distant. -authorName=Nom de l''auteur -authorPriority=Priorité de l''auteur +importDeviceConfigurations=Importer configurations de l'appareil +importDeviceConfigurationsTooltip=Si vous cochez cette option, TOUTES les configurations de l'appareil seront importées dans le serveur distant. +authorName=Nom de l'auteur +authorPriority=Priorité de l'auteur removeDenotation=Supprimer marquage -competitorRegistrationsMissingProceed=Des inscriptions de concurrents sont manquantes pour au moins l''une des courses sélectionnées ({0}). Voulez-vous quand même continuer ? +competitorRegistrationsMissingProceed=Des inscriptions de concurrents sont manquantes pour au moins l'une des courses sélectionnées ({0}). Voulez-vous quand même continuer ? pleaseSelectAControlPoint=Sélectionnez un point de contrôle. twoMarkControlPoint=Point de contrôle à deux marques registeredCompetitors=Concurrents inscrits @@ -1089,10 +1089,10 @@ availableLeaderboardGroups=Groupes de palmarès disponibles leaderboardGroupsOfSelectedEvent=Groupe de palmarès affectés à la manifestation addRaces=Ajouter des courses withNamePrefix=avec préfixe de nom -pleaseSelectASeriesFirst=Sélectionnez d''abord une série. +pleaseSelectASeriesFirst=Sélectionnez d'abord une série. upcommingEventStartsInDays=dans {0,number} jours upcommingEventStartsInDays[one]=demain -upcommingEventStartsInDays[none]=aujourd''hui +upcommingEventStartsInDays[none]=aujourd'hui sharingMailTooltip=Partager par e-mail sharingTwitterTooltip=Partager sur Twitter sharingFacebookTooltip=Partager sur Facebook @@ -1101,7 +1101,7 @@ eventSharingShortText={0} dans {1} le {2} #String eventSharingLongText(String eventName, String venue, String dateString, String url); eventSharingLongText=Je voudrais partager {0} dans {1} le {2}. Détails : \n{3} #String seriesSharingLongText(String seriesName, String url); -seriesSharingLongText=J''aimerai partager la série {0}. Détails : {1} +seriesSharingLongText=J'aimerai partager la série {0}. Détails : {1} #String seriesSharingShortText(String seriesName); seriesSharingShortText={0} competitorsAnalytics=Analyse des concurrents @@ -1112,11 +1112,11 @@ videos=Vidéos image=Image images=Images video=Vidéo -flagImageURL=URL d''image de pavillon (résolution d''image à 18x12px) -imageURLs=URL d''image +flagImageURL=URL d'image de pavillon (résolution d'image à 18x12px) +imageURLs=URL d'image videoURLs=URL de vidéo -sponsorImageURLs=URL d''image du sponsor -invalidSelection=La sélection actuelle n''est pas valide. +sponsorImageURLs=URL d'image du sponsor +invalidSelection=La sélection actuelle n'est pas valide. advancePassId=ID de passage avancé pleaseSelectAScoringResult=Sélectionnez un résultat... timeZone=Fuseau horaire @@ -1124,30 +1124,30 @@ eventOfficialWebsiteURL=URL du site Web officiel eventBaseURL=URL de base de la manifestation (http://something.sapsailing.com) eventSailorsInfoWebsiteURL=URL du site Web avec infos pour les concurrents eventOverviewURL=URL de synthèse de la manifestation -eventLogoImageURL=URL de l''image du logo +eventLogoImageURL=URL de l'image du logo showPingMarkMappings=Afficher mappages pour marques avec pings effectués regattaNameMustNotContainSlashes=Le nom de la régate ne doit pas contenir de barres obliques. showNumberOfRacesScored=Nombre de courses avec points -errorFetchingWindStreamletData=Erreur lors de l''accès aux données du couloir de vent : {0} +errorFetchingWindStreamletData=Erreur lors de l'accès aux données du couloir de vent : {0} showWindStreamletOverlay=Afficher superposition des couloirs de vent showWindStreamletColors=Colorer les couloirs de vent en fonction de sa vitesse 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. +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 +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 non persistante. Cela signifie que la nouvelle valeur sera oubliée une fois que le serveur sera relancé. +setStartTimeReceivedDescription=Définit l'heure de départ reçue de la course suivie sélectionnée non persistante. Cela signifie que la nouvelle valeur sera oubliée une fois que le serveur sera relancé. lastScoreCorrectionsTime=Dernière heure de correction du score lastScoreCorrectionsComment=Dernier commentaire sur la correction du score setTimeToNow=Définir heure sur "maintenant" -useStartTimeInference=Utiliser l''interférence temporelle des passages des marques de départ -controlTrackingFromStartAndFinishTimes=Contrôler suivi à partir des heures de départ et d''arrivée -numberOfQueueMessagesSent=Nombre de messages en file d''attente envoyés +useStartTimeInference=Utiliser l'interférence temporelle des passages des marques de départ +controlTrackingFromStartAndFinishTimes=Contrôler suivi à partir des heures de départ et d'arrivée +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 +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 @@ -1179,16 +1179,16 @@ advanced=Avancé basedOn=basé sur retrieveWith=Récupérer avec mappingDetails=Détails du mappage -deviceMappingQrCodeExplanation=Si vous utilisez l''application de suivi, vous pouvez également ajouter le mappage de l''appareil en sélectionnant un concurrent/une marque, en définissant des heures de départ et d''arrivée et en scannant ce code QR. +deviceMappingQrCodeExplanation=Si vous utilisez l'application de suivi, vous pouvez également ajouter le mappage de l'appareil en sélectionnant un concurrent/une marque, en définissant des heures de départ et d'arrivée et en scannant ce code QR. qrCode=Code QR enterCourseAreaName=Saisissez le nom de la zone de course... enterCourseName=Saisissez le nom de la course... -enterImageURL=Saisissez l''URL de l''image... -enterVideoURL=Saisissez l''URL de la vidéo... -enterSponsorImageURL=Saisissez l''URL de l''image du sponsor... +enterImageURL=Saisissez l'URL de l'image... +enterVideoURL=Saisissez l'URL de la vidéo... +enterSponsorImageURL=Saisissez l'URL de l'image du sponsor... enterRaceName=Saisissez le nom du parcours... -serverError=Une erreur s''est produite lors de la tentative de contact du serveur. Vérifiez la connexion réseau et réessayez. -remoteProcedureCall=Procédure d''appel distante +serverError=Une erreur s'est produite lors de la tentative de contact du serveur. Vérifiez la connexion réseau et réessayez. +remoteProcedureCall=Procédure d'appel distante serverReplies=Réponses du serveur errorCommunicatingWithServer=Erreur lors de la communication avec le serveur userManagement=Gestion des utilisateurs @@ -1204,7 +1204,7 @@ autoplaySettings=Options de lecture automatique startBrowserFullscreen=Lancer navigateur en mode plein écran switchToLiveRaceAutomatically=Passer automatiquement à la course en direct timeBeforeRaceStart=durée avant le départ de la course (en secondes) -errorTryingToGetEvents=Erreur lors de la tentative d''accès aux manifestations : {0} +errorTryingToGetEvents=Erreur lors de la tentative d'accès aux manifestations : {0} showXYDiagram=Afficher diagramme x-y xyDiagram=Diagramme x-y boatSpeed=Vitesse du bateau @@ -1215,47 +1215,47 @@ errorTryingToCreateNewEvent=Erreur lors de la tentative de création de la nouve createNewEvent=Créer manifestation noFleetsDefined=Aucune flotte définie successfullyCreatedRegattas=Création des régates réussie -errorTryingToRegisterRacesForTracking=Erreur lors de la tentative d''enregistrement des courses {0} pour le suivi : {1}. Vérifiez la syntaxe de l''URL stockée/du direct. +errorTryingToRegisterRacesForTracking=Erreur lors de la tentative d'enregistrement des courses {0} pour le suivi : {1}. Vérifiez la syntaxe de l'URL stockée/du direct. errorDeterminingPolarAvailability=Erreur lors de la détermination de la disponibilité des données polaires/VPP pour la course {0} : {1} error=Erreur fileStorage=Stockage du fichier active=Actif -scoringSchemeHighPointEssOverallDescription=Score en points. Le vainqueur d''un Act totalise 10 points, le 2e - 9 points, etc. En cas d''égalité au classement général des Extreme Sailing Series, la victoire est accordée au concurrent ayant remporté le plus d''Act. Si l''égalité persiste, le résultat obtenu au dernier Act sera utilisé. +scoringSchemeHighPointEssOverallDescription=Score en points. Le vainqueur d'un Act totalise 10 points, le 2e - 9 points, etc. En cas d'égalité au classement général des Extreme Sailing Series, la victoire est accordée au concurrent ayant remporté le plus d'Act. Si l'égalité persiste, le résultat obtenu au dernier Act sera utilisé. timeBetweenRaceStartAndCompetitorStartInSeconds=Décalage avec le départ timeBetweenRaceStartAndCompetitorStartInSecondsTooltip=Durée écoulée entre le départ de la course et le moment auquel le concurrent a passé le point de cheminement du départ. Une durée négative suggère un OCS (départ prématuré). useInternalAlgorithm=Utiliser algorithme de passage de marque interne editMarkPassings=Modifier passages des marques editMarkPositions=Modifier positions des marques removeFixedPassings=Supprimer passage de marque fixé -setFixedPassing=Définir l''heure comme passage de marque +setFixedPassing=Définir l'heure comme passage de marque setSuppressedPassing=Supprimer passage de marque en commençant par marque actuelle removeSuppressedPassing=Supprimer passage de marque supprimé -warningSettingFixedPassing=L''heure à laquelle le point de cheminement {0} a été passé ne peut pas être antérieure à l''heure de passage du point de cheminement précédent, ni postérieure à l''heure de passage du point de cheminement suivant. +warningSettingFixedPassing=L'heure à laquelle le point de cheminement {0} a été passé ne peut pas être antérieure à l'heure de passage du point de cheminement précédent, ni postérieure à l'heure de passage du point de cheminement suivant. errorRemovingFixedPassing=Erreur lors de la suppression du passage de marque fixé : {0} errorSettingFixedPassing=Erreur lors de la définition du passage de marque fixé : {0} errorSuppressingPassing=Erreur lors de la suppression des passages de marques : {0} errorRemovingSupressedPassing=Erreur lors de la suppression des passages de marques supprimés : {0} -errorTryingToObtainMarkPassing=Erreur lors de la tentative d''obtention des passages de marques : {0} -errorTryingToObtainRaceLogMarkPassingData=Erreur lors de la tentative d''obtention des données de passages de marques du journal de course : {0} +errorTryingToObtainMarkPassing=Erreur lors de la tentative d'obtention des passages de marques : {0} +errorTryingToObtainRaceLogMarkPassingData=Erreur lors de la tentative d'obtention des données de passages de marques du journal de course : {0} email=E-mail pleaseEnterAnEmail=Saisissez un e-mail. inviteCompetitors=Inviter des concurrents inviteSelectedCompetitors=Inviter concurrents sélectionnés -notAllCompetitorsProvideEmail=Les concurrents n''ont pas tous fourni un e-mail. -sendingMailsFailed=Échec de l''envoi des e-mails +notAllCompetitorsProvideEmail=Les concurrents n'ont pas tous fourni un e-mail. +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 +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é. +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é showCompetitorSailIdColumn=ID de voile -showCompetitorSailIdColumnTooltip=Affiche l''ID de voile 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. +showCompetitorSailIdColumnTooltip=Affiche l'ID de voile 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. showCompetitorFullNameColumn=Nom complet du concurrent alwaysShowCompetitorNationalityColumn=Afficher toujours la nationalité du concurrent -alwaysShowCompetitorNationalityColumnTooltip=Si disponibles, afficher les deux : le drapeau national ainsi que l''image du concurrent +alwaysShowCompetitorNationalityColumnTooltip=Si disponibles, afficher les deux : le drapeau national ainsi que l'image du concurrent loadingDimensionValues=Chargement des valeurs de dimension runningQuery=Requête en cours inviteBuoyTenders=Inviter navire baliseur @@ -1263,15 +1263,15 @@ orMultipleEmails=ou plusieurs adresses e-mails séparées par des virgules courseOverGroundTrueDegreesTooltip=Route fond vraie en degrés courseOverGroundTrueDegrees=Route fond distanceIncludingGateStartInMeters=Distance (si départ au lièvre) -distanceTraveledIncludingGateStartTooltip=La distance naviguée du départ de la portion de parcours jusqu''à sa fin\nou jusqu''à l''heure actuelle (si la portion de parcours n''est pas terminée).\nSi la portion de parcours inclut un départ au lièvre, la distance de la bouée de ligne jusqu''à la position de départ est incluse \npour permettre de comparer les concurrents même si leur départ ne s''est pas fait à la même heure. -raceDistanceTraveledIncludingGateStartTooltip=La distance naviguée du départ de la course jusqu''à sa fin\nou jusqu''à l''heure actuelle (si la course n''est pas terminée).\nEn cas de départ au lièvre, la distance de la bouée de ligne jusqu''à la position de départ est incluse \npour permettre de comparer les concurrents même si leur départ ne s''est pas fait à la même heure. +distanceTraveledIncludingGateStartTooltip=La distance naviguée du départ de la portion de parcours jusqu'à sa fin\nou jusqu'à l'heure actuelle (si la portion de parcours n'est pas terminée).\nSi la portion de parcours inclut un départ au lièvre, la distance de la bouée de ligne jusqu'à la position de départ est incluse \npour permettre de comparer les concurrents même si leur départ ne s'est pas fait à la même heure. +raceDistanceTraveledIncludingGateStartTooltip=La distance naviguée du départ de la course jusqu'à sa fin\nou jusqu'à l'heure actuelle (si la course n'est pas terminée).\nEn cas de départ au lièvre, la distance de la bouée de ligne jusqu'à la position de départ est incluse \npour permettre de comparer les concurrents même si leur départ ne s'est pas fait à la même heure. results=Résultats groupName=Nom du groupe valueAscending=Valeur (ascendant) valueDescending=Valeur (descendant) sortBy=Trier par dashboardHeader=Tableau de bord -dashboardNoWindBotAvailableHeader=Le bot du vent n''est pas disponible. +dashboardNoWindBotAvailableHeader=Le bot du vent n'est pas disponible. dashboardNoWindBotAvailableMessage=Pour pouvoir recevoir des données de vent depuis des unités de mesure du vent, assurez-vous que le bot du vent est allumé et connecté à SAP Sailing Analytics. dashboardWindBot=Bot du vent dashboardTrueWindSpeed=Vitesse vent réel @@ -1281,16 +1281,16 @@ dashboardTrueWindDirectionUnit=deg dashboardLiveWind=en direct dashboardAverageWind=moyenne dashboardAverageWindMinutes=({0} minutes) -dashboardWindChartHint=Touchez le graphique pour modifier l''intervalle. +dashboardWindChartHint=Touchez le graphique pour modifier l'intervalle. dashboardSelectCompetitor=Sélectionner concurrent dashboardStartAnalysesHeader=Analyses de départ dashboardNewStartAnalysisAvailable=Nouvelle analyse de départ disponible dashboardNoStartAnalysesAvailableHeader=Aucune analyse de départ disponible -dashboardNoStartAnalysesAvailableMessage=Une analyse de départ est créée à partir de chaque départ de course. Veuillez patienter jusqu''à ce que la course commence. -dashboardNoStartlineAdvantagesByWindAvailableHeader=Aucun avantage de ligne de départ n''est disponible. -dashboardNoStartlineAdvantagesByWindAvailableMessage=Pour pouvoir calculer l''avantage de la ligne de départ, un parcours doit être défini par le comité de course. -dashboardNoStartlineAdvantagesByGeometryAvailableHeader=Aucun avantage de ligne de départ n''est disponible. -dashboardNoStartlineAdvantagesByGeometryAvailableMessage=Pour pouvoir calculer l''avantage de la ligne de départ, un parcours doit être défini par le comité de course. +dashboardNoStartAnalysesAvailableMessage=Une analyse de départ est créée à partir de chaque départ de course. Veuillez patienter jusqu'à ce que la course commence. +dashboardNoStartlineAdvantagesByWindAvailableHeader=Aucun avantage de ligne de départ n'est disponible. +dashboardNoStartlineAdvantagesByWindAvailableMessage=Pour pouvoir calculer l'avantage de la ligne de départ, un parcours doit être défini par le comité de course. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=Aucun avantage de ligne de départ n'est disponible. +dashboardNoStartlineAdvantagesByGeometryAvailableMessage=Pour pouvoir calculer l'avantage de la ligne de départ, un parcours doit être défini par le comité de course. dashboardStartlineAdvantagesByWindHeader=Avantages de ligne de départ par vent dashboardStartlineAdvantageByGeometryHeader=Avantage de ligne de départ par géométrie dashboardRankAtFirstMark=Place à la première marque @@ -1310,12 +1310,12 @@ currentFilterSelection=Sélection du filtre actuel notCapableOfGeneratingACodeForIdentifier=Je ne suis pas capable de générer un code pour cet identifiant. serverUrl=URL du serveur rotatedFromTrueNorth=Pivoté de {0} degrés à partir du vrai Nord. -clickToToggleWindUp=Touchez/Cliquez pour basculer entre l''affichage orienté nord et l''affichage par rapport au sens du vent +clickToToggleWindUp=Touchez/Cliquez pour basculer entre l'affichage orienté nord et l'affichage par rapport au sens du vent clickToToggleWindStreamlets=Touchez/cliquez pour afficher ou masquer les couloirs de vent. startLineToFirstMarkTriangle=Distance entre le départ et la première marque ({0} m) -dataMiningComponentsHaveBeenUpdated=Les composants d''exploration de données ont été mis à jour. -dataMiningComponentsNeedReloadDialogMessage=Cliquez sur Recharger pour recharger les composants maintenant. Les données actuellement affichées seront ignorées et une requête par défaut sera exécutée.n\Cliquez sur Fermer pour ne rien faire. L''exploration de données ne fonctionnera pas correctement tant que les composants n''auront pas été rechargés. -noDataForEvent=Il n''y a pas encore de données pour cette manifestation. +dataMiningComponentsHaveBeenUpdated=Les composants d'exploration de données ont été mis à jour. +dataMiningComponentsNeedReloadDialogMessage=Cliquez sur Recharger pour recharger les composants maintenant. Les données actuellement affichées seront ignorées et une requête par défaut sera exécutée.n\Cliquez sur Fermer pour ne rien faire. L'exploration de données ne fonctionnera pas correctement tant que les composants n'auront pas été rechargés. +noDataForEvent=Il n'y a pas encore de données pour cette manifestation. countriesCount={0,number} pays countriesCount[one]={0,number} pays racesCount={0,number} courses @@ -1334,7 +1334,7 @@ matcher=Comparateur any=Tout urlProviders=Fournisseurs de résultats basés sur une URL pleaseSelectAURLProvider=Sélectionnez un fournisseur de résultat basé sur une URL… -sampleURL=Exemple d''URL : {0} +sampleURL=Exemple d'URL : {0} sapSportsOn=SAP Sports sur followSapSports=Suivre SAP Sports liveNow=En direct @@ -1356,9 +1356,9 @@ rankingMetric=Classement oneDesignRankingMetric=Monotype  orcPerformanceCurveRankingMetric=Courbe de performance ORC timeOnTimeAndDistanceRankingMetric=Temps sur temps/Temps sur distance -oneDesignRankingMetricDescription=Monotype : le vainqueur est le premier à franchir la ligne.\nLe classement se base sur les positions au vent (dans le lit du vent/vent arrière) ou en fonction de la position dans la course (jusqu''à atteindre un point). -orcPerformanceCurveRankingMetricDescription=Courbe de performance ORC : procédé de distribution des handicaps sophistiqué qui accorde des compensations de temps en fonction d''un VPP/polaire, en imaginant des angles de portions de parcours prédéfinis par rapport au vent.\nEn fonction de ces compensations, un "vent implicite" est calculé et sert de base au classement.\nLe vent implicite peut être calculé à n''importe quel moment dans la course et sert alors de base pour le classement dans la course. -timeOnTimeAndDistanceRankingMetricDescription=Temps sur temps/Temps sur distance : classement final par temps calculé ;\nle temps est calculé en appliquant, de façon facultative, un facteur au temps réel (1.0 par défaut)\net en soustrayant une compensation en secondes par mille marin,\nappliqué à la longueur de la course.\nLe classement est effectué sur la base de l''arrivée estimée selon la position actuelle du bateau le plus rapide\nen supposant le VMG/VMC moyen. +oneDesignRankingMetricDescription=Monotype : le vainqueur est le premier à franchir la ligne.\nLe classement se base sur les positions au vent (dans le lit du vent/vent arrière) ou en fonction de la position dans la course (jusqu'à atteindre un point). +orcPerformanceCurveRankingMetricDescription=Courbe de performance ORC : procédé de distribution des handicaps sophistiqué qui accorde des compensations de temps en fonction d'un VPP/polaire, en imaginant des angles de portions de parcours prédéfinis par rapport au vent.\nEn fonction de ces compensations, un "vent implicite" est calculé et sert de base au classement.\nLe vent implicite peut être calculé à n'importe quel moment dans la course et sert alors de base pour le classement dans la course. +timeOnTimeAndDistanceRankingMetricDescription=Temps sur temps/Temps sur distance : classement final par temps calculé ;\nle temps est calculé en appliquant, de façon facultative, un facteur au temps réel (1.0 par défaut)\net en soustrayant une compensation en secondes par mille marin,\nappliqué à la longueur de la course.\nLe classement est effectué sur la base de l'arrivée estimée selon la position actuelle du bateau le plus rapide\nen supposant le VMG/VMC moyen. timeOnTimeFactor=Facteur temps sur temps (ToT) timeOnDistanceAllowanceInSecondsPerNauticalMile=Compensation temps sur distance (ToD) timeOnTimeFactorTooltip=Facteur temps sur temps ; le temps réel est multiplié par ce facteur dans la formule de temps calculé. @@ -1366,7 +1366,7 @@ timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip=Compensation temps sur di calculatedTimeTraveled=Temps calculé calculatedTimeTraveledTooltip=Temps calculé selon le handicap du concurrent \nbasé sur le temps à partir du départ de la course et de la distance parcourue (au vent). raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Temps calculé @ par rapport au plus rapide -raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Temps calculé selon l''arrivée estimée du concurrent qui est actuellement en tête de la course ; \nestimation basée sur la VMG dans la portion de parcours actuelle, équivaut à la performance (calculée) du bateau le plus rapide dans toutes les portions de parcours suivantes. +raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Temps calculé selon l'arrivée estimée du concurrent qui est actuellement en tête de la course ; \nestimation basée sur la VMG dans la portion de parcours actuelle, équivaut à la performance (calculée) du bateau le plus rapide dans toutes les portions de parcours suivantes. sailorInfo=Informations concurrents sailorInfoLongText=Résultats officiels, réclamations, météo marine eventQuickfinder=Quickfinder manifestation @@ -1376,7 +1376,7 @@ racesQuickfinder=Quickfinder courses profileQuickfinder=Quickfinder profil statistics=Statistiques impressions=Impressions -notAvailableOnMobileMessage=Ce contenu n''existe pas en version mobile. \nPasser à la version bureau ? +notAvailableOnMobileMessage=Ce contenu n'existe pas en version mobile. \nPasser à la version bureau ? gotoDesktop=Aller à la version bureau goBack=Retour showAllX=Afficher tout {0} @@ -1388,7 +1388,7 @@ numberWindFixes=Points vent sailedMiles=Milles navigués millionValue={0,number,#0.0} mil billionValue={0,number,#0.0} bil -noResults=Aucun résultat disponible. Vous pouvez consulter les ''Informations concurrents''. +noResults=Aucun résultat disponible. Vous pouvez consulter les 'Informations concurrents'. noNews=Aucune actualité disponible. pointsValue={0,number,#0.00} openLeaderboard=Ouvrir palmarès @@ -1406,7 +1406,7 @@ courseGeometry=Géométrie du parcours degreesToWind={0}° au vent miniLeeaderboardLegendText=Affiche les points associés au nombre de courses par concurrent currentOfTotal={0,number}/{1,number} -noFinishedRaces=Aucune course terminée pour l''instant. +noFinishedRaces=Aucune course terminée pour l'instant. racesOverview=Synthèse des courses listFormatLabel=Format de liste competitionFormatLabel=Format de compétition @@ -1428,7 +1428,7 @@ eventsHaveTakenPlace={0} manifestations ont eu lieu. eventsHaveTakenPlace[one]=Une manifestation a eu lieu. raceOffice=Bureau de course analyze=Analyser -dataMiningSettings=Options de l''exploration de données +dataMiningSettings=Options de l'exploration de données multiResultsPresenter=Visualiseur de résultats multiples plainResultsPresenter=Visualiseur de résultats bruts resultsChart=Graphique des résultats @@ -1455,28 +1455,28 @@ resultsFoundForSearch={0,number} résultats trouvés pour ''{1}'' resultsFoundForSearch[one]={0,number} résultat trouvé pour ''{1}'' runPredefinedQuery=Exécuter requête prédéfinie selectPredefinedQuery=Sélectionner requête prédéfinie -predefinedQueryRunner=Outil d''exécution de requêtes prédéfinies +predefinedQueryRunner=Outil d'exécution de requêtes prédéfinies developerOptions=Options développeur copyToClipboard=Copier dans le presse-papiers code=Code useClassGetName=Utilisez Class.getName() pour les noms des types. -useClassGetNameTooltip=Plus stable face aux modifications dans la base de code, mais le fichier de script peut uniquement être utilisé dans l''étendue où les classes sont disponibles. +useClassGetNameTooltip=Plus stable face aux modifications dans la base de code, mais le fichier de script peut uniquement être utilisé dans l'étendue où les classes sont disponibles. useStringLiterals=Utiliser littéraux de chaîne pour les noms de types useStringLiteralsTooltip=Le fichier de script peut être utilisé partout, mais sera corrompu si la base de code change. errorLoadingDataWithTryAgain=Erreur lors du chargement des données. Nouvel essai dans quelques minutes. addGalleryPhoto=Ajouter photo de la galerie -addStageImage=Ajouter image d''étape -addTeaserImage=Ajouter image d''accroche +addStageImage=Ajouter image d'étape +addTeaserImage=Ajouter image d'accroche addEventLogo=Ajouter logo de la manifestation noImagesDefinedYet=Aucune image définie pour le moment -imageSizeError=La taille de l''image {0} ne correspond pas. La largeur doit être comprise entre {1} et {2} pixels et la hauteur entre {3} et {4} pixels. -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é. +imageSizeError=La taille de l'image {0} ne correspond pas. La largeur doit être comprise entre {1} et {2} pixels et la hauteur entre {3} et {4} pixels. +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é. 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 ? -warningDirectCompetitorRegistration=Avertissement : cette option engendrera l''inscription des concurrents de cette course séparément à chaque course. Si les concurrents sont inscrits à une régate, ils ne seront pas automatiquement inscrits à cette course. -warningRegattaCompetitorRegistration=Avertissement : ceci réactivera l''inscription des concurrents à la régate. Toutes les inscriptions à la régate seront automatiquement utilisées comme inscriptions à cette course. +doYouWantToDisableCompetitorsRegistrationsOnTheRace=Voulez-vous désactiver l'inscription des concurrents pour la course ? +warningDirectCompetitorRegistration=Avertissement : cette option engendrera l'inscription des concurrents de cette course séparément à chaque course. Si les concurrents sont inscrits à une régate, ils ne seront pas automatiquement inscrits à cette course. +warningRegattaCompetitorRegistration=Avertissement : ceci réactivera l'inscription des concurrents à la régate. Toutes les inscriptions à la régate seront automatiquement utilisées comme inscriptions à cette course. competitorRegistrationsOnRaceDisabled=Les inscriptions des concurrents sont désactivées pour cette course. Pour les activer, cochez la case sur la gauche. warningForDisabledCompetitors=Les concurrents suivants ne peuvent pas être inscrits à cette course : {0} competitorToolTipMessage={0} a déjà été affecté à la flotte {2} dans la course {3} et ne peut donc pas être affecté à la flotte {1} dans la même course. @@ -1487,22 +1487,22 @@ requiresValidRegatta=Pour identifier la course à afficher, cette page nécessit couldNotObtainRace=Impossible de trouver une course ayant le nom {1} pour la flotte {2} pour une régate ayant le nom {0} : {3} errorTryingToCreateEmbeddedMap=Erreur lors de la tentative de création de la carte intégrée : {0} topN={0} meilleurs -transparentBufferLineOnHover=Lignes tampons transparentes lors du passage du curseur au-dessus des lignes d''aide +transparentBufferLineOnHover=Lignes tampons transparentes lors du passage du curseur au-dessus des lignes d'aide bufferLineStrokeWeight=Épaisseur de la ligne tampon profile=Profil showOnlyCompetitorsOfLog=Afficher uniquement concurrents inscrits dans le journal confirmLosingCompetitorEditsWhenTogglingLogBasedView=Cette action réinitialisera les modifications non enregistrées apportées aux concurrents.\nVoulez-vous vraiment continuer ? removalOfMarkDisabledMayBeUsedInRaces=Suppression désactivée, marques utilisées dans les courses {0} createDefaultLeaderboardGroup=Voulez-vous créer un groupe de palmarès par défaut pour votre manifestation ? -pleaseCreateAtLeastOneMappingBy=Créez au moins un mappage en sélectionnant d''abord une piste sur la gauche, puis une marque ou un concurrent sur la droite. +pleaseCreateAtLeastOneMappingBy=Créez au moins un mappage en sélectionnant d'abord une piste sur la gauche, puis une marque ou un concurrent sur la droite. matcherType=Type de comparateur matchingDevices=Appareils correspondants addDevice=Ajouter appareil -createDeviceConfiguration=Créer configuration d''appareil -forWhichDeviceShouldConfigurationApply=Indiquez l''appareil auquel la configuration doit s''appliquer. +createDeviceConfiguration=Créer configuration d'appareil +forWhichDeviceShouldConfigurationApply=Indiquez l'appareil auquel la configuration doit s'appliquer. create=Créer thereIsAlreadyAConfigurationForThisDevice=Une configuration existe déjà pour cet appareil. -enterDeviceIdentifierName=Saisissez un nom d''identifiant. +enterDeviceIdentifierName=Saisissez un nom d'identifiant. administration=Administration pleaseSelectALeaderboardGroup=Sélectionnez un groupe de palmarès. linkLeaderboardToLeaderboardGroupOfEvent=Liez le palmarès au groupe de palmarès de la manifestation. @@ -1511,19 +1511,19 @@ failedToLinkLeaderboardToLeaderboardGroup=La liaison du palmarès {0} au groupe createDefaultRegatta=Créer régate par défaut doYouWantToCreateADefaultRegatta=Voulez-vous créer une régate par défaut ? defaultLocale=Par défaut -defaultSailorsInfoLinkInfoText=Le système utilise le lien par défaut, sauf si une version spécifique de la langue existe. Si aucun lien par défaut n''existe, aucun lien n''est associé aux langues pour lesquelles aucun lien spécifique n''a été défini. +defaultSailorsInfoLinkInfoText=Le système utilise le lien par défaut, sauf si une version spécifique de la langue existe. Si aucun lien par défaut n'existe, aucun lien n'est associé aux langues pour lesquelles aucun lien spécifique n'a été défini. qrSync=Synchronisation code QR -thereIsNoIdentifierSet=Aucun identifiant n''est défini. -couldNotObtainAccessTokenForUser=Impossible d''obtenir un jeton d''accès pour l''utilisateur {0} -raceManagerDeviceName=Nom de l''appareil +thereIsNoIdentifierSet=Aucun identifiant n'est défini. +couldNotObtainAccessTokenForUser=Impossible d'obtenir un jeton d'accès pour l'utilisateur {0} +raceManagerDeviceName=Nom de l'appareil serverURLInvalid=Saisissez une URL de serveur valide. serverURLEmpty=URL de serveur vide marks=Marques addNewFix=Ajouter nouveau point -pleaseSelectOtherTimepoint=Sélectionnez un autre point dans le temps. Il existe déjà un point pour le point dans le temps du curseur de temps. +pleaseSelectOtherTimepoint=Sélectionnez une autre heure. Il existe déjà un point à cette heure du curseur de temps. confirmMove=Confirmer déplacement confirmNewFix=Confirmer nouveau point -selectAFixPositionBy=Sélectionnez une position de point en faisant glisser la carte. Ensuite, confirmez ou annulez à l''aide des boutons ci-dessous. +selectAFixPositionBy=Sélectionnez une position de point en faisant glisser la carte. Ensuite, confirmez ou annulez à l'aide des boutons ci-dessous. pleaseSelectAMark=Sélectionnez une marque dans la liste sur la gauche. markFixes=Points de marques playstoreCampaign=utm_source=sapsailing&utm_medium=solutions&utm_content=2016.02&utm_campaign=solutions&pcampaignid=2016.sapsailing.solutions @@ -1536,17 +1536,17 @@ appstoreBadgeSuffix=_fr distanceFromAveragePosition=Distance de la position moyenne useATouchOptimizedUI=Utilisez une interface utilisateur tactile optimisée pour déplacer le point. deleteFix=Supprimer point -theDeletionOfThisFix=La suppression de ce point n''est pas possible actuellement. +theDeletionOfThisFix=La suppression de ce point n'est pas possible actuellement. loadingMarkFixes=Chargement de points de marques... fixSuccessfullyAdded=Ajout du point réussi. fixPositionSuccessfullyEdited=Modification de la position du point réussie. -fixSuccessfullyRemoved=Suppression du point réussie. +fixSuccessfullyRemoved=Suppression du point réussie. Supprimez la course et lancez de nouveau le suivi de cette course pour que la suppression du point prenne effet. dragToChangePosition=Glissez pour modifier la position.\nClic droit pour ouvrir le menu permettant la suppression. moveFix=Déplacer point manage2SailEvent=Manifestation Manage2Sail -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... +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 @@ -1554,7 +1554,7 @@ standaloneServer=Serveur autonome send=envoyer... passId=ID de passage createdAt=Créé le -logicalTimepoint=Période logique +logicalTimepoint=Heure logique info=Infos windFixes=Points vent twoXMark=2x marque @@ -1564,9 +1564,9 @@ init=Initialisation... connectionSetup=Établissement de la connexion connectionEstablish=Connexion en cours... transferStarted=Lecture des données -transferCompleted=Transfert des données terminé. Initialisation de l''opération d''importation. -importInit=Initialisation de l''importation -importWait=En attente de la fin d''autres opérations d''importation +transferCompleted=Transfert des données terminé. Initialisation de l'opération d'importation. +importInit=Initialisation de l'importation +importWait=En attente de la fin d'autres opérations d'importation importLeaderboardGroups=Importation de groupes de palmarès en cours... importWindTracks=Importation de pistes de vent en cours... importSensorFixes=Importation de points capteurs en cours... @@ -1609,7 +1609,7 @@ simulationLegendMixedLegText=Vent ambigu noTracksFound=Aucun suivi trouvé noRacesAvailable=Aucune course disponible loadingRegattasAndRaces=Chargement de régates et de courses -selectFromRacesWithOverlappingTimeRange=Sélectionnez parmi les courses dont l''intervalle de temps de la piste média se chevauche avec l''intervalle des courses auxquelles la piste doit être liée. +selectFromRacesWithOverlappingTimeRange=Sélectionnez parmi les courses dont l'intervalle de temps de la piste média se chevauche avec l'intervalle des courses auxquelles la piste doit être liée. finishTime=Arrivée à : {0} showCompetitorCharts=Afficher graphique de concurrents showWindChart=Afficher graphique du vent @@ -1629,30 +1629,30 @@ currentRideHeightInMeters=Hauteur pendant le planing currentRideHeightInMetersTooltip=Hauteur actuelle de planing currentOrAverageRideHeightInMeters=Hauteur pendant le planing (∅ à la fin) currentOrAverageRideHeightInMetersTooltip=Hauteur actuelle de planing en mètres avec la portion de parcours toujours en cours. Hauteur de planing moyenne après la fin de la portion de parcours. -pleaseCreateAtLeastOneMappingForCompetitor=Créez au moins un mappage en sélectionnant d''abord une piste sur la gauche, puis un concurrent sur la droite. +pleaseCreateAtLeastOneMappingForCompetitor=Créez au moins un mappage en sélectionnant d'abord une piste sur la gauche, puis un concurrent sur la droite. importAdditionalSensorData=Importer des données de capteurs supplémentaires watchLive=Regarder en direct raceAnalysis=Analyse de la course startAnalysis=Analyse du départ winningLanes=Voies gagnantes -maximumNumberOfDiscards=Nombre maximal d''éliminations +maximumNumberOfDiscards=Nombre maximal d'éliminations externalLinks=Liens externes urlForAllLanguages=URL pour toutes les langues urlForLanguage=URL pour la langue ''{0}'' notificationRegattaConfigurationUpdatedUsingByMarks=Configuration de régate active définie, en utilisant le concepteur de course « Par marques ». -warningOverrideRegattaConfigurationCourseDesignerToByMarks=La configuration de régate active existe déjà, mais avec l''option de concepteur de course erronée.\nSouhaitez-vous écraser l''option de concepteur de course et valider "Par marques" ? +warningOverrideRegattaConfigurationCourseDesignerToByMarks=La configuration de régate active existe déjà, mais avec l'option de concepteur de course erronée.\nSouhaitez-vous écraser l'option de concepteur de course et valider "Par marques" ? allRacesHaveBeenDenoted=Toutes les courses ont été marquées pour un suivi par journal de course. -chartSelectionHint=Astuce : Vous pouvez également utiliser le palmarès (sur l''onglet PALMARÈS) pour sélectionner les concurrents affichés dans le graphique. +chartSelectionHint=Astuce : Vous pouvez également utiliser le palmarès (sur l'onglet PALMARÈS) pour sélectionner les concurrents affichés dans le graphique. chooseALanguage=Sélectionner une langue solutions=Solutions blog=Blog officalEventWebsite=Site Web officiel de la manifestation -moreInfo=Plus d''infos +moreInfo=Plus d'infos viewAnalysis=Afficher analyses overallLeaderboard=Palmarès général pleaseTryAgain=Veuillez réessayer... reloadPage=Recharger la page -errorMessageLoadingData=Une erreur s''est produite pendant le chargement des données pour cette page. +errorMessageLoadingData=Une erreur s'est produite pendant le chargement des données pour cette page. regattaDetails=Détails de la régate chooseChartType=Sélectionnez le type de graphique. whatsNew=Nouveautés @@ -1682,7 +1682,7 @@ headerLogo=Sailing Analytics headerSearchPlaceholder=Rechercher mainEventShowAll=Afficher toutes les manifestations mainEventTitle=Manifestations les plus récentes du monde de la voile -mainMediaSubtitle=Oubliez le quotidien grâce à des images époustouflantes de l''édition la plus récente de votre manifestation de voile préférée. +mainMediaSubtitle=Oubliez le quotidien grâce à des images époustouflantes de l'édition la plus récente de votre manifestation de voile préférée. mainMediaTitle=Les photographes adorent la voile. mainMediaVideosSubtitle=Plongez dans le monde de la voile et accédez à encore plus de vidéos de nos manifestations les plus récentes. mainMediaVideosTitle=Vidéos récentes @@ -1698,11 +1698,11 @@ solutionsBuoyPingerHeadline=SAP Sailing Buoy Pinger solutionsPostHeadline=Analyses post-course solutionsSimulatorHeadline=Simulateur de stratégies sapInSailing=SAP in Sailing -contentSapInSailing1=Pour SAP, la voile est une plate-forme idéale pour présenter des solutions et permettre à la discipline d''atteindre une autre dimension. L''engagement de SAP dans cette discipline a transformé l''expérience de la voile grâce à des outils qui : +contentSapInSailing1=Pour SAP, la voile est une plate-forme idéale pour présenter des solutions et permettre à la discipline d'atteindre une autre dimension. L'engagement de SAP dans cette discipline a transformé l'expérience de la voile grâce à des outils qui : contentSapInSailing2=- aident les marins à analyser leur performance et à optimiser leur stratégie -contentSapInSailing3=- rapprochent les amateurs du feu de l''action -contentSapInSailing4=- mettent à disposition des médias des informations et des analyses permettant d''étoffer les commentaires qui accompagnent les manifestations -contentSapInSailing5=L''engagement de SAP dans le sport de la voile est de longue date, porte sur de nombreuses équipes et régates avec un portefeuille élargi qui comprend : +contentSapInSailing3=- rapprochent les amateurs du feu de l'action +contentSapInSailing4=- mettent à disposition des médias des informations et des analyses permettant d'étoffer les commentaires qui accompagnent les manifestations +contentSapInSailing5=L'engagement de SAP dans le sport de la voile est de longue date, porte sur de nombreuses équipes et régates avec un portefeuille élargi qui comprend : contentSapInSailing6=Partenaire technologique officiel de Travemünder Woche contentSapInSailing7=Partenaire technologique de la Ligue Européenne de Voile contentSapInSailing8=Sponsor principal du SAP Extreme Sailing Team @@ -1712,42 +1712,42 @@ contentSapInSailing11=Partenaire technologique de la Sailing Champions League contentSapInSailing12=Sponsor principal de la compétition SAP 5O5 World Championships contentSapInSailing13=Partenaire technologique officiel de WORLD SAILING sapSailingAnalyticsTitle=SAP Sailing Analytics -contentSapSailingAnalytics1=Grâce aux analyses en temps réel des classements de course, vitesses, manœuvres, directions etc., SAP contribue à lever le mystère de la discipline complexe qu''est la voile, et à faciliter son approche. -contentSapSailingAnalytics2=Grâce aux analyses de la solution SAP Sailing Analytics, le monde de la voile gagne en transparence. Les éléments clés sont l''utilisation du Cloud et des technologies du traitement des données en mémoire vive, le traitement des données de GPS et de mesures de vent en temps réel ainsi que la visualisation de ces contenus sur différents types frontend, accessibles partout. +contentSapSailingAnalytics1=Grâce aux analyses en temps réel des classements de course, vitesses, manœuvres, directions etc., SAP contribue à lever le mystère de la discipline complexe qu'est la voile, et à faciliter son approche. +contentSapSailingAnalytics2=Grâce aux analyses de la solution SAP Sailing Analytics, le monde de la voile gagne en transparence. Les éléments clés sont l'utilisation du Cloud et des technologies du traitement des données en mémoire vive, le traitement des données de GPS et de mesures de vent en temps réel ainsi que la visualisation de ces contenus sur différents types frontend, accessibles partout. sapSailingAnalyticsReadMore=En savoir plus sapSailingRaceManager=SAP Sailing Race Manager -contentSapSailingRaceManager=Grâce à la solution SAP Sailing Race Manager, les organisateurs de courses peuvent être plus efficaces et garder plus facilement la main. Leurs tâches manuelles sont automatisées et simplifiées, tout comme la communication pendant les régates de voile en cours. L''application destinée au comité de course contribue à faciliter la mise en œuvre et la gestion des manifestations de courses pour un déroulement plus souple des compétitions. +contentSapSailingRaceManager=Grâce à la solution SAP Sailing Race Manager, les organisateurs de courses peuvent être plus efficaces et garder plus facilement la main. Leurs tâches manuelles sont automatisées et simplifiées, tout comme la communication pendant les régates de voile en cours. L'application destinée au comité de course contribue à faciliter la mise en œuvre et la gestion des manifestations de courses pour un déroulement plus souple des compétitions. sapSailingRaceManagerReadMore=En savoir plus sapSailInSight=SAP Sail InSight -contentSapSailInSight=Grâce à l''application mobile SAP Sail InSight pour iPhone, iPad et smartphones Android, les participants aux courses à la voile peuvent gérer leur participation dans les régates à tout moment, où qu''ils soient. Cette application se connecte à la solution SAP Sailing Analytics et permet aux compétiteurs de s''inscrire à une régate activée dans SAP Sail InSight, suivre leur place dans la course, avec des indicateurs de performances tels que la vitesse, ou la distance parcourue, et d''analyser leur performance. +contentSapSailInSight=Grâce à l'application mobile SAP Sail InSight pour iPhone, iPad et smartphones Android, les participants aux courses à la voile peuvent gérer leur participation dans les régates à tout moment, où qu'ils soient. Cette application se connecte à la solution SAP Sailing Analytics et permet aux compétiteurs de s'inscrire à une régate activée dans SAP Sail InSight, suivre leur place dans la course, avec des indicateurs de performances tels que la vitesse, ou la distance parcourue, et d'analyser leur performance. sapSailInSightReadMore=En savoir plus sapSailingBuoyPinger=SAP Sailing Buoy Pinger -contentSapSailingBuoyPinger=Grâce à l''application mobile SAP Sailing Buoy Pinger pour smartphones Android, les organisateurs de courses à la voile peuvent simplifier le positionnement des marques de course ainsi que la communication avec les positionneurs des marques, à tout moment, où qu''ils soient. Cette application se connecte à la solution SAP Sailing Analytics et permet aux organisateurs de régates de suivre la position géographique de leurs marques de course. Cette connexion permet en outre aux sportifs participant à la régate d''utiliser l''application mobile SAP Sail InSight. +contentSapSailingBuoyPinger=Grâce à l'application mobile SAP Sailing Buoy Pinger pour smartphones Android, les organisateurs de courses à la voile peuvent simplifier le positionnement des marques de course ainsi que la communication avec les positionneurs des marques, à tout moment, où qu'ils soient. Cette application se connecte à la solution SAP Sailing Analytics et permet aux organisateurs de régates de suivre la position géographique de leurs marques de course. Cette connexion permet en outre aux sportifs participant à la régate d'utiliser l'application mobile SAP Sail InSight. sapSailingBuoyPingerReadMore=En savoir plus postRaceAnalytics=Analyses post-course -contentPostRaceAnalytics1=L''accès aux données collectées lors de manifestations de voile permet aux sportifs de la voile d''analyser et d''évaluer leurs performances, de développer des stratégies et d''optimiser leur navigation. -contentPostRaceAnalytics2=Les solutions SAP Business Analytics fournissent aux sportifs de la voile comme aux entraîneurs, amateurs et média des outils pour parcourir et analyser des données historiques de nombreuses régates et courses. Grâce à la puissance de SAP HANA, des modèles de performance se détachent, des tendances et profils de sportifs de la voile se dessinent de manière simple, rapide et efficace afin d''optimiser leurs propres performances et de développer des stratégies porteuses de succès pour les régates à venir. +contentPostRaceAnalytics1=L'accès aux données collectées lors de manifestations de voile permet aux sportifs de la voile d'analyser et d'évaluer leurs performances, de développer des stratégies et d'optimiser leur navigation. +contentPostRaceAnalytics2=Les solutions SAP Business Analytics fournissent aux sportifs de la voile comme aux entraîneurs, amateurs et média des outils pour parcourir et analyser des données historiques de nombreuses régates et courses. Grâce à la puissance de SAP HANA, des modèles de performance se détachent, des tendances et profils de sportifs de la voile se dessinent de manière simple, rapide et efficace afin d'optimiser leurs propres performances et de développer des stratégies porteuses de succès pour les régates à venir. strategySimulator=Simulateur de stratégies -contentStrategySimulator=Opter pour la bonne stratégie peut procurer un avantage significatif pendant une course. Le simulateur de stratégies simplifie la détermination de la meilleure stratégie de navigation pour différentes conditions de vent et courants d''eau. Comme les données de vent et de courant peuvent être modifiées directement au cours de la simulation, la solidité d''une stratégie peut être facilement évaluée même en cas de conditions météorologiques incertaines. +contentStrategySimulator=Opter pour la bonne stratégie peut procurer un avantage significatif pendant une course. Le simulateur de stratégies simplifie la détermination de la meilleure stratégie de navigation pour différentes conditions de vent et courants d'eau. Comme les données de vent et de courant peuvent être modifiées directement au cours de la simulation, la solidité d'une stratégie peut être facilement évaluée même en cas de conditions météorologiques incertaines. strategySimulatorReadMore=En savoir plus impressum=Mentions légales lastFix=Dernier point -filterDeviceMappings=Filtrer des mappages d''appareils +filterDeviceMappings=Filtrer des mappages d'appareils raceStartAnalysis=Analyse du départ de la course buoyZoneRadiusInHullLengths=Rayon de zone de bouée en longueur de coques (par exemple 2, ou 3) incorrectValueForRegattaBuoyZoneRadiusInHullLengths=Valeur erronée pour le rayon de zone de bouée en longueur de coques importCompetitors=Importer des concurrents -chooseWhichCompetitorsShouldBeImported=Sélectionnez des concurrents à importer sur la gauche. La sélection d''un concurrent individuel affiche sur la droite le ou les concurrent(s) existant(s) appartenant à la même entité. Pour utiliser un concurrent existant, sélectionnez-le. Une fois le mappage terminé, sélectionnez tous les concurrents que vous souhaitez importer dans la table sur la gauche, et appuyez sur OK. Notez que vous pouvez trier les tables en cliquant ou touchant les intitulés des colonnes. +chooseWhichCompetitorsShouldBeImported=Sélectionnez des concurrents à importer sur la gauche. La sélection d'un concurrent individuel affiche sur la droite le ou les concurrent(s) existant(s) appartenant à la même entité. Pour utiliser un concurrent existant, sélectionnez-le. Une fois le mappage terminé, sélectionnez tous les concurrents que vous souhaitez importer dans la table sur la gauche, et appuyez sur OK. Notez que vous pouvez trier les tables en cliquant ou touchant les intitulés des colonnes. existingCompetitors=Concurrents existants importedCompetitors=Concurrents à importer hasMatches=Correspondances disponibles filterImportedCompetitorsByNameSailRaceFleet=Filtrer des concurrents à importer par nom, numéro de voile, course ou flotte -errorLoadingCompetitorImportProviders=Erreur lors du chargement des fournisseurs d''importation de concurrents : {0} -errorLoadingCompetitorImportDescriptors=Erreur lors du chargement des descripteurs d''importation de concurrents : {0} -couldNotSaveCompetitorRegistrations=Impossible d''enregistrer les inscriptions des concurrents : {0} +errorLoadingCompetitorImportProviders=Erreur lors du chargement des fournisseurs d'importation de concurrents : {0} +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 +replicables=Réplication d'objets en cours set=Définit eventRegattaRacesLegendWind=Nombre de capteurs de vent eventRegattaRacesLegendVideo=Nombre de flux vidéo @@ -1782,10 +1782,62 @@ leaderboardPage=Page du palmarès makeDefault=Définir par défaut makeDefaultInProgress=En cours... settingsSavedMessage=Vos options actuelles ont correctement été définies comme options par défaut. -settingsSaveErrorMessage=Une erreur s''est produite lors de la définition de vos options comme options par défaut. +settingsSaveErrorMessage=Une erreur s'est produite lors de la définition de vos options comme options par défaut. showLiveNow=Afficher "En direct" -useOnlyOneOfStartTimeInferenceAndControlTrackingFromStartAndFinishTimes=Utilisez "Interférence temporelle de départ" ou bien "Contrôler suivi à partir des heures de départ et d''arrivée", mais pas les deux. +useOnlyOneOfStartTimeInferenceAndControlTrackingFromStartAndFinishTimes=Utilisez "Interférence temporelle de départ" ou bien "Contrôler suivi à partir des heures de départ et d'arrivée", mais pas les deux. unknownLeaderboardType=Type de palmarès {0} inconnu selectCompetitorsToEliminate=Sélectionner des concurrents à éliminer trackedRaceAlreadyLinked=La course est déjà liée à une colonne de course. Voulez-vous vraiment modifier le lien ? reallyRemoveSeries=Voulez-vous vraiment supprimer la série "{0}" ? Note : tous les journaux de la course seront également supprimés de manière permanente pour cette course. +settingsId=ID d'options +documentSettingsId=ID d'options du document +settingsForId=Options pour l'ID ''{0}'' +userProfileSettingsTabDescription=Les options utilisateur sont générées dans des boîtes de dialogues pour options que vous trouverez à de nombreux endroits sur la page. Cette vue montre toutes vos options regroupées pour les mettre techniquement à disposition des utilisateurs de référence. Soyez prudent : les entrées supprimées ne peuvent pas être restaurées. +resetToDefault=Réinitialiser sur les valeurs par défaut +resetToDefaultInProgress=Réinitialisation en cours... +settingsRemoved=Options par défaut restaurées +settingsRemovedError=Impossible de restaurer les options par défaut +requiresRegattaRaceAndLeaderboard=Cette page requiert un nom de régate, un nom de course et un nom de palmarès valides. +couldNotFindRaceInRegatte=Impossible de trouver une course nommée {0} pour une régate nommée {1}. +algorithmTimeOutText=Hors portée +mixedLegText=Vent ambigu +pathCanvasOverlayTitle=Chemin à {0} points. {1} nmi dans {2} +windSpeedInKnots=Vitesse du vent en noeuds +activeFilters=Filtre(s) actif(s) : {0} +errorLoadingRegattasForLeaderboardGroup=Erreur lors de la tentative de chargement des régates correspondantes pour le groupe de palmarès {0} : {1} +errorLoadingLeaderBoardGroup=Erreur lors de la tentative de chargement du groupe de palmarès {0} : {1} +errorLoadingLeaderBoardGroups=Erreur lors de la tentative d'obtention des données : {0} +errorServletCall=Échec de l'appel servlet au service de simulation SimulatorService\n {0} +errorReceivingWindPattern=Erreur lors de la récupération des modèles de vent {0} +errorLoadingBoatClasses=Échec d'initialisation des catégories de bateaux !\r\n {0}s +errorLoadingLegInformation=Échec de lecture des informations sur les portions de parcours !\r\n {0} +errorLoadingRaceNames=Échec de lecture des informations sur les courses !\r\n {0} +errorLoadingCompetitors=Échec de lecture des informations sur le(s) concurrent(s) !\r\n {0} +errorLoadingTotalTime=Échec de lecture du temps total totalTime !\r\n {0} +errorUpdatingCarriedPoints=Erreur lors de la tentative de mise à jour de la valeur cumulée pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. +errorUpdatingLeaderboardScore=Erreur lors de la tentative de mise à jour de la correction des scores pour le concurrent {0} dans le palmarès {1} pour la course {2} : {3} \nVeuillez rafraîchir la vue. +errorUpdatingLeaderboardScoreCorrection=Erreur lors de la tentative de mise à jour de la correction des scores pour : {0} \nVeuillez rafraîchir la vue. +errorUpdatingMaxPointsReason=Erreur lors de la tentative de mise à jour du motif de points max. pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. +errorUpdatingDisplayNames=Erreur lors de la tentative de mise à jour du nom d'affichage pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. +reportError=Erreur lors de la sauvegarde des informations de correction des scores : {0} +errorGettingScoreCorrectionProvider=Erreur lors de l'accès aux fournisseurs de correction des scores : {0} +errorTryingToUnsupressCompetitor=Erreur lors de la tentative d'annulation de suppression du concurrent {0} +errorLoadingReducedDimensionsMapedByLevel=Erreur lors de l'accès aux dimensions de la chaîne de récupération du serveur : {0} +errorFetchingDimensionData=Erreur lors de l'accès aux valeurs de dimension de {0} : {1} +errorFetchingStatistics=Erreur lors de l'accès aux statistiques disponibles du serveur : {0} +errorFetchingAggregators=Erreur lors de l'accès aux agrégateurs disponibles du serveur : {0} +errorLoadingDataRetrieverChainDefinitions=Erreur lors de la récupération des définitions DataRetrieverChainDefinitions disponibles : {0} +errorFetchingComponentsChangedTimepoint=Erreur lors de la récupération de l'heure modifiée du composant du serveur : {0} +errorRunningQuery=Erreur lors de l'exécution de la requête : {0} +errorReadingWindFixes=Erreur lors de la lecture des points vent {0} +errorAddingWindFixForRace=Erreur lors de l'ajout d'un point vent pour la course {0} : {1} +errorSettingStartTime=Erreur lors du paramétrage de l'heure de départ reçue : {0} +errorStoppingRaceTracking=Exception lors de la tentative d'arrêt du suivi des courses {0} : {1} +errorRemovingRace=Exception lors de la tentative de suppression des courses {0} : {1} +errorLoadingRegattas=Erreur lors de la tentative de chargement des régates {0} : {1} +errorUpdatingRegatta=Erreur lors de la tentative de mise à jour des régates {0} : {1} +errorLoadingRaceLog=Marquage pour suivi par journal de la course impossible : {0} +errorStartingTracking=Échec du lancement du suivi {0} : {1} +errorLoadingLeaderBoardByEvent=Erreur lors de la tentative de chargement du palmarès. Soit l'événement n'a pas pu être associé à la régate, soit aucune course suivie n'existe. +errorLoadingEvent=Erreur lors de la tentative de chargement de l'événement ayant l'ID {0} : {1} +errorLoadingRegattaStructure=Erreur lors de la tentative de chargement de régates pour l'événement ayant l'ID {0} : {1} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties index b1691309463..712570e60eb 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties @@ -1540,7 +1540,7 @@ theDeletionOfThisFix=このフィックスの削除は現在は可能であり loadingMarkFixes=フィックスのマークをロードしています... fixSuccessfullyAdded=フィックスが追加されました。 fixPositionSuccessfullyEdited=フィックス位置が編集されました。 -fixSuccessfullyRemoved=フィックスが削除されました。 +fixSuccessfullyRemoved=フィックスが削除されました。レースを削除し、それに対する追跡を改めて開始して削除を有効にしてください。 dragToChangePosition=ドラッグして位置を変更\n右クリックして削除するメニューを取得 moveFix=フィックスを移動 manage2SailEvent=Manage2Sail イベント @@ -1789,3 +1789,55 @@ unknownLeaderboardType=未知のリーダーボードタイプ {0} selectCompetitorsToEliminate=予選敗退の競技者を選択 trackedRaceAlreadyLinked=このレースはすでにレース列にリンクされています。リンクを変更しますか。 reallyRemoveSeries=シリーズ ''{0}'' を削除しますか。注記: 付属しているレース列のレースログもすべて永続的に削除されます。 +settingsId=設定 ID +documentSettingsId=文書設定 ID +settingsForId=ID ''{0}'’ の設定 +userProfileSettingsTabDescription=ユーザ設定は、このページの多くの場所にあるダイアログを設定することによって生成されます。このビューには、収集したすべての設定がパワーユーザ向けの技術的な方法で表示されます。削除したエントリは復元できないため、注意して使用してください。 +resetToDefault=デフォルトに戻す +resetToDefaultInProgress=リセット中です... +settingsRemoved=デフォルト設定が復元されました +settingsRemovedError=デフォルト設定を復元できませんでした +requiresRegattaRaceAndLeaderboard=このページには有効なレガッタ名、レース名、およびリーダーボード名が必要です。 +couldNotFindRaceInRegatte=名前 {1} のレガッタに対して名前 {0} のレースが取得できませんでした +algorithmTimeOutText=禁止区域 +mixedLegText=不明瞭な風 +pathCanvasOverlayTitle={0} ポイントでの経路。{1} 海里 ({2}) +windSpeedInKnots=風速 (knt) +activeFilters=有効なフィルター: {0} +errorLoadingRegattasForLeaderboardGroup=リーダーボードグループ {0} に関連するレガッタをロードしようとしてエラーが発生: {1} +errorLoadingLeaderBoardGroup=リーダーボードグループ {0} をロードしようとしてエラーが発生: {1} +errorLoadingLeaderBoardGroups=データを取得しようとしてエラーが発生: {0} +errorServletCall=SimulatorService へのサーブレット呼出に失敗しました\n {0} +errorReceivingWindPattern=風パターン {0} の取得中にエラーが発生しました +errorLoadingBoatClasses=艇種の初期化に失敗しました\r\n {0}s +errorLoadingLegInformation=レグ情報の読込に失敗しました\r\n {0} +errorLoadingRaceNames=レース情報の読込に失敗しました\r\n {0} +errorLoadingCompetitors=競技者情報の読込に失敗しました\r\n {0} +errorLoadingTotalTime=totalTime の読込に失敗しました\r\n {0} +errorUpdatingCarriedPoints=リーダーボード {1} において競技者 {0} のキャリー値を更新しようとしてエラーが発生: {2} \nビューをリフレッシュする必要がある場合があります。 +errorUpdatingLeaderboardScore=レース {2} に対してリーダーボード {1} において競技者 {0} の得点修正を更新しようとしてエラーが発生: {3} \nビューをリフレッシュする必要がある場合があります。"); +errorUpdatingLeaderboardScoreCorrection={0} の得点修正を更新しようとしてエラーが発生\nビューをリフレッシュする必要がある場合があります。"); +errorUpdatingMaxPointsReason=リーダーボード {1} において競技者 {0} の最大ポイント理由を更新しようとしてエラーが発生: {2} \nビューをリフレッシュする必要がある場合があります。 +errorUpdatingDisplayNames=リーダーボード {1} において競技者 {0} の表示名を更新しようとしてエラーが発生: {2} \nビューをリフレッシュする必要がある場合があります。 +reportError=得点修正情報の保存でエラーが発生: {0} +errorGettingScoreCorrectionProvider=得点修正プロバイダの取得でエラーが発生: {0} +errorTryingToUnsupressCompetitor=競技者 {0} を非表示解除しようとしてエラーが発生しました +errorLoadingReducedDimensionsMapedByLevel=サーバからの取得チェーンの次元のフェッチでエラーが発生: {0} +errorFetchingDimensionData={0} の次元値のフェッチでエラーが発生: {1} +errorFetchingStatistics=サーバからの利用可能な統計のフェッチでエラーが発生: {0} +errorFetchingAggregators=サーバからの利用可能な集計のフェッチでエラーが発生: {0} +errorLoadingDataRetrieverChainDefinitions=利用可能な DataRetrieverChainDefinitions の取得でエラーが発生: {0} +errorFetchingComponentsChangedTimepoint=サーバからのコンポーネント変更済タイムポイントのフェッチでエラーが発生: {0} +errorRunningQuery=クエリの実行でエラーが発生: {0} +errorReadingWindFixes=風フィックス {0} の読込でエラーが発生しました +errorAddingWindFixForRace=レース {0} に対する風フィックスの追加でエラーが発生: {1} +errorSettingStartTime=受け取ったスタート時刻の設定でエラーが発生: {0} +errorStoppingRaceTracking=レース {0} の追跡を停止しようとして例外が発生: {1} +errorRemovingRace=レース {0} を削除しようとして例外が発生: {1} +errorLoadingRegattas=レガッタ {0} をロードしようとしてエラーが発生: {1} +errorUpdatingRegatta=レガッタ {0} を更新しようとしてエラーが発生: {1} +errorLoadingRaceLog=RaceLog 追跡を表示できませんでした: {0} +errorStartingTracking={0} の追跡の開始に失敗: {1} +errorLoadingLeaderBoardByEvent=リーダーボードをロードしようとしてエラーが発生しました。イベントをレガッタに関連付けることができなかったか、追跡されているレースがありません。 +errorLoadingEvent=ID {0} のイベントをロードしようとしてエラーが発生: {1} +errorLoadingRegattaStructure=ID {0} のイベントに対してレガッタをロードしようとしてエラーが発生: {1} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties index 19a431bc442..ad9d688d4f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties @@ -1539,8 +1539,8 @@ deleteFix=Eliminar ponto fixo theDeletionOfThisFix=A eliminação deste ponto fixo não é possível atualmente loadingMarkFixes=Carregando pontos fixos da marca... fixSuccessfullyAdded=Ponto fixo adicionado com êxito. -fixPositionSuccessfullyEdited=Posição fixa processada com êxito. -fixSuccessfullyRemoved=Ponto fixo removido com êxito. +fixPositionSuccessfullyEdited=Ponto fixo processado com êxito. +fixSuccessfullyRemoved=Ponto fixo removido com êxito. Remova a corrida e inicie seu rastreamento novamente para a remoção ter efeito. dragToChangePosition=Arrastar para modificar a posição\nClicar com o botão direito do mouse para obter o menu para eliminação moveFix=Reposicionar ponto fixo manage2SailEvent=Evento de Manage2Sail @@ -1789,3 +1789,55 @@ unknownLeaderboardType=Tipo de painel de classificação desconhecido {0} selectCompetitorsToEliminate=Selecionar competidores a eliminar trackedRaceAlreadyLinked=A corrida é sempre ligada a uma coluna da corrida. Modificar o link? reallyRemoveSeries=Você quer realmente remover a série ''{0}''? Nota: todos os registros da corrida para a coluna da corrida anexada também serão removidos definitivamente! +settingsId=ID de configurações +documentSettingsId=ID de configuração do documento +settingsForId=Configurações para ID ''{0}'' +userProfileSettingsTabDescription=As configurações dos usuários são geradas por diálogos de configurações que podem ser encontrados em vários locais da página. Esta visão exibe todas as suas configurações coletadas de uma forma técnica para usuários avançados. Tenha em atenção que as entradas removidas não podem ser restauradas, por isso utilize-as com cuidado. +resetToDefault=Reinicializar para padrão +resetToDefaultInProgress=Na reinicialização... +settingsRemoved=Configurações padrão restauradas +settingsRemovedError=Não foi possível restaurar configurações padrão +requiresRegattaRaceAndLeaderboard=Esta página necessita de um nome de regata, um nome de corrida e um nome de painel de classificação válidos. +couldNotFindRaceInRegatte=Não foi possível obter uma corrida com o nome {0} para uma regata com o nome {1} +algorithmTimeOutText=fora do alcance +mixedLegText=vento indefinido +pathCanvasOverlayTitle=Caminho em {0} pontos {1} mn em {2} +windSpeedInKnots=Velocidade do vento em nós +activeFilters=Filtros ativos: {0} +errorLoadingRegattasForLeaderboardGroup=Erro ao tentar carregar regatas correspondentes para grupo de painéis de classificação {0}: {1} +errorLoadingLeaderBoardGroup=Erro ao tentar carregar grupo de painéis de classificação {0}: {1} +errorLoadingLeaderBoardGroups=Erro ao tentar obter os dados: {0} +errorServletCall=Chamada de servlet falhada para serviço de simulador\n {0} +errorReceivingWindPattern=Erro ao recuperar padrões de vento {0} +errorLoadingBoatClasses=Falha ao inicializar classes de barcos!\r\n {0}s +errorLoadingLegInformation=Falha ao ler informação de pernas!\r\n {0} +errorLoadingRaceNames=Falha ao ler informação de corridas!\r\n {0} +errorLoadingCompetitors=Falha ao ler informação do competidor!\r\n {0} +errorLoadingTotalTime=Falha ao ler tempo total\r\n {0} +errorUpdatingCarriedPoints=Erro ao tentar atualizar valor de transferência para competidor {0} no painel de classificação {1}: {2} \nPoderá ser necessário atualizar sua visão. +errorUpdatingLeaderboardScore=Erro ao tentar atualizar correção de pontuação para competidor {0} no painel de classificação {1} para corrida {2}: {3} \nPoderá ser necessário atualizar sua visão."); +errorUpdatingLeaderboardScoreCorrection=Erro ao tentar atualizar correção de pontuação para: {0} \nPoderá ser necessário atualizar sua visão."); +errorUpdatingMaxPointsReason=Erro ao tentar atualizar motivo para máximo de pontos para competidor {0} no painel de classificação {1}: {2} \nPoderá ser necessário atualizar sua visão. +errorUpdatingDisplayNames=Erro ao tentar atualizar nome de exibição para competidor {0} no painel de classificação {1}: {2} \nPoderá ser necessário atualizar sua visão. +reportError=Erro ao gravar informação de correção de pontuação: {0} +errorGettingScoreCorrectionProvider=Erro ao chamar fornecedores de correção de pontuação: {0} +errorTryingToUnsupressCompetitor=Erro ao tentar anular a supressão do competidor {0} +errorLoadingReducedDimensionsMapedByLevel=Erro ao chamar dimensões da cadeia de recuperação do servidor: {0} +errorFetchingDimensionData=Erro ao chamar os valores de dimensão de {0}: {1} +errorFetchingStatistics=Erro ao chamar as estatísticas disponíveis do servidor: {0} +errorFetchingAggregators=Erro ao chamar os agregadores disponíveis do servidor: {0} +errorLoadingDataRetrieverChainDefinitions=Erro ao recuperar as definições da cadeia do recuperador de dados disponíveis: {0} +errorFetchingComponentsChangedTimepoint=Erro ao chamar data/hora modificada de componentes do servidor: {0} +errorRunningQuery=Erro ao executar consulta: {0} +errorReadingWindFixes=Erro ao ler pontos fixos de vento {0} +errorAddingWindFixForRace=Erro ao adicionar um ponto fixo de vento para corrida {0}: {1} +errorSettingStartTime=Erro ao definir a hora de início recebida: {0} +errorStoppingRaceTracking=Exceção ao tentar parar o rastreamento de corridas {0}: {1} +errorRemovingRace=Exceção ao tentar remover corridas {0}: {1} +errorLoadingRegattas=Erro ao tentar carregar regatas {0}: {1} +errorUpdatingRegatta=Erro ao tentar atualizar regata {0}: {1} +errorLoadingRaceLog=Não foi possível denotar para rastreamento RaceLog: {0} +errorStartingTracking=Falha ao iniciar rastreamento {0}: {1} +errorLoadingLeaderBoardByEvent=Erro ao tentar carregar painel de classificação. Ou não foi possível associar o evento à regata ou não existem corridas rastreadas. +errorLoadingEvent=Erro ao tentar carregar evento com o ID {0}: {1} +errorLoadingRegattaStructure=Erro ao tentar carregar regatas para evento com o ID {0}: {1} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 3999b9dddf4..3024f765293 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1540,7 +1540,7 @@ theDeletionOfThisFix=Удалить этот замер сейчас невоз loadingMarkFixes=Загрузка замеров отметки... fixSuccessfullyAdded=Замер успешно добавлен. fixPositionSuccessfullyEdited=Позиция замера успешно изменена. -fixSuccessfullyRemoved=Замер успешно удален. +fixSuccessfullyRemoved=Замер успешно удален. Чтобы удаление вступило в силу, удалите гонку и начните отслеживание для нее заново. dragToChangePosition=Позиция изменяется перетаскиванием\nДля удаления вызовите меню щелчком правой кнопкой мыши moveFix=Переместить замер manage2SailEvent=Событие Manage2Sail @@ -1789,3 +1789,55 @@ unknownLeaderboardType=Неизвестный тип таблицы лидеро selectCompetitorsToEliminate=Выберите участников для исключения trackedRaceAlreadyLinked=Эта гонка уже связана со столбцом гонки. Действительно изменить связь? reallyRemoveSeries=Действительно удалить серии ''{0}''? Примечание: все журналы для вложенных столбцов гонки также будут окончательно удалены! +settingsId=Ид. настроек +documentSettingsId=Ид. настроек документа +settingsForId=Настройки для ид. ''{0}'' +userProfileSettingsTabDescription=Пользовательские настройки генерируются диалогами настроек, расположенными во многих местах страницы. Здесь отображено техническое представление всех собранных настроек для ключевых пользователей. Соблюдайте осторожность, так как восстановить удаленные записи невозможно. +resetToDefault=Восстановить настройки по умолчанию +resetToDefaultInProgress=Выполняется сброс... +settingsRemoved=Восстановлены настройки по умолчанию +settingsRemovedError=Не удалось восстановить настройки по умолчанию +requiresRegattaRaceAndLeaderboard=Для этой страницы требуются действительные названия регаты, гонки и таблицы лидеров. +couldNotFindRaceInRegatte=Не удалось получить гонку с названием {0} для регаты с названием {1} +algorithmTimeOutText=вне ограничений +mixedLegText=неопределенный ветер +pathCanvasOverlayTitle=Путь по {0} точкам. {1} мор. миль в {2} +windSpeedInKnots=Скорость ветра в узлах +activeFilters=Активные фильтры: {0} +errorLoadingRegattasForLeaderboardGroup=Ошибка при попытке загрузить соответствующие регаты для группы таблиц лидеров {0}: {1} +errorLoadingLeaderBoardGroup=Ошибка при попытке загрузить группу таблиц лидеров {0}: {1} +errorLoadingLeaderBoardGroups=Ошибка при попытке получить данные: {0} +errorServletCall=Сбой вызова сервлета к SimulatorService\n {0} +errorReceivingWindPattern=Ошибка при получении ветровых режимов {0} +errorLoadingBoatClasses=Не удалось инициализировать классы лодок.\r\n {0}s +errorLoadingLegInformation=Не удалось считать информацию об отрезках.\r\n {0} +errorLoadingRaceNames=Не удалось считать информацию о гонках.\r\n {0} +errorLoadingCompetitors=Не удалось считать информацию об участнике\r\n {0} +errorLoadingTotalTime=Не удалось считать общее время\r\n {0} +errorUpdatingCarriedPoints=Ошибка при попытке обновить значение переноса для участника {0} в таблице лидеров {1}: {2} \nМожет потребоваться обновить представление. +errorUpdatingLeaderboardScore=Ошибка при попытке обновить корректировку оценки для участника {0} в таблице лидеров {1}: {3} \nМожет потребоваться обновить представление."); +errorUpdatingLeaderboardScoreCorrection=Ошибка при попытке обновить корректировку оценки для: {0} \nМожет потребоваться обновить представление."); +errorUpdatingMaxPointsReason=Ошибка при попытке обновить причину максимальных баллов для участника {0} в таблице лидеров {1}: {2} \nМожет потребоваться обновить представление. +errorUpdatingDisplayNames=Ошибка при попытке обновить отображаемое имя для участника {0} в таблице лидеров {1}: {2} \nМожет потребоваться обновить представление. +reportError=Ошибка при сохранении информации о корректировке оценки: {0} +errorGettingScoreCorrectionProvider=Ошибка при получении поставщиков корректировки оценки: {0} +errorTryingToUnsupressCompetitor=Ошибка при попытке отменить подавление участника {0} +errorLoadingReducedDimensionsMapedByLevel=Ошибка при вызове измерений цепочки извлечения с сервера: {0} +errorFetchingDimensionData=Ошибка при вызове значений измерений {0} : {1} +errorFetchingStatistics=Ошибка при вызове доступной статистики с сервера: {0} +errorFetchingAggregators=Ошибка при вызове доступных агрегаторов с сервера: {0} +errorLoadingDataRetrieverChainDefinitions=Ошибка при вызове доступных определений цепочек извлечения данных: {0} +errorFetchingComponentsChangedTimepoint=Ошибка при вызове отметки времени изменения компонентов с сервера: {0} +errorRunningQuery=Ошибка при выполнении запроса: {0} +errorReadingWindFixes=Ошибка при считывании замеров ветра {0} +errorAddingWindFixForRace=Ошибка при добавлении замера ветра для гонки {0}: {1} +errorSettingStartTime=Ошибка при установке полученного времени старта: {0} +errorStoppingRaceTracking=Исключение при попытке остановить отслеживание гонок {0}: {1} +errorRemovingRace=Исключение при попытке удалить гонки {0}: {1} +errorLoadingRegattas=Ошибка при попытке загрузить регаты {0}: {1} +errorUpdatingRegatta=Ошибка при попытке обновить регату {0} : {1} +errorLoadingRaceLog=Не удалось отменить отслеживание журнала гонки: {0} +errorStartingTracking=Не удалось начать отслеживание {0}: {1} +errorLoadingLeaderBoardByEvent=Ошибка при попытке загрузить таблицу лидеров. Не удалось связать событие с регатой либо нет отслеживаемых гонок. +errorLoadingEvent=Ошибка при попытке загрузить событие с ид. {0} : {1} +errorLoadingRegattaStructure=Ошибка при попытке загрузить регаты для события с ид. {0} : {1} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 1201e11cfd6..f14ce4f4f9c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1540,7 +1540,7 @@ theDeletionOfThisFix=目前无法删除此修复。 loadingMarkFixes=正在加载标志修复... fixSuccessfullyAdded=已成功添加修复。 fixPositionSuccessfullyEdited=已成功编辑修复位置。 -fixSuccessfullyRemoved=已成功移除修复。 +fixSuccessfullyRemoved=已成功移除修复。请移除比赛轮次,并重新开始跟踪,以便移除生效。 dragToChangePosition=拖动更改位置\n右键点击获取菜单以删除 moveFix=移动修复 manage2SailEvent=Manage2Sail 活动 @@ -1789,3 +1789,55 @@ unknownLeaderboardType=积分榜类型{0}未知 selectCompetitorsToEliminate=选择要淘汰的参赛队 trackedRaceAlreadyLinked=比赛轮次已链接到比赛轮次列。是否确定更改此链接? reallyRemoveSeries=是否确定移除系列赛 "{0}"?注意:随附比赛轮次列的所有比赛轮次日志也将永久移除! +settingsId=设置编号 +documentSettingsId=文档设置编号 +settingsForId=编号 ''{0}'’ 的设置 +userProfileSettingsTabDescription=用户设置由可在页面多个位置找到的设置对话生成。此视图以技术方式为高级用户显示收集的所有设置。请注意,移除的条目无法恢复,请谨慎使用。 +resetToDefault=重置为默认值 +resetToDefaultInProgress=正在重置... +settingsRemoved=默认设置已恢复 +settingsRemovedError=无法恢复默认设置 +requiresRegattaRaceAndLeaderboard=此页面需要有效的比赛名称、比赛轮次名称和积分榜名称。 +couldNotFindRaceInRegatte=无法为名称为{1}的比赛获取名称为{0}的比赛轮次 +algorithmTimeOutText=越界 +mixedLegText=方向不定的风 +pathCanvasOverlayTitle={0}点的路径。{2}为{1} nmi +windSpeedInKnots=风速(节) +activeFilters=有效的筛选器:{0} +errorLoadingRegattasForLeaderboardGroup=尝试为积分榜组{0}加载相应的比赛出错:{1} +errorLoadingLeaderBoardGroup=尝试加载积分榜组{0}出错:{1} +errorLoadingLeaderBoardGroups=尝试获取数据出错:{0} +errorServletCall=SimulatorService 的 servlet 调用失败\n {0} +errorReceivingWindPattern=检索风力模式{0}出错 +errorLoadingBoatClasses=船只级别初始化失败!\r\n {0}s +errorLoadingLegInformation=读取航段信息失败!\r\n {0} +errorLoadingRaceNames=读取比赛轮次信息失败!\r\n {0} +errorLoadingCompetitors=读取参赛队信息失败!\r\n {0} +errorLoadingTotalTime=读取 totalTime 失败\r\n {0} +errorUpdatingCarriedPoints=尝试更新积分榜{1}中的参赛队{0}现行值出错:{2} \n您可能需要刷新视图。 +errorUpdatingLeaderboardScore=尝试更新比赛轮次{2}积分榜{1}中的参赛队{0}得分更正出错:{3} \n您可能需要刷新视图。 +errorUpdatingLeaderboardScoreCorrection=尝试更新得分更正出错:{0} \n您可能需要刷新视图。 +errorUpdatingMaxPointsReason=尝试更新积分榜{1}中的参赛队{0}最高分原因出错:{2} \n您可能需要刷新视图。 +errorUpdatingDisplayNames=尝试更新积分榜{1}中的参赛队{0}显示名称出错:{2} \n您可能需要刷新视图。 +reportError=保存得分更正信息出错:{0} +errorGettingScoreCorrectionProvider=获取得分更正提供方出错:{0} +errorTryingToUnsupressCompetitor=尝试取消禁止参赛队{0}出错 +errorLoadingReducedDimensionsMapedByLevel=从服务器获取检索链的维度出错:{0} +errorFetchingDimensionData=获取{0}的维度值出错:{1} +errorFetchingStatistics=从服务器获取可用统计出错:{0} +errorFetchingAggregators=从服务器获取可用聚合器出错:{0} +errorLoadingDataRetrieverChainDefinitions=检索可用 DataRetrieverChainDefinitions 出错:{0} +errorFetchingComponentsChangedTimepoint=从服务器获取组件更改的时间点出错:{0} +errorRunningQuery=运行查询出错:{0} +errorReadingWindFixes=读取风力修复{0}出错 +errorAddingWindFixForRace=添加比赛轮次{0}的风力修复出错:{1} +errorSettingStartTime=设置接收开始时间出错:{0} +errorStoppingRaceTracking=尝试停止跟踪比赛轮次{0}异常:{1} +errorRemovingRace=尝试移除比赛轮次{0}异常:{1} +errorLoadingRegattas=尝试加载比赛{0}出错:{1} +errorUpdatingRegatta=尝试更新比赛{0}出错:{1} +errorLoadingRaceLog=无法描述比赛轮次日志跟踪:{0} +errorStartingTracking=开始跟踪{0}失败:{1} +errorLoadingLeaderBoardByEvent=尝试加载积分榜出错。活动未与比赛关联或没有跟踪的比赛轮次。 +errorLoadingEvent=尝试加载编号为{0}的活动出错:{1} +errorLoadingRegattaStructure=尝试为编号为{0}的活动加载比赛出错:{1} From ec750000d037ba1b348f5ba432b8f3cc67692c24 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Wed, 19 Jul 2017 15:28:00 +0000 Subject: [PATCH 14/26] Translation delivery: commit by SLS (albert.kwiatkowski@sap.com) Change-Id: Icb949f905618c1e96b860846d0826f425e2c5cf4 --- .../client/i18n/StringMessages_es.properties | 4 + .../client/i18n/StringMessages_fr.properties | 74 ++++++++++--------- .../client/i18n/StringMessages_ja.properties | 4 + .../client/i18n/StringMessages_pt.properties | 4 + .../client/i18n/StringMessages_ru.properties | 4 + .../client/i18n/StringMessages_zh.properties | 4 + 6 files changed, 59 insertions(+), 35 deletions(-) diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_es.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_es.properties index 09f2d9e3013..056924fb14f 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_es.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_es.properties @@ -101,3 +101,7 @@ makeDefault=Establecer como predeterminado makeDefaultInProgress=En curso... settingsSavedMessage=Sus opciones actuales se han definido correctamente como estándar settingsSaveErrorMessage=Se ha producido un error durante la definición de sus opciones como estándar +resetToDefault=Reinicializar los valores predeterminados +resetToDefaultInProgress=Reinicializando... +settingsRemoved=Parametrizaciones por defecto restablecidas +settingsRemovedError=No se han podido restablecer las parametrizaciones por defecto diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_fr.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_fr.properties index d9ced416035..95433c2f34e 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_fr.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_fr.properties @@ -2,20 +2,20 @@ name=Nom company=Entreprise password=Mot de passe passwordRepeat=Confirmer mot de passe -loggedIn=Connecté avec l''utilisateur {0} ! +loggedIn=Connecté avec l'utilisateur {0} ! signIn=Se connecter -signUp=S''inscrire +signUp=S'inscrire signOut=Se déconnecter -invalidUsername=Nom d''utilisateur non valide +invalidUsername=Nom d'utilisateur non valide couldNotSignOut=Déconnexion impossible : {0} createUser=Créer utilisateur settings=Options filterUsers=Filtrer utilisateurs... welcome=Bienvenue {0} ! -tryingToVerifyUser=Vérification de l''utilisateur en cours... +tryingToVerifyUser=Vérification de l'utilisateur en cours... fetchingUserInformation=Accès aux informations utilisateur... -signedInAs=Connecté avec l''utilisateur {0} -signedInAsTitle=Connecté avec l''utilisateur : +signedInAs=Connecté avec l'utilisateur {0} +signedInAsTitle=Connecté avec l'utilisateur : close=Fermer loading=Chargement en cours... user=Utilisateur @@ -23,30 +23,30 @@ users=Utilisateurs addURLFilter=Ajouter filtre URL ok=OK cancel=Annuler -username=Nom d''utilisateur +username=Nom d'utilisateur email=E-mail -usernameMustHaveAtLeastNCharacters=Veuillez saisir un nom d''utilisateur comportant au moins {0} caractères. +usernameMustHaveAtLeastNCharacters=Veuillez saisir un nom d'utilisateur comportant au moins {0} caractères. passwordMustHaveAtLeastNCharacters=Veuillez utiliser un mot de passe comportant au moins {0} caractères. passwordsDontMatch=Saisissez des mots de passe identiques. -couldNotCreateUser=Création de l''utilisateur {0} impossible +couldNotCreateUser=Création de l'utilisateur {0} impossible changePassword=Modifier mot de passe userDetails=Détails utilisateur deleteUser=Supprimer utilisateur -deleteUserQuestion=Supprimer l''utilisateur ? -doYouReallyWantToDeleteUser=Souhaitez-vous vraiment supprimer l''utilisateur {0} ? -errorDeletingUser=Une erreur s''est produite lors de la suppression de l''utilisateur. +deleteUserQuestion=Supprimer l'utilisateur ? +doYouReallyWantToDeleteUser=Souhaitez-vous vraiment supprimer l'utilisateur {0} ? +errorDeletingUser=Une erreur s'est produite lors de la suppression de l'utilisateur. account=Compte {0} save=Enregistrer remove=Supprimer add=Ajouter edit=Modifier -errorUpdatingRoles=Erreur lors de la mise à jour des rôles de l''utilisateur {0} : {1} -errorUpdatingPermissions=Erreur lors de la mise à jour des autorisations de l''utilisateur {0} : {1} +errorUpdatingRoles=Erreur lors de la mise à jour des rôles de l'utilisateur {0} : {1} +errorUpdatingPermissions=Erreur lors de la mise à jour des autorisations de l'utilisateur {0} : {1} enterRoleName=Saisir nom de rôle... -enterPermissionName=Saisir nom d''autorisation... -errorCreatingUser=Erreur lors de l''inscription avec le nom d''utilisateur {0} : {1} -signedUpSuccessfully=Inscription réussie pour l''utilisateur {0}. Vérifiez vos e-mails pour valider votre compte e-mail. -unknownErrorCreatingUser=Erreur inconnue lors de la tentative d''inscription avec le nom d''utilisateur {0}. Il est possible qu''un autre utilisateur de ce nom existe déjà. +enterPermissionName=Saisir nom d'autorisation... +errorCreatingUser=Erreur lors de l'inscription avec le nom d'utilisateur {0} : {1} +signedUpSuccessfully=Inscription réussie pour l'utilisateur {0}. Vérifiez vos e-mails pour valider votre compte e-mail. +unknownErrorCreatingUser=Erreur inconnue lors de la tentative d'inscription avec le nom d'utilisateur {0}. Il est possible qu'un autre utilisateur de ce nom existe déjà. userAlreadyExists=Un utilisateur de ce nom ({0}) existe déjà. currentPassword=Mot de passe actuel passwordSuccessfullyChanged=Modification du mot de passe réussie @@ -54,28 +54,28 @@ passwordDoesNotMeetRequirements=Le mot de passe ne correspond pas aux critères errorChangingPassword=Erreur lors de la modification du mot de passe : {0} invalidCredentials=Identifiants non valides editEmail=Modifier adresse e-mail -errorUpdatingEmail=Erreur lors de la mise à jour de l''adresse e-mail : {0} -successfullyUpdatedEmail=Mise à jour de l''adresse e-mail réussie pour l''utilisateur {0}.\nContrôle de validation envoyé à {1}. +errorUpdatingEmail=Erreur lors de la mise à jour de l'adresse e-mail : {0} +successfullyUpdatedEmail=Mise à jour de l'adresse e-mail réussie pour l'utilisateur {0}.\nContrôle de validation envoyé à {1}. errorUpdatingUserProperties=Erreur lors de la mise à jour des propriétés utilisateur : {0} -successfullyUpdatedUserProperties=Modification des propriétés réussie pour l''utilisateur {0}. +successfullyUpdatedUserProperties=Modification des propriétés réussie pour l'utilisateur {0}. forgotPassword=Mot de passe oublié errorDuringPasswordReset=Erreur lors de la réinitialisation du mot de passe : {0} -cannotResetPasswordWithoutValidatedEmail=Réinitialisation du mot de passe impossible; car l''utilisateur {0} n''a pas d''adresse e-mail valide. -passwordResetLinkSent=Un lien de réinitialisation du mot de passe a été envoyé à l''adresse e-mail validée de {0}. -errorValidatingEmail=Erreur lors de la validation de l''adresse e-mail de l''utilisateur {0} : {1} -emailValidatedSuccessfully=Validation de l''adresse e-mail réussie pour l''utilisateur {0}. -errorResettingPassword=Erreur lors de la réinitialisation du mot de passe de l''utilisateur {0} : {1} -successfullyResetPassword=Réinitialisation du mot de passe réussie pour l''utilisateur {0}. Un e-mail de confirmation a été envoyé. +cannotResetPasswordWithoutValidatedEmail=Réinitialisation du mot de passe impossible; car l'utilisateur {0} n'a pas d'adresse e-mail valide. +passwordResetLinkSent=Un lien de réinitialisation du mot de passe a été envoyé à l'adresse e-mail validée de {0}. +errorValidatingEmail=Erreur lors de la validation de l'adresse e-mail de l'utilisateur {0} : {1} +emailValidatedSuccessfully=Validation de l'adresse e-mail réussie pour l'utilisateur {0}. +errorResettingPassword=Erreur lors de la réinitialisation du mot de passe de l'utilisateur {0} : {1} +successfullyResetPassword=Réinitialisation du mot de passe réussie pour l'utilisateur {0}. Un e-mail de confirmation a été envoyé. failedToSignIn=Connexion impossible. Vérifiez vos identifiants. -emailValidationUnsuccessful=Validation de l''adresse e-mail échouée pour l''utilisateur {0}. Avez-vous utilisé le code de validation le plus récent ? +emailValidationUnsuccessful=Validation de l'adresse e-mail échouée pour l'utilisateur {0}. Avez-vous utilisé le code de validation le plus récent ? roles=Rôles permissions=Autorisations -signInWith=Se connecter avec l''utilisateur... +signInWith=Se connecter avec l'utilisateur... generalWelcome=Bienvenue ! newUser=Déjà inscrit ? pleaseSignIn=Connectez-vous. -enterUsernameOrEmail=Saisissez le nom d''utilisateur ou l''adresse e-mail. -serverError=Une erreur s''est produite lors de la tentative d''accès au serveur. Veuillez vérifier votre connexion réseau, puis réessayez. +enterUsernameOrEmail=Saisissez le nom d'utilisateur ou l'adresse e-mail. +serverError=Une erreur s'est produite lors de la tentative d'accès au serveur. Veuillez vérifier votre connexion réseau, puis réessayez. remoteProcedureCall=Appel de procédure distante serverReplies=Réponse serveur errorCommunicatingWithServer=Erreur lors de la communication avec le serveur @@ -86,11 +86,11 @@ settingsForComponent=Options pour {0} pleaseSelect=Veuillez sélectionner oldPassword=Ancien mot de passe newPasswordPlaceholder=Saisissez un nouveau mot de passe. -oldPasswordPlaceholder=Saisissez l''ancien mot de passe. +oldPasswordPlaceholder=Saisissez l'ancien mot de passe. passwordRepeatPlaceholder=Confirmez le nouveau mot de passe. resetPassword=Réinitialiser mot de passe -youAreNotSignedIn=Vous n''êtes pas connecté. -youDontHaveRequiredPermission=Vous ne disposez pas de l''autorisation requise. +youAreNotSignedIn=Vous n'êtes pas connecté. +youDontHaveRequiredPermission=Vous ne disposez pas de l'autorisation requise. accountConfirmation=Confirmation du compte error=Erreur inconnue refresh=Actualiser @@ -100,4 +100,8 @@ sharedSettingsLink=Lier aux options makeDefault=Définir par défaut makeDefaultInProgress=En cours... settingsSavedMessage=Vos options actuelles ont correctement été définies comme options par défaut. -settingsSaveErrorMessage=Une erreur s''est produite lors de la définition de vos options comme options par défaut. +settingsSaveErrorMessage=Une erreur s'est produite lors de la définition de vos options comme options par défaut. +resetToDefault=Réinitialiser sur les valeurs par défaut +resetToDefaultInProgress=Réinitialisation en cours... +settingsRemoved=Options par défaut restaurées +settingsRemovedError=Impossible de restaurer les options par défaut diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_ja.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_ja.properties index 7a9c24ef57b..be2f6f73e09 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_ja.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_ja.properties @@ -101,3 +101,7 @@ makeDefault=デフォルトを設定 makeDefaultInProgress=実行中です... settingsSavedMessage=現在の設定がデフォルトとして設定されました settingsSaveErrorMessage=使用している設定をデフォルトとして設定する際にエラーが発生しました +resetToDefault=デフォルトに戻す +resetToDefaultInProgress=リセット中です... +settingsRemoved=デフォルト設定が復元されました +settingsRemovedError=デフォルト設定を復元できませんでした diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_pt.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_pt.properties index 7feda1174a5..a70ce1b66ef 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_pt.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_pt.properties @@ -101,3 +101,7 @@ makeDefault=Definir como padrão makeDefaultInProgress=Em andamento... settingsSavedMessage=Suas configurações atuais foram definidas com êxito como padrão settingsSaveErrorMessage=Ocorreu um erro ao definir suas configurações como padrão +resetToDefault=Reinicializar para padrão +resetToDefaultInProgress=Na reinicialização... +settingsRemoved=Configurações padrão restauradas +settingsRemovedError=Não foi possível restaurar configurações padrão diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_ru.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_ru.properties index 2f242e2b872..399eb9c06be 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_ru.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_ru.properties @@ -101,3 +101,7 @@ makeDefault=Использовать по умолчанию makeDefaultInProgress=Выполняется... settingsSavedMessage=Текущие настройки успешно заданы для использования по умолчанию settingsSaveErrorMessage=При задании настроек для использования по умолчанию возникла ошибка +resetToDefault=Сбросить на значения по умолчанию +resetToDefaultInProgress=Выполняется сброс... +settingsRemoved=Настройки по умолчанию восстановлены +settingsRemovedError=Не удалось восстановить настройки по умолчанию diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_zh.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_zh.properties index eee0ccc660e..ef0b0333180 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_zh.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_zh.properties @@ -101,3 +101,7 @@ makeDefault=设为默认值 makeDefaultInProgress=正在进行... settingsSavedMessage=当前设置已成功设为默认设置 settingsSaveErrorMessage=将设置设为默认设置时发生错误 +resetToDefault=重置为默认值 +resetToDefaultInProgress=正在重置... +settingsRemoved=默认设置已恢复 +settingsRemovedError=无法恢复默认设置 From f86e4ab9475d34d39d7ae4cd6a2abf72f435da42 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Wed, 19 Jul 2017 15:28:35 +0000 Subject: [PATCH 15/26] Translation delivery: commit by SLS (albert.kwiatkowski@sap.com) Change-Id: Iee30ae1e8948f8d804cb12e01f29f05fe4929551 --- .../controls/filestorage/StringMessages_es.properties | 4 ++++ .../controls/filestorage/StringMessages_fr.properties | 8 ++++++-- .../controls/filestorage/StringMessages_ja.properties | 4 ++++ .../controls/filestorage/StringMessages_pt.properties | 4 ++++ .../controls/filestorage/StringMessages_ru.properties | 4 ++++ .../controls/filestorage/StringMessages_zh.properties | 4 ++++ 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_es.properties b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_es.properties index e4a2d15ddde..cd8352da30b 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_es.properties +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_es.properties @@ -30,3 +30,7 @@ makeDefault=Establecer como predeterminado makeDefaultInProgress=En curso... settingsSavedMessage=Sus opciones actuales se han definido correctamente como estándar settingsSaveErrorMessage=Se ha producido un error durante la definición de sus opciones como estándar +resetToDefault=Reinicializar los valores predeterminados +resetToDefaultInProgress=Reinicializando... +settingsRemoved=Parametrizaciones por defecto restablecidas +settingsRemovedError=No se han podido restablecer las parametrizaciones por defecto diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_fr.properties b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_fr.properties index edf14bbbe31..7d0003230e6 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_fr.properties +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_fr.properties @@ -4,7 +4,7 @@ ok=OK cancel=Annuler add=Ajouter edit=Modifier -serverError=Une erreur s''est produite lors de la tentative d''accès au serveur. Veuillez vérifier votre connexion réseau, puis réessayez. +serverError=Une erreur s'est produite lors de la tentative d'accès au serveur. Veuillez vérifier votre connexion réseau, puis réessayez. close=Fermer remoteProcedureCall=Appel de procédure distante serverReplies=Réponse serveur @@ -29,4 +29,8 @@ sharedSettingsLink=Lier aux options makeDefault=Définir par défaut makeDefaultInProgress=En cours... settingsSavedMessage=Vos options actuelles ont correctement été définies comme options par défaut. -settingsSaveErrorMessage=Une erreur s''est produite lors de la définition de vos options comme options par défaut. +settingsSaveErrorMessage=Une erreur s'est produite lors de la définition de vos options comme options par défaut. +resetToDefault=Réinitialiser sur les valeurs par défaut +resetToDefaultInProgress=Réinitialisation en cours... +settingsRemoved=Options par défaut restaurées +settingsRemovedError=Impossible de restaurer les options par défaut diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_ja.properties b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_ja.properties index 28a0efde582..529bd6aa94f 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_ja.properties +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_ja.properties @@ -30,3 +30,7 @@ makeDefault=デフォルトを設定 makeDefaultInProgress=実行中です... settingsSavedMessage=現在の設定がデフォルトとして設定されました settingsSaveErrorMessage=使用している設定をデフォルトとして設定する際にエラーが発生しました +resetToDefault=デフォルトに戻す +resetToDefaultInProgress=リセット中です... +settingsRemoved=デフォルト設定が復元されました +settingsRemovedError=デフォルト設定を復元できませんでした diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_pt.properties b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_pt.properties index f34538f9a7a..0f74ec6e316 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_pt.properties +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_pt.properties @@ -30,3 +30,7 @@ makeDefault=Definir como padrão makeDefaultInProgress=Em andamento... settingsSavedMessage=Suas configurações atuais foram definidas com êxito como padrão settingsSaveErrorMessage=Ocorreu um erro ao definir suas configurações como padrão +resetToDefault=Reinicializar para padrão +resetToDefaultInProgress=Na reinicialização... +settingsRemoved=Configurações padrão restauradas +settingsRemovedError=Não foi possível restaurar configurações padrão diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_ru.properties b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_ru.properties index 382557543be..da6b238232a 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_ru.properties +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_ru.properties @@ -30,3 +30,7 @@ makeDefault=Использовать по умолчанию makeDefaultInProgress=Выполняется... settingsSavedMessage=Текущие настройки успешно заданы для использования по умолчанию settingsSaveErrorMessage=При задании настроек для использования по умолчанию возникла ошибка +resetToDefault=Сбросить на значения по умолчанию +resetToDefaultInProgress=Выполняется сброс... +settingsRemoved=Настройки по умолчанию восстановлены +settingsRemovedError=Не удалось восстановить настройки по умолчанию diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_zh.properties b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_zh.properties index 676401f7fc6..b2cc143f5da 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_zh.properties +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_zh.properties @@ -30,3 +30,7 @@ makeDefault=设为默认值 makeDefaultInProgress=正在进行... settingsSavedMessage=当前设置已成功设为默认设置 settingsSaveErrorMessage=将设置设为默认设置时发生错误 +resetToDefault=重置为默认值 +resetToDefaultInProgress=正在重置... +settingsRemoved=默认设置已恢复 +settingsRemovedError=无法恢复默认设置 From 4a9cb88910d8a56e06090d54636500cfb8881bad Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 20 Jul 2017 11:05:42 +0200 Subject: [PATCH 16/26] Bug 3851: Moved some fields regarding race column selection to multi race leaderboard classes --- .../client/leaderboard/LeaderboardPanelLifecycle.java | 8 +------- .../LeaderboardSettingsDialogComponent.java | 7 +------ .../MultiRaceLeaderboardPanelLifecycle.java | 9 ++++++++- .../MultiRaceLeaderboardSettingsDialogComponent.java | 11 ++++++++--- .../SingleRaceLeaderboardSettingsDialogComponent.java | 4 ++-- .../ui/leaderboard/SingleRaceLeaderboardPanel.java | 3 +-- .../SingleRaceLeaderboardPanelLifecycle.java | 4 ++-- 7 files changed, 23 insertions(+), 23 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardPanelLifecycle.java index 8d51e52c2bc..e61915cbb6f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardPanelLifecycle.java @@ -1,9 +1,5 @@ package com.sap.sailing.gwt.settings.client.leaderboard; -import java.util.ArrayList; -import java.util.List; - -import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.gwt.client.shared.components.ComponentLifecycle; @@ -12,11 +8,9 @@ public abstract class LeaderboardPanelLifecycle public static final String ID = "lb"; protected final StringMessages stringMessages; - protected final List namesOfRaceColumns; - public LeaderboardPanelLifecycle(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { + public LeaderboardPanelLifecycle(StringMessages stringMessages) { this.stringMessages = stringMessages; - this.namesOfRaceColumns = leaderboard != null ? leaderboard.getNamesOfRaceColumns() : new ArrayList(); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java index eb6c6d556f9..4efd970ef2f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java @@ -2,7 +2,6 @@ package com.sap.sailing.gwt.settings.client.leaderboard; import java.util.Collection; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; import com.google.gwt.dom.client.Style.Float; @@ -26,8 +25,6 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; public abstract class LeaderboardSettingsDialogComponent implements SettingsDialogComponent { - protected final Map raceColumnCheckboxes; - protected final List raceAllRaceColumnNames; protected final Map maneuverDetailCheckboxes; protected final Map legDetailCheckboxes; protected final Map raceDetailCheckboxes; @@ -45,13 +42,11 @@ public abstract class LeaderboardSettingsDialogComponent allRaceColumnNames, StringMessages stringMessages) { + public LeaderboardSettingsDialogComponent(T initialSettings, StringMessages stringMessages) { this.initialSettings = initialSettings; this.stringMessages = stringMessages; - this.raceAllRaceColumnNames = allRaceColumnNames; maneuverDetailCheckboxes = new LinkedHashMap(); - raceColumnCheckboxes = new LinkedHashMap<>(); legDetailCheckboxes = new LinkedHashMap(); raceDetailCheckboxes = new LinkedHashMap(); overallDetailCheckboxes = new LinkedHashMap(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java index 45965c51d3c..eabb1e50d4f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardPanelLifecycle.java @@ -1,12 +1,19 @@ package com.sap.sailing.gwt.settings.client.leaderboard; +import java.util.ArrayList; +import java.util.List; + import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.common.settings.generic.support.SettingsUtil; public class MultiRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle { + + protected final List namesOfRaceColumns; + public MultiRaceLeaderboardPanelLifecycle(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) { - super(leaderboard, stringMessages); + super(stringMessages); + this.namesOfRaceColumns = leaderboard != null ? leaderboard.getNamesOfRaceColumns() : new ArrayList(); } @Override public MultiRaceLeaderboardSettings extractUserSettings(MultiRaceLeaderboardSettings currentLeaderboardSettings) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java index c1f7006365d..2d9984f952b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/MultiRaceLeaderboardSettingsDialogComponent.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.settings.client.leaderboard; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -23,13 +24,17 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; public class MultiRaceLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { - - protected RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy; + + private final Map raceColumnCheckboxes; + private final List raceAllRaceColumnNames; + private RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy; public MultiRaceLeaderboardSettingsDialogComponent(MultiRaceLeaderboardSettings initialSettings, List allRaceColumnNames, StringMessages stringMessages) { - super(initialSettings, allRaceColumnNames, stringMessages); + super(initialSettings, stringMessages); this.activeRaceColumnSelectionStrategy = initialSettings.getActiveRaceColumnSelectionStrategy(); + this.raceAllRaceColumnNames = allRaceColumnNames; + raceColumnCheckboxes = new LinkedHashMap<>(); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java index a96e8b58d15..3204a3bece9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/SingleRaceLeaderboardSettingsDialogComponent.java @@ -17,8 +17,8 @@ public class SingleRaceLeaderboardSettingsDialogComponent extends LeaderboardSettingsDialogComponent { public SingleRaceLeaderboardSettingsDialogComponent(SingleRaceLeaderboardSettings initialSettings, - List allRaceColumnNames, StringMessages stringMessages) { - super(initialSettings, allRaceColumnNames, stringMessages); + StringMessages stringMessages) { + super(initialSettings, stringMessages); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java index 2789ad976c1..5745fdd760d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SingleRaceLeaderboardPanel.java @@ -186,8 +186,7 @@ public class SingleRaceLeaderboardPanel extends LeaderboardPanel getSettingsDialogComponent( SingleRaceLeaderboardSettings useTheseSettings) { - return new SingleRaceLeaderboardSettingsDialogComponent(useTheseSettings, leaderboard.getNamesOfRaceColumns(), - stringMessages); + return new SingleRaceLeaderboardSettingsDialogComponent(useTheseSettings, stringMessages); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java index 303eba38b81..0b359d04b82 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java @@ -18,7 +18,7 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc private final boolean isScreenLargeEnoughToInitiallyDisplayLeaderboard; public SingleRaceLeaderboardPanelLifecycle(StringMessages stringMessages) { - super(null, stringMessages); + super(stringMessages); this.isScreenLargeEnoughToInitiallyDisplayLeaderboard = Document.get().getClientWidth() >= 1024; } @@ -78,7 +78,7 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc @Override public SingleRaceLeaderboardSettingsDialogComponent getSettingsDialogComponent(SingleRaceLeaderboardSettings settings) { - return new SingleRaceLeaderboardSettingsDialogComponent(settings, namesOfRaceColumns, stringMessages); + return new SingleRaceLeaderboardSettingsDialogComponent(settings, stringMessages); } } From 50d5d9393cb20416958c586efa0c16f25a2f8db5 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Wed, 26 Jul 2017 16:26:58 +0200 Subject: [PATCH 17/26] fixed multiple i18n errors --- .../sailing/gwt/ui/client/StringMessages.java | 2 +- .../gwt/ui/client/StringMessages.properties | 2 +- .../ui/client/StringMessages_de.properties | 35 +++++++++++++++---- .../gwt/ui/raceboard/RaceBoardEntryPoint.java | 2 +- 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 0d952a3d2eb..0199cb90daf 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1829,7 +1829,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String userProfileSettingsTabDescription(); String userSettingsFilter(); String requiresRegattaRaceAndLeaderboard(); - String couldNotFindRaceInRegatte(String raceName, String regattaName); + String couldNotFindRaceInRegatta(String raceName, String regattaName); String algorithmTimeOutText(); String mixedLegText(); String pathCanvasOverlayTitle(int numPoints, String distance, String date); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index f8a6da8f93e..1e9c0ed48e5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1810,7 +1810,7 @@ settingsRemoved=Default settings restored settingsRemovedError=Could not restore default settings userSettingsFilter=Settings filter requiresRegattaRaceAndLeaderboard=This page requires a valid regatta name, race name and leaderboard name. -couldNotFindRaceInRegatte=Could not obtain a race with name {0} for a regatta with name {1} +couldNotFindRaceInRegatta=Could not obtain a race with name {0} for a regatta with name {1} algorithmTimeOutText=out-of-bounds mixedLegText=ambiguous wind pathCanvasOverlayTitle=Path at {0} points. {1} nmi in {2} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 9c328e411a2..a48dd5fb9ee 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -172,7 +172,6 @@ medalRaceIsNull=Medaillenrennen nicht erlaubt maneuverTypes=Manöver configuration=Konfiguration chooseChart=Diagramm wählen -raceNameEmpty=Rennname leer distanceTraveled=Zurückgelegte Strecke distanceTraveledTooltip=Die zurückgelegt Strecke vom Start des Schenkels bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls der Schenkel noch nicht beendet ist. raceDistanceTraveledTooltip=Die zurückgelegte Strecke vom Start des Rennens, bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls das Rennen noch nicht beendet ist. @@ -694,7 +693,6 @@ selectedCompetitors=Ausgewählte Teilnehmer filterNothing=Nichts filtern topNCompetitorsByRaceRank=Wettfahrt Top {0} topNCompetitorsByTotalRank=Gesamt Top {0} -showHiddenRaces=Rennen im Status HIDDEN anzeigen simulator=Simulator optionsBar=Auswahlleiste simulateButton=Prognose @@ -766,7 +764,7 @@ explainConnectionsToMaster=Verbindungen zu einem Master (dieser Server ist eine explainNoConnectionsToMaster=Es sind keine Verbindungen zu einem Master Server konfiguriert. explainNoConnectionsFromReplicas=Es sind keine Verbindugen von Replicas registriert. stopConnectionToMaster=Replikation anhalten -stoppAllReplicas=Verbindung zu allen Replicas abbrechen +stopAllReplicas=Verbindung zu allen Replicas abbrechen warningServerIsReplica=ACHTUNG: Dieser Server ist als Replica konfiguriert. Vermeiden Sie alle Operationen! dropReplicaConnection=Verbindung abbrechen timePanelName=Zeitregler @@ -1220,7 +1218,7 @@ active=Aktiv scoringSchemeHighPointEssOverallDescription=High Point System, der Gewinner eines Acts erhält 10 Punkte, der Zweite 9 und so weiter. timeBetweenRaceStartAndCompetitorStartInSeconds=Startverzug timeBetweenRaceStartAndCompetitorStartInSecondsTooltip=Zeit seit dem Start der Wettfahrt, nach der der Teilnehmer die Startmarke passiert hat. Negative Werte suggerieren einen Frühstart. -useInternalAlgorithmus=Internen Algorithmus für Tonnenumrundungen verwenden +useInternalAlgorithm=Internen Algorithmus für Tonnenumrundungen verwenden editMarkPassings=Tonnenumrundungen editieren editMarkPositions=Tonnenpositionen editieren removeFixedPassings=Gesetze Umrundungszeit entfernen @@ -1361,7 +1359,7 @@ timeOnTimeFactorTooltip=Zeit-auf-Zeit Faktor; tatsächlich gesegelte Zeit wird f timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip=Zeit-auf-Distanz Zuteilung in Sekunden pro Seemeile;\ndie gesegelte Distanz wird mit diesem Wert multipliziert, und die sich ergebende Zeit wird von der (ggf. per ToT-Faktor angepassten) Zeit subtrahiert calculatedTimeTraveled=Berechnete Zeit calculatedTimeTraveledTooltip=Berechnete Zeit anhand Teilnehmer-Handicap\nauf der Grundlage von Zeit seit Rennstart und zurückgelegter Distanz -raceCalcluatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Ber.Zeit@Führender +raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Ber.Zeit@Führender raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Berechnete Zeit bei erwarteter Ankunft am derzeit absolut in Führung liegenden Teilnehmers;\nSchätzung basierend auf durchschnittlichem VMG im aktuellen Bahnschenkel und gleicher verrechneter Geschwindigket wie der absolut in Führung liegende Teilnehmer\nfür alle nachfolgenden Bahnschenkel sailorInfo=Segler Infos sailorInfoLongText=Offizielle Ergebnisse, Proteste,\nNotice Board, Segler-Wetter: @@ -1831,4 +1829,29 @@ errorStartingTracking=Konnte das Tracking nicht starten {0}: {1} errorLoadingLeaderBoardByEvent=Konnte das Leaderboard nicht laden. Das Event konnte nicht zur Regatta zugeordnet werden, oder es existiert kein getracktes Rennen. errorLoadingEvent=Konnte das Event mit der folgenden ID nicht laden {0} : {1} errorLoadingRegattaStructure=Konnte die Regatta für das Event mit der folgenden ID nicht laden {0} : {1} - +showXYDiagram=Zeige XYDiagramm an +xyDiagram=XYDiagramm +windSpeedInKnots=Windgeschwindigkeit in Knoten +warningSettingFixedPassing=Der ÜberquerungsZeitpunkt {0} für den Wegpunkt kann nicht vor der des Voherigen oder nach der des Nachfolgenden Wegpunktes sein +setTrackingTimesDescription=Setz den Start und das Ende für das Tracking für das Rennen +selectRaces=Wähle die Rennen aus +pleaseSelectAtLeastOneRegatta=Wähle mindestes eine Regatta aus +requiresRegattaRaceAndLeaderboard=Diese Seite benötigt einen Regattanamen, einen Rennnamen und einen Leaderboardnamen +regattaOverviewConfiguration=Regatta Übersicht Konfiguration +pathCanvasOverlayTitle=Web bei {0} Punkten. {1} nmi in {2} +noStarttimeAnnouncedYet=Unbestimmt +simulationLegendMixedLegText=Mehrdeutiger Wind +mediaDateFormatError=Ungültiges Datumsformat. Benutze: {0} +legMiddleWindSourceTypeTooltip=Kombinierter Wind am Mittelpunkt einer Schenkel rhumb Linie +legMiddleWindSourceTypeName=Mitte eines Schenkels +lastUpperFlag=Obere Flagge +lastLowerFlag=Untere Flagge +id=Id +firstRaceIsNonDiscardableCarryForward=Started mit nicht verwerfbaren Vortrag +couldNotFindRaceInRegatta=Konnte ein Rennen mit den Namen {0} für die Regatta mit den Namen {1} nicht finden +confidence=Konfidenz +boatSpeed=Boot Geschwindigkeit +basedOn=basierend auf +asLink=Als Link +algorithmTimeOutText=ausserhalb der Limits +activeFilters=Aktive Filter: {0} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java index be859e8be42..0db46c2ac0c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java @@ -94,7 +94,7 @@ public class RaceBoardEntryPoint extends AbstractSailingEntryPoint { } } if (raceboardData.getRace() == null) { - createErrorPage(getStringMessages().couldNotFindRaceInRegatte( raceboardContextDefinition.getRaceName(), raceboardContextDefinition.getRegattaName())); + createErrorPage(getStringMessages().couldNotFindRaceInRegatta( raceboardContextDefinition.getRaceName(), raceboardContextDefinition.getRegattaName())); return; } From 146ad449ce8e9c62063657d868caa576ec67d016 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Wed, 26 Jul 2017 16:36:32 +0000 Subject: [PATCH 18/26] Translation delivery: commit by SLS (albert.kwiatkowski@sap.com) Change-Id: I4f1d2071ec078f18c7c5e9bdaeb055d6e25e6636 --- .../gwt/ui/client/StringMessages_es.properties | 3 ++- .../gwt/ui/client/StringMessages_fr.properties | 7 ++++--- .../gwt/ui/client/StringMessages_ja.properties | 5 +++-- .../gwt/ui/client/StringMessages_pt.properties | 1 + .../gwt/ui/client/StringMessages_ru.properties | 1 + .../gwt/ui/client/StringMessages_zh.properties | 11 ++++++----- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties index 27f89d2895b..a8fb9ae7941 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties @@ -1797,6 +1797,7 @@ resetToDefault=Reinicializar a valores por defecto resetToDefaultInProgress=Reinicializando... settingsRemoved=Opciones por defecto restablecidas settingsRemovedError=No se han podido restablecer las opciones por defecto +userSettingsFilter=Filtro de opciones requiresRegattaRaceAndLeaderboard=Esta página requiere un nombre de regata, un nombre de carrera y un nombre de tabla de clasificación válidos. couldNotFindRaceInRegatte=No se ha podido obtener la carrera con el nombre {0} para la regata con el nombre {1} algorithmTimeOutText=fuera de límites @@ -1807,7 +1808,7 @@ activeFilters=Activar filtro(s): {0} errorLoadingRegattasForLeaderboardGroup=Error al intentar cargar las regatas correspondientes para el grupo de tablas de clasificación {0}: {1} errorLoadingLeaderBoardGroup=Error al intentar cargar el grupo de tablas de clasificación {0}: {1} errorLoadingLeaderBoardGroups=Error al intentar obtener los datos: {0} -errorServletCall=Llamada Servlet a ServicioSimulador fallida\n {0} +errorServletCall=Llamada servlet a servicio de simulador fallida\n {0} errorReceivingWindPattern=Error al restablecer los patrones de viento {0} errorLoadingBoatClasses=Error al inicializar las clases de embarcación\r\n {0} errorLoadingLegInformation=Error al leer la información sobre los tramos\r\n {0} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties index 1dc61458e89..ea70d29fced 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties @@ -1797,6 +1797,7 @@ resetToDefault=Réinitialiser sur les valeurs par défaut resetToDefaultInProgress=Réinitialisation en cours... settingsRemoved=Options par défaut restaurées settingsRemovedError=Impossible de restaurer les options par défaut +userSettingsFilter=Filtre d'options requiresRegattaRaceAndLeaderboard=Cette page requiert un nom de régate, un nom de course et un nom de palmarès valides. couldNotFindRaceInRegatte=Impossible de trouver une course nommée {0} pour une régate nommée {1}. algorithmTimeOutText=Hors portée @@ -1807,14 +1808,14 @@ activeFilters=Filtre(s) actif(s) : {0} errorLoadingRegattasForLeaderboardGroup=Erreur lors de la tentative de chargement des régates correspondantes pour le groupe de palmarès {0} : {1} errorLoadingLeaderBoardGroup=Erreur lors de la tentative de chargement du groupe de palmarès {0} : {1} errorLoadingLeaderBoardGroups=Erreur lors de la tentative d'obtention des données : {0} -errorServletCall=Échec de l'appel servlet au service de simulation SimulatorService\n {0} +errorServletCall=Échec de l'appel servlet du service de simulation\n {0} errorReceivingWindPattern=Erreur lors de la récupération des modèles de vent {0} errorLoadingBoatClasses=Échec d'initialisation des catégories de bateaux !\r\n {0}s errorLoadingLegInformation=Échec de lecture des informations sur les portions de parcours !\r\n {0} errorLoadingRaceNames=Échec de lecture des informations sur les courses !\r\n {0} errorLoadingCompetitors=Échec de lecture des informations sur le(s) concurrent(s) !\r\n {0} -errorLoadingTotalTime=Échec de lecture du temps total totalTime !\r\n {0} -errorUpdatingCarriedPoints=Erreur lors de la tentative de mise à jour de la valeur cumulée pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. +errorLoadingTotalTime=Échec de lecture du temps total\r\n {0} +errorUpdatingCarriedPoints=Erreur lors de la tentative de mise à jour de la valeur de report pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. errorUpdatingLeaderboardScore=Erreur lors de la tentative de mise à jour de la correction des scores pour le concurrent {0} dans le palmarès {1} pour la course {2} : {3} \nVeuillez rafraîchir la vue. errorUpdatingLeaderboardScoreCorrection=Erreur lors de la tentative de mise à jour de la correction des scores pour : {0} \nVeuillez rafraîchir la vue. errorUpdatingMaxPointsReason=Erreur lors de la tentative de mise à jour du motif de points max. pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties index 712570e60eb..75b612b843c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties @@ -1797,6 +1797,7 @@ resetToDefault=デフォルトに戻す resetToDefaultInProgress=リセット中です... settingsRemoved=デフォルト設定が復元されました settingsRemovedError=デフォルト設定を復元できませんでした +userSettingsFilter=設定フィルタ requiresRegattaRaceAndLeaderboard=このページには有効なレガッタ名、レース名、およびリーダーボード名が必要です。 couldNotFindRaceInRegatte=名前 {1} のレガッタに対して名前 {0} のレースが取得できませんでした algorithmTimeOutText=禁止区域 @@ -1807,13 +1808,13 @@ activeFilters=有効なフィルター: {0} errorLoadingRegattasForLeaderboardGroup=リーダーボードグループ {0} に関連するレガッタをロードしようとしてエラーが発生: {1} errorLoadingLeaderBoardGroup=リーダーボードグループ {0} をロードしようとしてエラーが発生: {1} errorLoadingLeaderBoardGroups=データを取得しようとしてエラーが発生: {0} -errorServletCall=SimulatorService へのサーブレット呼出に失敗しました\n {0} +errorServletCall=シミュレータサービスへのサーブレット呼出に失敗しました\n {0} errorReceivingWindPattern=風パターン {0} の取得中にエラーが発生しました errorLoadingBoatClasses=艇種の初期化に失敗しました\r\n {0}s errorLoadingLegInformation=レグ情報の読込に失敗しました\r\n {0} errorLoadingRaceNames=レース情報の読込に失敗しました\r\n {0} errorLoadingCompetitors=競技者情報の読込に失敗しました\r\n {0} -errorLoadingTotalTime=totalTime の読込に失敗しました\r\n {0} +errorLoadingTotalTime=合計時間の読込に失敗しました\r\n {0} errorUpdatingCarriedPoints=リーダーボード {1} において競技者 {0} のキャリー値を更新しようとしてエラーが発生: {2} \nビューをリフレッシュする必要がある場合があります。 errorUpdatingLeaderboardScore=レース {2} に対してリーダーボード {1} において競技者 {0} の得点修正を更新しようとしてエラーが発生: {3} \nビューをリフレッシュする必要がある場合があります。"); errorUpdatingLeaderboardScoreCorrection={0} の得点修正を更新しようとしてエラーが発生\nビューをリフレッシュする必要がある場合があります。"); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties index ad9d688d4f0..7624acd2009 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties @@ -1797,6 +1797,7 @@ resetToDefault=Reinicializar para padrão resetToDefaultInProgress=Na reinicialização... settingsRemoved=Configurações padrão restauradas settingsRemovedError=Não foi possível restaurar configurações padrão +userSettingsFilter=Filtro de configurações requiresRegattaRaceAndLeaderboard=Esta página necessita de um nome de regata, um nome de corrida e um nome de painel de classificação válidos. couldNotFindRaceInRegatte=Não foi possível obter uma corrida com o nome {0} para uma regata com o nome {1} algorithmTimeOutText=fora do alcance diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 3024f765293..0f56bffb7d7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1797,6 +1797,7 @@ resetToDefault=Восстановить настройки по умолчани resetToDefaultInProgress=Выполняется сброс... settingsRemoved=Восстановлены настройки по умолчанию settingsRemovedError=Не удалось восстановить настройки по умолчанию +userSettingsFilter=Фильтр настроек requiresRegattaRaceAndLeaderboard=Для этой страницы требуются действительные названия регаты, гонки и таблицы лидеров. couldNotFindRaceInRegatte=Не удалось получить гонку с названием {0} для регаты с названием {1} algorithmTimeOutText=вне ограничений diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index f14ce4f4f9c..405dc56ae9f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1099,9 +1099,9 @@ sharingFacebookTooltip=在 Facebook 上分享 #String eventSharingShortText(String eventName, String venue, String dateString); eventSharingShortText={2}{1}中的{0} #String eventSharingLongText(String eventName, String venue, String dateString, String url); -eventSharingLongText=我要在{2}分享{0}中的{1}。 详情: \n{3} +eventSharingLongText=我要分享{2}{1}的{0}。详情:\n{3} #String seriesSharingLongText(String seriesName, String url); -seriesSharingLongText=我要分享系列赛{0}。 详情: {1} +seriesSharingLongText=我要分享系列赛{0}。详情:{1} #String seriesSharingShortText(String seriesName); seriesSharingShortText={0} competitorsAnalytics=参赛队分析 @@ -1797,6 +1797,7 @@ resetToDefault=重置为默认值 resetToDefaultInProgress=正在重置... settingsRemoved=默认设置已恢复 settingsRemovedError=无法恢复默认设置 +userSettingsFilter=设置筛选器 requiresRegattaRaceAndLeaderboard=此页面需要有效的比赛名称、比赛轮次名称和积分榜名称。 couldNotFindRaceInRegatte=无法为名称为{1}的比赛获取名称为{0}的比赛轮次 algorithmTimeOutText=越界 @@ -1807,14 +1808,14 @@ activeFilters=有效的筛选器:{0} errorLoadingRegattasForLeaderboardGroup=尝试为积分榜组{0}加载相应的比赛出错:{1} errorLoadingLeaderBoardGroup=尝试加载积分榜组{0}出错:{1} errorLoadingLeaderBoardGroups=尝试获取数据出错:{0} -errorServletCall=SimulatorService 的 servlet 调用失败\n {0} +errorServletCall=模拟器服务的 servlet 调用失败\n {0} errorReceivingWindPattern=检索风力模式{0}出错 errorLoadingBoatClasses=船只级别初始化失败!\r\n {0}s errorLoadingLegInformation=读取航段信息失败!\r\n {0} errorLoadingRaceNames=读取比赛轮次信息失败!\r\n {0} errorLoadingCompetitors=读取参赛队信息失败!\r\n {0} -errorLoadingTotalTime=读取 totalTime 失败\r\n {0} -errorUpdatingCarriedPoints=尝试更新积分榜{1}中的参赛队{0}现行值出错:{2} \n您可能需要刷新视图。 +errorLoadingTotalTime=读取总时间失败\r\n {0} +errorUpdatingCarriedPoints=尝试更新积分榜{1}中的参赛队{0}累计分值出错:{2} \n您可能需要刷新视图。 errorUpdatingLeaderboardScore=尝试更新比赛轮次{2}积分榜{1}中的参赛队{0}得分更正出错:{3} \n您可能需要刷新视图。 errorUpdatingLeaderboardScoreCorrection=尝试更新得分更正出错:{0} \n您可能需要刷新视图。 errorUpdatingMaxPointsReason=尝试更新积分榜{1}中的参赛队{0}最高分原因出错:{2} \n您可能需要刷新视图。 From d5ef130f89fa9a2bc0d90c336cb7d6ad1d4323a9 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 27 Jul 2017 08:59:35 +0200 Subject: [PATCH 19/26] Bug 4248: Implemented some minor improvements for the german translation --- .../gwt/ui/client/StringMessages_de.properties | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index a48dd5fb9ee..15e3268a4d0 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1832,12 +1832,12 @@ errorLoadingRegattaStructure=Konnte die Regatta für das Event mit der folgenden showXYDiagram=Zeige XYDiagramm an xyDiagram=XYDiagramm windSpeedInKnots=Windgeschwindigkeit in Knoten -warningSettingFixedPassing=Der ÜberquerungsZeitpunkt {0} für den Wegpunkt kann nicht vor der des Voherigen oder nach der des Nachfolgenden Wegpunktes sein -setTrackingTimesDescription=Setz den Start und das Ende für das Tracking für das Rennen -selectRaces=Wähle die Rennen aus -pleaseSelectAtLeastOneRegatta=Wähle mindestes eine Regatta aus +warningSettingFixedPassing=Der Überquerungs-Zeitpunkt {0} für den Wegpunkt kann nicht vor der des voherigen oder nach der des nachfolgenden Wegpunktes sein +setTrackingTimesDescription=Start und Ende für das Tracking des Rennens setzen +selectRaces=Rennen auswählen +pleaseSelectAtLeastOneRegatta=Bitte mindestes eine Regatta auswählen requiresRegattaRaceAndLeaderboard=Diese Seite benötigt einen Regattanamen, einen Rennnamen und einen Leaderboardnamen -regattaOverviewConfiguration=Regatta Übersicht Konfiguration +regattaOverviewConfiguration=Konfiguration der Regatta Übersicht pathCanvasOverlayTitle=Web bei {0} Punkten. {1} nmi in {2} noStarttimeAnnouncedYet=Unbestimmt simulationLegendMixedLegText=Mehrdeutiger Wind @@ -1854,4 +1854,4 @@ boatSpeed=Boot Geschwindigkeit basedOn=basierend auf asLink=Als Link algorithmTimeOutText=ausserhalb der Limits -activeFilters=Aktive Filter: {0} \ No newline at end of file +activeFilters=Aktive Filter: {0} From f17575639c0894d794d50b87ee7847c2d76fe007 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 27 Jul 2017 11:20:11 +0200 Subject: [PATCH 20/26] fixed quotes in French message translations Change-Id: Id7246115849ba3bbc2afd9c68df00bb0e34c3450 --- .../ui/client/StringMessages_fr.properties | 610 +++++++++--------- 1 file changed, 305 insertions(+), 305 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties index ea70d29fced..298916ec08f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties @@ -11,11 +11,11 @@ listRaces=Lister courses listRegattas=Lister régates wind=Vent maneuverType=Manœuvre -windPanelLabel=Ceci est le panneau des mesures du vent, vide pour l'instant. +windPanelLabel=Ceci est le panneau des mesures du vent, vide pour l''instant. refresh=Actualiser remove=Supprimer windSource=Source du vent -dampeningInterval=Intervalle d'atténuation +dampeningInterval=Intervalle d''atténuation map=Carte race=Course races=Courses @@ -31,7 +31,7 @@ timeDelay=Décalage timeDelayHelp=Laissez vide pour effectuer la relecture à un moment de votre choix. Saisissez des secondes de décalage avant le flux des données en direct (p.ex. "60" pour une minute ou "0" pour "Sans décalage"). speedInKnots=Vitesse (nd) fromDeg=De (°) -noRacesYet=Aucune course pour l'instant. +noRacesYet=Aucune course pour l''instant. total=Σ carry=Cumulé competitor=Concurrent @@ -53,8 +53,8 @@ pleaseEnterAName=Saisissez un nom. pleaseEnterABoatClass=Saisissez une catégorie de bateau. discardRacesFromHowManyStartedRacesOn=Éliminez une course de plus en commençant au nombre de courses déjà lancées. leaderboardWithThisNameAlreadyExists=Un palmarès de ce nom existe déjà. -discardThresholdsMustBeNumeric=Les seuils d'élimination doivent être numériques. -discardThresholdsMustBeAscending=Les seuils d'élimination doivent être ascendants. +discardThresholdsMustBeNumeric=Les seuils d''élimination doivent être numériques. +discardThresholdsMustBeAscending=Les seuils d''élimination doivent être ascendants. discarding=Élimination en cours startingFromNumberOfRaces=Début au nombre de courses renameLeaderboard=Renommer palmarès @@ -89,17 +89,17 @@ selectAtLeastOneLegDetail=Sélectionnez au moins un détail de portion de parcou currentSpeedOverGroundInKnots=Vf currentSpeedOverGroundInKnotsTooltip=La vitesse fond actuelle. estimatedTimeToNextWaypointInSeconds=TEA -estimatedTimeToNextWaypointInSecondsTooltip=Temps estimé avant l'arrivée dont aura besoin le concurrent pour atteindre le prochain point de cheminement, basé sur le compromis Cap/Vitesse (VMG) actuel du concurrent, en prenant compte de la direction réelle du vent. +estimatedTimeToNextWaypointInSecondsTooltip=Temps estimé avant l''arrivée dont aura besoin le concurrent pour atteindre le prochain point de cheminement, basé sur le compromis Cap/Vitesse (VMG) actuel du concurrent, en prenant compte de la direction réelle du vent. gapToLeaderInSeconds=Écart par rapport au concurrent en tête -gapToLeaderInSecondsTooltip=Estime l'heure d'arrivée (calculée) à la position actuelle du bateau en tête de la course.\nLe calcul est basé sur le compromis Cap/Vitesse (VMG) moyen de la portion du parcours actuelle, et une performance égale à celle du concurrent en tête de la course pour les portions de parcours suivantes.\nL'écart indique de combien temps plus tôt le concurrent aurait dû arriver là où il/elle se trouve actuellement\nafin de pouvoir prétendre à la même place que le concurrent en tête de la course, à l'arrivée projetée à la position actuelle du bateau en tête. +gapToLeaderInSecondsTooltip=Estime l''heure d''arrivée (calculée) à la position actuelle du bateau en tête de la course.\nLe calcul est basé sur le compromis Cap/Vitesse (VMG) moyen de la portion du parcours actuelle, et une performance égale à celle du concurrent en tête de la course pour les portions de parcours suivantes.\nL''écart indique de combien temps plus tôt le concurrent aurait dû arriver là où il/elle se trouve actuellement\nafin de pouvoir prétendre à la même place que le concurrent en tête de la course, à l''arrivée projetée à la position actuelle du bateau en tête. velocityMadeGoodInKnots=VMG velocityMadeGoodInKnotsTooltip=Le compromis Cap/Vitesse (Velocity Made Good) correspond à la vitesse au vent/sous le vent pour portions de parcours dans le lit du vent/à vent arrière, respectivement, ou à la vitesse de parcours pour atteindre une portion de parcours. windwardDistanceToGoInMeters=Distance au vent/sous le vent restante -windwardDistanceToGoInMetersTooltip=Distance au vent/sous le vent de la position actuelle du concurrent jusqu'à la fin de cette portion de parcours pour les portions dans le lit du vent/à vent arrière, respectivement, ou la distance de parcours pour atteindre une portion de parcours. +windwardDistanceToGoInMetersTooltip=Distance au vent/sous le vent de la position actuelle du concurrent jusqu''à la fin de cette portion de parcours pour les portions dans le lit du vent/à vent arrière, respectivement, ou la distance de parcours pour atteindre une portion de parcours. windwardDistanceToCompetitorFarthestAheadInMeters=Écart -windwardDistanceToCompetitorFarthestAheadInMetersTooltip=Distance au vent/sous le vent entre le concurrent et celui en tête de la course pour les portions de parcours dans le lit du vent/à vent arrière, respectivement, ou la distance de parcours pour atteindre une portion de parcours.\nNotez que le concurrent en tête n'est pas forcément premier de la course si un classement prenant en compte les difficultés est en vigueur. +windwardDistanceToCompetitorFarthestAheadInMetersTooltip=Distance au vent/sous le vent entre le concurrent et celui en tête de la course pour les portions de parcours dans le lit du vent/à vent arrière, respectivement, ou la distance de parcours pour atteindre une portion de parcours.\nNotez que le concurrent en tête n''est pas forcément premier de la course si un classement prenant en compte les difficultés est en vigueur. name=Nom -leaveEmptyForDefault=Laissez vide pour que la valeur par défaut s'applique. +leaveEmptyForDefault=Laissez vide pour que la valeur par défaut s''applique. trackNewEvent=Suivre une nouvelle manifestation trackableRaces=Courses disponibles pour suivi trackWind=Suivre le vent @@ -129,7 +129,7 @@ storedPort=Port données stockées liveUri=URI en direct storedUri=URI stockée eventsConnectedTo=Manifestations actuellement suivies -hostname=Nom de l'hôte +hostname=Nom de l''hôte declinationCheckbox=Corriger la direction du vent par déclinaison raceStartTrackingColumn=Suivi lancé pauseAutomaticRefresh=Arrêter Actualisation automatique @@ -137,10 +137,10 @@ autoRefresh=Actualiser automatiquement delayInSeconds=Décalage (s) delayBetweenAutoAdvances=Décalage entre mises à jour automatiques en secondes : delayMustBeNonNegative=Le décalage doit être supérieur à zéro. -chooseUpdateIntervalOfAtLeastOneSecond=Sélectionnez un intervalle de mise à jour d'au moins une seconde. +chooseUpdateIntervalOfAtLeastOneSecond=Sélectionnez un intervalle de mise à jour d''au moins une seconde. errorSettingWindForRace=Erreur lors de la définition du vent pour la course -errorFetchingWindInformationForRace=Erreur lors de l'accès aux données de vent pour la course -errorWhileTryingToSetWindSourceForRace=Erreur lors de la tentative d'activation de l'indicateur "Vent de début : au vent" +errorFetchingWindInformationForRace=Erreur lors de l''accès aux données de vent pour la course +errorWhileTryingToSetWindSourceForRace=Erreur lors de la tentative d''activation de l''indicateur "Vent de début : au vent" inEvent=dans la manifestation to=à toSide=à @@ -154,7 +154,7 @@ columnMoveDown=Arrière port=À bâbord raceStartTimeColumn=Course lancée showOnlySelectedCompetitors=Afficher uniquement concurrents sélectionnés -showSelectedCompetitorsInfo=Afficher carré d'infos pour concurrents sélectionnés +showSelectedCompetitorsInfo=Afficher carré d''infos pour concurrents sélectionnés tailLength=Longueur du parcours effectué (s) selectedRaces=Quelles courses souhaitez-vous afficher ? lengthInSeconds=Longueur (s) @@ -163,15 +163,15 @@ numberOfManeuvers=Manœuvres numberOfManeuversTooltip=Le nombre de manœuvres effectuées dans cette portion du parcours. numberOfManeuversInRaceTooltip=Le nombre de manœuvres effectuées dans cette course. tacks=Virements -jibes=Changements d'amure +jibes=Changements d''amure penaltyCircles=Tours de pénalité medalRaceIsNull=Valeur de course à la médaille non autorisée configuration=Configuration maneuverTypes=Manœuvres chooseChart=Sélectionner graphique distanceTraveled=Distance parcourue -distanceTraveledTooltip=Distance naviguée du début de la portion de parcours jusqu'à sa fin\nou jusqu'à l'heure actuelle, si la portion de parcours n'est pas terminée. -raceDistanceTraveledTooltip=Distance naviguée du début de la course jusqu'à sa fin\nou jusqu'à l'heure actuelle, si la course n'est pas terminée. +distanceTraveledTooltip=Distance naviguée du début de la portion de parcours jusqu''à sa fin\nou jusqu''à l''heure actuelle, si la portion de parcours n''est pas terminée. +raceDistanceTraveledTooltip=Distance naviguée du début de la course jusqu''à sa fin\nou jusqu''à l''heure actuelle, si la course n''est pas terminée. velocityMadeGoodLong=Compromis Cap/Vitesse (VMG) speedOverGroundLong=Vitesse fond gapToLeaderLong=Écart par rapport au concurrent en tête @@ -198,8 +198,8 @@ headUp=Lofer bearAway=Abattre tack=Virer tackTooltip=Le nombre de virements effectués dans cette course. -jibe=Changement d'amure -jibeTooltip=Le nombre de changements d'amure effectués dans cette course. +jibe=Changement d''amure +jibeTooltip=Le nombre de changements d''amure effectués dans cette course. penaltyCircle=Tour de pénalité penaltyCircleTooltip=Le nombre de tours de pénalité effectués dans cette course. markPassing=Passage de marque @@ -272,11 +272,11 @@ detailsOfLeaderboardGroup=Détails du groupe de palmarès edit=Modifier save=Enregistrer abort=Abandonner -noLeaderboardGroupWithNameFound=Aucun groupe de palmarès ayant pour nom {0} n'a été trouvé. +noLeaderboardGroupWithNameFound=Aucun groupe de palmarès ayant pour nom {0} n''a été trouvé. overview=Synthèse welcomeToSailingAnalytics=Bienvenue dans SAP Sailing Analytics -welcomeToSailingAnalyticsBody=Grâce aux solutions SAP, l'action sur l'eau est à portée de main pour les amateurs de la voile, comme jamais auparavant.\ Le palmarès actualisé en direct ajoute un vrai plus, avec des classements, vitesses de bateaux et marges de victoire en temps réel. Avec SAP, suivez chaque course et ne ratez aucune manœuvre de passage.\ Regarder les compétitions de voile en direct où que vous soyez devient un jeu d'enfant. -home=Page d'accueil +welcomeToSailingAnalyticsBody=Grâce aux solutions SAP, l''action sur l''eau est à portée de main pour les amateurs de la voile, comme jamais auparavant.\ Le palmarès actualisé en direct ajoute un vrai plus, avec des classements, vitesses de bateaux et marges de victoire en temps réel. Avec SAP, suivez chaque course et ne ratez aucune manœuvre de passage.\ Regarder les compétitions de voile en direct où que vous soyez devient un jeu d''enfant. +home=Page d''accueil clickAndDragToZoomIn=Cliquez et faites glisser dans la zone de traçage pour zoomer. windSpeed=Vitesse du vent (en nds) allTimesInUTC=Toutes les heures au format UTC @@ -292,10 +292,10 @@ autoZoomToTails=Parcours effectués autoZoomSelectedCompetitors=Zoomer uniquement sur les concurrents sélectionnés bearing=Direction zoom=Zoom -stepSizeMustBeGreaterThanNull=La taille de l'étape doit être supérieure à 0. -stepSizeInSeconds=Taille de l'étape en secondes -refreshInterval=Intervalle(s) d'actualisation -refreshIntervalMustBeGreaterThanXSeconds=L'intervalle d'actualisation doit être supérieur à {0} secondes. +stepSizeMustBeGreaterThanNull=La taille de l''étape doit être supérieure à 0. +stepSizeInSeconds=Taille de l''étape en secondes +refreshInterval=Intervalle(s) d''actualisation +refreshIntervalMustBeGreaterThanXSeconds=L''intervalle d''actualisation doit être supérieur à {0} secondes. competitorCharts=Graphique de concurrents selectAtLeastOneCompetitor=Pour afficher les graphiques des concurrents, sélectionnez au moins un concurrent. selectAtLeastOneCompetitorForInvitation=Pour envoyer une invitation par e-mail, sélectionnez au moins un concurrent. @@ -314,7 +314,7 @@ trackBasedEstimationWindSourceTypeName=Estimation windSensorWindSourceTypeName=Mesuré webWindSourceTypeName=Manuel raceCommitteeWindSourceTypeName=Comité de course -clickChartToSetTime=Cliquez sur le graphique pour définir l'heure. +clickChartToSetTime=Cliquez sur le graphique pour définir l''heure. position=Position windSourcesUsed=Sources de vent utilisées errorTryingToUpdateWindSourcesToExclude=Erreur lors de la tentative de mise à jour des sources de vent à exclure pour la course {0} : {1} @@ -328,21 +328,21 @@ 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} +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. +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. 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. -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 +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 +finishLine=Ligne d''arrivée +advantageLine=Ligne d''avantage courseMiddleLine=Ligne médiane de course -messagingPortNumber=Numéro de port d'échange de messages +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} @@ -373,14 +373,14 @@ doYouReallyWantToRemoveRegatta=Voulez-vous vraiment supprimer la régate "{0}"  errorLoadingScoreCorrectionProviders=Erreur lors du chargement des fournisseurs de corrections de scores : {0} selectResultListToImportFrom=Sélectionner la liste des résultats depuis laquelle importer of=de -errorObtainingScoreCorrections=Erreur lors de l'accès aux corrections de scores du fournisseur {0} et manifestation {1} pour la catégorie de bateau {2} publié le {3}: {4} +errorObtainingScoreCorrections=Erreur lors de l''accès aux corrections de scores du fournisseur {0} et manifestation {1} pour la catégorie de bateau {2} publié le {3}: {4} assignRaceNumbersToRaceColumns=Affecter numéros de courses des résultats officiels aux colonnes de courses de palmarès importOfficialResults=Importer résultats officiels... selectAll=Sélectionner tout apply=Appliquer successfullyUpdatedScores=Mise à jour des scores réussie errorUpdatingScoresForLeaderboard=Erreur lors de la mise à jour des scores pour le palmarès {0} : {1} -maneuverTypesToShowWhenCompetitorIsClicked=Types de manœuvre à afficher lorsque l'on clique sur le concurrent +maneuverTypesToShowWhenCompetitorIsClicked=Types de manœuvre à afficher lorsque l''on clique sur le concurrent simulateAsLiveRace=Simulation de course en direct simulateWithOffset=Décalage avant le départ (en minutes) : boatClassDoesNotMatchSelectedRegatta=Les courses sélectionnées contiennent des catégories de bateaux qui ne sont pas identiques à la catégorie de bateau "{0}" de la régate sélectionnée. Aucune course ne sera chargée. @@ -388,7 +388,7 @@ regattaExistForSelectedBoatClass=Il existe au moins une régate pour les catégo reload=Recharger addRegatta=Ajouter régate... importRegattas=Importer régates... -exchangeName=Nom d'échange +exchangeName=Nom d''échange course=Parcours courseLayout=Configuration du parcours buoy=Bouée @@ -397,31 +397,31 @@ buoys=Bouées waypoint=Point de cheminement showAllCompetitors=Afficher tous les concurrents boatTails=Parcours effectué par chaque bateau -startFirstMarkTriangle=Triangle ligne de départ jusqu'à la première marque -resultImportUrls=URL d'importation des résultats -errorRefreshingResultImportUrlList=Erreur lors de l'actualisation de la liste des URL d'importation des résultats : {0} -successfullyUpdatedResultImportUrls=Mise à jour de la liste des URL d'importation des résultats réussie -errorRemovingResultImportUrls=Erreur lors de la suppression des URL d'importation des résultats : {0} +startFirstMarkTriangle=Triangle ligne de départ jusqu''à la première marque +resultImportUrls=URL d''importation des résultats +errorRefreshingResultImportUrlList=Erreur lors de l''actualisation de la liste des URL d''importation des résultats : {0} +successfullyUpdatedResultImportUrls=Mise à jour de la liste des URL d''importation des résultats réussie +errorRemovingResultImportUrls=Erreur lors de la suppression des URL d''importation des résultats : {0} pleaseEnterNonEmptyUrl=Saisissez une URL. -addResultImportUrl=Ajouter URL d'importation des résultats -errorAddingResultImportUrl=Erreur lors de l'ajout de l'URL d'importation des résultats : {0} +addResultImportUrl=Ajouter URL d''importation des résultats +errorAddingResultImportUrl=Erreur lors de l''ajout de l''URL d''importation des résultats : {0} remoteServerInstances=Instances de serveur distant localServer=Serveur local errorRefreshingSailingServers=Erreur lors de la mise à jour des instances SailingServer : {0} successfullyUpdatedSailingServers=Instances SailingServer correctement mises à jour errorRemovingSailingServers=Erreur lors de la suppression des instances SailingServer : {0} addSailingServer=Ajouter instance SailingServer -errorAddingSailingServer=Erreur lors de l'ajout de l'instance SailingServer : {0} -errorTryingToObtainLeaderboardContents=Erreur lors de la tentative d'obtention du contenu du palmarès : {0} +errorAddingSailingServer=Erreur lors de l''ajout de l''instance SailingServer : {0} +errorTryingToObtainLeaderboardContents=Erreur lors de la tentative d''obtention du contenu du palmarès : {0} lastScoreUpdate=Dernière mise à jour des scores -warningBrowserUnsupported=Ce site Web n'est pas optimisé pour votre navigateur. Utilisez un navigateur plus récent, tel que Firefox ou Chrome. +warningBrowserUnsupported=Ce site Web n''est pas optimisé pour votre navigateur. Utilisez un navigateur plus récent, tel que Firefox ou Chrome. newMark=Nouvelle marque controlPoint=Nom de la porte/marque errorUpdatingRaceCourse=Erreur lors de la mise à jour du parcours : {0} successfullyUpdatedCourse=Mise à jour du parcours réussie selectTwoMarksForGate=Sélectionnez deux marques pour créer une porte. -errorTryingToObtainTheMarksOfTheRace=Erreur lors de la tentative d'obtention des marques pour le parcours : {0} -errorTryingToObtainRaceCourse=Erreur lors de la tentative d'obtention du parcours : {0} +errorTryingToObtainTheMarksOfTheRace=Erreur lors de la tentative d''obtention des marques pour le parcours : {0} +errorTryingToObtainRaceCourse=Erreur lors de la tentative d''obtention du parcours : {0} insertWaypointBeforeSelected=Insérer point de cheminement avant la sélection insertWaypointAfterSelected=Insérer point de cheminement après la sélection addGate=Ajouter porte @@ -429,30 +429,30 @@ scoringSchemeLowPointSystem=Système de points a minima scoringSchemeHighPointSystem=Système de points avec bonus scoringSchemeHighPointEssOverall=Système de points avec bonus - ESS général (10) scoringSchemeHighPointEssOverall12=Système de points avec bonus - ESS général (12) -scoringSchemeHighPointEssOverall12Description=Score en points. Le vainqueur d'un Act totalise 12 points, le 2e - 11 points, etc. En cas d'égalité au classement général des Extreme Sailing Series, la victoire est accordée au concurrent ayant remporté le plus d'Act. Si l'égalité persiste, le résultat obtenu au dernier Act sera utilisé. +scoringSchemeHighPointEssOverall12Description=Score en points. Le vainqueur d''un Act totalise 12 points, le 2e - 11 points, etc. En cas d''égalité au classement général des Extreme Sailing Series, la victoire est accordée au concurrent ayant remporté le plus d''Act. Si l''égalité persiste, le résultat obtenu au dernier Act sera utilisé. scoringSchemeHighPointLastBreaksTie=Système de points avec bonus, dernière course à égalité scoringSchemeLowPointWinnerGetsZero=Système de points a minima, le vainqueur obtient zéro scoringSchemeWinnerGetsFive=Système de points avec bonus, le vainqueur obtient 5 points scoringSchemeWinnerGetsSix=Système de points avec bonus, le vainqueur obtient 6 points scoringSchemeWinnerGetsEight=Système de points avec bonus, le vainqueur obtient 8 points scoringSchemeHighPointMatchRacing=Système de points avec bonus, Match racing -scoringSchemeHighPointMatchRacingDescription=Le vainqueur d'un duel obtient 1 point, le perdant 0 points +scoringSchemeHighPointMatchRacingDescription=Le vainqueur d''un duel obtient 1 point, le perdant 0 points scoringSchemeWinnerGetsEightAndInterpolation=Système de points avec bonus, vainqueur 8 points, interpolé scoringSchemeLowPointWithEliminationsAndRoundsWinnerGets07=Système de points à minima, avec éliminations et tours, le vainqueur obtient 0.7 points -scoringSchemeLowPointWithEliminationsAndRoundsWinnerGets07Description=Une variante du schéma de scores a minima qui utilise des éliminations sous forme de tours. \nChaque tour est organisé comme série dans la régate, et l'ordre de départ de la flotte est inversé, \ncommençant par le numéro le plus élevé pour le premier tour. \nSi une finale et une finale des perdants ont lieu, utilisez 1 et 2 comme ordre. Commencez à trois pour le tour des demi-finales. -scoringSchemeLowPointForLeagueOverallLeaderboard=Système de points à minima, en cas d'égalité, le total des points de l'Act est utilisé, puis celui du dernier Act -scoringSchemeLowPointForLeagueOverallLeaderboardDescription=À la place du système habituel de comptage pour schémas à minima en cas d'égalité, les concurrents dont le total des points est égal sont départagés en comparant le total des points qu'ils ont obtenus dans tous les Act. Si l'égalité persiste, la victoire est accordée en fonction du classement dans le dernier Act. -scoringSchemeLowPointTieBreakBasedOnLastSeriesOnly=Système de points a minima, en cas d'égalité, seule la dernière série compte -scoringSchemeLowPointTieBreakBasedOnLastSeriesOnlyDescription=À la place du système habituel de comptage pour schémas à minima en cas d'égalité, le score de la dernière série sans exclusion de course est pris en compte si deux concurrents sont à égalité. +scoringSchemeLowPointWithEliminationsAndRoundsWinnerGets07Description=Une variante du schéma de scores a minima qui utilise des éliminations sous forme de tours. \nChaque tour est organisé comme série dans la régate, et l''ordre de départ de la flotte est inversé, \ncommençant par le numéro le plus élevé pour le premier tour. \nSi une finale et une finale des perdants ont lieu, utilisez 1 et 2 comme ordre. Commencez à trois pour le tour des demi-finales. +scoringSchemeLowPointForLeagueOverallLeaderboard=Système de points à minima, en cas d''égalité, le total des points de l''Act est utilisé, puis celui du dernier Act +scoringSchemeLowPointForLeagueOverallLeaderboardDescription=À la place du système habituel de comptage pour schémas à minima en cas d''égalité, les concurrents dont le total des points est égal sont départagés en comparant le total des points qu''ils ont obtenus dans tous les Act. Si l''égalité persiste, la victoire est accordée en fonction du classement dans le dernier Act. +scoringSchemeLowPointTieBreakBasedOnLastSeriesOnly=Système de points a minima, en cas d''égalité, seule la dernière série compte +scoringSchemeLowPointTieBreakBasedOnLastSeriesOnlyDescription=À la place du système habituel de comptage pour schémas à minima en cas d''égalité, le score de la dernière série sans exclusion de course est pris en compte si deux concurrents sont à égalité. scoringSchemeHighPointFirstGetsOne=Système de points avec bonus, le vainqueur obtient 1 point scoringSchemeHighPointFirstGetsTen=Système de points avec bonus, le vainqueur obtient 10 points scoringSchemeHighPointFirstGetsTenOrEight=Système de points avec bonus, le vainqueur obtient 10 points (ou 8) -scoringSchemeHighPointFirstGetsTenOrEightDescription=Score en points. Le vainqueur totalise 10 points, le deuxième 9, etc. En cas d'égalité, la victoire est accordée au concurrent qui a gagné le plus de courses. Si l'égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. +scoringSchemeHighPointFirstGetsTenOrEightDescription=Score en points. Le vainqueur totalise 10 points, le deuxième 9, etc. En cas d''égalité, la victoire est accordée au concurrent qui a gagné le plus de courses. Si l''égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. scoringSchemeHighPointFirstGetsTwelveOrEight=Système de points avec bonus, le vainqueur obtient 12 points (ou 8) -scoringSchemeHighPointFirstGetsTwelveOrEightDescription=Score en points. Le vainqueur totalise 12 points, le deuxième 11, etc. En cas d'égalité, la victoire est accordée au concurrent qui a totalisé le plus de points. Si l'égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. +scoringSchemeHighPointFirstGetsTwelveOrEightDescription=Score en points. Le vainqueur totalise 12 points, le deuxième 11, etc. En cas d''égalité, la victoire est accordée au concurrent qui a totalisé le plus de points. Si l''égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. scoringSchemeHighPointFirstGetsTwelveOrEight2017=Système de points avec bonus - ESS 2017, le vainqueur obtient 12 points (ou 8) -scoringSchemeHighPointFirstGetsTwelveOrEight2017Description=Score en points. Le vainqueur totalise 12 points, le deuxième 11, etc. En cas d'égalité, la victoire est accordée au concurrent qui a totalisé le plus de points. Si l'égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. -scoringSystem=Système d'attribution des points +scoringSchemeHighPointFirstGetsTwelveOrEight2017Description=Score en points. Le vainqueur totalise 12 points, le deuxième 11, etc. En cas d''égalité, la victoire est accordée au concurrent qui a totalisé le plus de points. Si l''égalité persiste, la victoire est accordée en fonction du classement dans la dernière course. +scoringSystem=Système d''attribution des points createFlexibleLeaderboard=Créer palmarès flexible createRegattaLeaderboard=Créer palmarès régate createRegattaLeaderboardWithEliminations=Créer palmarès de régate avec éliminations @@ -471,10 +471,10 @@ totalTimeSailedDownwindInSeconds=Durée totale avec vent arrière totalTimeSailedDownwindInSecondsTooltip=Durée totale pendant laquelle le concurrent a navigué avec un vent arrière au cours de la régate. totalTimeSailedUpwindInSeconds=Durée totale dans le lit du vent totalTimeSailedUpwindInSecondsTooltip=Durée totale pendant laquelle le concurrent a navigué dans le lit du vent au cours de la régate. -totalTimeSailedReachingInSeconds=Durée totale jusqu'à atteindre ce point +totalTimeSailedReachingInSeconds=Durée totale jusqu''à atteindre ce point totalTimeSailedReachingInSecondsTooltip=Durée totale que le concurrent a mis à atteindre des portions de parcours au cours de la régate. totalTimeSailedInSeconds=Durée totale -totalTimeSailedInSecondsTooltip=Durée totale de navigation du concurrent dans la régate, calculée à partir de l'heure du départ de la course. +totalTimeSailedInSecondsTooltip=Durée totale de navigation du concurrent dans la régate, calculée à partir de l''heure du départ de la course. totalDistanceTraveled=Distance totale totalDistanceTraveledTooltip=Distance totale naviguée dans la régate. totalAverageSpeedOverGround=∅ Vf @@ -512,9 +512,9 @@ pleaseSelectASeries=Sélectionnez une série. pleaseSelectARace=Sélectionnez une course. displayGroupsInReverseOrder=Afficher groupes en sens inverse actionConfigureUrl=Configurer URL -configureLeaderboardUrlDescription=Configurer le palmarès et obtenir l'URL correspondante à partir du lien +configureLeaderboardUrlDescription=Configurer le palmarès et obtenir l''URL correspondante à partir du lien embedded=Intégré -additionalUrlSettings=Options d'URL supplémentaires +additionalUrlSettings=Options d''URL supplémentaires restrictToSingleSelectedRace=Limiter à la seule course sélectionnée expandSelectedRace=Développer course sélectionnée showRaceDetails=Autoriser détails de la course @@ -529,17 +529,17 @@ factor=Facteur errorUpdatingIsMedalRace=Erreur lors la mise à jour des options de la course médaillée : {0} maneuverLoss=Perte suite à manœuvre averageManeuverLossInMeters=∅ perte suite à manœuvre -averageManeuverLossInMetersTooltip=Distance moyenne perdue au cours d'une manœuvre. +averageManeuverLossInMetersTooltip=Distance moyenne perdue au cours d''une manœuvre. averageTackLossInMeters=∅ perte suite à un virement averageTackLossInMetersTooltip=Distance moyenne perdue au cours des virements. -averageJibeLossInMeters=∅ perte suite à changement d'amure -averageJibeLossInMetersTooltip=Distance moyenne perdue au cours des changements d'amure. +averageJibeLossInMeters=∅ perte suite à changement d''amure +averageJibeLossInMetersTooltip=Distance moyenne perdue au cours des changements d''amure. shape=Forme pattern=Modèle legend=Légende live=en direct swissTimingArchiveConnector=Manifestations archivées SwissTiming -errorFetchingChartData=Erreur lors de l'accès aux données du graphique : {0} +errorFetchingChartData=Erreur lors de l''accès aux données du graphique : {0} loadingCompetitorData=Chargement des données du concurrent... competitorRegattaDataAfterRaceN={0} après la course {1} rankChart=Classement @@ -548,14 +548,14 @@ raceNetPointsTooltip=Points nets du concurrent dans la course regattaNetPointsTooltip=Points nets du concurrent dans la régate showRankChart=Afficher graphique du classement overallLeaderboardSelection=Palmarès général -errorTryingToObtainOverallLeaderboards=Erreur lors de la tentative d'obtention du palmarès général : {0} +errorTryingToObtainOverallLeaderboards=Erreur lors de la tentative d''obtention du palmarès général : {0} finished=terminé upcoming=à venir next=suivante inProgress=en cours passedTo=passé à {0} -gapChangeSinceLegStartInSeconds=Changement de l'écart -gapChangeSinceLegStartInSecondsTooltip=Changement de l'écart par rapport au concurrent en tête depuis le début de la dernière portion de parcours.\nUn chiffre négatif indique que l'écart a diminué ;\nun chiffre positif indique que l'écart a augmenté. +gapChangeSinceLegStartInSeconds=Changement de l''écart +gapChangeSinceLegStartInSecondsTooltip=Changement de l''écart par rapport au concurrent en tête depuis le début de la dernière portion de parcours.\nUn chiffre négatif indique que l''écart a diminué ;\nun chiffre positif indique que l''écart a augmenté. sideToWhichMarkAtLegStartWasRounded=Marque laissée à sideToWhichMarkAtLegStartWasRoundedTooltip=Côté duquel la marque a été contournée au début de la portion de parcours. raceIsLive=Course en direct : {0} @@ -569,29 +569,29 @@ generatePolarSheet=Générer fiche polaire polars=Diagrammes polaire polarSheetChart=Fiche polaire polarSheetMinimumDataSizePerGraph=Nombre minimum de points de données par diagramme. -polarSheetMinimumDataSizePerGraphTooltip=Les diagrammes comportant moins de points de données sous-jacents ne sont pas affichés visuellement.\nDe cette façon, aucun diagramme inutile n'est affiché pour \nla vitesse du vent s'il n'y a pas suffisamment de données. +polarSheetMinimumDataSizePerGraphTooltip=Les diagrammes comportant moins de points de données sous-jacents ne sont pas affichés visuellement.\nDe cette façon, aucun diagramme inutile n''est affiché pour \nla vitesse du vent s''il n''y a pas suffisamment de données. polarSheetMinimumDataSizePerAngle=Nombre minimum de points de données par angle. -polarSheetMinimumDataSizePerAngleTooltip=Dans chaque diagramme, seules les données relatives à des angles comportant au moins le nombre indiqué de\npoints de données sous-jacents seront affichées. Il est possible de masquer les sections\ninutiles du diagramme à l'aide de ce seuil. +polarSheetMinimumDataSizePerAngleTooltip=Dans chaque diagramme, seules les données relatives à des angles comportant au moins le nombre indiqué de\npoints de données sous-jacents seront affichées. Il est possible de masquer les sections\ninutiles du diagramme à l''aide de ce seuil. polarSheetMinimumWindConfidence=Valeur fiable minimale du vent polarSheetMinimumWindConfidenceTooltip=Seuls les points vent dont la valeur de fiabilité dépasse le seuil indiqué \nsont utilisés. Cette valeur de fiabilité se situe entre 0 et 1. polarSheetMinimumConfidenceMeasure=Indicateur de fiabilité minimale -polarSheetMinimumConfidenceMeasureTooltip=Indicateur de fiabilité minimale pour un point affiché dans le diagramme.\nSi celui-ci se situe en-dessous d'un seuil donné, le point ne sera pas affiché.\nL'indicateur se situe entre 0 et 1, il est déterminé\nà l'aide de mesures statistiques. +polarSheetMinimumConfidenceMeasureTooltip=Indicateur de fiabilité minimale pour un point affiché dans le diagramme.\nSi celui-ci se situe en-dessous d''un seuil donné, le point ne sera pas affiché.\nL''indicateur se situe entre 0 et 1, il est déterminé\nà l''aide de mesures statistiques. polarSheetUseOnlyWindGaugeData=Utiliser uniquement des données de vent de jauges pour la vitesse du vent -polarSheetUseOnlyWindGaugeDataTooltip=Si vous considérez uniquement les données de vitesse provenant de jauges de vent, \nvous vous assurez d'exclure des vitesses de vent estimées et saisies manuellement, susceptibles de fausser le diagramme polaire. -polarSheetUseOnlyEstimationData=Utiliser uniquement l'estimation pour la direction du vent -polarSheetUseOnlyEstimationDataTooltip=En utilisant l'estimation précise du vent pour la direction du vent,\nvous corrigez des diagrammes polaires qui ont pivoté suite à des données de vent \nde jauge non valides. +polarSheetUseOnlyWindGaugeDataTooltip=Si vous considérez uniquement les données de vitesse provenant de jauges de vent, \nvous vous assurez d''exclure des vitesses de vent estimées et saisies manuellement, susceptibles de fausser le diagramme polaire. +polarSheetUseOnlyEstimationData=Utiliser uniquement l''estimation pour la direction du vent +polarSheetUseOnlyEstimationDataTooltip=En utilisant l''estimation précise du vent pour la direction du vent,\nvous corrigez des diagrammes polaires qui ont pivoté suite à des données de vent \nde jauge non valides. polarSheetRemoveOutliers=Supprimer des valeurs aberrantes (approche basée sur la distance) polarSheetRemoveOutliersTooltip=Les valeurs aberrantes sont supprimées par une approche basée sur la distance.\nLes paramètres peuvent être ajustés ci-dessous. polarSheetOutlierDetectionRadius=Rayon de voisinage de détection des valeurs aberrantes -polarSheetOutlierDetectionRadiusTooltip=Le rayon utilisé dans l'algorithme de \ndétection de valeurs aberrantes basé sur la distance. +polarSheetOutlierDetectionRadiusTooltip=Le rayon utilisé dans l''algorithme de \ndétection de valeurs aberrantes basé sur la distance. polarSheetOutlierDetectionMinimumPerc=Pourcentage de voisinage minimal de détection de valeurs aberrantes polarSheetOutlierDetectionMinimumPercTooltip=Le pourcentage de points de données de voisinage/points de données globaux \ndoit être inférieur à la valeur donnée pour que le point soit considéré comme une valeur aberrante. -polarSheetNumberOfHistogramColumns=Nombre de colonnes d'histogramme par plage de vent +polarSheetNumberOfHistogramColumns=Nombre de colonnes d''histogramme par plage de vent polarSheetWindSteppingInKnots=Évolution du vent en nœuds polarSheetWindSteppingMaxDistance=Distance max. au niveau du vent polarSheetWindSteppingMaxDistanceTooltip=Définit un rayon maximal pour lequel des points seront affectés aux niveaux du vent. polarSheetSplitByWindGauges=Fractionner des sources de vent -polarSheetSplitByWindGaugesTooltip=Le fractionnement des sources de vent permet d'améliorer la recherche pour des jauges de vents défavorables. \nLa précision statistique ne peut pas être garantie. Un même point peut être \npris en compte de multiples fois dans les fiches polaires en résultant (pour des jauges de vent différentes). +polarSheetSplitByWindGaugesTooltip=Le fractionnement des sources de vent permet d''améliorer la recherche pour des jauges de vents défavorables. \nLa précision statistique ne peut pas être garantie. Un même point peut être \npris en compte de multiples fois dans les fiches polaires en résultant (pour des jauges de vent différentes). applyMinimumWindConfidence=Appliquer fiabilité minimale du vent applyMinimumWindConfidenceTooltip=Si cette case est cochée, la valeur de la case ci-dessus sera utilisée comme valeur de fiabilité valide minimale du vent au cours de la génération. windRangeDistribution=Distribution dans la plage du vent @@ -601,7 +601,7 @@ competitorNationalityColumnTooltip=Nationalité de ce concurrent sailIdColumnTooltip=Indique le pavillon du pays et le numéro de voile du concurrent. rankColumnTooltip=La place au classement général de ce concurrent dans la régate. carryColumnTooltip=Points accumulés lors des autres courses -totalNetPointsColumnTooltip=Total net des points d'un concurrent dans la régate.\nLe tri est effectué en fonction du classement, et non des points. +totalNetPointsColumnTooltip=Total net des points d''un concurrent dans la régate.\nLe tri est effectué en fonction du classement, et non des points. windData=Données de vent gpsData=Données GPS status=Statut @@ -613,7 +613,7 @@ angleAndTotalNumberOfDataPointsAndCovAndCm=Angle : {0} ; Nombre total de point buoyZone=Zone de bouée radiusInMeters=Rayon (m) filterRegattasByName=Filtrer régates par nom -noRegattasYet=Il n'y a pas encore de régate. +noRegattasYet=Il n''y a pas encore de régate. addCourseArea=Ajouter zone de course courseAreas=Zones de course courseArea=Zone de course @@ -621,13 +621,13 @@ pleaseEnterNonEmptyCourseArea=Saisissez une zone de course. pleaseSelectACourseArea=Sélectionnez une zone de course. lastUpperFlag=Pavillon supérieur lastLowerFlag=Pavillon inférieur -cannotAddRacesToRegattaLeaderboardButOnlyToRegatta=Il s'agit d'un palmarès de régate. Vous pouvez uniquement ajouter des courses à ce palmarès dans la définition de la régate. +cannotAddRacesToRegattaLeaderboardButOnlyToRegatta=Il s''agit d''un palmarès de régate. Vous pouvez uniquement ajouter des courses à ce palmarès dans la définition de la régate. correctScore=Corriger score correctScoreFor=Corriger score pour le concurrent {0} dans la course {1} penaltyOrRedress=Pénalité/Réparation totalScore=Total des points -timePointMustBeAfterStartOfTracking=L'heure doit être postérieure au début du suivi. -timePointMustBeBeforeEndOfTracking=L'heure doit être antérieure au début du suivi. +timePointMustBeAfterStartOfTracking=L''heure doit être postérieure au début du suivi. +timePointMustBeBeforeEndOfTracking=L''heure doit être antérieure au début du suivi. regattaUsedForTheTrackedRace=Régate utilisée pour la course suivie tracTracUpdateUrl=URL de mise à jour du serveur TracTrac passingInstructions=Instructions de passage @@ -635,7 +635,7 @@ refreshNow=Actualiser maintenant stopUpdating=Arrêter mise à jour startUpdating=Lancer mise à jour currentTime=Heure actuelle : -tractracUsername=Nom d'utilisateur TracTrac +tractracUsername=Nom d''utilisateur TracTrac tractracPassword=Mot de passe TracTrac operatorEquals=Égal à operatorNotEqualTo=Non égal à @@ -654,7 +654,7 @@ distanceToLineFiveSecondsBeforeStart=Distance par rapport à la ligne 5 sec. av speedOverGroundAtRaceStart=Vf au départ speedOverGroundFiveSecondsBeforeStart=Vf 5 sec. avant le départ speedOverGroundWhenPassingStart=Vf au moment du départ -distanceToLineAtRaceStartTooltip=Distance par rapport à la ligne de départ à l'heure du départ de la course ; distance par rapport au côté le plus proche de la ligne si le concurrent se trouve au-delà des extrémités de la ligne. +distanceToLineAtRaceStartTooltip=Distance par rapport à la ligne de départ à l''heure du départ de la course ; distance par rapport au côté le plus proche de la ligne si le concurrent se trouve au-delà des extrémités de la ligne. distanceToLineFiveSecondsBeforeStartTooltip=Distance par rapport à la ligne de départ cinq secondes avant le départ ; distance par rapport au côté le plus proche de la ligne si le concurrent se trouve au-delà des extrémités de la ligne. speedOverGroundAtRaceStartTooltip=Vitesse fond au moment du départ de la course speedOverGroundFiveSecondsBeforeStartTooltip=Vitesse fond cinq secondes avant le départ @@ -698,7 +698,7 @@ filterNothing=Ne pas filtrer topNCompetitorsByRaceRank=Tête du classement de la course {0} topNCompetitorsByTotalRank=Tête du classement général {0} simulator=Simulateur -optionsBar=Barre d'options +optionsBar=Barre d''options simulateButton=Prédire setup=Configurer strength=Force (en nd) @@ -747,9 +747,9 @@ showFollowingCourseAreas=Afficher les zones de course suivantes showFollowingRegattas=Afficher les régates suivantes showOnlyRacesOfSameDay=Afficher uniquement les courses du même jour showOnlyCurrentlyRunningRaces=Afficher les courses en cours -seriesDefinesResultDiscardingRule=La série définit les règles d'élimination du résultat. +seriesDefinesResultDiscardingRule=La série définit les règles d''élimination du résultat. addSeries=Ajouter série -regattaDefinesResultDiscardingRules=La régate définit les règles d'élimination du résultat. +regattaDefinesResultDiscardingRules=La régate définit les règles d''élimination du résultat. startsWithZeroScore=La série commence avec un score à zéro. masterDataImportPanel=Importation des données de base importSuccess=Réussite\n{0} groupe(s) de palmarès, {1} palmarès, {2} manifestation(s), {3} régate(s) et {4} pistes de média créés @@ -759,21 +759,21 @@ 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. +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. +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 -raceIsFinishing=En cours d'achèvement +raceIsRunning=En cours d''exécution +raceIsFinishing=En cours d''achèvement raceIsFinished=Terminé raceIsScheduled=Planifié raceIsInStartphase=Lancer phase @@ -790,7 +790,7 @@ protestTimeFinishesAt=se termine protestTimeFinishedAt=terminé flags=Pavillons lastUpdate=Dernière mise à jour -noMoreRacingToday=Plus aucune course aujourd'hui +noMoreRacingToday=Plus aucune course aujourd''hui furtherSignalsAshore=Signaux ultérieurs à terre earlyStarters=Faux départs showingDetailsOfRace=Affichage des détails de la course {0} @@ -817,14 +817,14 @@ zuluIndiaRemoved=Pavillon de départ - départ avec pénalités pour les faux d classFlagRemoved=Pavillon affalé - signal de départ de la course xray=Rappel individuel - faux départs signalés firstSubstitute=Rappel général - trop de faux départs signalés - répétition de la procédure de départ -blueFlagDisplayed=Pavillon envoyé - le premier concurrent a franchi la ligne d'arrivée -blueFlagRemoved=Pavillon affalé - le dernier concurrent a franchi la ligne d'arrivée ou le temps limite d'arrivée est dépassé +blueFlagDisplayed=Pavillon envoyé - le premier concurrent a franchi la ligne d''arrivée +blueFlagRemoved=Pavillon affalé - le dernier concurrent a franchi la ligne d''arrivée ou le temps limite d''arrivée est dépassé golfRemoved=Pavillon supprimé - porte fermée -answeringPennantOverAlphaDisplayed=Pavillon envoyé - départ retardé - plus de courses aujourd'hui +answeringPennantOverAlphaDisplayed=Pavillon envoyé - départ retardé - plus de courses aujourd''hui answeringPennantOverHotelDisplayed=Pavillon envoyé - départ retardé - signaux ultérieurs à terre answeringPennantDisplayed=Pavillon envoyé - départ retardé answeringPennantRemoved=Pavillon affalé - la procédure de départ sera lancée dans une minute -novemberOverAlphaDisplayed=Pavillon envoyé - course annulée - plus de courses aujourd'hui +novemberOverAlphaDisplayed=Pavillon envoyé - course annulée - plus de courses aujourd''hui novemberOverHotelDisplayed=Pavillon envoyé - course annulée - signaux ultérieurs à terre novemberDisplayed=Pavillon envoyé - course annulée bravoDisplayed=Début du temps de réclamation @@ -837,24 +837,24 @@ dataBeforeAfter=Données obtenues avant/après la course rawFixes=Toutes les positions (y compris les valeurs aberrantes) importRemoteHost=Hôte distant : importFetchRemoteLgs=Accéder à la liste des groupes de palmarès -importUrlInvalid=URL non valide pour l'accès aux groupes de palmarès : {0} -importGetLeaderboardsFailed=Échec de la requête GET pour l'obtention des groupes de palmarès pour l'hôte {0}, erreur {1} +importUrlInvalid=URL non valide pour l''accès aux groupes de palmarès : {0} +importGetLeaderboardsFailed=Échec de la requête GET pour l''obtention des groupes de palmarès pour l''hôte {0}, erreur {1} importNoDataReturned=Aucune donnée retournée par le serveur -importServerError=Échec de la requête GET pour l'obtention des groupes de palmarès avec erreur de serveur. Pour plus d'informations, consultez les journaux du serveur. +importServerError=Échec de la requête GET pour l''obtention des groupes de palmarès avec erreur de serveur. Pour plus d''informations, consultez les journaux du serveur. importOverrideSwitchLabel=Remplacer données existantes si les noms et ID correspondent importSelectedLeaderboardGroups=Importer groupes de palmarès sélectionnés importSelectAtLeastOne=Vous devez sélectionner au moins un groupe de palmarès à importer. deselectAll=Désélectionner tout polarDiagramButton=Diagramme polaire ratioBetweenTimeSinceLastPositionFixAndAverageSamplingInterval=Écart GPS -ratioBetweenTimeSinceLastPositionFixAndAverageSamplingIntervalTooltip=Ratio entre l'heure de réception de la dernière position GPS position et l'intervalle d'échantillonnage moyen +ratioBetweenTimeSinceLastPositionFixAndAverageSamplingIntervalTooltip=Ratio entre l''heure de réception de la dernière position GPS position et l''intervalle d''échantillonnage moyen trackingQuality=Qualité du suivi legType=Type de portion de parcours sailID=Numéro de voile seriesLeaderboard=Palmarès de la série regattaLeaderboards=Palmarès de la régate clearSelection=Effacer la sélection -running=En cours d'exécution +running=En cours d''exécution runAsSubstantive=Exécuter done=Terminé lastFinished=Fin de dernière exécution @@ -863,15 +863,15 @@ times=durées dataAmount=Volume de données averageCleanedServerTime=∅ Durée de nettoyage du serveur averageCleanedOverallTime=∅ Durée globale de nettoyage -dataMiningBenchmarkResults=Résultats benchmark d'exploration de données +dataMiningBenchmarkResults=Résultats benchmark d''exploration de données serverTime=Heure du serveur confidenceShouldBeBetween=Les valeurs de fiabilité doivent se situer entre 0 et 1. minDataValuesNeedToBeAtLeastZero=Les valeurs de tailles de données minimales ne peuvent pas être négatives. -numberOfColumnsAtLeast2=Le nombre de colonnes d'histogrammes doit être supérieur à un. +numberOfColumnsAtLeast2=Le nombre de colonnes d''histogrammes doit être supérieur à un. outlierRadiusNeedsToBePositiveString=Le rayon des valeurs aberrantes doit être un nombre positif. outlierMinimumNeighborhoodPctString=Le pourcentage de voisinage des valeurs aberrantes doit être un nombre positif, max. 1. oneOrMoreParametersAreEmpty=Les zones de paramètres ne peuvent pas être vides. -errorWhileAddingSeriesToChart=Une erreur s'est produite lors de la tentative d'ajout\nd'une nouvelle série au graphique. +errorWhileAddingSeriesToChart=Une erreur s''est produite lors de la tentative d''ajout\nd''une nouvelle série au graphique. generatingPolarSheet=Génération de la fiche polaire... dataCount=Volume des données generationFinished=Génération terminée @@ -882,17 +882,17 @@ selectSheet=Sélectionner fiche cleanedServerTime=Durée de nettoyage du serveur overallTime=Durée globale cleanedOverallTime=Durée globale de nettoyage -dataMiningResult=Résultat d'exploration de données +dataMiningResult=Résultat d''exploration de données groupBy=Regrouper par statisticToCalculate=Calculer statistiques queryResultsChartSubtitle={0} entrées de données analysées en {1} secondes noQuerySelected=Aucune requête sélectionnée runAutomatically=Exécuter automatiquement windImport_Upload=Charger -windImport_Title=Importer vent de l'expédition +windImport_Title=Importer vent de l''expédition windImport_BoatId=N° du bateau : -windImport_SelectedRacesWarning=Voulez-vous réellement importer les données de vent dans les {0} courses ?\nNotez que seules les courses dont l'intervalle est pertinent seront prises en compte. -windImport_AllRacesWarning=Voulez-vous réellement importer les données de vent dans toutes les courses ?\nNotez que seules les courses dont l'intervalle est pertinent seront prises en compte. +windImport_SelectedRacesWarning=Voulez-vous réellement importer les données de vent dans les {0} courses ?\nNotez que seules les courses dont l''intervalle est pertinent seront prises en compte. +windImport_AllRacesWarning=Voulez-vous réellement importer les données de vent dans toutes les courses ?\nNotez que seules les courses dont l''intervalle est pertinent seront prises en compte. windImport_ResultHeader=Données de vent importées de : {0} à : {1}. Appliqué à {2} course(s). windImport_ResultEntry=Course : {0} ({1}) - {2} points de : {3} à : {4} windImport_ResultError=Erreur : {0} @@ -900,20 +900,20 @@ gribWindImport_Title=Importer données de vent à partir de fichiers GRIB showWindSpeedSeriesTooltip=Bascule la visibilité de la vitesse du vent pour toutes les sources de données showWindDirectionSeriesTooltip=Bascule la visibilité de la direction du vent pour toutes les sources de données combinedWindSourceTypeTooltip=Combine toutes les autres sources de vent en un ensemble de données -legMiddleWindSourceTypeTooltip=Données de vent combinées au point du milieu de la route loxodromique d'une portion de parcours +legMiddleWindSourceTypeTooltip=Données de vent combinées au point du milieu de la route loxodromique d''une portion de parcours courseBasedWindSourceTypeTooltip=Valeur basée sur la configuration du parcours (supposant que le départ de la course se fait avec une portion de parcours dans le lit du vent) trackBasedEstimationWindSourceTypeTooltip=Données calculées à partir du suivi du concurrent windSensorWindSourceTypeTooltip=Données captées à partir de systèmes de mesure mobiles webWindSourceTypeTooltip=Valeurs de données définies manuellement raceCommitteeWindSourceTypeTooltip=Valeurs de données définies manuellement par les membres du comité de course sheetName=Nom de la fiche -sheetNameTooltip=Vous pouvez nommer votre fiche polaire à l'aide de la zone de texte.\nLe système génère un nom basé sur la catégorie du bateau \nsi aucun nom n'est indiqué. +sheetNameTooltip=Vous pouvez nommer votre fiche polaire à l''aide de la zone de texte.\nLe système génère un nom basé sur la catégorie du bateau \nsi aucun nom n''est indiqué. timeDownwind=Vent arrière (durée) -timeReaching=Durée jusqu'à l'arrivée +timeReaching=Durée jusqu''à l''arrivée timeUpwind=Dans le lit du vent (durée) raceTimeTooltip=Durée de navigation totale dans cette course, chronométrée à partir du moment où le concurrent passe le point de cheminement du départ \n(et non pas lors du départ de la course) raceTimeDownwindTooltip=Durée totale de navigation vent arrière dans cette course -raceTimeReachingTooltip=Durée totale de navigation jusqu'à l'arrivée dans cette course +raceTimeReachingTooltip=Durée totale de navigation jusqu''à l''arrivée dans cette course raceTimeUpwindTooltip=Durée totale de navigation dans le lit du vent dans cette course noStatisticSelectedError=Aucune statistique à calculer sélectionnée noCustomGrouperScriptTextError=Script de regroupement vide @@ -922,11 +922,11 @@ noGrouperSelectedError=Aucun type de regroupement sélectionné noDataRetrieverChainDefinitonSelectedError=Aucun récupérateur de données sélectionné queryNotValidBecause=Aucune requête possible dû à dataMining=Exploration de données -errorRunningDataMiningQuery=Une erreur s'est produite lors de l'exécution de la requête. -hideToolbar=Masquer barre d'outils +errorRunningDataMiningQuery=Une erreur s''est produite lors de l''exécution de la requête. +hideToolbar=Masquer barre d''outils showSeriesLeaderboards=Afficher palmarès de la série showOverallLeaderboard=Afficher palmarès général -lineAngleToWindAndAdvantage=longueur : {0} m\nangle au vent : {1}°\ncôté {2} a {3} m d'avantage +lineAngleToWindAndAdvantage=longueur : {0} m\nangle au vent : {1}°\ncôté {2} a {3} m d''avantage doYouReallyWantToRemoveEvents=Voulez-vous vraiment supprimer les manifestations ? doYouReallyWantToRemoveEvent=Voulez-vous vraiment supprimer la manifestation {0} ? line=Ligne @@ -940,10 +940,10 @@ successfullyAllowedCompetitorReset=Autorisation de rechargement de concurrent(s) id=ID allowReload=Autoriser rechargement compress=Comprimer -compressTooltip=Utiliser seulement si l'instance de serveur d'exportation \ns'exécute au moins avec le commit 0fbf6071dea125bec4a56dee55d61c99def4a62e. -queryRunner=Outil d'exécution de requêtes -rerunQueryAfterRefresh=Exécuter la requête de nouveau après l'actualisation -refreshIntervalMustntBeEmpty=L'intervalle d'actualisation ne doit pas être vide. +compressTooltip=Utiliser seulement si l''instance de serveur d''exportation \ns''exécute au moins avec le commit 0fbf6071dea125bec4a56dee55d61c99def4a62e. +queryRunner=Outil d''exécution de requêtes +rerunQueryAfterRefresh=Exécuter la requête de nouveau après l''actualisation +refreshIntervalMustntBeEmpty=L''intervalle d''actualisation ne doit pas être vide. selectionTables=Tables de sélection addConfiguration=Ajouter configuration noConfigurations=Aucune configuration disponible @@ -952,7 +952,7 @@ allowedCourseAreas=Zones de course autorisées minimumRoundsForCourse=Nombre de tours min. pour la course maximumRoundsForCourse=Nombre de tours max. pour la course resultsMailRecipient=Résultats destinataire du mail -deviceConfiguration=Configuration de l'appareil +deviceConfiguration=Configuration de l''appareil none=Auc. courseDesignerMode=Concepteur de la course racingProcedure=Instructions de course @@ -968,59 +968,59 @@ sailingWorldCupStart=Départ coupe du monde de la voile setConfiguration=Activer configuration classFlag=Pavillon de classe classFlagHelpText=Active le pavillon de la classe utilisée pour {0}. Sélectionnez ''Ne pas écraser'' pour activer le pavillon par défaut pour ces instructions. -individualRecallHelpText=Si cette option est activée, l'officiel de course a la possibilité d'appeler pour un rappel individuel. -resultEntryHelpText=Si cette option est activée, l'officiel de course a la possibilité d'entrer des résultats pendant et après la phase d'arrivée. +individualRecallHelpText=Si cette option est activée, l''officiel de course a la possibilité d''appeler pour un rappel individuel. +resultEntryHelpText=Si cette option est activée, l''officiel de course a la possibilité d''entrer des résultats pendant et après la phase d''arrivée. startmodeFlags=Pavillons de types de départ startmodeFlagsHelpText=Définit les pavillons de types de départ disponibles. Sélectionnez "Auc." pour activer les pavillons par défaut des instructions. gateStart=Départ au lièvre activatePathfinder=Activer bateau ouvreur -pathfinderHelpText=Si cette option est activée, l'officiel de course peut définir le bateau ouvreur. +pathfinderHelpText=Si cette option est activée, l''officiel de course peut définir le bateau ouvreur. essStart=Départ ESS basicStart=Départ basique leagueStart=Départ de ligue configured=Configuré overwriteRacingProceduresConfiguration=Activer configuration de la régate -overwriteRacingProceduresConfigurationHelpText=L'activation de cette option fournira une configuration de base de la régate pour toutes les options non configurées dans la configuration spécifique de la régate. +overwriteRacingProceduresConfigurationHelpText=L''activation de cette option fournira une configuration de base de la régate pour toutes les options non configurées dans la configuration spécifique de la régate. setStartTime=Définir heure de départ currentPass=Passage actuel -setStartTimeDescription=Sélectionnez une nouvelle heure de départ pour la course. Si vous voulez définir une heure de départ qui corresponde à une heure du passé, vous devez cocher cette case pour mettre à jour le nombre de passages. Notez qu'en modifiant le nombre de passages, vous perdrez toutes les informations concernant le passage précédent (comme les pavillons et manifestations). +setStartTimeDescription=Sélectionnez une nouvelle heure de départ pour la course. Si vous voulez définir une heure de départ qui corresponde à une heure du passé, vous devez cocher cette case pour mettre à jour le nombre de passages. Notez qu''en modifiant le nombre de passages, vous perdrez toutes les informations concernant le passage précédent (comme les pavillons et manifestations). setTrackingTimesDescription=Définissez le début et la fin du suivi pour la course. -hasAdditionalGolfDownTime=Activer temps d'arrêt supplémentaire -additionalGolfDownTimeHelpText=Activer temps d'arrêt supplémentaire +hasAdditionalGolfDownTime=Activer temps d''arrêt supplémentaire +additionalGolfDownTimeHelpText=Activer temps d''arrêt supplémentaire invalidColor=Couleur non valide : {0} igtimiAccounts=Comptes Igtimi -errorFetchingIgtimiAccounts=Erreur lors de l'accès à tous les comptes Igtimi : {0} +errorFetchingIgtimiAccounts=Erreur lors de l''accès à tous les comptes Igtimi : {0} addIgtimiAccount=Ajouter compte Igtimi -errorAuthorizingAccessToIgtimiUser=Erreur lors de l'autorisation d'accès pour l'utilisateur {0} : {1} -successfullyAuthorizedAccessToIgtimiUser=Autorisation d'accès réussie pour l'utilisateur : {0} -couldNotAuthorizedAccessToIgtimiUser=Autorisation pour l'utilisateur {0} échouée : mot de passe ou nom d'utilisateur non valide. -errorGettingIgtimiAuthorizationUrl=Erreur lors de l'accès à l'URL d'autorisation Igtimi : {0} +errorAuthorizingAccessToIgtimiUser=Erreur lors de l''autorisation d''accès pour l''utilisateur {0} : {1} +successfullyAuthorizedAccessToIgtimiUser=Autorisation d''accès réussie pour l''utilisateur : {0} +couldNotAuthorizedAccessToIgtimiUser=Autorisation pour l''utilisateur {0} échouée : mot de passe ou nom d''utilisateur non valide. +errorGettingIgtimiAuthorizationUrl=Erreur lors de l''accès à l''URL d''autorisation Igtimi : {0} addIgtimiUser=Ajouter utilisateur Igtimi doYouReallyWantToRemoveLeaderboards=Voulez-vous vraiment supprimer les palmarès ? -errorTryingToRemoveIgtimiAccount=Erreur lors de la tentative de suppression du compte Igtimi pour l'utilisateur {0}. -successfullyRemoveIgtimiAccount=Suppression du compte Igtimi pour l'utilisateur {0} réussie. -eMailMustNotBeEmpty=L'adresse e-mail ne doit pas être vide. +errorTryingToRemoveIgtimiAccount=Erreur lors de la tentative de suppression du compte Igtimi pour l''utilisateur {0}. +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. -failedToSetNewStartTime=Définition de la nouvelle heure de départ échouée. Cela peut arriver lorsque la même heure de départ existe déjà dans le journal de course ou lorsque quelqu'un d'autre a ajouté une heure de départ plus récente (sous forme d'ID de passage et d'heure logique) que celle que vous venez d'ajouter. -doYouReallyWantToRemoveIgtimiAccount=Souhaitez-vous réellement supprimer le compte Igtimi qui permet à l'utilisateur {0} d'accéder aux données ? +failedToSetNewStartTime=Définition de la nouvelle heure de départ échouée. Cela peut arriver lorsque la même heure de départ existe déjà dans le journal de course ou lorsque quelqu''un d''autre a ajouté une heure de départ plus récente (sous forme d''ID de passage et d''heure logique) que celle que vous venez d''ajouter. +doYouReallyWantToRemoveIgtimiAccount=Souhaitez-vous réellement supprimer le compte Igtimi qui permet à l''utilisateur {0} d''accéder aux données ? igtimiWindImport=Importer le vent depuis Igtimi -seeIgtimiTabForAccountSettings=Afficher l'onglet ''Igtimi'' pour voir les options de compte qui déterminent quelles données Igtimi seront prises en compte. +seeIgtimiTabForAccountSettings=Afficher l''onglet ''Igtimi'' pour voir les options de compte qui déterminent quelles données Igtimi seront prises en compte. importWindFromIgtimi=Importer le vent depuis Igtimi -errorImportingIgtimiWind=Erreur lors de l'importation des données du vent depuis Igtimi : {0} +errorImportingIgtimiWind=Erreur lors de l''importation des données du vent depuis Igtimi : {0} resultFromIgtimiWindImport=Le nombre suivant de points vent ont été importés pour les courses référencées : {0} -timeToStart={0} jusqu'au départ +timeToStart={0} jusqu''au départ timeSinceStart={0} depuis le départ -distanceToLine=Distance jusqu'à la ligne de départ -beatAngleTooltip=L'angle entre la direction du concurrent et le vent. -beatAngle=Angle d'attaque +distanceToLine=Distance jusqu''à la ligne de départ +beatAngleTooltip=L''angle entre la direction du concurrent et le vent. +beatAngle=Angle d''attaque showBoatClassChartsLabel=Vous pouvez également afficher le diagramme global pour les catégories de bateau disponibles. showDiagram=Afficher diagramme runAutomaticallyTooltip=Exécutez la requête automatiquement, par exemple après avoir modifié les statistiques ou le regroupement. -rerunQueryAfterRefreshTooltip=Réexécute la requête après l'actualisation des tables. +rerunQueryAfterRefreshTooltip=Réexécute la requête après l''actualisation des tables. queryDefinitionProvider=Fournisseur de définitions de requêtes statisticProvider=Fournisseur de statistiques calculateThe=Calculer le/la @@ -1045,22 +1045,22 @@ remove_what=Supprimer {0} pleaseEnterA=Veuillez saisir un(e) {0} pingPosition=Effectuez un test ping pour la position {0}. pleaseEnterAValidValueFor=Saisissez une valeur valide pour {0} ({1}). -copyCourseAndCompetitors=Copier le parcours et les concurrents dans d'autres courses +copyCourseAndCompetitors=Copier le parcours et les concurrents dans d''autres courses setTrackingTimes=Définissez les durées de suivi. nowSelectRaceColumnAndFleetToCopyTo=Sélectionnez maintenant la colonne de la course et la flotte auxquelles le parcours doit être copié. selectRowInTableToCopyCourse=Sélectionnez une seule ligne dans la table vers laquelle le parcours doit être copié. -deviceId=ID de l'appareil -deviceType=Type d'appareil +deviceId=ID de l''appareil +deviceType=Type d''appareil mappedToType=Mappé au type mappedTo=Mappé à -deviceMappings=Mappages d'appareils -atMostOneEndOfTheTimeRangeMayBeOpen=Au moins une extrémité de l'intervalle de temps du mappage doit rester ouverte (ne pas configurer). -pleaseSelectAnItemToMapTo=Sélectionnez un élément auquel mapper l'appareil. +deviceMappings=Mappages d''appareils +atMostOneEndOfTheTimeRangeMayBeOpen=Au moins une extrémité de l''intervalle de temps du mappage doit rester ouverte (ne pas configurer). +pleaseSelectAnItemToMapTo=Sélectionnez un élément auquel mapper l''appareil. device=Appareil timeRange=Intervalle de temps -closeTimeRange=Fermer extrémité ouverte de l'intervalle de temps -setClosingTimePoint=Définir la fin de l'intervalle de temps ouvert -startOfTimeRangeMustLieBeforeEnd=Le début de l'intervalle de temps doit se situer avant sa fin. +closeTimeRange=Fermer extrémité ouverte de l''intervalle de temps +setClosingTimePoint=Définir la fin de l''intervalle de temps ouvert +startOfTimeRangeMustLieBeforeEnd=Le début de l''intervalle de temps doit se situer avant sa fin. overallProgress=Progression générale eventOverview=Synthèse de la manifestation start=Départ @@ -1068,12 +1068,12 @@ showAddedScores=Afficher scores ajoutés pour chaque entrée du palmarès ratio=ratio importWind=Importer vent importWindTooltip=Si vous décochez cette option, cela réduira considérablement le volume de données transféré. -importDeviceConfigurations=Importer configurations de l'appareil -importDeviceConfigurationsTooltip=Si vous cochez cette option, TOUTES les configurations de l'appareil seront importées dans le serveur distant. -authorName=Nom de l'auteur -authorPriority=Priorité de l'auteur +importDeviceConfigurations=Importer configurations de l''appareil +importDeviceConfigurationsTooltip=Si vous cochez cette option, TOUTES les configurations de l''appareil seront importées dans le serveur distant. +authorName=Nom de l''auteur +authorPriority=Priorité de l''auteur removeDenotation=Supprimer marquage -competitorRegistrationsMissingProceed=Des inscriptions de concurrents sont manquantes pour au moins l'une des courses sélectionnées ({0}). Voulez-vous quand même continuer ? +competitorRegistrationsMissingProceed=Des inscriptions de concurrents sont manquantes pour au moins l''une des courses sélectionnées ({0}). Voulez-vous quand même continuer ? pleaseSelectAControlPoint=Sélectionnez un point de contrôle. twoMarkControlPoint=Point de contrôle à deux marques registeredCompetitors=Concurrents inscrits @@ -1089,10 +1089,10 @@ availableLeaderboardGroups=Groupes de palmarès disponibles leaderboardGroupsOfSelectedEvent=Groupe de palmarès affectés à la manifestation addRaces=Ajouter des courses withNamePrefix=avec préfixe de nom -pleaseSelectASeriesFirst=Sélectionnez d'abord une série. +pleaseSelectASeriesFirst=Sélectionnez d''abord une série. upcommingEventStartsInDays=dans {0,number} jours upcommingEventStartsInDays[one]=demain -upcommingEventStartsInDays[none]=aujourd'hui +upcommingEventStartsInDays[none]=aujourd''hui sharingMailTooltip=Partager par e-mail sharingTwitterTooltip=Partager sur Twitter sharingFacebookTooltip=Partager sur Facebook @@ -1101,7 +1101,7 @@ eventSharingShortText={0} dans {1} le {2} #String eventSharingLongText(String eventName, String venue, String dateString, String url); eventSharingLongText=Je voudrais partager {0} dans {1} le {2}. Détails : \n{3} #String seriesSharingLongText(String seriesName, String url); -seriesSharingLongText=J'aimerai partager la série {0}. Détails : {1} +seriesSharingLongText=J''aimerai partager la série {0}. Détails : {1} #String seriesSharingShortText(String seriesName); seriesSharingShortText={0} competitorsAnalytics=Analyse des concurrents @@ -1112,11 +1112,11 @@ videos=Vidéos image=Image images=Images video=Vidéo -flagImageURL=URL d'image de pavillon (résolution d'image à 18x12px) -imageURLs=URL d'image +flagImageURL=URL d''image de pavillon (résolution d''image à 18x12px) +imageURLs=URL d''image videoURLs=URL de vidéo -sponsorImageURLs=URL d'image du sponsor -invalidSelection=La sélection actuelle n'est pas valide. +sponsorImageURLs=URL d''image du sponsor +invalidSelection=La sélection actuelle n''est pas valide. advancePassId=ID de passage avancé pleaseSelectAScoringResult=Sélectionnez un résultat... timeZone=Fuseau horaire @@ -1124,30 +1124,30 @@ eventOfficialWebsiteURL=URL du site Web officiel eventBaseURL=URL de base de la manifestation (http://something.sapsailing.com) eventSailorsInfoWebsiteURL=URL du site Web avec infos pour les concurrents eventOverviewURL=URL de synthèse de la manifestation -eventLogoImageURL=URL de l'image du logo +eventLogoImageURL=URL de l''image du logo showPingMarkMappings=Afficher mappages pour marques avec pings effectués regattaNameMustNotContainSlashes=Le nom de la régate ne doit pas contenir de barres obliques. showNumberOfRacesScored=Nombre de courses avec points -errorFetchingWindStreamletData=Erreur lors de l'accès aux données du couloir de vent : {0} +errorFetchingWindStreamletData=Erreur lors de l''accès aux données du couloir de vent : {0} showWindStreamletOverlay=Afficher superposition des couloirs de vent showWindStreamletColors=Colorer les couloirs de vent en fonction de sa vitesse 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. +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 +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 non persistante. Cela signifie que la nouvelle valeur sera oubliée une fois que le serveur sera relancé. +setStartTimeReceivedDescription=Définit l''heure de départ reçue de la course suivie sélectionnée non persistante. Cela signifie que la nouvelle valeur sera oubliée une fois que le serveur sera relancé. lastScoreCorrectionsTime=Dernière heure de correction du score lastScoreCorrectionsComment=Dernier commentaire sur la correction du score setTimeToNow=Définir heure sur "maintenant" -useStartTimeInference=Utiliser l'interférence temporelle des passages des marques de départ -controlTrackingFromStartAndFinishTimes=Contrôler suivi à partir des heures de départ et d'arrivée -numberOfQueueMessagesSent=Nombre de messages en file d'attente envoyés +useStartTimeInference=Utiliser l''interférence temporelle des passages des marques de départ +controlTrackingFromStartAndFinishTimes=Contrôler suivi à partir des heures de départ et d''arrivée +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 +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 @@ -1179,16 +1179,16 @@ advanced=Avancé basedOn=basé sur retrieveWith=Récupérer avec mappingDetails=Détails du mappage -deviceMappingQrCodeExplanation=Si vous utilisez l'application de suivi, vous pouvez également ajouter le mappage de l'appareil en sélectionnant un concurrent/une marque, en définissant des heures de départ et d'arrivée et en scannant ce code QR. +deviceMappingQrCodeExplanation=Si vous utilisez l''application de suivi, vous pouvez également ajouter le mappage de l''appareil en sélectionnant un concurrent/une marque, en définissant des heures de départ et d''arrivée et en scannant ce code QR. qrCode=Code QR enterCourseAreaName=Saisissez le nom de la zone de course... enterCourseName=Saisissez le nom de la course... -enterImageURL=Saisissez l'URL de l'image... -enterVideoURL=Saisissez l'URL de la vidéo... -enterSponsorImageURL=Saisissez l'URL de l'image du sponsor... +enterImageURL=Saisissez l''URL de l''image... +enterVideoURL=Saisissez l''URL de la vidéo... +enterSponsorImageURL=Saisissez l''URL de l''image du sponsor... enterRaceName=Saisissez le nom du parcours... -serverError=Une erreur s'est produite lors de la tentative de contact du serveur. Vérifiez la connexion réseau et réessayez. -remoteProcedureCall=Procédure d'appel distante +serverError=Une erreur s''est produite lors de la tentative de contact du serveur. Vérifiez la connexion réseau et réessayez. +remoteProcedureCall=Procédure d''appel distante serverReplies=Réponses du serveur errorCommunicatingWithServer=Erreur lors de la communication avec le serveur userManagement=Gestion des utilisateurs @@ -1204,7 +1204,7 @@ autoplaySettings=Options de lecture automatique startBrowserFullscreen=Lancer navigateur en mode plein écran switchToLiveRaceAutomatically=Passer automatiquement à la course en direct timeBeforeRaceStart=durée avant le départ de la course (en secondes) -errorTryingToGetEvents=Erreur lors de la tentative d'accès aux manifestations : {0} +errorTryingToGetEvents=Erreur lors de la tentative d''accès aux manifestations : {0} showXYDiagram=Afficher diagramme x-y xyDiagram=Diagramme x-y boatSpeed=Vitesse du bateau @@ -1215,47 +1215,47 @@ errorTryingToCreateNewEvent=Erreur lors de la tentative de création de la nouve createNewEvent=Créer manifestation noFleetsDefined=Aucune flotte définie successfullyCreatedRegattas=Création des régates réussie -errorTryingToRegisterRacesForTracking=Erreur lors de la tentative d'enregistrement des courses {0} pour le suivi : {1}. Vérifiez la syntaxe de l'URL stockée/du direct. +errorTryingToRegisterRacesForTracking=Erreur lors de la tentative d''enregistrement des courses {0} pour le suivi : {1}. Vérifiez la syntaxe de l''URL stockée/du direct. errorDeterminingPolarAvailability=Erreur lors de la détermination de la disponibilité des données polaires/VPP pour la course {0} : {1} error=Erreur fileStorage=Stockage du fichier active=Actif -scoringSchemeHighPointEssOverallDescription=Score en points. Le vainqueur d'un Act totalise 10 points, le 2e - 9 points, etc. En cas d'égalité au classement général des Extreme Sailing Series, la victoire est accordée au concurrent ayant remporté le plus d'Act. Si l'égalité persiste, le résultat obtenu au dernier Act sera utilisé. +scoringSchemeHighPointEssOverallDescription=Score en points. Le vainqueur d''un Act totalise 10 points, le 2e - 9 points, etc. En cas d''égalité au classement général des Extreme Sailing Series, la victoire est accordée au concurrent ayant remporté le plus d''Act. Si l''égalité persiste, le résultat obtenu au dernier Act sera utilisé. timeBetweenRaceStartAndCompetitorStartInSeconds=Décalage avec le départ timeBetweenRaceStartAndCompetitorStartInSecondsTooltip=Durée écoulée entre le départ de la course et le moment auquel le concurrent a passé le point de cheminement du départ. Une durée négative suggère un OCS (départ prématuré). useInternalAlgorithm=Utiliser algorithme de passage de marque interne editMarkPassings=Modifier passages des marques editMarkPositions=Modifier positions des marques removeFixedPassings=Supprimer passage de marque fixé -setFixedPassing=Définir l'heure comme passage de marque +setFixedPassing=Définir l''heure comme passage de marque setSuppressedPassing=Supprimer passage de marque en commençant par marque actuelle removeSuppressedPassing=Supprimer passage de marque supprimé -warningSettingFixedPassing=L'heure à laquelle le point de cheminement {0} a été passé ne peut pas être antérieure à l'heure de passage du point de cheminement précédent, ni postérieure à l'heure de passage du point de cheminement suivant. +warningSettingFixedPassing=L''heure à laquelle le point de cheminement {0} a été passé ne peut pas être antérieure à l''heure de passage du point de cheminement précédent, ni postérieure à l''heure de passage du point de cheminement suivant. errorRemovingFixedPassing=Erreur lors de la suppression du passage de marque fixé : {0} errorSettingFixedPassing=Erreur lors de la définition du passage de marque fixé : {0} errorSuppressingPassing=Erreur lors de la suppression des passages de marques : {0} errorRemovingSupressedPassing=Erreur lors de la suppression des passages de marques supprimés : {0} -errorTryingToObtainMarkPassing=Erreur lors de la tentative d'obtention des passages de marques : {0} -errorTryingToObtainRaceLogMarkPassingData=Erreur lors de la tentative d'obtention des données de passages de marques du journal de course : {0} +errorTryingToObtainMarkPassing=Erreur lors de la tentative d''obtention des passages de marques : {0} +errorTryingToObtainRaceLogMarkPassingData=Erreur lors de la tentative d''obtention des données de passages de marques du journal de course : {0} email=E-mail pleaseEnterAnEmail=Saisissez un e-mail. inviteCompetitors=Inviter des concurrents inviteSelectedCompetitors=Inviter concurrents sélectionnés -notAllCompetitorsProvideEmail=Les concurrents n'ont pas tous fourni un e-mail. -sendingMailsFailed=Échec de l'envoi des e-mails +notAllCompetitorsProvideEmail=Les concurrents n''ont pas tous fourni un e-mail. +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 +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é. +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é showCompetitorSailIdColumn=ID de voile -showCompetitorSailIdColumnTooltip=Affiche l'ID de voile 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. +showCompetitorSailIdColumnTooltip=Affiche l''ID de voile 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. showCompetitorFullNameColumn=Nom complet du concurrent alwaysShowCompetitorNationalityColumn=Afficher toujours la nationalité du concurrent -alwaysShowCompetitorNationalityColumnTooltip=Si disponibles, afficher les deux : le drapeau national ainsi que l'image du concurrent +alwaysShowCompetitorNationalityColumnTooltip=Si disponibles, afficher les deux : le drapeau national ainsi que l''image du concurrent loadingDimensionValues=Chargement des valeurs de dimension runningQuery=Requête en cours inviteBuoyTenders=Inviter navire baliseur @@ -1263,15 +1263,15 @@ orMultipleEmails=ou plusieurs adresses e-mails séparées par des virgules courseOverGroundTrueDegreesTooltip=Route fond vraie en degrés courseOverGroundTrueDegrees=Route fond distanceIncludingGateStartInMeters=Distance (si départ au lièvre) -distanceTraveledIncludingGateStartTooltip=La distance naviguée du départ de la portion de parcours jusqu'à sa fin\nou jusqu'à l'heure actuelle (si la portion de parcours n'est pas terminée).\nSi la portion de parcours inclut un départ au lièvre, la distance de la bouée de ligne jusqu'à la position de départ est incluse \npour permettre de comparer les concurrents même si leur départ ne s'est pas fait à la même heure. -raceDistanceTraveledIncludingGateStartTooltip=La distance naviguée du départ de la course jusqu'à sa fin\nou jusqu'à l'heure actuelle (si la course n'est pas terminée).\nEn cas de départ au lièvre, la distance de la bouée de ligne jusqu'à la position de départ est incluse \npour permettre de comparer les concurrents même si leur départ ne s'est pas fait à la même heure. +distanceTraveledIncludingGateStartTooltip=La distance naviguée du départ de la portion de parcours jusqu''à sa fin\nou jusqu''à l''heure actuelle (si la portion de parcours n''est pas terminée).\nSi la portion de parcours inclut un départ au lièvre, la distance de la bouée de ligne jusqu''à la position de départ est incluse \npour permettre de comparer les concurrents même si leur départ ne s''est pas fait à la même heure. +raceDistanceTraveledIncludingGateStartTooltip=La distance naviguée du départ de la course jusqu''à sa fin\nou jusqu''à l''heure actuelle (si la course n''est pas terminée).\nEn cas de départ au lièvre, la distance de la bouée de ligne jusqu''à la position de départ est incluse \npour permettre de comparer les concurrents même si leur départ ne s''est pas fait à la même heure. results=Résultats groupName=Nom du groupe valueAscending=Valeur (ascendant) valueDescending=Valeur (descendant) sortBy=Trier par dashboardHeader=Tableau de bord -dashboardNoWindBotAvailableHeader=Le bot du vent n'est pas disponible. +dashboardNoWindBotAvailableHeader=Le bot du vent n''est pas disponible. dashboardNoWindBotAvailableMessage=Pour pouvoir recevoir des données de vent depuis des unités de mesure du vent, assurez-vous que le bot du vent est allumé et connecté à SAP Sailing Analytics. dashboardWindBot=Bot du vent dashboardTrueWindSpeed=Vitesse vent réel @@ -1281,16 +1281,16 @@ dashboardTrueWindDirectionUnit=deg dashboardLiveWind=en direct dashboardAverageWind=moyenne dashboardAverageWindMinutes=({0} minutes) -dashboardWindChartHint=Touchez le graphique pour modifier l'intervalle. +dashboardWindChartHint=Touchez le graphique pour modifier l''intervalle. dashboardSelectCompetitor=Sélectionner concurrent dashboardStartAnalysesHeader=Analyses de départ dashboardNewStartAnalysisAvailable=Nouvelle analyse de départ disponible dashboardNoStartAnalysesAvailableHeader=Aucune analyse de départ disponible -dashboardNoStartAnalysesAvailableMessage=Une analyse de départ est créée à partir de chaque départ de course. Veuillez patienter jusqu'à ce que la course commence. -dashboardNoStartlineAdvantagesByWindAvailableHeader=Aucun avantage de ligne de départ n'est disponible. -dashboardNoStartlineAdvantagesByWindAvailableMessage=Pour pouvoir calculer l'avantage de la ligne de départ, un parcours doit être défini par le comité de course. -dashboardNoStartlineAdvantagesByGeometryAvailableHeader=Aucun avantage de ligne de départ n'est disponible. -dashboardNoStartlineAdvantagesByGeometryAvailableMessage=Pour pouvoir calculer l'avantage de la ligne de départ, un parcours doit être défini par le comité de course. +dashboardNoStartAnalysesAvailableMessage=Une analyse de départ est créée à partir de chaque départ de course. Veuillez patienter jusqu''à ce que la course commence. +dashboardNoStartlineAdvantagesByWindAvailableHeader=Aucun avantage de ligne de départ n''est disponible. +dashboardNoStartlineAdvantagesByWindAvailableMessage=Pour pouvoir calculer l''avantage de la ligne de départ, un parcours doit être défini par le comité de course. +dashboardNoStartlineAdvantagesByGeometryAvailableHeader=Aucun avantage de ligne de départ n''est disponible. +dashboardNoStartlineAdvantagesByGeometryAvailableMessage=Pour pouvoir calculer l''avantage de la ligne de départ, un parcours doit être défini par le comité de course. dashboardStartlineAdvantagesByWindHeader=Avantages de ligne de départ par vent dashboardStartlineAdvantageByGeometryHeader=Avantage de ligne de départ par géométrie dashboardRankAtFirstMark=Place à la première marque @@ -1310,12 +1310,12 @@ currentFilterSelection=Sélection du filtre actuel notCapableOfGeneratingACodeForIdentifier=Je ne suis pas capable de générer un code pour cet identifiant. serverUrl=URL du serveur rotatedFromTrueNorth=Pivoté de {0} degrés à partir du vrai Nord. -clickToToggleWindUp=Touchez/Cliquez pour basculer entre l'affichage orienté nord et l'affichage par rapport au sens du vent +clickToToggleWindUp=Touchez/Cliquez pour basculer entre l''affichage orienté nord et l''affichage par rapport au sens du vent clickToToggleWindStreamlets=Touchez/cliquez pour afficher ou masquer les couloirs de vent. startLineToFirstMarkTriangle=Distance entre le départ et la première marque ({0} m) -dataMiningComponentsHaveBeenUpdated=Les composants d'exploration de données ont été mis à jour. -dataMiningComponentsNeedReloadDialogMessage=Cliquez sur Recharger pour recharger les composants maintenant. Les données actuellement affichées seront ignorées et une requête par défaut sera exécutée.n\Cliquez sur Fermer pour ne rien faire. L'exploration de données ne fonctionnera pas correctement tant que les composants n'auront pas été rechargés. -noDataForEvent=Il n'y a pas encore de données pour cette manifestation. +dataMiningComponentsHaveBeenUpdated=Les composants d''exploration de données ont été mis à jour. +dataMiningComponentsNeedReloadDialogMessage=Cliquez sur Recharger pour recharger les composants maintenant. Les données actuellement affichées seront ignorées et une requête par défaut sera exécutée.n\Cliquez sur Fermer pour ne rien faire. L''exploration de données ne fonctionnera pas correctement tant que les composants n''auront pas été rechargés. +noDataForEvent=Il n''y a pas encore de données pour cette manifestation. countriesCount={0,number} pays countriesCount[one]={0,number} pays racesCount={0,number} courses @@ -1334,7 +1334,7 @@ matcher=Comparateur any=Tout urlProviders=Fournisseurs de résultats basés sur une URL pleaseSelectAURLProvider=Sélectionnez un fournisseur de résultat basé sur une URL… -sampleURL=Exemple d'URL : {0} +sampleURL=Exemple d''URL : {0} sapSportsOn=SAP Sports sur followSapSports=Suivre SAP Sports liveNow=En direct @@ -1356,9 +1356,9 @@ rankingMetric=Classement oneDesignRankingMetric=Monotype  orcPerformanceCurveRankingMetric=Courbe de performance ORC timeOnTimeAndDistanceRankingMetric=Temps sur temps/Temps sur distance -oneDesignRankingMetricDescription=Monotype : le vainqueur est le premier à franchir la ligne.\nLe classement se base sur les positions au vent (dans le lit du vent/vent arrière) ou en fonction de la position dans la course (jusqu'à atteindre un point). -orcPerformanceCurveRankingMetricDescription=Courbe de performance ORC : procédé de distribution des handicaps sophistiqué qui accorde des compensations de temps en fonction d'un VPP/polaire, en imaginant des angles de portions de parcours prédéfinis par rapport au vent.\nEn fonction de ces compensations, un "vent implicite" est calculé et sert de base au classement.\nLe vent implicite peut être calculé à n'importe quel moment dans la course et sert alors de base pour le classement dans la course. -timeOnTimeAndDistanceRankingMetricDescription=Temps sur temps/Temps sur distance : classement final par temps calculé ;\nle temps est calculé en appliquant, de façon facultative, un facteur au temps réel (1.0 par défaut)\net en soustrayant une compensation en secondes par mille marin,\nappliqué à la longueur de la course.\nLe classement est effectué sur la base de l'arrivée estimée selon la position actuelle du bateau le plus rapide\nen supposant le VMG/VMC moyen. +oneDesignRankingMetricDescription=Monotype : le vainqueur est le premier à franchir la ligne.\nLe classement se base sur les positions au vent (dans le lit du vent/vent arrière) ou en fonction de la position dans la course (jusqu''à atteindre un point). +orcPerformanceCurveRankingMetricDescription=Courbe de performance ORC : procédé de distribution des handicaps sophistiqué qui accorde des compensations de temps en fonction d''un VPP/polaire, en imaginant des angles de portions de parcours prédéfinis par rapport au vent.\nEn fonction de ces compensations, un "vent implicite" est calculé et sert de base au classement.\nLe vent implicite peut être calculé à n''importe quel moment dans la course et sert alors de base pour le classement dans la course. +timeOnTimeAndDistanceRankingMetricDescription=Temps sur temps/Temps sur distance : classement final par temps calculé ;\nle temps est calculé en appliquant, de façon facultative, un facteur au temps réel (1.0 par défaut)\net en soustrayant une compensation en secondes par mille marin,\nappliqué à la longueur de la course.\nLe classement est effectué sur la base de l''arrivée estimée selon la position actuelle du bateau le plus rapide\nen supposant le VMG/VMC moyen. timeOnTimeFactor=Facteur temps sur temps (ToT) timeOnDistanceAllowanceInSecondsPerNauticalMile=Compensation temps sur distance (ToD) timeOnTimeFactorTooltip=Facteur temps sur temps ; le temps réel est multiplié par ce facteur dans la formule de temps calculé. @@ -1366,7 +1366,7 @@ timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip=Compensation temps sur di calculatedTimeTraveled=Temps calculé calculatedTimeTraveledTooltip=Temps calculé selon le handicap du concurrent \nbasé sur le temps à partir du départ de la course et de la distance parcourue (au vent). raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Temps calculé @ par rapport au plus rapide -raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Temps calculé selon l'arrivée estimée du concurrent qui est actuellement en tête de la course ; \nestimation basée sur la VMG dans la portion de parcours actuelle, équivaut à la performance (calculée) du bateau le plus rapide dans toutes les portions de parcours suivantes. +raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Temps calculé selon l''arrivée estimée du concurrent qui est actuellement en tête de la course ; \nestimation basée sur la VMG dans la portion de parcours actuelle, équivaut à la performance (calculée) du bateau le plus rapide dans toutes les portions de parcours suivantes. sailorInfo=Informations concurrents sailorInfoLongText=Résultats officiels, réclamations, météo marine eventQuickfinder=Quickfinder manifestation @@ -1376,7 +1376,7 @@ racesQuickfinder=Quickfinder courses profileQuickfinder=Quickfinder profil statistics=Statistiques impressions=Impressions -notAvailableOnMobileMessage=Ce contenu n'existe pas en version mobile. \nPasser à la version bureau ? +notAvailableOnMobileMessage=Ce contenu n''existe pas en version mobile. \nPasser à la version bureau ? gotoDesktop=Aller à la version bureau goBack=Retour showAllX=Afficher tout {0} @@ -1388,7 +1388,7 @@ numberWindFixes=Points vent sailedMiles=Milles navigués millionValue={0,number,#0.0} mil billionValue={0,number,#0.0} bil -noResults=Aucun résultat disponible. Vous pouvez consulter les 'Informations concurrents'. +noResults=Aucun résultat disponible. Vous pouvez consulter les ''Informations concurrents''. noNews=Aucune actualité disponible. pointsValue={0,number,#0.00} openLeaderboard=Ouvrir palmarès @@ -1406,7 +1406,7 @@ courseGeometry=Géométrie du parcours degreesToWind={0}° au vent miniLeeaderboardLegendText=Affiche les points associés au nombre de courses par concurrent currentOfTotal={0,number}/{1,number} -noFinishedRaces=Aucune course terminée pour l'instant. +noFinishedRaces=Aucune course terminée pour l''instant. racesOverview=Synthèse des courses listFormatLabel=Format de liste competitionFormatLabel=Format de compétition @@ -1428,7 +1428,7 @@ eventsHaveTakenPlace={0} manifestations ont eu lieu. eventsHaveTakenPlace[one]=Une manifestation a eu lieu. raceOffice=Bureau de course analyze=Analyser -dataMiningSettings=Options de l'exploration de données +dataMiningSettings=Options de l''exploration de données multiResultsPresenter=Visualiseur de résultats multiples plainResultsPresenter=Visualiseur de résultats bruts resultsChart=Graphique des résultats @@ -1455,28 +1455,28 @@ resultsFoundForSearch={0,number} résultats trouvés pour ''{1}'' resultsFoundForSearch[one]={0,number} résultat trouvé pour ''{1}'' runPredefinedQuery=Exécuter requête prédéfinie selectPredefinedQuery=Sélectionner requête prédéfinie -predefinedQueryRunner=Outil d'exécution de requêtes prédéfinies +predefinedQueryRunner=Outil d''exécution de requêtes prédéfinies developerOptions=Options développeur copyToClipboard=Copier dans le presse-papiers code=Code useClassGetName=Utilisez Class.getName() pour les noms des types. -useClassGetNameTooltip=Plus stable face aux modifications dans la base de code, mais le fichier de script peut uniquement être utilisé dans l'étendue où les classes sont disponibles. +useClassGetNameTooltip=Plus stable face aux modifications dans la base de code, mais le fichier de script peut uniquement être utilisé dans l''étendue où les classes sont disponibles. useStringLiterals=Utiliser littéraux de chaîne pour les noms de types useStringLiteralsTooltip=Le fichier de script peut être utilisé partout, mais sera corrompu si la base de code change. errorLoadingDataWithTryAgain=Erreur lors du chargement des données. Nouvel essai dans quelques minutes. addGalleryPhoto=Ajouter photo de la galerie -addStageImage=Ajouter image d'étape -addTeaserImage=Ajouter image d'accroche +addStageImage=Ajouter image d''étape +addTeaserImage=Ajouter image d''accroche addEventLogo=Ajouter logo de la manifestation noImagesDefinedYet=Aucune image définie pour le moment -imageSizeError=La taille de l'image {0} ne correspond pas. La largeur doit être comprise entre {1} et {2} pixels et la hauteur entre {3} et {4} pixels. -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é. +imageSizeError=La taille de l''image {0} ne correspond pas. La largeur doit être comprise entre {1} et {2} pixels et la hauteur entre {3} et {4} pixels. +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é. 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 ? -warningDirectCompetitorRegistration=Avertissement : cette option engendrera l'inscription des concurrents de cette course séparément à chaque course. Si les concurrents sont inscrits à une régate, ils ne seront pas automatiquement inscrits à cette course. -warningRegattaCompetitorRegistration=Avertissement : ceci réactivera l'inscription des concurrents à la régate. Toutes les inscriptions à la régate seront automatiquement utilisées comme inscriptions à cette course. +doYouWantToDisableCompetitorsRegistrationsOnTheRace=Voulez-vous désactiver l''inscription des concurrents pour la course ? +warningDirectCompetitorRegistration=Avertissement : cette option engendrera l''inscription des concurrents de cette course séparément à chaque course. Si les concurrents sont inscrits à une régate, ils ne seront pas automatiquement inscrits à cette course. +warningRegattaCompetitorRegistration=Avertissement : ceci réactivera l''inscription des concurrents à la régate. Toutes les inscriptions à la régate seront automatiquement utilisées comme inscriptions à cette course. competitorRegistrationsOnRaceDisabled=Les inscriptions des concurrents sont désactivées pour cette course. Pour les activer, cochez la case sur la gauche. warningForDisabledCompetitors=Les concurrents suivants ne peuvent pas être inscrits à cette course : {0} competitorToolTipMessage={0} a déjà été affecté à la flotte {2} dans la course {3} et ne peut donc pas être affecté à la flotte {1} dans la même course. @@ -1487,22 +1487,22 @@ requiresValidRegatta=Pour identifier la course à afficher, cette page nécessit couldNotObtainRace=Impossible de trouver une course ayant le nom {1} pour la flotte {2} pour une régate ayant le nom {0} : {3} errorTryingToCreateEmbeddedMap=Erreur lors de la tentative de création de la carte intégrée : {0} topN={0} meilleurs -transparentBufferLineOnHover=Lignes tampons transparentes lors du passage du curseur au-dessus des lignes d'aide +transparentBufferLineOnHover=Lignes tampons transparentes lors du passage du curseur au-dessus des lignes d''aide bufferLineStrokeWeight=Épaisseur de la ligne tampon profile=Profil showOnlyCompetitorsOfLog=Afficher uniquement concurrents inscrits dans le journal confirmLosingCompetitorEditsWhenTogglingLogBasedView=Cette action réinitialisera les modifications non enregistrées apportées aux concurrents.\nVoulez-vous vraiment continuer ? removalOfMarkDisabledMayBeUsedInRaces=Suppression désactivée, marques utilisées dans les courses {0} createDefaultLeaderboardGroup=Voulez-vous créer un groupe de palmarès par défaut pour votre manifestation ? -pleaseCreateAtLeastOneMappingBy=Créez au moins un mappage en sélectionnant d'abord une piste sur la gauche, puis une marque ou un concurrent sur la droite. +pleaseCreateAtLeastOneMappingBy=Créez au moins un mappage en sélectionnant d''abord une piste sur la gauche, puis une marque ou un concurrent sur la droite. matcherType=Type de comparateur matchingDevices=Appareils correspondants addDevice=Ajouter appareil -createDeviceConfiguration=Créer configuration d'appareil -forWhichDeviceShouldConfigurationApply=Indiquez l'appareil auquel la configuration doit s'appliquer. +createDeviceConfiguration=Créer configuration d''appareil +forWhichDeviceShouldConfigurationApply=Indiquez l''appareil auquel la configuration doit s''appliquer. create=Créer thereIsAlreadyAConfigurationForThisDevice=Une configuration existe déjà pour cet appareil. -enterDeviceIdentifierName=Saisissez un nom d'identifiant. +enterDeviceIdentifierName=Saisissez un nom d''identifiant. administration=Administration pleaseSelectALeaderboardGroup=Sélectionnez un groupe de palmarès. linkLeaderboardToLeaderboardGroupOfEvent=Liez le palmarès au groupe de palmarès de la manifestation. @@ -1511,11 +1511,11 @@ failedToLinkLeaderboardToLeaderboardGroup=La liaison du palmarès {0} au groupe createDefaultRegatta=Créer régate par défaut doYouWantToCreateADefaultRegatta=Voulez-vous créer une régate par défaut ? defaultLocale=Par défaut -defaultSailorsInfoLinkInfoText=Le système utilise le lien par défaut, sauf si une version spécifique de la langue existe. Si aucun lien par défaut n'existe, aucun lien n'est associé aux langues pour lesquelles aucun lien spécifique n'a été défini. +defaultSailorsInfoLinkInfoText=Le système utilise le lien par défaut, sauf si une version spécifique de la langue existe. Si aucun lien par défaut n''existe, aucun lien n''est associé aux langues pour lesquelles aucun lien spécifique n''a été défini. qrSync=Synchronisation code QR -thereIsNoIdentifierSet=Aucun identifiant n'est défini. -couldNotObtainAccessTokenForUser=Impossible d'obtenir un jeton d'accès pour l'utilisateur {0} -raceManagerDeviceName=Nom de l'appareil +thereIsNoIdentifierSet=Aucun identifiant n''est défini. +couldNotObtainAccessTokenForUser=Impossible d''obtenir un jeton d''accès pour l''utilisateur {0} +raceManagerDeviceName=Nom de l''appareil serverURLInvalid=Saisissez une URL de serveur valide. serverURLEmpty=URL de serveur vide marks=Marques @@ -1523,7 +1523,7 @@ addNewFix=Ajouter nouveau point pleaseSelectOtherTimepoint=Sélectionnez une autre heure. Il existe déjà un point à cette heure du curseur de temps. confirmMove=Confirmer déplacement confirmNewFix=Confirmer nouveau point -selectAFixPositionBy=Sélectionnez une position de point en faisant glisser la carte. Ensuite, confirmez ou annulez à l'aide des boutons ci-dessous. +selectAFixPositionBy=Sélectionnez une position de point en faisant glisser la carte. Ensuite, confirmez ou annulez à l''aide des boutons ci-dessous. pleaseSelectAMark=Sélectionnez une marque dans la liste sur la gauche. markFixes=Points de marques playstoreCampaign=utm_source=sapsailing&utm_medium=solutions&utm_content=2016.02&utm_campaign=solutions&pcampaignid=2016.sapsailing.solutions @@ -1536,7 +1536,7 @@ appstoreBadgeSuffix=_fr distanceFromAveragePosition=Distance de la position moyenne useATouchOptimizedUI=Utilisez une interface utilisateur tactile optimisée pour déplacer le point. deleteFix=Supprimer point -theDeletionOfThisFix=La suppression de ce point n'est pas possible actuellement. +theDeletionOfThisFix=La suppression de ce point n''est pas possible actuellement. loadingMarkFixes=Chargement de points de marques... fixSuccessfullyAdded=Ajout du point réussi. fixPositionSuccessfullyEdited=Modification de la position du point réussie. @@ -1544,9 +1544,9 @@ fixSuccessfullyRemoved=Suppression du point réussie. Supprimez la course et lan dragToChangePosition=Glissez pour modifier la position.\nClic droit pour ouvrir le menu permettant la suppression. moveFix=Déplacer point manage2SailEvent=Manifestation Manage2Sail -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... +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 @@ -1564,9 +1564,9 @@ init=Initialisation... connectionSetup=Établissement de la connexion connectionEstablish=Connexion en cours... transferStarted=Lecture des données -transferCompleted=Transfert des données terminé. Initialisation de l'opération d'importation. -importInit=Initialisation de l'importation -importWait=En attente de la fin d'autres opérations d'importation +transferCompleted=Transfert des données terminé. Initialisation de l''opération d''importation. +importInit=Initialisation de l''importation +importWait=En attente de la fin d''autres opérations d''importation importLeaderboardGroups=Importation de groupes de palmarès en cours... importWindTracks=Importation de pistes de vent en cours... importSensorFixes=Importation de points capteurs en cours... @@ -1609,7 +1609,7 @@ simulationLegendMixedLegText=Vent ambigu noTracksFound=Aucun suivi trouvé noRacesAvailable=Aucune course disponible loadingRegattasAndRaces=Chargement de régates et de courses -selectFromRacesWithOverlappingTimeRange=Sélectionnez parmi les courses dont l'intervalle de temps de la piste média se chevauche avec l'intervalle des courses auxquelles la piste doit être liée. +selectFromRacesWithOverlappingTimeRange=Sélectionnez parmi les courses dont l''intervalle de temps de la piste média se chevauche avec l''intervalle des courses auxquelles la piste doit être liée. finishTime=Arrivée à : {0} showCompetitorCharts=Afficher graphique de concurrents showWindChart=Afficher graphique du vent @@ -1629,30 +1629,30 @@ currentRideHeightInMeters=Hauteur pendant le planing currentRideHeightInMetersTooltip=Hauteur actuelle de planing currentOrAverageRideHeightInMeters=Hauteur pendant le planing (∅ à la fin) currentOrAverageRideHeightInMetersTooltip=Hauteur actuelle de planing en mètres avec la portion de parcours toujours en cours. Hauteur de planing moyenne après la fin de la portion de parcours. -pleaseCreateAtLeastOneMappingForCompetitor=Créez au moins un mappage en sélectionnant d'abord une piste sur la gauche, puis un concurrent sur la droite. +pleaseCreateAtLeastOneMappingForCompetitor=Créez au moins un mappage en sélectionnant d''abord une piste sur la gauche, puis un concurrent sur la droite. importAdditionalSensorData=Importer des données de capteurs supplémentaires watchLive=Regarder en direct raceAnalysis=Analyse de la course startAnalysis=Analyse du départ winningLanes=Voies gagnantes -maximumNumberOfDiscards=Nombre maximal d'éliminations +maximumNumberOfDiscards=Nombre maximal d''éliminations externalLinks=Liens externes urlForAllLanguages=URL pour toutes les langues urlForLanguage=URL pour la langue ''{0}'' notificationRegattaConfigurationUpdatedUsingByMarks=Configuration de régate active définie, en utilisant le concepteur de course « Par marques ». -warningOverrideRegattaConfigurationCourseDesignerToByMarks=La configuration de régate active existe déjà, mais avec l'option de concepteur de course erronée.\nSouhaitez-vous écraser l'option de concepteur de course et valider "Par marques" ? +warningOverrideRegattaConfigurationCourseDesignerToByMarks=La configuration de régate active existe déjà, mais avec l''option de concepteur de course erronée.\nSouhaitez-vous écraser l''option de concepteur de course et valider "Par marques" ? allRacesHaveBeenDenoted=Toutes les courses ont été marquées pour un suivi par journal de course. -chartSelectionHint=Astuce : Vous pouvez également utiliser le palmarès (sur l'onglet PALMARÈS) pour sélectionner les concurrents affichés dans le graphique. +chartSelectionHint=Astuce : Vous pouvez également utiliser le palmarès (sur l''onglet PALMARÈS) pour sélectionner les concurrents affichés dans le graphique. chooseALanguage=Sélectionner une langue solutions=Solutions blog=Blog officalEventWebsite=Site Web officiel de la manifestation -moreInfo=Plus d'infos +moreInfo=Plus d''infos viewAnalysis=Afficher analyses overallLeaderboard=Palmarès général pleaseTryAgain=Veuillez réessayer... reloadPage=Recharger la page -errorMessageLoadingData=Une erreur s'est produite pendant le chargement des données pour cette page. +errorMessageLoadingData=Une erreur s''est produite pendant le chargement des données pour cette page. regattaDetails=Détails de la régate chooseChartType=Sélectionnez le type de graphique. whatsNew=Nouveautés @@ -1682,7 +1682,7 @@ headerLogo=Sailing Analytics headerSearchPlaceholder=Rechercher mainEventShowAll=Afficher toutes les manifestations mainEventTitle=Manifestations les plus récentes du monde de la voile -mainMediaSubtitle=Oubliez le quotidien grâce à des images époustouflantes de l'édition la plus récente de votre manifestation de voile préférée. +mainMediaSubtitle=Oubliez le quotidien grâce à des images époustouflantes de l''édition la plus récente de votre manifestation de voile préférée. mainMediaTitle=Les photographes adorent la voile. mainMediaVideosSubtitle=Plongez dans le monde de la voile et accédez à encore plus de vidéos de nos manifestations les plus récentes. mainMediaVideosTitle=Vidéos récentes @@ -1698,11 +1698,11 @@ solutionsBuoyPingerHeadline=SAP Sailing Buoy Pinger solutionsPostHeadline=Analyses post-course solutionsSimulatorHeadline=Simulateur de stratégies sapInSailing=SAP in Sailing -contentSapInSailing1=Pour SAP, la voile est une plate-forme idéale pour présenter des solutions et permettre à la discipline d'atteindre une autre dimension. L'engagement de SAP dans cette discipline a transformé l'expérience de la voile grâce à des outils qui : +contentSapInSailing1=Pour SAP, la voile est une plate-forme idéale pour présenter des solutions et permettre à la discipline d''atteindre une autre dimension. L''engagement de SAP dans cette discipline a transformé l''expérience de la voile grâce à des outils qui : contentSapInSailing2=- aident les marins à analyser leur performance et à optimiser leur stratégie -contentSapInSailing3=- rapprochent les amateurs du feu de l'action -contentSapInSailing4=- mettent à disposition des médias des informations et des analyses permettant d'étoffer les commentaires qui accompagnent les manifestations -contentSapInSailing5=L'engagement de SAP dans le sport de la voile est de longue date, porte sur de nombreuses équipes et régates avec un portefeuille élargi qui comprend : +contentSapInSailing3=- rapprochent les amateurs du feu de l''action +contentSapInSailing4=- mettent à disposition des médias des informations et des analyses permettant d''étoffer les commentaires qui accompagnent les manifestations +contentSapInSailing5=L''engagement de SAP dans le sport de la voile est de longue date, porte sur de nombreuses équipes et régates avec un portefeuille élargi qui comprend : contentSapInSailing6=Partenaire technologique officiel de Travemünder Woche contentSapInSailing7=Partenaire technologique de la Ligue Européenne de Voile contentSapInSailing8=Sponsor principal du SAP Extreme Sailing Team @@ -1712,42 +1712,42 @@ contentSapInSailing11=Partenaire technologique de la Sailing Champions League contentSapInSailing12=Sponsor principal de la compétition SAP 5O5 World Championships contentSapInSailing13=Partenaire technologique officiel de WORLD SAILING sapSailingAnalyticsTitle=SAP Sailing Analytics -contentSapSailingAnalytics1=Grâce aux analyses en temps réel des classements de course, vitesses, manœuvres, directions etc., SAP contribue à lever le mystère de la discipline complexe qu'est la voile, et à faciliter son approche. -contentSapSailingAnalytics2=Grâce aux analyses de la solution SAP Sailing Analytics, le monde de la voile gagne en transparence. Les éléments clés sont l'utilisation du Cloud et des technologies du traitement des données en mémoire vive, le traitement des données de GPS et de mesures de vent en temps réel ainsi que la visualisation de ces contenus sur différents types frontend, accessibles partout. +contentSapSailingAnalytics1=Grâce aux analyses en temps réel des classements de course, vitesses, manœuvres, directions etc., SAP contribue à lever le mystère de la discipline complexe qu''est la voile, et à faciliter son approche. +contentSapSailingAnalytics2=Grâce aux analyses de la solution SAP Sailing Analytics, le monde de la voile gagne en transparence. Les éléments clés sont l''utilisation du Cloud et des technologies du traitement des données en mémoire vive, le traitement des données de GPS et de mesures de vent en temps réel ainsi que la visualisation de ces contenus sur différents types frontend, accessibles partout. sapSailingAnalyticsReadMore=En savoir plus sapSailingRaceManager=SAP Sailing Race Manager -contentSapSailingRaceManager=Grâce à la solution SAP Sailing Race Manager, les organisateurs de courses peuvent être plus efficaces et garder plus facilement la main. Leurs tâches manuelles sont automatisées et simplifiées, tout comme la communication pendant les régates de voile en cours. L'application destinée au comité de course contribue à faciliter la mise en œuvre et la gestion des manifestations de courses pour un déroulement plus souple des compétitions. +contentSapSailingRaceManager=Grâce à la solution SAP Sailing Race Manager, les organisateurs de courses peuvent être plus efficaces et garder plus facilement la main. Leurs tâches manuelles sont automatisées et simplifiées, tout comme la communication pendant les régates de voile en cours. L''application destinée au comité de course contribue à faciliter la mise en œuvre et la gestion des manifestations de courses pour un déroulement plus souple des compétitions. sapSailingRaceManagerReadMore=En savoir plus sapSailInSight=SAP Sail InSight -contentSapSailInSight=Grâce à l'application mobile SAP Sail InSight pour iPhone, iPad et smartphones Android, les participants aux courses à la voile peuvent gérer leur participation dans les régates à tout moment, où qu'ils soient. Cette application se connecte à la solution SAP Sailing Analytics et permet aux compétiteurs de s'inscrire à une régate activée dans SAP Sail InSight, suivre leur place dans la course, avec des indicateurs de performances tels que la vitesse, ou la distance parcourue, et d'analyser leur performance. +contentSapSailInSight=Grâce à l''application mobile SAP Sail InSight pour iPhone, iPad et smartphones Android, les participants aux courses à la voile peuvent gérer leur participation dans les régates à tout moment, où qu''ils soient. Cette application se connecte à la solution SAP Sailing Analytics et permet aux compétiteurs de s''inscrire à une régate activée dans SAP Sail InSight, suivre leur place dans la course, avec des indicateurs de performances tels que la vitesse, ou la distance parcourue, et d''analyser leur performance. sapSailInSightReadMore=En savoir plus sapSailingBuoyPinger=SAP Sailing Buoy Pinger -contentSapSailingBuoyPinger=Grâce à l'application mobile SAP Sailing Buoy Pinger pour smartphones Android, les organisateurs de courses à la voile peuvent simplifier le positionnement des marques de course ainsi que la communication avec les positionneurs des marques, à tout moment, où qu'ils soient. Cette application se connecte à la solution SAP Sailing Analytics et permet aux organisateurs de régates de suivre la position géographique de leurs marques de course. Cette connexion permet en outre aux sportifs participant à la régate d'utiliser l'application mobile SAP Sail InSight. +contentSapSailingBuoyPinger=Grâce à l''application mobile SAP Sailing Buoy Pinger pour smartphones Android, les organisateurs de courses à la voile peuvent simplifier le positionnement des marques de course ainsi que la communication avec les positionneurs des marques, à tout moment, où qu''ils soient. Cette application se connecte à la solution SAP Sailing Analytics et permet aux organisateurs de régates de suivre la position géographique de leurs marques de course. Cette connexion permet en outre aux sportifs participant à la régate d''utiliser l''application mobile SAP Sail InSight. sapSailingBuoyPingerReadMore=En savoir plus postRaceAnalytics=Analyses post-course -contentPostRaceAnalytics1=L'accès aux données collectées lors de manifestations de voile permet aux sportifs de la voile d'analyser et d'évaluer leurs performances, de développer des stratégies et d'optimiser leur navigation. -contentPostRaceAnalytics2=Les solutions SAP Business Analytics fournissent aux sportifs de la voile comme aux entraîneurs, amateurs et média des outils pour parcourir et analyser des données historiques de nombreuses régates et courses. Grâce à la puissance de SAP HANA, des modèles de performance se détachent, des tendances et profils de sportifs de la voile se dessinent de manière simple, rapide et efficace afin d'optimiser leurs propres performances et de développer des stratégies porteuses de succès pour les régates à venir. +contentPostRaceAnalytics1=L''accès aux données collectées lors de manifestations de voile permet aux sportifs de la voile d''analyser et d''évaluer leurs performances, de développer des stratégies et d''optimiser leur navigation. +contentPostRaceAnalytics2=Les solutions SAP Business Analytics fournissent aux sportifs de la voile comme aux entraîneurs, amateurs et média des outils pour parcourir et analyser des données historiques de nombreuses régates et courses. Grâce à la puissance de SAP HANA, des modèles de performance se détachent, des tendances et profils de sportifs de la voile se dessinent de manière simple, rapide et efficace afin d''optimiser leurs propres performances et de développer des stratégies porteuses de succès pour les régates à venir. strategySimulator=Simulateur de stratégies -contentStrategySimulator=Opter pour la bonne stratégie peut procurer un avantage significatif pendant une course. Le simulateur de stratégies simplifie la détermination de la meilleure stratégie de navigation pour différentes conditions de vent et courants d'eau. Comme les données de vent et de courant peuvent être modifiées directement au cours de la simulation, la solidité d'une stratégie peut être facilement évaluée même en cas de conditions météorologiques incertaines. +contentStrategySimulator=Opter pour la bonne stratégie peut procurer un avantage significatif pendant une course. Le simulateur de stratégies simplifie la détermination de la meilleure stratégie de navigation pour différentes conditions de vent et courants d''eau. Comme les données de vent et de courant peuvent être modifiées directement au cours de la simulation, la solidité d''une stratégie peut être facilement évaluée même en cas de conditions météorologiques incertaines. strategySimulatorReadMore=En savoir plus impressum=Mentions légales lastFix=Dernier point -filterDeviceMappings=Filtrer des mappages d'appareils +filterDeviceMappings=Filtrer des mappages d''appareils raceStartAnalysis=Analyse du départ de la course buoyZoneRadiusInHullLengths=Rayon de zone de bouée en longueur de coques (par exemple 2, ou 3) incorrectValueForRegattaBuoyZoneRadiusInHullLengths=Valeur erronée pour le rayon de zone de bouée en longueur de coques importCompetitors=Importer des concurrents -chooseWhichCompetitorsShouldBeImported=Sélectionnez des concurrents à importer sur la gauche. La sélection d'un concurrent individuel affiche sur la droite le ou les concurrent(s) existant(s) appartenant à la même entité. Pour utiliser un concurrent existant, sélectionnez-le. Une fois le mappage terminé, sélectionnez tous les concurrents que vous souhaitez importer dans la table sur la gauche, et appuyez sur OK. Notez que vous pouvez trier les tables en cliquant ou touchant les intitulés des colonnes. +chooseWhichCompetitorsShouldBeImported=Sélectionnez des concurrents à importer sur la gauche. La sélection d''un concurrent individuel affiche sur la droite le ou les concurrent(s) existant(s) appartenant à la même entité. Pour utiliser un concurrent existant, sélectionnez-le. Une fois le mappage terminé, sélectionnez tous les concurrents que vous souhaitez importer dans la table sur la gauche, et appuyez sur OK. Notez que vous pouvez trier les tables en cliquant ou touchant les intitulés des colonnes. existingCompetitors=Concurrents existants importedCompetitors=Concurrents à importer hasMatches=Correspondances disponibles filterImportedCompetitorsByNameSailRaceFleet=Filtrer des concurrents à importer par nom, numéro de voile, course ou flotte -errorLoadingCompetitorImportProviders=Erreur lors du chargement des fournisseurs d'importation de concurrents : {0} -errorLoadingCompetitorImportDescriptors=Erreur lors du chargement des descripteurs d'importation de concurrents : {0} -couldNotSaveCompetitorRegistrations=Impossible d'enregistrer les inscriptions des concurrents : {0} +errorLoadingCompetitorImportProviders=Erreur lors du chargement des fournisseurs d''importation de concurrents : {0} +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 +replicables=Réplication d''objets en cours set=Définit eventRegattaRacesLegendWind=Nombre de capteurs de vent eventRegattaRacesLegendVideo=Nombre de flux vidéo @@ -1782,22 +1782,22 @@ leaderboardPage=Page du palmarès makeDefault=Définir par défaut makeDefaultInProgress=En cours... settingsSavedMessage=Vos options actuelles ont correctement été définies comme options par défaut. -settingsSaveErrorMessage=Une erreur s'est produite lors de la définition de vos options comme options par défaut. +settingsSaveErrorMessage=Une erreur s''est produite lors de la définition de vos options comme options par défaut. showLiveNow=Afficher "En direct" -useOnlyOneOfStartTimeInferenceAndControlTrackingFromStartAndFinishTimes=Utilisez "Interférence temporelle de départ" ou bien "Contrôler suivi à partir des heures de départ et d'arrivée", mais pas les deux. +useOnlyOneOfStartTimeInferenceAndControlTrackingFromStartAndFinishTimes=Utilisez "Interférence temporelle de départ" ou bien "Contrôler suivi à partir des heures de départ et d''arrivée", mais pas les deux. unknownLeaderboardType=Type de palmarès {0} inconnu selectCompetitorsToEliminate=Sélectionner des concurrents à éliminer trackedRaceAlreadyLinked=La course est déjà liée à une colonne de course. Voulez-vous vraiment modifier le lien ? reallyRemoveSeries=Voulez-vous vraiment supprimer la série "{0}" ? Note : tous les journaux de la course seront également supprimés de manière permanente pour cette course. -settingsId=ID d'options -documentSettingsId=ID d'options du document -settingsForId=Options pour l'ID ''{0}'' +settingsId=ID d''options +documentSettingsId=ID d''options du document +settingsForId=Options pour l''ID ''{0}'' userProfileSettingsTabDescription=Les options utilisateur sont générées dans des boîtes de dialogues pour options que vous trouverez à de nombreux endroits sur la page. Cette vue montre toutes vos options regroupées pour les mettre techniquement à disposition des utilisateurs de référence. Soyez prudent : les entrées supprimées ne peuvent pas être restaurées. resetToDefault=Réinitialiser sur les valeurs par défaut resetToDefaultInProgress=Réinitialisation en cours... settingsRemoved=Options par défaut restaurées settingsRemovedError=Impossible de restaurer les options par défaut -userSettingsFilter=Filtre d'options +userSettingsFilter=Filtre d''options requiresRegattaRaceAndLeaderboard=Cette page requiert un nom de régate, un nom de course et un nom de palmarès valides. couldNotFindRaceInRegatte=Impossible de trouver une course nommée {0} pour une régate nommée {1}. algorithmTimeOutText=Hors portée @@ -1807,10 +1807,10 @@ windSpeedInKnots=Vitesse du vent en noeuds activeFilters=Filtre(s) actif(s) : {0} errorLoadingRegattasForLeaderboardGroup=Erreur lors de la tentative de chargement des régates correspondantes pour le groupe de palmarès {0} : {1} errorLoadingLeaderBoardGroup=Erreur lors de la tentative de chargement du groupe de palmarès {0} : {1} -errorLoadingLeaderBoardGroups=Erreur lors de la tentative d'obtention des données : {0} -errorServletCall=Échec de l'appel servlet du service de simulation\n {0} +errorLoadingLeaderBoardGroups=Erreur lors de la tentative d''obtention des données : {0} +errorServletCall=Échec de l''appel servlet du service de simulation\n {0} errorReceivingWindPattern=Erreur lors de la récupération des modèles de vent {0} -errorLoadingBoatClasses=Échec d'initialisation des catégories de bateaux !\r\n {0}s +errorLoadingBoatClasses=Échec d''initialisation des catégories de bateaux !\r\n {0}s errorLoadingLegInformation=Échec de lecture des informations sur les portions de parcours !\r\n {0} errorLoadingRaceNames=Échec de lecture des informations sur les courses !\r\n {0} errorLoadingCompetitors=Échec de lecture des informations sur le(s) concurrent(s) !\r\n {0} @@ -1819,26 +1819,26 @@ errorUpdatingCarriedPoints=Erreur lors de la tentative de mise à jour de la val errorUpdatingLeaderboardScore=Erreur lors de la tentative de mise à jour de la correction des scores pour le concurrent {0} dans le palmarès {1} pour la course {2} : {3} \nVeuillez rafraîchir la vue. errorUpdatingLeaderboardScoreCorrection=Erreur lors de la tentative de mise à jour de la correction des scores pour : {0} \nVeuillez rafraîchir la vue. errorUpdatingMaxPointsReason=Erreur lors de la tentative de mise à jour du motif de points max. pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. -errorUpdatingDisplayNames=Erreur lors de la tentative de mise à jour du nom d'affichage pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. +errorUpdatingDisplayNames=Erreur lors de la tentative de mise à jour du nom d''affichage pour le concurrent {0} dans le palmarès {1} : {2} \nVeuillez rafraîchir la vue. reportError=Erreur lors de la sauvegarde des informations de correction des scores : {0} -errorGettingScoreCorrectionProvider=Erreur lors de l'accès aux fournisseurs de correction des scores : {0} -errorTryingToUnsupressCompetitor=Erreur lors de la tentative d'annulation de suppression du concurrent {0} -errorLoadingReducedDimensionsMapedByLevel=Erreur lors de l'accès aux dimensions de la chaîne de récupération du serveur : {0} -errorFetchingDimensionData=Erreur lors de l'accès aux valeurs de dimension de {0} : {1} -errorFetchingStatistics=Erreur lors de l'accès aux statistiques disponibles du serveur : {0} -errorFetchingAggregators=Erreur lors de l'accès aux agrégateurs disponibles du serveur : {0} +errorGettingScoreCorrectionProvider=Erreur lors de l''accès aux fournisseurs de correction des scores : {0} +errorTryingToUnsupressCompetitor=Erreur lors de la tentative d''annulation de suppression du concurrent {0} +errorLoadingReducedDimensionsMapedByLevel=Erreur lors de l''accès aux dimensions de la chaîne de récupération du serveur : {0} +errorFetchingDimensionData=Erreur lors de l''accès aux valeurs de dimension de {0} : {1} +errorFetchingStatistics=Erreur lors de l''accès aux statistiques disponibles du serveur : {0} +errorFetchingAggregators=Erreur lors de l''accès aux agrégateurs disponibles du serveur : {0} errorLoadingDataRetrieverChainDefinitions=Erreur lors de la récupération des définitions DataRetrieverChainDefinitions disponibles : {0} -errorFetchingComponentsChangedTimepoint=Erreur lors de la récupération de l'heure modifiée du composant du serveur : {0} -errorRunningQuery=Erreur lors de l'exécution de la requête : {0} +errorFetchingComponentsChangedTimepoint=Erreur lors de la récupération de l''heure modifiée du composant du serveur : {0} +errorRunningQuery=Erreur lors de l''exécution de la requête : {0} errorReadingWindFixes=Erreur lors de la lecture des points vent {0} -errorAddingWindFixForRace=Erreur lors de l'ajout d'un point vent pour la course {0} : {1} -errorSettingStartTime=Erreur lors du paramétrage de l'heure de départ reçue : {0} -errorStoppingRaceTracking=Exception lors de la tentative d'arrêt du suivi des courses {0} : {1} +errorAddingWindFixForRace=Erreur lors de l''ajout d''un point vent pour la course {0} : {1} +errorSettingStartTime=Erreur lors du paramétrage de l''heure de départ reçue : {0} +errorStoppingRaceTracking=Exception lors de la tentative d''arrêt du suivi des courses {0} : {1} errorRemovingRace=Exception lors de la tentative de suppression des courses {0} : {1} errorLoadingRegattas=Erreur lors de la tentative de chargement des régates {0} : {1} errorUpdatingRegatta=Erreur lors de la tentative de mise à jour des régates {0} : {1} errorLoadingRaceLog=Marquage pour suivi par journal de la course impossible : {0} errorStartingTracking=Échec du lancement du suivi {0} : {1} -errorLoadingLeaderBoardByEvent=Erreur lors de la tentative de chargement du palmarès. Soit l'événement n'a pas pu être associé à la régate, soit aucune course suivie n'existe. -errorLoadingEvent=Erreur lors de la tentative de chargement de l'événement ayant l'ID {0} : {1} -errorLoadingRegattaStructure=Erreur lors de la tentative de chargement de régates pour l'événement ayant l'ID {0} : {1} +errorLoadingLeaderBoardByEvent=Erreur lors de la tentative de chargement du palmarès. Soit l''événement n''a pas pu être associé à la régate, soit aucune course suivie n''existe. +errorLoadingEvent=Erreur lors de la tentative de chargement de l''événement ayant l''ID {0} : {1} +errorLoadingRegattaStructure=Erreur lors de la tentative de chargement de régates pour l''événement ayant l''ID {0} : {1} From 28ebcbb5479cc38561710b3f386a113157973121 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 27 Jul 2017 11:57:38 +0200 Subject: [PATCH 21/26] bug 4248: adjusted the german translations where there were doubts Change-Id: I633f39f7d1c735271ea970c526facfc0a9b04e4b --- .../sailing/gwt/ui/client/StringMessages.properties | 2 +- .../gwt/ui/client/StringMessages_de.properties | 12 ++++++------ .../gwt/ui/raceboard/RaceBoardEntryPoint.java | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 1e9c0ed48e5..6fc3bae8e4c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1813,7 +1813,7 @@ requiresRegattaRaceAndLeaderboard=This page requires a valid regatta name, race couldNotFindRaceInRegatta=Could not obtain a race with name {0} for a regatta with name {1} algorithmTimeOutText=out-of-bounds mixedLegText=ambiguous wind -pathCanvasOverlayTitle=Path at {0} points. {1} nmi in {2} +pathCanvasOverlayTitle=Path at {0} points. {1}NM in {2} windSpeedInKnots=Wind Speed in Knots activeFilters=Active Filter(s): {0} errorLoadingRegattasForLeaderboardGroup=Error trying to load corresponding regattas for leaderboard group {0}: {1} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 15e3268a4d0..0f2c00f8900 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1837,20 +1837,20 @@ setTrackingTimesDescription=Start und Ende für das Tracking des Rennens setzen selectRaces=Rennen auswählen pleaseSelectAtLeastOneRegatta=Bitte mindestes eine Regatta auswählen requiresRegattaRaceAndLeaderboard=Diese Seite benötigt einen Regattanamen, einen Rennnamen und einen Leaderboardnamen -regattaOverviewConfiguration=Konfiguration der Regatta Übersicht -pathCanvasOverlayTitle=Web bei {0} Punkten. {1} nmi in {2} +regattaOverviewConfiguration=Konfiguration der Regatta-Übersicht +pathCanvasOverlayTitle=Weg bei {0} Punkten. {1}SM in {2} noStarttimeAnnouncedYet=Unbestimmt simulationLegendMixedLegText=Mehrdeutiger Wind mediaDateFormatError=Ungültiges Datumsformat. Benutze: {0} -legMiddleWindSourceTypeTooltip=Kombinierter Wind am Mittelpunkt einer Schenkel rhumb Linie -legMiddleWindSourceTypeName=Mitte eines Schenkels +legMiddleWindSourceTypeTooltip=Kombinierter Wind am Mittelpunkt einer Kursmittellinie +legMiddleWindSourceTypeName=Mitte eines Bahnschenkels lastUpperFlag=Obere Flagge lastLowerFlag=Untere Flagge id=Id -firstRaceIsNonDiscardableCarryForward=Started mit nicht verwerfbaren Vortrag +firstRaceIsNonDiscardableCarryForward=Started mit nicht streichbarem Übertrag couldNotFindRaceInRegatta=Konnte ein Rennen mit den Namen {0} für die Regatta mit den Namen {1} nicht finden confidence=Konfidenz -boatSpeed=Boot Geschwindigkeit +boatSpeed=Bootsgeschwindigkeit basedOn=basierend auf asLink=Als Link algorithmTimeOutText=ausserhalb der Limits diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java index 0db46c2ac0c..bb34bf2885a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java @@ -94,7 +94,7 @@ public class RaceBoardEntryPoint extends AbstractSailingEntryPoint { } } if (raceboardData.getRace() == null) { - createErrorPage(getStringMessages().couldNotFindRaceInRegatta( raceboardContextDefinition.getRaceName(), raceboardContextDefinition.getRegattaName())); + createErrorPage(getStringMessages().couldNotFindRaceInRegatta(raceboardContextDefinition.getRaceName(), raceboardContextDefinition.getRegattaName())); return; } From 32005ede22045b9a1ce014b7c6495aeb8a0d93d4 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 30 Jul 2017 13:28:22 +0200 Subject: [PATCH 22/26] fixed quotes in security i18n --- .../client/i18n/StringMessages_fr.properties | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_fr.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_fr.properties index 95433c2f34e..947793f4a56 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_fr.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_fr.properties @@ -2,20 +2,20 @@ name=Nom company=Entreprise password=Mot de passe passwordRepeat=Confirmer mot de passe -loggedIn=Connecté avec l'utilisateur {0} ! +loggedIn=Connecté avec l''utilisateur {0} ! signIn=Se connecter -signUp=S'inscrire +signUp=S''inscrire signOut=Se déconnecter -invalidUsername=Nom d'utilisateur non valide +invalidUsername=Nom d''utilisateur non valide couldNotSignOut=Déconnexion impossible : {0} createUser=Créer utilisateur settings=Options filterUsers=Filtrer utilisateurs... welcome=Bienvenue {0} ! -tryingToVerifyUser=Vérification de l'utilisateur en cours... +tryingToVerifyUser=Vérification de l''utilisateur en cours... fetchingUserInformation=Accès aux informations utilisateur... -signedInAs=Connecté avec l'utilisateur {0} -signedInAsTitle=Connecté avec l'utilisateur : +signedInAs=Connecté avec l''utilisateur {0} +signedInAsTitle=Connecté avec l''utilisateur : close=Fermer loading=Chargement en cours... user=Utilisateur @@ -23,30 +23,30 @@ users=Utilisateurs addURLFilter=Ajouter filtre URL ok=OK cancel=Annuler -username=Nom d'utilisateur +username=Nom d''utilisateur email=E-mail -usernameMustHaveAtLeastNCharacters=Veuillez saisir un nom d'utilisateur comportant au moins {0} caractères. +usernameMustHaveAtLeastNCharacters=Veuillez saisir un nom d''utilisateur comportant au moins {0} caractères. passwordMustHaveAtLeastNCharacters=Veuillez utiliser un mot de passe comportant au moins {0} caractères. passwordsDontMatch=Saisissez des mots de passe identiques. -couldNotCreateUser=Création de l'utilisateur {0} impossible +couldNotCreateUser=Création de l''utilisateur {0} impossible changePassword=Modifier mot de passe userDetails=Détails utilisateur deleteUser=Supprimer utilisateur -deleteUserQuestion=Supprimer l'utilisateur ? -doYouReallyWantToDeleteUser=Souhaitez-vous vraiment supprimer l'utilisateur {0} ? -errorDeletingUser=Une erreur s'est produite lors de la suppression de l'utilisateur. +deleteUserQuestion=Supprimer l''utilisateur ? +doYouReallyWantToDeleteUser=Souhaitez-vous vraiment supprimer l''utilisateur {0} ? +errorDeletingUser=Une erreur s''est produite lors de la suppression de l''utilisateur. account=Compte {0} save=Enregistrer remove=Supprimer add=Ajouter edit=Modifier -errorUpdatingRoles=Erreur lors de la mise à jour des rôles de l'utilisateur {0} : {1} -errorUpdatingPermissions=Erreur lors de la mise à jour des autorisations de l'utilisateur {0} : {1} +errorUpdatingRoles=Erreur lors de la mise à jour des rôles de l''utilisateur {0} : {1} +errorUpdatingPermissions=Erreur lors de la mise à jour des autorisations de l''utilisateur {0} : {1} enterRoleName=Saisir nom de rôle... -enterPermissionName=Saisir nom d'autorisation... -errorCreatingUser=Erreur lors de l'inscription avec le nom d'utilisateur {0} : {1} -signedUpSuccessfully=Inscription réussie pour l'utilisateur {0}. Vérifiez vos e-mails pour valider votre compte e-mail. -unknownErrorCreatingUser=Erreur inconnue lors de la tentative d'inscription avec le nom d'utilisateur {0}. Il est possible qu'un autre utilisateur de ce nom existe déjà. +enterPermissionName=Saisir nom d''autorisation... +errorCreatingUser=Erreur lors de l''inscription avec le nom d''utilisateur {0} : {1} +signedUpSuccessfully=Inscription réussie pour l''utilisateur {0}. Vérifiez vos e-mails pour valider votre compte e-mail. +unknownErrorCreatingUser=Erreur inconnue lors de la tentative d''inscription avec le nom d''utilisateur {0}. Il est possible qu''un autre utilisateur de ce nom existe déjà. userAlreadyExists=Un utilisateur de ce nom ({0}) existe déjà. currentPassword=Mot de passe actuel passwordSuccessfullyChanged=Modification du mot de passe réussie @@ -54,28 +54,28 @@ passwordDoesNotMeetRequirements=Le mot de passe ne correspond pas aux critères errorChangingPassword=Erreur lors de la modification du mot de passe : {0} invalidCredentials=Identifiants non valides editEmail=Modifier adresse e-mail -errorUpdatingEmail=Erreur lors de la mise à jour de l'adresse e-mail : {0} -successfullyUpdatedEmail=Mise à jour de l'adresse e-mail réussie pour l'utilisateur {0}.\nContrôle de validation envoyé à {1}. +errorUpdatingEmail=Erreur lors de la mise à jour de l''adresse e-mail : {0} +successfullyUpdatedEmail=Mise à jour de l''adresse e-mail réussie pour l''utilisateur {0}.\nContrôle de validation envoyé à {1}. errorUpdatingUserProperties=Erreur lors de la mise à jour des propriétés utilisateur : {0} -successfullyUpdatedUserProperties=Modification des propriétés réussie pour l'utilisateur {0}. +successfullyUpdatedUserProperties=Modification des propriétés réussie pour l''utilisateur {0}. forgotPassword=Mot de passe oublié errorDuringPasswordReset=Erreur lors de la réinitialisation du mot de passe : {0} -cannotResetPasswordWithoutValidatedEmail=Réinitialisation du mot de passe impossible; car l'utilisateur {0} n'a pas d'adresse e-mail valide. -passwordResetLinkSent=Un lien de réinitialisation du mot de passe a été envoyé à l'adresse e-mail validée de {0}. -errorValidatingEmail=Erreur lors de la validation de l'adresse e-mail de l'utilisateur {0} : {1} -emailValidatedSuccessfully=Validation de l'adresse e-mail réussie pour l'utilisateur {0}. -errorResettingPassword=Erreur lors de la réinitialisation du mot de passe de l'utilisateur {0} : {1} -successfullyResetPassword=Réinitialisation du mot de passe réussie pour l'utilisateur {0}. Un e-mail de confirmation a été envoyé. +cannotResetPasswordWithoutValidatedEmail=Réinitialisation du mot de passe impossible; car l''utilisateur {0} n''a pas d''adresse e-mail valide. +passwordResetLinkSent=Un lien de réinitialisation du mot de passe a été envoyé à l''adresse e-mail validée de {0}. +errorValidatingEmail=Erreur lors de la validation de l''adresse e-mail de l''utilisateur {0} : {1} +emailValidatedSuccessfully=Validation de l''adresse e-mail réussie pour l''utilisateur {0}. +errorResettingPassword=Erreur lors de la réinitialisation du mot de passe de l''utilisateur {0} : {1} +successfullyResetPassword=Réinitialisation du mot de passe réussie pour l''utilisateur {0}. Un e-mail de confirmation a été envoyé. failedToSignIn=Connexion impossible. Vérifiez vos identifiants. -emailValidationUnsuccessful=Validation de l'adresse e-mail échouée pour l'utilisateur {0}. Avez-vous utilisé le code de validation le plus récent ? +emailValidationUnsuccessful=Validation de l''adresse e-mail échouée pour l''utilisateur {0}. Avez-vous utilisé le code de validation le plus récent ? roles=Rôles permissions=Autorisations -signInWith=Se connecter avec l'utilisateur... +signInWith=Se connecter avec l''utilisateur... generalWelcome=Bienvenue ! newUser=Déjà inscrit ? pleaseSignIn=Connectez-vous. -enterUsernameOrEmail=Saisissez le nom d'utilisateur ou l'adresse e-mail. -serverError=Une erreur s'est produite lors de la tentative d'accès au serveur. Veuillez vérifier votre connexion réseau, puis réessayez. +enterUsernameOrEmail=Saisissez le nom d''utilisateur ou l''adresse e-mail. +serverError=Une erreur s''est produite lors de la tentative d''accès au serveur. Veuillez vérifier votre connexion réseau, puis réessayez. remoteProcedureCall=Appel de procédure distante serverReplies=Réponse serveur errorCommunicatingWithServer=Erreur lors de la communication avec le serveur @@ -86,11 +86,11 @@ settingsForComponent=Options pour {0} pleaseSelect=Veuillez sélectionner oldPassword=Ancien mot de passe newPasswordPlaceholder=Saisissez un nouveau mot de passe. -oldPasswordPlaceholder=Saisissez l'ancien mot de passe. +oldPasswordPlaceholder=Saisissez l''ancien mot de passe. passwordRepeatPlaceholder=Confirmez le nouveau mot de passe. resetPassword=Réinitialiser mot de passe -youAreNotSignedIn=Vous n'êtes pas connecté. -youDontHaveRequiredPermission=Vous ne disposez pas de l'autorisation requise. +youAreNotSignedIn=Vous n''êtes pas connecté. +youDontHaveRequiredPermission=Vous ne disposez pas de l''autorisation requise. accountConfirmation=Confirmation du compte error=Erreur inconnue refresh=Actualiser @@ -100,7 +100,7 @@ sharedSettingsLink=Lier aux options makeDefault=Définir par défaut makeDefaultInProgress=En cours... settingsSavedMessage=Vos options actuelles ont correctement été définies comme options par défaut. -settingsSaveErrorMessage=Une erreur s'est produite lors de la définition de vos options comme options par défaut. +settingsSaveErrorMessage=Une erreur s''est produite lors de la définition de vos options comme options par défaut. resetToDefault=Réinitialiser sur les valeurs par défaut resetToDefaultInProgress=Réinitialisation en cours... settingsRemoved=Options par défaut restaurées From 1c4d7ae98183fdabd82215a613807d6ef61f90c3 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 30 Jul 2017 16:41:39 +0200 Subject: [PATCH 23/26] fixed typo in message name; fixed quotes in _zh and _ja locales --- .../eventsupcoming/EventsOverviewUpcomingEvent.java | 2 +- .../com/sap/sailing/gwt/ui/client/StringMessages.java | 2 +- .../sailing/gwt/ui/client/StringMessages_de.properties | 6 +++--- .../sailing/gwt/ui/client/StringMessages_es.properties | 6 +++--- .../sailing/gwt/ui/client/StringMessages_fr.properties | 6 +++--- .../sailing/gwt/ui/client/StringMessages_ja.properties | 8 ++++---- .../sailing/gwt/ui/client/StringMessages_pt.properties | 6 +++--- .../sailing/gwt/ui/client/StringMessages_ru.properties | 6 +++--- .../sailing/gwt/ui/client/StringMessages_zh.properties | 8 ++++---- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java index 545adb2cd6b..9169b095c19 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java @@ -43,7 +43,7 @@ public class EventsOverviewUpcomingEvent extends Composite { eventName.setInnerText(event.getDisplayName()); venueName.setInnerText(event.getVenue()); eventStartDate.setInnerText(EventDatesFormatterUtil.formatDateRangeWithoutYear(event.getStartDate(), event.getEndDate())); - days.setInnerText(StringMessages.INSTANCE.upcommingEventStartsInDays(DateUtil.daysFromNow(event.getStartDate()))); + days.setInnerText(StringMessages.INSTANCE.upcomingEventStartsInDays(DateUtil.daysFromNow(event.getStartDate()))); } @UiHandler("eventOverviewLink") diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 44abb023010..35c3fa3d664 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1135,7 +1135,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String addRaces(); String withNamePrefix(); String pleaseSelectASeriesFirst(); - String upcommingEventStartsInDays(@PluralCount(DefaultRule_0_1_2_n.class) int days); + String upcomingEventStartsInDays(@PluralCount(DefaultRule_0_1_2_n.class) int days); String sharingMailTooltip(); String sharingTwitterTooltip(); String sharingFacebookTooltip(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index c48af74c0ff..de9713dfb6b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1089,9 +1089,9 @@ leaderboardGroupsOfSelectedEvent=Der Veranstaltung zugewiesene Ranglisten-Gruppe addRaces=Wettfahrten hinzufügen withNamePrefix=mit Namenspräfix pleaseSelectASeriesFirst=Bitte zuerst eine Serie auswählen. -upcommingEventStartsInDays=in {0,number} Tagen -upcommingEventStartsInDays[one]=morgen -upcommingEventStartsInDays[none]=heute +upcomingEventStartsInDays=in {0,number} Tagen +upcomingEventStartsInDays[one]=morgen +upcomingEventStartsInDays[none]=heute sharingMailTooltip=Per Mail teilen sharingTwitterTooltip=Auf Twitter teilen sharingFacebookTooltip=Auf Facebook teilen diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties index a8fb9ae7941..db31e4b04fc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_es.properties @@ -1090,9 +1090,9 @@ leaderboardGroupsOfSelectedEvent=Grupos de tablas de clasificación asignados a addRaces=Añadir carreras withNamePrefix=con prefijo de nombre pleaseSelectASeriesFirst=Seleccione primero una serie -upcommingEventStartsInDays=en {0,number} días -upcommingEventStartsInDays[one]=mañana -upcommingEventStartsInDays[none]=hoy +upcomingEventStartsInDays=en {0,number} días +upcomingEventStartsInDays[one]=mañana +upcomingEventStartsInDays[none]=hoy sharingMailTooltip=Compartir por correo sharingTwitterTooltip=Compartir en Twitter sharingFacebookTooltip=Compartir en Facebook diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties index 298916ec08f..97e59eab9e6 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_fr.properties @@ -1090,9 +1090,9 @@ leaderboardGroupsOfSelectedEvent=Groupe de palmarès affectés à la manifestati addRaces=Ajouter des courses withNamePrefix=avec préfixe de nom pleaseSelectASeriesFirst=Sélectionnez d''abord une série. -upcommingEventStartsInDays=dans {0,number} jours -upcommingEventStartsInDays[one]=demain -upcommingEventStartsInDays[none]=aujourd''hui +upcomingEventStartsInDays=dans {0,number} jours +upcomingEventStartsInDays[one]=demain +upcomingEventStartsInDays[none]=aujourd''hui sharingMailTooltip=Partager par e-mail sharingTwitterTooltip=Partager sur Twitter sharingFacebookTooltip=Partager sur Facebook diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties index 75b612b843c..9e0ef876d84 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties @@ -1090,9 +1090,9 @@ leaderboardGroupsOfSelectedEvent=イベントに割当済のリーダーボー addRaces=レース追加 withNamePrefix=- 名称接頭辞: pleaseSelectASeriesFirst=最初にシリーズを選択してください -upcommingEventStartsInDays={0,number} 日間 -upcommingEventStartsInDays[one]=明日 -upcommingEventStartsInDays[none]=今日 +upcomingEventStartsInDays={0,number} 日間 +upcomingEventStartsInDays[one]=明日 +upcomingEventStartsInDays[none]=今日 sharingMailTooltip=メールによるシェア sharingTwitterTooltip=Twitter でシェア sharingFacebookTooltip=Facebook でシェア @@ -1791,7 +1791,7 @@ trackedRaceAlreadyLinked=このレースはすでにレース列にリンクさ reallyRemoveSeries=シリーズ ''{0}'' を削除しますか。注記: 付属しているレース列のレースログもすべて永続的に削除されます。 settingsId=設定 ID documentSettingsId=文書設定 ID -settingsForId=ID ''{0}'’ の設定 +settingsForId=ID ''{0}'' の設定 userProfileSettingsTabDescription=ユーザ設定は、このページの多くの場所にあるダイアログを設定することによって生成されます。このビューには、収集したすべての設定がパワーユーザ向けの技術的な方法で表示されます。削除したエントリは復元できないため、注意して使用してください。 resetToDefault=デフォルトに戻す resetToDefaultInProgress=リセット中です... diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties index 7624acd2009..c2aedc74450 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_pt.properties @@ -1090,9 +1090,9 @@ leaderboardGroupsOfSelectedEvent=Grupos de painéis de classificação atribuíd addRaces=Adicionar corridas withNamePrefix=com prefixo do nome pleaseSelectASeriesFirst=Selecione primeiro uma série. -upcommingEventStartsInDays=em {0,número} dias -upcommingEventStartsInDays[one]=amanhã -upcommingEventStartsInDays[none]=hoje +upcomingEventStartsInDays=em {0,número} dias +upcomingEventStartsInDays[one]=amanhã +upcomingEventStartsInDays[none]=hoje sharingMailTooltip=Compartilhar por e-mail sharingTwitterTooltip=Compartilhar no Twitter sharingFacebookTooltip=Compartilhar no Facebook diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 0f56bffb7d7..d94e564bfc1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1090,9 +1090,9 @@ leaderboardGroupsOfSelectedEvent=Присвоенные событию груп addRaces=Добавить гонки withNamePrefix=с префиксом названия pleaseSelectASeriesFirst=Сначала выберите серию. -upcommingEventStartsInDays=Через {0,number} дн. -upcommingEventStartsInDays[one]=завтра -upcommingEventStartsInDays[none]=сегодня +upcomingEventStartsInDays=Через {0,number} дн. +upcomingEventStartsInDays[one]=завтра +upcomingEventStartsInDays[none]=сегодня sharingMailTooltip=Поделиться по почте sharingTwitterTooltip=Поделиться в Twitter sharingFacebookTooltip=Поделиться в Facebook diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 405dc56ae9f..23053ed111f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1090,9 +1090,9 @@ leaderboardGroupsOfSelectedEvent=分配到活动的积分榜分组 addRaces=添加比赛轮次 withNamePrefix=含名称前缀 pleaseSelectASeriesFirst=请先选择系列。 -upcommingEventStartsInDays={0,number} 天后 -upcommingEventStartsInDays[one]=明天 -upcommingEventStartsInDays[none]=今天 +upcomingEventStartsInDays={0,number} 天后 +upcomingEventStartsInDays[one]=明天 +upcomingEventStartsInDays[none]=今天 sharingMailTooltip=通过邮件分享 sharingTwitterTooltip=在 Twitter 上分享 sharingFacebookTooltip=在 Facebook 上分享 @@ -1791,7 +1791,7 @@ trackedRaceAlreadyLinked=比赛轮次已链接到比赛轮次列。是否确定 reallyRemoveSeries=是否确定移除系列赛 "{0}"?注意:随附比赛轮次列的所有比赛轮次日志也将永久移除! settingsId=设置编号 documentSettingsId=文档设置编号 -settingsForId=编号 ''{0}'’ 的设置 +settingsForId=编号 ''{0}'' 的设置 userProfileSettingsTabDescription=用户设置由可在页面多个位置找到的设置对话生成。此视图以技术方式为高级用户显示收集的所有设置。请注意,移除的条目无法恢复,请谨慎使用。 resetToDefault=重置为默认值 resetToDefaultInProgress=正在重置... From 15d61f69879402b2bcf54462657ac22e27c165fe Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 30 Jul 2017 18:24:43 +0200 Subject: [PATCH 24/26] amending previous commit: failed to update StringMessages.properties properly --- .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 0c021bc5f2f..4433020f804 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1101,9 +1101,9 @@ leaderboardGroupsOfSelectedEvent=Leaderboard Groups Assigned to Event addRaces=Add races withNamePrefix=with name prefix pleaseSelectASeriesFirst=Please select a series first. -upcommingEventStartsInDays=in {0,number} days -upcommingEventStartsInDays[one]=tomorrow -upcommingEventStartsInDays[none]=today +upcomingEventStartsInDays=in {0,number} days +upcomingEventStartsInDays[one]=tomorrow +upcomingEventStartsInDays[none]=today sharingMailTooltip=Share by mail sharingTwitterTooltip=Share on Twitter sharingFacebookTooltip=Share on Facebook From 5fe69ab54caaf453bcad2bee74d4613edb89eadc Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 30 Jul 2017 19:41:12 +0200 Subject: [PATCH 25/26] temporarily fixed russian translation, adding missing placeholder at random part of the message --- .../sap/sailing/gwt/ui/client/StringMessages_ru.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index d94e564bfc1..e70dc6f8ba7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1816,8 +1816,8 @@ errorLoadingRaceNames=Не удалось считать информацию о errorLoadingCompetitors=Не удалось считать информацию об участнике\r\n {0} errorLoadingTotalTime=Не удалось считать общее время\r\n {0} errorUpdatingCarriedPoints=Ошибка при попытке обновить значение переноса для участника {0} в таблице лидеров {1}: {2} \nМожет потребоваться обновить представление. -errorUpdatingLeaderboardScore=Ошибка при попытке обновить корректировку оценки для участника {0} в таблице лидеров {1}: {3} \nМожет потребоваться обновить представление."); -errorUpdatingLeaderboardScoreCorrection=Ошибка при попытке обновить корректировку оценки для: {0} \nМожет потребоваться обновить представление."); +errorUpdatingLeaderboardScore=Ошибка при попытке обновить корректировку оценки для участника {0} в таблице лидеров {1}: {3} \nМожет потребоваться обновить представление. {2} +errorUpdatingLeaderboardScoreCorrection=Ошибка при попытке обновить корректировку оценки для: {0} \nМожет потребоваться обновить представление. errorUpdatingMaxPointsReason=Ошибка при попытке обновить причину максимальных баллов для участника {0} в таблице лидеров {1}: {2} \nМожет потребоваться обновить представление. errorUpdatingDisplayNames=Ошибка при попытке обновить отображаемое имя для участника {0} в таблице лидеров {1}: {2} \nМожет потребоваться обновить представление. reportError=Ошибка при сохранении информации о корректировке оценки: {0} From 5c7d3e52fa1cb1369cf15b0918628d640dca0e3d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 30 Jul 2017 21:25:13 +0200 Subject: [PATCH 26/26] fixed single quotes in French translation in filestorage message files --- .../client/controls/filestorage/StringMessages_fr.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_fr.properties b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_fr.properties index 7d0003230e6..31d36d1750c 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_fr.properties +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages_fr.properties @@ -4,7 +4,7 @@ ok=OK cancel=Annuler add=Ajouter edit=Modifier -serverError=Une erreur s'est produite lors de la tentative d'accès au serveur. Veuillez vérifier votre connexion réseau, puis réessayez. +serverError=Une erreur s''est produite lors de la tentative d''accès au serveur. Veuillez vérifier votre connexion réseau, puis réessayez. close=Fermer remoteProcedureCall=Appel de procédure distante serverReplies=Réponse serveur @@ -29,7 +29,7 @@ sharedSettingsLink=Lier aux options makeDefault=Définir par défaut makeDefaultInProgress=En cours... settingsSavedMessage=Vos options actuelles ont correctement été définies comme options par défaut. -settingsSaveErrorMessage=Une erreur s'est produite lors de la définition de vos options comme options par défaut. +settingsSaveErrorMessage=Une erreur s''est produite lors de la définition de vos options comme options par défaut. resetToDefault=Réinitialiser sur les valeurs par défaut resetToDefaultInProgress=Réinitialisation en cours... settingsRemoved=Options par défaut restaurées