Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
        }