/// <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); }
/// <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); }
/// <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)); } }