public void SetFromSelection(IItemTrackSelectionInfo t, IActivity activity) { // Set from activity: this.ItemReferenceId = t.ItemReferenceId; this.MarkedDistances = t.MarkedDistances; this.m_MarkedTimes = t.MarkedTimes; this.m_SelectedDistance = t.SelectedDistance; this.m_SelectedTime = t.SelectedTime; this.Activity = activity; }
//Note: IItemTrackSelectionInfo uses Activity distances, avoid... //public TrailResultMarked(TrailResult tr, IValueRangeSeries<double> t) //{ // trailResult = tr; // selInfo.MarkedDistances = t; //} public TrailResultMarked(TrailResult tr, IItemTrackSelectionInfo t) { this.trailResult = tr; this.selInfo.SetFromSelection(t, tr.Activity); if (selInfo.MarkedTimes != null) { selInfo.MarkedTimes = TrailsItemTrackSelectionInfo.excludePauses(selInfo.MarkedTimes, tr.Pauses); } //Note that SelectedTime can still include paused time }
public void Union(IItemTrackSelectionInfo t) { if (m_MarkedTimes == null) { m_MarkedTimes = t.MarkedTimes; } else if (t.MarkedTimes != null) { foreach (IValueRange <DateTime> i in t.MarkedTimes) { m_MarkedTimes.Add(i); } } if (m_MarkedDistances == null) { m_MarkedDistances = t.MarkedDistances; } else if (t.MarkedDistances != null) { foreach (IValueRange <double> i in t.MarkedDistances) { m_MarkedDistances.Add(i); } } if (m_SelectedTime == null) { m_SelectedTime = t.SelectedTime; } else if (t.SelectedTime != null) { DateTime Lower = m_SelectedTime.Lower.CompareTo(t.SelectedTime.Lower) < 0 ? m_SelectedTime.Lower : t.SelectedTime.Lower; DateTime Upper = m_SelectedTime.Upper.CompareTo(t.SelectedTime.Upper) > 0 ? m_SelectedTime.Upper : t.SelectedTime.Upper; m_SelectedTime = new ValueRange <DateTime>(Lower, Upper); } if (m_SelectedDistance == null) { m_SelectedDistance = t.SelectedDistance; } else if (t.SelectedDistance != null) { double Lower = Math.Min(m_SelectedDistance.Lower, t.SelectedDistance.Lower); double Upper = Math.Max(m_SelectedDistance.Upper, t.SelectedDistance.Upper); m_SelectedDistance = new ValueRange <double>(Lower, Upper); } }
public TimePredictionSource(IItemTrackSelectionInfo info) { if (info is TrailsItemTrackSelectionInfo) { //Assume format is Trails for now, all info in MarkedTimes //The times could be used too, converting back and forward now... TrailsItemTrackSelectionInfo tinfo = info as TrailsItemTrackSelectionInfo; this.Activity = tinfo.Activity; this.UsedDistance = 0; this.UsedTime = TimeSpan.Zero; bool first = true; IDistanceDataTrack distanceTrack = ActivityInfoCache.Instance.GetInfo(Activity).MovingDistanceMetersTrack; foreach (ValueRange<DateTime> t in tinfo.MarkedTimes) { TimeSpan lowerTime = ZoneFiveSoftware.Common.Data.Algorithm.DateTimeRangeSeries.TimeNotPaused( Activity.StartTime, t.Lower, Activity.TimerPauses); TimeSpan upperTime = ZoneFiveSoftware.Common.Data.Algorithm.DateTimeRangeSeries.TimeNotPaused( Activity.StartTime, t.Upper, Activity.TimerPauses); float lowerDist = distanceTrack.GetInterpolatedValue(t.Lower).Value; float upperDist = distanceTrack.GetInterpolatedValue(t.Upper).Value; if (first) { this.StartDistance = lowerDist; this.offsetTime = lowerTime.TotalSeconds; first = false; } this.UsedTime += upperTime - lowerTime; this.UsedDistance += upperDist - lowerDist; } } else { //Need to get activity from logbook, adjust distances etc throw new NotImplementedException("Expects IItemTrackSelectionInfo as TrailsItemTrackSelectionInfo"); } }
internal static IList <float[]> GetChartResultFromActivity(bool xIsTime, bool isOffset, TrailResult tr, TrailResult ReferenceTrailResult, IItemTrackSelectionInfo sel) { IList <float[]> result = new List <float[]>(); //Currently only one range but several regions in the chart can be selected //Only use one of the selections if (sel.MarkedTimes != null) { foreach (IValueRange <DateTime> v in sel.MarkedTimes) { result.Add(GetChartResultFromDateTime(xIsTime, isOffset, tr, ReferenceTrailResult, v)); } } else if (sel.MarkedDistances != null) { foreach (IValueRange <double> v in sel.MarkedDistances) { result.Add(GetChartResultFromDistResult(xIsTime, isOffset, tr, ReferenceTrailResult, v)); } } else if (sel.SelectedTime != null) { result.Add(GetChartResultFromDateTime(xIsTime, isOffset, tr, ReferenceTrailResult, sel.SelectedTime)); } else if (sel.SelectedDistance != null) { result.Add(GetChartResultFromDistResult(xIsTime, isOffset, tr, ReferenceTrailResult, sel.SelectedDistance)); } return(result); }
public TrailResultMarked(TrailResult tr, IItemTrackSelectionInfo t) { trailResult = tr; selInfo.SetFromSelection(t, tr.Activity); }
public void Union(IItemTrackSelectionInfo t) { if (m_MarkedTimes == null) { m_MarkedTimes = t.MarkedTimes; } else if (t.MarkedTimes != null) { foreach (IValueRange<DateTime> i in t.MarkedTimes) { m_MarkedTimes.Add(i); } } if (m_MarkedDistances == null) { m_MarkedDistances = t.MarkedDistances; } else if (t.MarkedDistances != null) { foreach (IValueRange<double> i in t.MarkedDistances) { m_MarkedDistances.Add(i); } } if (m_SelectedTime == null) { m_SelectedTime = t.SelectedTime; } else if (t.SelectedTime != null) { DateTime Lower = m_SelectedTime.Lower.CompareTo(t.SelectedTime.Lower) < 0 ? m_SelectedTime.Lower : t.SelectedTime.Lower; DateTime Upper = m_SelectedTime.Upper.CompareTo(t.SelectedTime.Upper) > 0 ? m_SelectedTime.Upper : t.SelectedTime.Upper; m_SelectedTime = new ValueRange<DateTime>(Lower, Upper); } if (m_SelectedDistance == null) { m_SelectedDistance = t.SelectedDistance; } else if (t.SelectedDistance != null) { double Lower = Math.Min(m_SelectedDistance.Lower, t.SelectedDistance.Lower); double Upper = Math.Max(m_SelectedDistance.Upper, t.SelectedDistance.Upper); m_SelectedDistance = new ValueRange<double>(Lower, Upper); } }