public static INumericTimeDataSeries GetGearTrack(IActivity activity, INumericTimeDataSeries cadenceTrack, INumericTimeDataSeries distanceTrack) { // Raw data INumericTimeDataSeries gearTrack = GearUtils.GetRawGearTrack(cadenceTrack, distanceTrack); if (gearTrack.Count > 0) { // Smooth data track float min, max; gearTrack = ZoneFiveSoftware.Common.Data.Algorithm.NumericTimeDataSeries.Smooth(gearTrack, Constants.GearTrackSmoothing, out max, out min); // Estimate/round gear track string id = Options.Instance.GetGearEquipmentId(activity); List <SprocketCombo> sprockets = Options.Instance.GetSprocketCombos(id); gearTrack = GearUtils.GuessGears(gearTrack, sprockets); return(gearTrack); } else { return(new NumericTimeDataSeries()); } }
public void RefreshPage() { // Clear Chart ChartBase chart = detailPaneChart.Chart; detailPaneChart.ChartDataClear(); gearSelection = new NumericTimeDataSeries(); if (activity != null) { // Get Gear Track (raw data) gearSelection = GearUtils.GetRawGearTrack(activity); if (chartType == ChartBasis.Gear_Time) { gearSelection = GearUtils.RemovePausedTimesInTrack(gearSelection, activity); } if (gearSelection.Count != 0) { // Smooth data series float min, max; gearSelection = ZoneFiveSoftware.Common.Data.Algorithm.NumericTimeDataSeries.Smooth(gearSelection, Constants.GearTrackSmoothing, out max, out min); //gearSelection = ZoneFiveSoftware.Common.Data.Algorithm.NumericTimeDataSeries.Smooth(gearSelection, 10, out max, out min); //********************************************* // Initialize variables for activity grade impact, and full category impact ChartDataSeries rawGears = new ChartDataSeries(chart, chart.YAxis); // ChartDataSeries rawGears = PopulateDataSeries(gearSelection, rawGears, ChartType, activity); rawGears.ChartType = ChartDataSeries.Type.Line; rawGears.LineColor = Color.Red; rawGears.ValueAxis = chart.YAxis; if (Options.Instance.ShowRawGearData) { detailPaneChart.ChartDataAdd(rawGears); } // Guess gears string equipmentId = Options.Instance.GetGearEquipmentId(activity); List <SprocketCombo> gearRatios = Options.Instance.GetSprocketCombos(equipmentId); INumericTimeDataSeries gearGuess = GearUtils.GuessGears(gearSelection, gearRatios); ChartDataSeries guessSeries = new ChartDataSeries(chart, chart.YAxis); if (Options.Instance.ShowEstGearData) { detailPaneChart.ChartDataAdd(guessSeries); } // ChartDataSeries guessSeries = PopulateDataSeries(gearGuess, guessSeries, ChartType, activity); guessSeries.ChartType = ChartDataSeries.Type.Line; guessSeries.LineColor = Color.Blue; guessSeries.ValueAxis = chart.YAxis; chart.YAxis.LabelColor = rawGears.LineColor; //ExportDataSeriesToCSV(guessSeries); //ExportDataSeriesToCSV(rawGears); if (Options.Instance.GearChartType == ChartBasis.Gear_Time) { chart.XAxis.Formatter = new Formatter.SecondsToTime(); chart.XAxis.Label = CommonResources.Text.LabelTime; } else { chart.XAxis.Formatter = new Formatter.General(); chart.XAxis.Label = CommonResources.Text.LabelDistance + " (" + activity.Category.DistanceUnits + ")"; } Options.Instance.ShowZonesInChart = false; chart.YAxis.Label = "m/Rev (ratio)"; // TODO: Localize this string } } chart.AutozoomToData(true); chart.Focus(); // Update Tree RefreshTree(); }
/// <summary> /// Gets a data track representing the raw data used to calculate the gear track. /// </summary> /// <param name="activity"></param> /// <returns>Returns the raw gear track, or an empty INumericTimeDataSeries if none can be calculated.</returns> public static INumericTimeDataSeries GetRawGearTrack(IActivity activity) { return(GearUtils.GetRawGearTrack(activity)); }