mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
Merge branch 'master' into tw2015
This commit is contained in:
commit
6b661359f7
6 files changed
+71
-25
No files matched your search
+17
-21
@@ -1196,10 +1196,10 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
// this only works because the quickRanks are sorted
|
||||
for (Entry<CompetitorDTO, Integer> competitorsByWindwardDistanceTraveledAndOneBasedLegNumber :
|
||||
competitorsInOrderOfWindwardDistanceTraveledWithOneBasedLegNumber.entrySet()) {
|
||||
if (Util.contains(competitorsToShow, competitorsByWindwardDistanceTraveledAndOneBasedLegNumber.getKey())) {
|
||||
if (Util.contains(competitorsToShow, competitorsByWindwardDistanceTraveledAndOneBasedLegNumber.getKey()) &&
|
||||
competitorsByWindwardDistanceTraveledAndOneBasedLegNumber.getValue() != null) {
|
||||
leadingCompetitorDTO = competitorsByWindwardDistanceTraveledAndOneBasedLegNumber.getKey();
|
||||
legOfLeaderCompetitor = competitorsByWindwardDistanceTraveledAndOneBasedLegNumber.getValue() == null ?
|
||||
0 : competitorsByWindwardDistanceTraveledAndOneBasedLegNumber.getValue();
|
||||
legOfLeaderCompetitor = competitorsByWindwardDistanceTraveledAndOneBasedLegNumber.getValue();
|
||||
return new com.sap.sse.common.Util.Pair<Integer, CompetitorDTO>(legOfLeaderCompetitor, leadingCompetitorDTO);
|
||||
}
|
||||
}
|
||||
@@ -1378,14 +1378,12 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
private void showStartAndFinishAndCourseMiddleLines(final CoursePositionsDTO courseDTO) {
|
||||
if (map != null && courseDTO != null && courseDTO.course != null && courseDTO.course.waypoints != null &&
|
||||
!courseDTO.course.waypoints.isEmpty()) {
|
||||
com.sap.sse.common.Util.Pair<Integer, CompetitorDTO> leadingVisibleCompetitorInfo = getFarthestAheadVisibleCompetitorWithOneBasedLegNumber(getCompetitorsToShow());
|
||||
int oneBasedLegOfLeadingCompetitor = leadingVisibleCompetitorInfo == null ? -1 : leadingVisibleCompetitorInfo.getA();
|
||||
int numberOfLegs = courseDTO.course.waypoints.size()-1;
|
||||
// draw the start line
|
||||
final WaypointDTO startWaypoint = courseDTO.course.waypoints.get(0);
|
||||
updateCountdownCanvas(startWaypoint);
|
||||
final Position startLineLeftPosition = courseDTO.getStartMarkPositions().get(0);
|
||||
final Position startLineRightPosition = courseDTO.getStartMarkPositions().get(1);
|
||||
final int numberOfStartWaypointMarks = courseDTO.getStartMarkPositions() == null ? 0 : courseDTO.getStartMarkPositions().size();
|
||||
final Position startLineLeftPosition = numberOfStartWaypointMarks == 0 ? null : courseDTO.getStartMarkPositions().get(0);
|
||||
final Position startLineRightPosition = numberOfStartWaypointMarks < 2 ? null : courseDTO.getStartMarkPositions().get(1);
|
||||
if (courseDTO.startLineAngleToCombinedWind != null) {
|
||||
startLineAdvantageText.replace(0, startLineAdvantageText.length(), " "+stringMessages.lineAngleToWindAndAdvantage(
|
||||
NumberFormat.getFormat("0.0").format(courseDTO.startLineLengthInMeters),
|
||||
@@ -1395,19 +1393,16 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
} else {
|
||||
startLineAdvantageText.delete(0, startLineAdvantageText.length());
|
||||
}
|
||||
startLine = showOrRemoveOrUpdateLine(startLine, /* showLine */ courseDTO.getStartMarkPositions() != null &&
|
||||
courseDTO.getStartMarkPositions().size() == 2 &&
|
||||
((oneBasedLegOfLeadingCompetitor <= 1 &&
|
||||
startLine = showOrRemoveOrUpdateLine(startLine, /* showLine */ numberOfStartWaypointMarks == 2 &&
|
||||
((courseDTO.currentLegNumber <= 1 &&
|
||||
settings.getHelpLinesSettings().isVisible(HelpLineTypes.STARTLINE)) ||
|
||||
settings.getHelpLinesSettings().isVisible(HelpLineTypes.COURSEGEOMETRY)),
|
||||
startLineLeftPosition, startLineRightPosition, startLineInfoProvider, "#ffffff");
|
||||
// TODO bug3027: show SmallTransparentInfoOverlay in addition to tooltip if course geometry option is true; remove it if option is false
|
||||
// TODO bug3027: show *all* course middle lines if course geometry option is true
|
||||
|
||||
// draw the finish line
|
||||
final Position finishLineLeftPosition = courseDTO.getFinishMarkPositions().get(0);
|
||||
final Position finishLineRightPosition = courseDTO.getFinishMarkPositions().get(1);
|
||||
if (courseDTO.startLineAngleToCombinedWind != null) {
|
||||
final int numberOfFinishWaypointMarks = courseDTO.getFinishMarkPositions() == null ? 0 : courseDTO.getFinishMarkPositions().size();
|
||||
final Position finishLineLeftPosition = numberOfFinishWaypointMarks == 0 ? null : courseDTO.getFinishMarkPositions().get(0);
|
||||
final Position finishLineRightPosition = numberOfFinishWaypointMarks < 2 ? null : courseDTO.getFinishMarkPositions().get(1);
|
||||
if (courseDTO.finishLineAngleToCombinedWind != null) {
|
||||
finishLineAdvantageText.replace(0, finishLineAdvantageText.length(), " "+stringMessages.lineAngleToWindAndAdvantage(
|
||||
NumberFormat.getFormat("0.0").format(courseDTO.finishLineLengthInMeters),
|
||||
NumberFormat.getFormat("0.0").format(Math.abs(courseDTO.finishLineAngleToCombinedWind)),
|
||||
@@ -1416,8 +1411,9 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
} else {
|
||||
finishLineAdvantageText.delete(0, finishLineAdvantageText.length());
|
||||
}
|
||||
finishLine = showOrRemoveOrUpdateLine(finishLine, /* showLine */ courseDTO.getFinishMarkPositions() != null && courseDTO.getFinishMarkPositions().size() == 2 &&
|
||||
(oneBasedLegOfLeadingCompetitor > 0 && oneBasedLegOfLeadingCompetitor == numberOfLegs && settings.getHelpLinesSettings().isVisible(HelpLineTypes.FINISHLINE))
|
||||
finishLine = showOrRemoveOrUpdateLine(finishLine, /* showLine */ numberOfFinishWaypointMarks == 2 &&
|
||||
(courseDTO.currentLegNumber == courseDTO.totalLegsCount &&
|
||||
settings.getHelpLinesSettings().isVisible(HelpLineTypes.FINISHLINE))
|
||||
|| settings.getHelpLinesSettings().isVisible(HelpLineTypes.COURSEGEOMETRY),
|
||||
finishLineLeftPosition, finishLineRightPosition, finishLineInfoProvider, "#000000");
|
||||
// the control point pairs for which we already decided whether or not
|
||||
@@ -1430,8 +1426,8 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
boolean showCourseMiddleLine = keysAlreadyHandled.containsKey(key) && keysAlreadyHandled.get(key).getA() ||
|
||||
settings.getHelpLinesSettings().isVisible(HelpLineTypes.COURSEGEOMETRY) ||
|
||||
(settings.getHelpLinesSettings().isVisible(HelpLineTypes.COURSEMIDDLELINE)
|
||||
&& oneBasedLegOfLeadingCompetitor > 0
|
||||
&& oneBasedLegOfLeadingCompetitor-1 == zeroBasedIndexOfStartWaypoint);
|
||||
&& courseDTO.currentLegNumber > 0
|
||||
&& courseDTO.currentLegNumber-1 == zeroBasedIndexOfStartWaypoint);
|
||||
keysAlreadyHandled.put(key, new Pair<>(showCourseMiddleLine, zeroBasedIndexOfStartWaypoint));
|
||||
}
|
||||
Set<Set<ControlPointDTO>> keysToConsider = new HashSet<>(keysAlreadyHandled.keySet());
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ public class SimpleCompetitorDTO extends NamedDTO implements Serializable {
|
||||
final Nationality nationality = competitor.getTeam().getNationality();
|
||||
CountryCode countryCode = nationality == null ? null : nationality.getCountryCode();
|
||||
this.sailID = competitor.getBoat().getSailID();
|
||||
this.twoLetterIsoCountryCode = countryCode.getTwoLetterISOCode();
|
||||
this.twoLetterIsoCountryCode = countryCode == null ? null : countryCode.getTwoLetterISOCode();
|
||||
this.flagImageURL = competitor.getFlagImage() == null ? null : competitor.getFlagImage().toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
android:defaultValue="@string/empty"
|
||||
android:key="@string/preference_identifier_key"
|
||||
android:title="@string/device_identifier"/>
|
||||
<EditTextPreference
|
||||
<com.sap.sailing.racecommittee.app.ui.views.UrlEditTextPreference
|
||||
android:defaultValue="@string/preference_server_url_default"
|
||||
android:key="@string/preference_server_url_key"
|
||||
android:title="@string/settings_advanced_service_header"/>
|
||||
|
||||
+1
@@ -250,6 +250,7 @@ public class AppPreferences {
|
||||
if (value.equals("")) {
|
||||
return "http://localhost:8889";
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
-2
@@ -88,8 +88,6 @@ public class GeneralPreferenceFragment extends BasePreferenceFragment {
|
||||
setupServerUrlBox();
|
||||
setupSyncQRCodeButton();
|
||||
setupForceUpdateButton();
|
||||
|
||||
bindPreferenceSummaryToValue(findPreference(R.string.preference_server_url_key));
|
||||
}
|
||||
|
||||
private void setupIdentifierBox() {
|
||||
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.views;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
public class UrlEditTextPreference extends EditTextPreference {
|
||||
|
||||
public UrlEditTextPreference(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public UrlEditTextPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public UrlEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
public UrlEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setText(String text) {
|
||||
super.setText(normalizeUrl(text));
|
||||
}
|
||||
|
||||
private String normalizeUrl(String url) {
|
||||
// add missing protocol
|
||||
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
||||
url = "http://" + url;
|
||||
}
|
||||
|
||||
// remove trailing slash
|
||||
if (url.endsWith("/")) {
|
||||
url = url.substring(0, url.length() - 1);
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
return getText();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user