mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-05 11:53:53 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
da32cc6d0a
11 files changed
+57
-51
No files matched your search
+1
@@ -333,4 +333,5 @@ public interface StringMessages extends Messages {
|
||||
String apply();
|
||||
String successfullyUpdatedScores();
|
||||
String errorUpdatingScoresForLeaderboard(String leaderboardName, String message);
|
||||
String maneuverTypesToShowWhenCompetitorIsClicked();
|
||||
}
|
||||
+2
-1
@@ -329,4 +329,5 @@ importOfficialResults=Import official results...
|
||||
selectAll=Select all
|
||||
apply=Apply
|
||||
successfullyUpdatedScores=Successfully updated scores
|
||||
errorUpdatingScoresForLeaderboard=Error updating scores for leaderboard {0}: {1}
|
||||
errorUpdatingScoresForLeaderboard=Error updating scores for leaderboard {0}: {1}
|
||||
maneuverTypesToShowWhenCompetitorIsClicked=Maneuver types to show when competitor is clicked
|
||||
+3
-2
@@ -159,7 +159,7 @@ secondsUnit=s
|
||||
metersUnit=m
|
||||
failedToLoadRaceData=Renndaten konnten nicht geladen werden.
|
||||
close=Schließen
|
||||
compareCompetitors=Kompetitoren vergleichen
|
||||
compareCompetitors=Segler vergleichen
|
||||
description=Beschreibung
|
||||
sailNumber=Segelnummer
|
||||
country=Land
|
||||
@@ -330,4 +330,5 @@ importOfficialResults=Offizielle Ergebnisse importieren...
|
||||
selectAll=Alle auswählen
|
||||
apply=Übernehmen
|
||||
successfullyUpdatedScores=Ergebnisse erfolgreich aktualisiert
|
||||
errorUpdatingScoresForLeaderboard=Fehler beim Aktualisieren der Ergebnisse für {0}: {1}
|
||||
errorUpdatingScoresForLeaderboard=Fehler beim Aktualisieren der Ergebnisse für {0}: {1}
|
||||
maneuverTypesToShowWhenCompetitorIsClicked=Anzuzeigende Manövertypen für angeklickte Segler
|
||||
+2
-8
@@ -5,6 +5,7 @@ import com.google.gwt.cell.client.TextCell;
|
||||
import com.google.gwt.i18n.client.NumberFormat;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.user.cellview.client.CellTable;
|
||||
import com.sap.sailing.gwt.ui.client.NumberFormatterFactory;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardRowDTO;
|
||||
|
||||
@@ -16,14 +17,7 @@ public class FormattedDoubleLegDetailColumn extends LegDetailColumn<Double, Stri
|
||||
com.sap.sailing.gwt.ui.leaderboard.LegDetailColumn.LegDetailField<Double> field, int decimals,
|
||||
CellTable<LeaderboardRowDTO> leaderboardTable, String headerStyle, String columnStyle) {
|
||||
super(title, unit, field, new TextCell(), leaderboardTable, headerStyle, columnStyle);
|
||||
StringBuilder patternBuilder = new StringBuilder("0");
|
||||
if (decimals > 0) {
|
||||
patternBuilder.append('.');
|
||||
}
|
||||
for (int i = 0; i < decimals; i++) {
|
||||
patternBuilder.append('0');
|
||||
}
|
||||
formatter = NumberFormat.getFormat(patternBuilder.toString());
|
||||
formatter = NumberFormatterFactory.getDecimalFormat(decimals);
|
||||
this.minMaxRenderer = new MinMaxRenderer(this, getComparator());
|
||||
}
|
||||
|
||||
|
||||
+4
-1
@@ -51,10 +51,14 @@ public class LeaderboardSettingsFactory {
|
||||
ArrayList<DetailType> legDetails = new ArrayList<DetailType>();
|
||||
legDetails.add(DetailType.DISTANCE_TRAVELED);
|
||||
legDetails.add(DetailType.AVERAGE_SPEED_OVER_GROUND_IN_KNOTS);
|
||||
legDetails.add(DetailType.ESTIMATED_TIME_TO_NEXT_WAYPOINT_IN_SECONDS);
|
||||
legDetails.add(DetailType.RANK_GAIN);
|
||||
ArrayList<DetailType> raceDetails = new ArrayList<DetailType>();
|
||||
raceDetails.add(DetailType.RACE_DISTANCE_TRAVELED);
|
||||
raceDetails.add(DetailType.RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS);
|
||||
raceDetails.add(DetailType.RACE_DISTANCE_TO_LEADER_IN_METERS);
|
||||
raceDetails.add(DetailType.NUMBER_OF_MANEUVERS);
|
||||
raceDetails.add(DetailType.DISPLAY_LEGS);
|
||||
settings = new LeaderboardSettings(maneuverDetails, legDetails, raceDetails, namesOfRaceColumnsToShow,
|
||||
namesOfRacesToShow,
|
||||
/* set autoExpandFirstRace to true if we look at a single race */ nameOfRaceColumnToShow != null || nameOfRaceToShow != null, /* refresh interval */ null,
|
||||
@@ -77,7 +81,6 @@ public class LeaderboardSettingsFactory {
|
||||
* @param namesOfRacesToShow
|
||||
* alternatively, races to show can also be specified by their race names; if not <code>null</code>,
|
||||
* <code>namesOfRaceColumnsToShow</code> must be <code>null
|
||||
* @param nameOfRaceToSort TODO
|
||||
*/
|
||||
public LeaderboardSettings createNewDefaultSettings(List<String> namesOfRaceColumnsToShow,
|
||||
List<String> namesOfRacesToShow, String nameOfRaceToSort, boolean autoExpandFirstRace) {
|
||||
|
||||
+4
-6
@@ -61,6 +61,7 @@ import com.sap.sailing.gwt.ui.actions.GetWindInfoAction;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.NumberFormatterFactory;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
|
||||
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProviderListener;
|
||||
import com.sap.sailing.gwt.ui.client.RequiresDataInitialization;
|
||||
@@ -995,16 +996,13 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
result.add(new Label(stringMessages.rank() + ": " + rank));
|
||||
}
|
||||
result.add(new Label(stringMessages.speed() + ": "
|
||||
+ NumberFormat.getDecimalFormat().format(lastFix.speedWithBearing.speedInKnots) + " "+stringMessages.averageSpeedInKnotsUnit()));
|
||||
+ NumberFormatterFactory.getDecimalFormat(1).format(lastFix.speedWithBearing.speedInKnots) + " "+stringMessages.averageSpeedInKnotsUnit()));
|
||||
result.add(new Label(stringMessages.bearing() + ": "+ (int) lastFix.speedWithBearing.bearingInDegrees + " "+stringMessages.degreesShort()));
|
||||
if (lastFix.wind != null) {
|
||||
result.add(new Label(stringMessages.degreesBoatToTheWind() + ": " + NumberFormat.getDecimalFormat().format(Math.abs(
|
||||
result.add(new Label(stringMessages.degreesBoatToTheWind() + ": " + (int) Math.abs(
|
||||
new DegreeBearingImpl(lastFix.speedWithBearing.bearingInDegrees).getDifferenceTo(
|
||||
new DegreeBearingImpl(lastFix.wind.dampenedTrueWindFromDeg)).getDegrees())) + " "+stringMessages.degreesShort() ));
|
||||
new DegreeBearingImpl(lastFix.wind.dampenedTrueWindFromDeg)).getDegrees()) + " "+stringMessages.degreesShort()));
|
||||
}
|
||||
//TODO Introduce user role dependent view (Spectator, Admin). Comments underneath are necessary for other views
|
||||
// result.add(new Label("" + lastFix.position));
|
||||
// result.add(new Label("Tack: " + lastFix.tack.name()));
|
||||
if (!selectedRaces.isEmpty()) {
|
||||
RaceIdentifier race = selectedRaces.get(selectedRaces.size() - 1);
|
||||
if (race != null) {
|
||||
|
||||
+2
-2
@@ -16,14 +16,14 @@ public class RaceMapHelpLinesSettings {
|
||||
private final Set<HelpLineTypes> visibleHelpLines;
|
||||
|
||||
/**
|
||||
* Creates new RaceMapHelpLinesSettings with the {@link HelpLineTypes} <code>STARTLINE</code>, <code>FINISHLINE</code> and <code>ADVANTAGELINE</code>.<br />
|
||||
* Creates new RaceMapHelpLinesSettings with the {@link HelpLineTypes} <code>STARTLINE</code>,
|
||||
* <code>FINISHLINE</code> and <code>ADVANTAGELINE</code>.<br />
|
||||
*/
|
||||
public RaceMapHelpLinesSettings() {
|
||||
visibleHelpLines = new HashSet<HelpLineTypes>();
|
||||
visibleHelpLines.add(HelpLineTypes.STARTLINE);
|
||||
visibleHelpLines.add(HelpLineTypes.FINISHLINE);
|
||||
visibleHelpLines.add(HelpLineTypes.ADVANTAGELINE);
|
||||
visibleHelpLines.add(HelpLineTypes.COURSEMIDDLELINE);
|
||||
}
|
||||
|
||||
public RaceMapHelpLinesSettings(Collection<HelpLineTypes> visibleHelpLines) {
|
||||
|
||||
+1
-5
@@ -20,12 +20,8 @@ public class RaceMapSettings {
|
||||
private long tailLengthInMilliseconds = 100000l;
|
||||
|
||||
public RaceMapSettings() {
|
||||
// empty default settings; don't show maneuvers by default
|
||||
maneuverTypesToShow = new HashSet<ManeuverType>();
|
||||
maneuverTypesToShow.add(ManeuverType.TACK);
|
||||
maneuverTypesToShow.add(ManeuverType.JIBE);
|
||||
maneuverTypesToShow.add(ManeuverType.PENALTY_CIRCLE);
|
||||
maneuverTypesToShow.add(ManeuverType.MARK_PASSING);
|
||||
|
||||
this.zoomSettings = new RaceMapZoomSettings();
|
||||
this.helpLinesSettings = new RaceMapHelpLinesSettings();
|
||||
}
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
|
||||
//Run zoomSettingsChanged to set the checkboxes to their correct state
|
||||
zoomSettingsChanged();
|
||||
|
||||
Label maneuversLabel = dialog.createHeadlineLabel(stringMessages.maneuverTypes());
|
||||
Label maneuversLabel = dialog.createHeadlineLabel(stringMessages.maneuverTypesToShowWhenCompetitorIsClicked());
|
||||
vp.add(maneuversLabel);
|
||||
for (ManeuverType maneuverType : ManeuverType.values()) {
|
||||
CheckBox checkbox = dialog.createCheckbox(ManeuverTypeFormatter.format(maneuverType, stringMessages));
|
||||
|
||||
+27
-18
@@ -42,6 +42,9 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
|
||||
interface AnchorTemplates extends SafeHtmlTemplates {
|
||||
@SafeHtmlTemplates.Template("<a class=\"{2}\" href=\"{0}\">{1}</a>")
|
||||
SafeHtml anchor(String url, String displayName, String styleClass);
|
||||
|
||||
@SafeHtmlTemplates.Template("<a target=\"{3}\" class=\"{2}\" href=\"{0}\">{1}</a>")
|
||||
SafeHtml anchorWithTarget(String url, String displayName, String styleClass, String target);
|
||||
}
|
||||
|
||||
interface TextWithClassTemplate extends SafeHtmlTemplates {
|
||||
@@ -54,29 +57,27 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
|
||||
private static final int MAX_COLUMNS_IN_ROW = 0;
|
||||
private static final String STYLE_NAME_PREFIX = "leaderboardGroupPanel-";
|
||||
|
||||
private SailingServiceAsync sailingService;
|
||||
private StringMessages stringConstants;
|
||||
private ErrorReporter errorReporter;
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringConstants;
|
||||
private final ErrorReporter errorReporter;
|
||||
private LeaderboardGroupDTO group;
|
||||
private String root;
|
||||
private String viewMode;
|
||||
private final String root;
|
||||
private final String viewMode;
|
||||
|
||||
private FlowPanel mainPanel;
|
||||
private Widget welcomeWidget = null;
|
||||
private boolean allLeaderboardNamesStartWithGroupName = false;
|
||||
private final boolean embedded;
|
||||
|
||||
public LeaderboardGroupPanel(SailingServiceAsync sailingService, StringMessages stringConstants,
|
||||
ErrorReporter errorReporter, final String groupName, String root, String viewMode) {
|
||||
ErrorReporter errorReporter, final String groupName, String root, String viewMode, boolean embedded) {
|
||||
super();
|
||||
this.embedded = embedded;
|
||||
this.sailingService = sailingService;
|
||||
this.stringConstants = stringConstants;
|
||||
this.errorReporter = errorReporter;
|
||||
this.root = root;
|
||||
this.root = (root == null || root.length() == 0) ? "leaderboardGroupPanel" : root;
|
||||
this.viewMode = viewMode;
|
||||
if (this.root == null || this.root.length() == 0) {
|
||||
this.root = "leaderboardGroupPanel";
|
||||
}
|
||||
|
||||
mainPanel = new FlowPanel();
|
||||
add(mainPanel);
|
||||
loadGroup(groupName);
|
||||
@@ -88,7 +89,6 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
|
||||
public void onSuccess(LeaderboardGroupDTO group) {
|
||||
if (group != null) {
|
||||
LeaderboardGroupPanel.this.group = group;
|
||||
|
||||
if(group.leaderboards.size() > 1) {
|
||||
allLeaderboardNamesStartWithGroupName = true;
|
||||
String groupName = group.name;
|
||||
@@ -99,7 +99,6 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildGUI();
|
||||
} else {
|
||||
errorReporter.reportError(stringConstants.noLeaderboardGroupWithNameFound(groupName));
|
||||
@@ -164,7 +163,6 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
|
||||
for (int i = 0; i < maxRacesNum; i++) {
|
||||
tableData.add(i);
|
||||
}
|
||||
|
||||
leaderboardsTable.setRowData(tableData);
|
||||
mainPanel.add(leaderboardsTable);
|
||||
} else {
|
||||
@@ -192,7 +190,12 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
|
||||
String link = URLFactory.INSTANCE.encode("/gwt/Leaderboard.html?name=" + leaderboard.name
|
||||
+ "&leaderboardGroupName=" + group.name + "&root=" + root
|
||||
+ (debugParam != null && !debugParam.isEmpty() ? "&gwt.codesvr=" + debugParam : ""));
|
||||
return ANCHORTEMPLATE.anchor(link, stringConstants.overview(), STYLE_NAME_PREFIX + "ActiveLeaderboard");
|
||||
if (embedded) {
|
||||
return ANCHORTEMPLATE.anchor(link, stringConstants.overview(), STYLE_NAME_PREFIX + "ActiveLeaderboard");
|
||||
} else {
|
||||
return ANCHORTEMPLATE.anchorWithTarget(link, stringConstants.overview(), STYLE_NAME_PREFIX + "ActiveLeaderboard",
|
||||
/* target */ "_blank");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -232,11 +235,17 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
|
||||
if (race.getRaceColumnName().equals(stringConstants.overview())) {
|
||||
String link = URLFactory.INSTANCE.encode("/gwt/Leaderboard.html?name=" + leaderboard.name
|
||||
+ "&leaderboardGroupName=" + group.name + "&root=" + root);
|
||||
if(debugParam != null && !debugParam.isEmpty())
|
||||
if (debugParam != null && !debugParam.isEmpty()) {
|
||||
link += "&gwt.codesvr=" + debugParam;
|
||||
if(viewMode != null && !viewMode.isEmpty())
|
||||
}
|
||||
if (viewMode != null && !viewMode.isEmpty()) {
|
||||
link += "&viewMode=" + viewMode;
|
||||
b.append(ANCHORTEMPLATE.anchor(link, raceColumnDisplayName, STYLE_NAME_PREFIX + "ActiveLeaderboard"));
|
||||
}
|
||||
if (embedded) {
|
||||
b.append(ANCHORTEMPLATE.anchorWithTarget(link, raceColumnDisplayName, STYLE_NAME_PREFIX + "ActiveLeaderboard", "_blank"));
|
||||
} else {
|
||||
b.append(ANCHORTEMPLATE.anchor(link, raceColumnDisplayName, STYLE_NAME_PREFIX + "ActiveLeaderboard"));
|
||||
}
|
||||
} else {
|
||||
final Iterable<FleetDTO> fleets = race.getFleets();
|
||||
boolean singleFleet = Util.size(fleets) < 2;
|
||||
|
||||
+10
-7
@@ -48,19 +48,22 @@ public class SpectatorEntryPoint extends AbstractEntryPoint implements RegattaRe
|
||||
|
||||
RootPanel rootPanel = RootPanel.get();
|
||||
FlowPanel groupAndFeedbackPanel = new FlowPanel();
|
||||
|
||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(groupName != null ? groupName
|
||||
: stringMessages.overview(), stringMessages);
|
||||
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
||||
rootPanel.add(logoAndTitlePanel);
|
||||
|
||||
boolean embedded = Window.Location.getParameter("embedded") != null
|
||||
&& Window.Location.getParameter("embedded").equalsIgnoreCase("true");
|
||||
if (!embedded) {
|
||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(groupName != null ? groupName
|
||||
: stringMessages.overview(), stringMessages);
|
||||
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
||||
rootPanel.add(logoAndTitlePanel);
|
||||
}
|
||||
if (groupName == null) {
|
||||
FlowPanel groupOverviewPanel = new FlowPanel();
|
||||
groupOverviewPanel.addStyleName("contentOuterPanel");
|
||||
groupOverviewPanel.add(new LeaderboardGroupOverviewPanel(sailingService, this, stringMessages));
|
||||
rootPanel.add(groupOverviewPanel);
|
||||
} else {
|
||||
LeaderboardGroupPanel groupPanel = new LeaderboardGroupPanel(sailingService, stringMessages, this, groupName, root, viewModeParamValue);
|
||||
LeaderboardGroupPanel groupPanel = new LeaderboardGroupPanel(sailingService, stringMessages, this,
|
||||
groupName, root, viewModeParamValue, embedded);
|
||||
groupPanel.getElement().getStyle().setFloat(Style.Float.LEFT);
|
||||
groupPanel.setWelcomeWidget(new SimpleWelcomeWidget( stringMessages.welcomeToSailingAnalytics(), stringMessages.welcomeToSailingAnalyticsBody()));
|
||||
SimplePanel feedbackPanel = new SimplePanel();
|
||||
|
||||
Reference in new issue
Block a user