/// <summary> Get a prettier title for the global date/time filter. </summary> /// <returns>A cleaner title.</returns> public string GetTitleOfDataScoringDateFilter() { var dayNames = CultureInfo.CurrentCulture.DateTimeFormat.DayNames; string title = ""; switch (Type) { case FilterType.AllDays: title = "All Days"; break; case FilterType.Weekdays: title = "Weekdays"; break; case FilterType.Weekends: title = "Weekends"; break; case FilterType.DayOfTheWeek: title = dayNames[DayOfTheWeek]; break; case FilterType.SpecificDate: title = SpecificDate.ToShortDateString(); break; case FilterType.DayRange: title = string.Format("{0} - {1}", dayNames[DayRangeStart], dayNames[DayRangeEnd]); break; case FilterType.DateRange: title = string.Format("{0} - {1}", DateRangeStart.ToShortDateString(), DateRangeEnd.ToShortDateString()); break; } return(title); }
public bool ComputeStats(DeviceGPX deviceGPX = null) { DateTime?trkDateStart = null; DateTime?trkDateEnd = null; DateTime?wptDateStart = null; DateTime?wptDateEnd = null; List <Track> tracks; if (deviceGPX != null && deviceGPX.GPX.Length > 0) { tracks = Entities.TrackViewModel.ReadTracksFromXML(deviceGPX); if (tracks == null) { return(false); } } else { tracks = Entities.TrackViewModel.ReadTracksFromFile($"{FileInfo.FullName}", GPS); } TrackCount = tracks.Count; Tracks = tracks; if (TrackCount > 0) { trkDateStart = tracks[0].Waypoints[0].Time.AddHours(Global.Settings.HoursOffsetGMT); trkDateEnd = tracks[TrackCount - 1].Waypoints[tracks[TrackCount - 1].Waypoints.Count - 1].Time.AddHours(Global.Settings.HoursOffsetGMT); int count = 1; foreach (var trk in tracks) { if (trk.Statistics == null) { return(false); } TrackPointsCount += trk.Waypoints.Count; TrackLength += trk.Statistics.Length; TimeInMotion += trk.Statistics.TimeInMotion; foreach (var pt in trk.Waypoints) { pt.Name = count++.ToString(); TrackWaypoinsInLocalTime.Add(new WaypointLocalTime(pt)); } } GPSTimerInterval = tracks[0].Statistics.TrackingInterval; } if (deviceGPX != null || (deviceGPX == null && XML != null)) { List <Waypoint> waypoints = null; if (deviceGPX != null) { waypoints = Entities.WaypointViewModel.ReadWaypointsFromFile(deviceGPX, true); } else if (XML != null & XML.Length > 0) { waypoints = Entities.WaypointViewModel.ReadWaypointFromXML(XML, FileName); } if (waypoints == null) { WaypointCount = 0; } else { WaypointCount = waypoints.Count; } if (WaypointCount > 0) { wptDateStart = waypoints[0].Time.AddHours(Global.Settings.HoursOffsetGMT); wptDateEnd = waypoints[WaypointCount - 1].Time.AddHours(Global.Settings.HoursOffsetGMT); foreach (var pt in waypoints) { NamedWaypointsInLocalTime.Add(new WaypointLocalTime(pt)); } } } else { if (Entities.WaypointViewModel.Waypoints.Count > 0 && Entities.WaypointViewModel.Waypoints.ContainsKey(GPS)) { var waypoints = Entities.WaypointViewModel.Waypoints[GPS] .Where(t => t.FileName == FileInfo.Name) .FirstOrDefault(); if (waypoints == null) { WaypointCount = 0; } else { WaypointCount = waypoints.Waypoints.Count; } if (WaypointCount > 0) { wptDateStart = waypoints.Waypoints[0].Time.AddHours(Global.Settings.HoursOffsetGMT); wptDateEnd = waypoints.Waypoints[WaypointCount - 1].Time.AddHours(Global.Settings.HoursOffsetGMT); foreach (var pt in waypoints.Waypoints) { NamedWaypointsInLocalTime.Add(new WaypointLocalTime(pt)); } } } } if (trkDateStart != null && wptDateStart != null) { DateRangeStart = (DateTime)trkDateStart > (DateTime)wptDateStart ? (DateTime)wptDateStart : (DateTime)trkDateStart; } else if (trkDateStart != null) { DateRangeStart = (DateTime)trkDateStart; } else { if (wptDateStart == null) { return(false); } DateRangeStart = (DateTime)wptDateStart; } if (trkDateEnd != null && wptDateEnd != null) { DateRangeEnd = (DateTime)trkDateEnd > (DateTime)wptDateEnd ? (DateTime)trkDateEnd : (DateTime)wptDateEnd; } else if (trkDateEnd != null) { DateRangeEnd = (DateTime)trkDateEnd; } else { DateRangeEnd = (DateTime)wptDateEnd; } //if (DateRangeEnd.Date == DateRangeStart.Date) //{ // DateRange = $"{DateRangeStart.ToString("MMM-dd-yyyy HH:mm")}"; //} //else //{ // DateRange = $"{DateRangeStart.ToString("MMM-dd-yyyy HH:mm")} - {DateRangeEnd.ToString("MMM-dd-yyyy HH:mm")}"; //} DateRange = $"{DateRangeStart.ToString("MMM-dd-yyyy HH:mm")} - {DateRangeEnd.ToString("MMM-dd-yyyy HH:mm")}"; if (trkDateStart != null && trkDateEnd != null) { TimeSpan = trkDateEnd - trkDateStart; var h = (int)(((TimeSpan)TimeSpan).TotalMinutes / 60); var m = ((TimeSpan)TimeSpan).TotalMinutes % 60; TimeSpanHourMinute = $"{h.ToString("000")}:{m.ToString("N1")}"; } return(true); }