20a4cdca2d7dd6b3f517242fc59a522b3c0be07e
.github/workflows/release.yml
| ... | ... | @@ -159,6 +159,7 @@ jobs: |
| 159 | 159 | uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2.2.1 |
| 160 | 160 | with: |
| 161 | 161 | tag_name: ${{ env.SIMPLE_VERSION_INFO }} |
| 162 | + target_commitish: ${{ github.ref_name }} |
|
| 162 | 163 | name: ${{ env.SIMPLE_VERSION_INFO }} |
| 163 | 164 | draft: false |
| 164 | 165 | prerelease: false |
java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java
| ... | ... | @@ -128,7 +128,7 @@ public enum BoatClassMasterdata { |
| 128 | 128 | RS_FEVA ("RS Feva", true, 3.64, 1.42, BoatHullType.MONOHULL, true, "RSFeva"), |
| 129 | 129 | RS_TERA ("RS Tera", true, 2.87, 1.23, BoatHullType.MONOHULL, false, "RSTera"), |
| 130 | 130 | RS_VAREO ("RS Vareo", true, 4.25, 1.57, BoatHullType.MONOHULL, true, "RS_VAREO", "RSVareo", "RS Vareo"), |
| 131 | - RS_VENTURE ("RS Venture", true, 4.9, 2.0, BoatHullType.MONOHULL, true, "RSVenture", "RS Venture Connect"), |
|
| 131 | + RS_VENTURE ("RS Venture", true, 4.9, 2.0, BoatHullType.MONOHULL, true, "RSVenture", "RS Venture Connect", "RS Venture Connect SCS"), |
|
| 132 | 132 | SALONA_46 ("Salona 46", true, 14.14, 4.2, BoatHullType.MONOHULL, true, "Salona-46"), |
| 133 | 133 | SCAN_KAP_99 ("Scan-kap 99", true, 9.86, 2.61, BoatHullType.MONOHULL, true, "Scan Kap 99"), |
| 134 | 134 | SK_22 ("SK 22", true, 12, 2, BoatHullType.MONOHULL, true, "22er Schärenkreuzer", "22", "SK22", "22 sq.m."), |
java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardWithCache.java
| ... | ... | @@ -542,10 +542,6 @@ public abstract class AbstractLeaderboardWithCache implements Leaderboard { |
| 542 | 542 | }); |
| 543 | 543 | futuresForCompetitorAndColumnName.put(new Pair<>(competitor, raceColumn.getName()), new Pair<>(row, future)); |
| 544 | 544 | } |
| 545 | - if (addOverallDetails) { |
|
| 546 | - //this reuses several prior calculated fields, so must be evaluated after them |
|
| 547 | - row.totalScoredRaces = this.getTotalRaces(competitor, row, timePoint); |
|
| 548 | - } |
|
| 549 | 545 | result.rows.put(competitorDTO, row); |
| 550 | 546 | String displayName = this.getDisplayName(competitor); |
| 551 | 547 | if (displayName != null) { |
| ... | ... | @@ -565,6 +561,10 @@ public abstract class AbstractLeaderboardWithCache implements Leaderboard { |
| 565 | 561 | final String columnName = competitorAndRaceColumnNameAndRowAndFuture.getKey().getB(); |
| 566 | 562 | final Future<LeaderboardEntryDTO> future = competitorAndRaceColumnNameAndRowAndFuture.getValue().getB(); |
| 567 | 563 | rowForCompetitor.fieldsByRaceColumnName.put(columnName, future.get()); |
| 564 | + if (addOverallDetails) { |
|
| 565 | + //this reuses several prior calculated fields, so must be evaluated after them |
|
| 566 | + rowForCompetitor.totalScoredRaces = this.getTotalRaces(competitorAndRaceColumnNameAndRowAndFuture.getKey().getA(), rowForCompetitor, timePoint); |
|
| 567 | + } |
|
| 568 | 568 | } catch (InterruptedException e) { |
| 569 | 569 | throw new RuntimeException(e); |
| 570 | 570 | } catch (ExecutionException e) { |
java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java
| ... | ... | @@ -2972,7 +2972,9 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl |
| 2972 | 2972 | Pair<Double, Double> result; |
| 2973 | 2973 | double defaultAngle = getRace().getBoatClass().getMinimumAngleBetweenDifferentTacksUpwind(); |
| 2974 | 2974 | double threshold = 10; |
| 2975 | - result = usePolarsIfPossible(wind, defaultAngle, LegType.UPWIND, threshold); |
|
| 2975 | + result = usePolarsIfPossible(wind != null && wind.getKnots()==0?new WindImpl(wind.getPosition(), |
|
| 2976 | + wind.getTimePoint(), new KnotSpeedWithBearingImpl(10 /* default 10kts */, wind.getBearing())):wind, |
|
| 2977 | + defaultAngle, LegType.UPWIND, threshold); |
|
| 2976 | 2978 | return result; |
| 2977 | 2979 | } |
| 2978 | 2980 |
java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html
| ... | ... | @@ -8,6 +8,13 @@ |
| 8 | 8 | <h5 class="articleSubheadline">December 2025</h5> |
| 9 | 9 | <ul class="bulletList"> |
| 10 | 10 | <li>Added boat class Fareast 28R.</li> |
| 11 | + <li>When no wind speed is measured at all, let the clustering into different tacks make |
|
| 12 | + assumptions (e.g., 10kts true wind speed) for the wind direction estimation from the |
|
| 13 | + courses over ground. This wind speed default assumption is then used to determine |
|
| 14 | + average maneuver angles for the boat type in those wind speeds, which in turn helps |
|
| 15 | + computing the minimum course difference required between the clusters for the different |
|
| 16 | + tacks. All this helps to improve wind direction estimation results if no wind speed |
|
| 17 | + is provided at all.</li> |
|
| 11 | 18 | </ul> |
| 12 | 19 | <h5 class="articleSubheadline">October 2025</h5> |
| 13 | 20 | <ul class="bulletList"> |