mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 19:33:52 +00:00
return an estimated fix from getBoatPositions if there is no real fix in an interval
This commit is contained in:
1 parent
c7f2f7f33b
commit
0ba260ea2c
3 files changed
+21
-3
No files matched your search
+7
@@ -115,6 +115,7 @@ import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
import com.sap.sailing.domain.tracking.WindWithConfidence;
|
||||
import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.WindImpl;
|
||||
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
||||
@@ -1235,6 +1236,12 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
} finally {
|
||||
track.unlockAfterRead();
|
||||
}
|
||||
if (fixes.isEmpty()) {
|
||||
// then there was no (smoothened) fix between fromTimePoint and toTimePointExcluding; estimate...
|
||||
TimePoint middle = new MillisecondsTimePoint((toTimePointExcluding.asMillis()+fromTimePoint.asMillis())/2);
|
||||
fixes.add(new GPSFixMovingImpl(track.getEstimatedPosition(middle, extrapolate), middle,
|
||||
track.getEstimatedSpeed(middle)));
|
||||
}
|
||||
Iterator<GPSFixMoving> fixIter = fixes.iterator();
|
||||
if (fixIter.hasNext()) {
|
||||
final WindSource windSource = new WindSourceImpl(WindSourceType.COMBINED);
|
||||
|
||||
+3
-3
@@ -457,7 +457,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
*/
|
||||
protected Triple<Map<CompetitorDTO, Date>, Map<CompetitorDTO, Date>, Map<CompetitorDTO, Boolean>> computeFromAndTo(
|
||||
Date upTo, Iterable<CompetitorDTO> competitorsToShow) {
|
||||
Date tailstart = new Date(upTo.getTime() - settings.getTailLengthInMilliseconds());
|
||||
Date tailstart = new Date(upTo.getTime() - settings.getEffectiveTailLengthInMilliseconds());
|
||||
Map<CompetitorDTO, Date> from = new HashMap<CompetitorDTO, Date>();
|
||||
Map<CompetitorDTO, Date> to = new HashMap<CompetitorDTO, Date>();
|
||||
Map<CompetitorDTO, Boolean> overlapWithKnownFixes = new HashMap<CompetitorDTO, Boolean>();
|
||||
@@ -589,7 +589,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
|
||||
protected void showBoatsOnMap(final Date date, final Iterable<CompetitorDTO> competitorsToShow) {
|
||||
if (map != null) {
|
||||
Date tailsFromTime = settings.isShowTails() ? new Date(date.getTime() - settings.getTailLengthInMilliseconds()) : new Date(date.getTime());
|
||||
Date tailsFromTime = new Date(date.getTime() - settings.getEffectiveTailLengthInMilliseconds());
|
||||
Date tailsToTime = new Date(date.getTime());
|
||||
Set<CompetitorDTO> competitorDTOsOfUnusedTails = new HashSet<CompetitorDTO>(tails.keySet());
|
||||
Set<CompetitorDTO> competitorDTOsOfUnusedBoatCanvases = new HashSet<CompetitorDTO>(boatCanvasOverlays.keySet());
|
||||
@@ -1556,7 +1556,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
settings.setMaxVisibleCompetitorsCount(newSettings.getMaxVisibleCompetitorsCount());
|
||||
requiredRedraw = true;
|
||||
}
|
||||
if(requiredRedraw) {
|
||||
if (requiredRedraw) {
|
||||
redraw();
|
||||
}
|
||||
}
|
||||
|
||||
+11
@@ -31,7 +31,18 @@ public class RaceMapSettings {
|
||||
this.zoomSettings = new RaceMapZoomSettings();
|
||||
this.helpLinesSettings = new RaceMapHelpLinesSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 0 if {@link #isShowTails()} returns <code>false</code>; {@link #getTailLengthInMilliseconds()} otherwise
|
||||
*/
|
||||
public long getEffectiveTailLengthInMilliseconds() {
|
||||
return isShowTails() ? getTailLengthInMilliseconds() : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* The tail length as set in the dialog; feeds into {@link #getEffectiveTailLengthInMilliseconds()}, but only if
|
||||
* {@link #isShowTails()} is <code>true</code>.
|
||||
*/
|
||||
public long getTailLengthInMilliseconds() {
|
||||
return tailLengthInMilliseconds;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user