예제 #1
0
 public void PopulationStationTimeTable(double startTimeDiff)
 {
     trainStartTimeDiff = startTimeDiff;
     this.PopulateViewModel();
     for (int i = 0; i < tempCollection.Count; i++)
     {
         DummyStation dummyStation = tempCollection[i];
         StationInfoCollection.Add(CreateStationInfo(dummyStation.Name, dummyStation.ToArrival, dummyStation.ToDistance, dummyStation.FromArrival, i, dummyStation.FromDistance));
     }
 }
예제 #2
0
        private async void CalcuateProgressedPercentage(DateTime upcomingStationDepaturedTime, Station station, int index)
        {
            station.ProgressedDistance = 0;

            DateTime lastStationDepaturedTime = previousStationDepaturedTime;

            while (station.ProgressedDistance < 100)
            {
                var actualDurationDifference = upcomingStationDepaturedTime.Subtract(lastStationDepaturedTime).TotalMinutes;

                var currentDurationDifference = DateTime.Now.Subtract(lastStationDepaturedTime).TotalMinutes;
                var timeDifference            = DateTime.Now.Subtract(station.ArrivalDateTime).TotalSeconds;
                station.ProgressedDistance = (currentDurationDifference / actualDurationDifference) * 100;
                if (StationInfoCollection.Count > index && StationInfoCollection[index].ProgressedDistance < station.ProgressedDistance)
                {
                    StationInfoCollection[index].ProgressedDistance = station.ProgressedDistance;
                }
                DateTime diffStationTime;
                DateTime.TryParse("0:00:00 AM", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.None, out diffStationTime);
                diffStationTime = diffStationTime.AddSeconds((-timeDifference));
                NextStationTime = ", in ";
                if (diffStationTime.Minute > 0)
                {
                    NextStationTime += diffStationTime.Minute.ToString() + " Minute(s)";
                }
                else
                {
                    NextStationTime += diffStationTime.Second.ToString() + " Second(s)";
                }
                await Task.Delay(1000);
            }

            for (int i = 0; i < tempCollection.Count; i++)
            {
                DummyStation s              = tempCollection[i];
                Station      tempStation    = CreateStationInfo(s.Name, s.ToArrival, s.ToDistance, s.FromArrival, i, s.FromDistance);
                Station      currentStation = StationInfoCollection[i];
                if (currentStation.ProgressedDistance != tempStation.ProgressedDistance)
                {
                    StationInfoCollection[i].ProgressedDistance = tempStation.ProgressedDistance;
                }
                if (currentStation.Status != tempStation.Status)
                {
                    StationInfoCollection[i].Status = tempStation.Status;
                }
            }
        }