/// <summary>
        /// Retrieves current live track points
        /// </summary>
        /// <param name="trackName">track name to use</param>
        /// <param name="appResourceUri">app resource uri to use</param>
        /// <returns>loaded live track</returns>
        private static async Task <Track> GetLiveTrack(string trackName, AppResourceUri appResourceUri)
        {
            var dataService = DependencyService.Get <IDataService>();

            LiveTrackQueryResult result = await dataService.GetLiveTrackDataAsync(
                appResourceUri.ToString(),
                null);

            var track = new Track
            {
                Id            = result.Data.ID,
                Name          = trackName ?? result.Data.Name,
                Description   = HtmlConverter.Sanitize(result.Data.Description),
                IsFlightTrack = true,
                IsLiveTrack   = true,
                Color         = "ff8000",
                TrackPoints   = result.Data.TrackPoints.Select(
                    trackPoint => new TrackPoint(
                        latitude: trackPoint.Latitude,
                        longitude: trackPoint.Longitude,
                        altitude: trackPoint.Altitude,
                        null)
                {
                    Time = result.Data.TrackStart.AddSeconds(trackPoint.Offset),
                }).ToList()
            };

            track.CalculateStatistics();

            return(track);
        }
Exemple #2
0
        /// <summary>
        /// Retrieves latest info about a live track, including new list of track points and
        /// description.
        /// </summary>
        /// <param name="liveTrackId">live track ID</param>
        /// <param name="lastTrackPointTime">
        /// last track point that the client already has received, or null when no track points
        /// are known yet
        /// </param>
        /// <returns>query result for live track</returns>
        public async Task <LiveTrackQueryResult> GetLiveTrackDataAsync(
            string liveTrackId,
            DateTimeOffset?lastTrackPointTime)
        {
            LiveTrackQueryResult result = await this.backendWebApi.GetLiveTrackDataAsync(
                liveTrackId,
                lastTrackPointTime);

            result.Data.ID = System.Net.WebUtility.UrlDecode(result.Data.ID);

            return(result);
        }
Exemple #3
0
        /// <summary>
        /// Called when page requests an update for a live track
        /// </summary>
        /// <param name="data">update live track data</param>
        /// <returns>
        /// JSON result of query, either a LiveTrackQueryResult or an exception text
        /// </returns>
        public async Task <JsonResult> OnGetUpdateLiveTrackAsync(UpdateLiveTrackData data)
        {
            string         liveTrackId        = data.Uri;
            DateTimeOffset?lastTrackPointTime = data.LastTrackPointTime;

            try
            {
                LiveTrackQueryResult queryResult =
                    await this.backendWebApi.GetLiveTrackDataAsync(
                        liveTrackId,
                        lastTrackPointTime);

                return(new JsonResult(queryResult));
            }
            catch (Exception ex)
            {
                return(new JsonResult(ex.Message));
            }
        }