From 0c4c8e763d78a6f1147f6f9df1713d50dad64b84 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 22 Aug 2024 22:37:02 +0200 Subject: [PATCH 1/2] removed a package that was deleted from TracAPI manifest export --- java/com.tractrac.clientmodule/META-INF/MANIFEST.MF | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF index 5527d8a1492..3b52158d8a9 100644 --- a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF +++ b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF @@ -33,7 +33,6 @@ Export-Package: com.tractrac.asio.lib.api, com.tractrac.dataflow.lib.api.ws, com.tractrac.dataflow.lib.impl, com.tractrac.dataflow.lib.impl.statistics, - com.tractrac.dataflow.lib.prov.live.server, com.tractrac.dataflow.lib.prov.live.server.tcp, com.tractrac.dataflow.lib.prov.live.subscriptions, com.tractrac.dataflow.lib.prov.live.tcp, From 2ffb3e7b5f4d09ab7b4eab8995ad331996368cc0 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 22 Aug 2024 23:48:03 +0200 Subject: [PATCH 2/2] bug6048: implemented new statistic for duration since start to first tack --- .../Sailing_StringMessages.properties | 3 ++- .../Sailing_StringMessages_de.properties | 3 ++- .../data/HasRaceOfCompetitorContext.java | 7 +++++++ .../data/RaceOfCompetitorWithContext.java | 21 +++++++++++++++++++ .../resources/SailingAnalyticsNotes.html | 1 + 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties index 71c86c746e2..fcf1931cdf4 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties @@ -272,4 +272,5 @@ CompetitorSailingDomainRetrieverChain=Competitors in Leaderboards SmoothedSpeed=Smoothed Speed RatioDistanceLongVsShortTack=Ratio distance long tack / short tack RatioDurationLongVsShortTack=Ratio duration long tack / short tack -Discarded=Discarded \ No newline at end of file +Discarded=Discarded +DurationFromRaceStartToFirstTack=Duration from race start to first tack \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties index fcf4f3fd7ba..f7e381a7515 100755 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties @@ -270,4 +270,5 @@ CompetitorSailingDomainRetrieverChain=Teilnehmer in Ranglisten SmoothedSpeed=Geglättete Geschwindigkeit RatioDistanceLongVsShortTack=Verhältnis gesegelte Distanz auf Streck- zu Holebug RatioDurationLongVsShortTack=Verhältnis gesegelte Dauer auf Streck- zu Holebug -Discarded=Gestrichen \ No newline at end of file +Discarded=Gestrichen +DurationFromRaceStartToFirstTack=Dauer vom Start der Wettfahrt bis zur ersten Wende \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java index 431cf1ecf05..a98c626713f 100755 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java @@ -143,6 +143,13 @@ public interface HasRaceOfCompetitorContext { @Statistic(messageKey="RaceDuration") Duration getDuration(); + /** + * The time between the start of the race and the {@link #getCompetitor() competitor}'s first tack; + * {@code null} if no tack is found for the competitor in the race. + */ + @Statistic(messageKey="DurationFromRaceStartToFirstTack") + Duration getDurationFromStartToFirstTack(); + @Statistic(messageKey="DistanceToStarboardSideAtStartOfRace", resultDecimals=2) public Double getRelativeDistanceToStarboardSideAtStartOfRace(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java index fc66865418c..78ffe08f45a 100755 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java @@ -36,6 +36,7 @@ import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindPositionMode; +import com.sap.sailing.domain.tracking.impl.TimedComparator; import com.sap.sse.common.Bearing; import com.sap.sse.common.Distance; import com.sap.sse.common.Duration; @@ -399,6 +400,26 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext { return duration; } + @Override + public Duration getDurationFromStartToFirstTack() { + final TrackedRace race = getTrackedRace(); + final Duration result; + if (race.getStartOfRace() == null) { + result = null; + } else { + final Iterable maneuvers = race.getManeuvers(competitor, /* wait for latest */ false); + final List tacks = Util.asList(Util.filter(maneuvers, + m->m.getType() == ManeuverType.TACK && !m.getTimePoint().before(race.getStartOfRace()))); + if (tacks.isEmpty()) { + result = null; + } else { + tacks.sort(TimedComparator.INSTANCE); + result = race.getStartOfRace().until(tacks.get(0).getTimePoint()); + } + } + return result; + } + @Override public Double getRelativeDistanceToStarboardSideAtStartOfRace() { TrackedRace trackedRace = getTrackedRace(); 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 302569835ab..adf355c1201 100755 --- 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 @@ -12,6 +12,7 @@
  • No more tool tips for course area circles. They kept tool tips for lines (such as start/finish lines or course middle lines) from showing when hovering the mouse over them.
  • In Data Mining, race results now have a new dimension "Discarded" for grouping and filtering.
  • +
  • Races of competitors now have a new statistic in Data Mining: duration since start to first tack.
  • July 2024