コード例 #1
0
        private string GetCurrentWeight(Exercise exercise)
        {
            var lastWorkout = Workouts.Where(x => x.ExerciseId == exercise.ExerciseId).OrderBy(x => x.Created).LastOrDefault();

            if (lastWorkout == null)
            {
                return(string.Empty);
            }

            return($"{WeightMetricToImperialConverter.GetWeight(lastWorkout.Weight)} {L10n.GetWeightUnit()}");
        }
コード例 #2
0
        private string GetStarted(Exercise exercise)
        {
            var workout = Workouts.Where(x => x.ExerciseId == exercise.ExerciseId).OrderBy(x => x.Created).FirstOrDefault();

            if (workout == null)
            {
                return(string.Empty);
            }

            return
                ($"{workout.Created:d}, {workout.Reps} Reps {WeightMetricToImperialConverter.GetWeight(workout.Weight)} {L10n.GetWeightUnit()}");
        }
コード例 #3
0
        private string GetLastTargetWorkout(Exercise exercise)
        {
            var workout = Workouts.Where(x => x.ExerciseId == exercise.ExerciseId).OrderBy(x => x.Created).LastOrDefault();

            if (workout == null)
            {
                return(string.Empty);
            }

            if ((workout.TargetReps > 0) && (workout.TargetWeight > 0))
            {
                return
                    ($"{workout.TargetReps} Reps {WeightMetricToImperialConverter.GetWeight(workout.TargetWeight)} {L10n.GetWeightUnit()}");
            }
            return(string.Empty);
        }
コード例 #4
0
        private void BuildWeightPerWorkout()
        {
            var data = new Dictionary <Exercise, List <DataPoint> > ();

            // prepare data
            foreach (var workout in Workouts)
            {
                var exercise = Exercises.FirstOrDefault(x => x.ExerciseId == workout.ExerciseId);
                if (exercise == null)
                {
                    continue;
                }

                var defaultValue = default(KeyValuePair <Exercise, List <DataPoint> >);
                var item         = data.FirstOrDefault(x => x.Key == exercise);
                if (item.Equals(defaultValue))
                {
                    data.Add(exercise, new List <DataPoint> ());
                    item = data.FirstOrDefault(x => x.Key == exercise);
                }

                item.Value.Add(
                    new DataPoint(DateTimeAxis.ToDouble(workout.Created), WeightMetricToImperialConverter.GetWeightAsDouble(workout.Weight))
                    );
            }

            // create charts
            var list = new List <PlotView>();

            foreach (var item in data)
            {
                var plotModel = GetWeightPerWorkoutModel(item);
                var plotView  = new PlotView
                {
                    HeightRequest     = 300,
                    Model             = plotModel,
                    VerticalOptions   = LayoutOptions.Fill,
                    HorizontalOptions = LayoutOptions.Fill
                };
                list.Add(plotView);
            }

            _messagingService.Send(this, Messages.ChartBuilt, list);
        }
コード例 #5
0
        private string GetWeightIncreases(Exercise exercise)
        {
            var weights = Workouts.Where(x => x.ExerciseId == exercise.ExerciseId)
                          .GroupBy(x => x.Weight).Select(x => x.First().Weight).ToList();

            weights.Sort();

            if (weights.Count == 0)
            {
                return("0");
            }

            var convertedWeights = new List <string> ();

            foreach (var weight in weights)
            {
                convertedWeights.Add($"{WeightMetricToImperialConverter.GetWeight(weight)} {L10n.GetWeightUnit()}");
            }
            return($"{weights.Count} ({string.Join(", ", convertedWeights)})");
        }
コード例 #6
0
 public ExerciseStatsViewModel()
 {
     _weightConverter = new WeightMetricToImperialConverter();
 }
コード例 #7
0
        private string GetTotalWeight(Exercise exercise)
        {
            var total = Workouts.Where(x => x.ExerciseId == exercise.ExerciseId).Sum(x => x.Weight);

            return($"{WeightMetricToImperialConverter.GetWeight(total)} {L10n.GetWeightUnit()}");
        }
コード例 #8
0
        public async Task <string> ExportToCsv()
        {
            try
            {
                var sb       = new StringBuilder();
                var workouts = await _workoutsRepository.AllAsync();

                workouts = workouts.OrderBy(x => x.Created).ToList();
                var exercises = await _exercisesRepository.AllAsync();

                sb.AppendLine(
                    $"\"{"Date"}\",\"{"Exercise"}\",\"{"Reps"}\",\"{"Weight"}\",\"{"Target Reps"}\",\"{"Target Weight"}\",\"{"Trophies"}\",\"{"Workout Notes"}\"");

                foreach (var workout in workouts)
                {
                    var exercise = exercises.FirstOrDefault(x => x.ExerciseId == workout.ExerciseId);
                    if (exercise == null)
                    {
                        continue;
                    }

                    var line =
                        $"{workout.Created.Date.ToString("d")},\"{exercise.Name}\",{workout.Reps},{WeightMetricToImperialConverter.GetWeightAsDouble(workout.Weight)},{workout.TargetReps},{WeightMetricToImperialConverter.GetWeightAsDouble(workout.TargetWeight)},{workout.Trophies},\"{workout.Notes}\"";

                    sb.AppendLine(line);
                }

                return(_textStorage.Save(sb, "oneset.csv"));
            }
            catch (Exception ex)
            {
                App.ShowErrorPage(this, ex);
            }

            return(string.Empty);
        }
コード例 #9
0
        private void BuildRepsPerWorkout()
        {
            var data =
                from w in Workouts
                group w by w.ExerciseId into workoutsPerExercise
                from nestedGroup in
                (
                    from a in workoutsPerExercise
                    group a by a.Weight
                )
                group nestedGroup by workoutsPerExercise.Key;

            var list = new List <PlotView>();

            foreach (var exerciseGroup in data)
            {
                var exercise  = Exercises.FirstOrDefault(x => x.ExerciseId == exerciseGroup.Key);
                var plotModel = new PlotModel {
                    Title              = exercise.Name,
                    Background         = OxyColors.LightYellow,
                    PlotAreaBackground = OxyColors.LightGray,
                };

                var count = 0;
                foreach (var weightGroup in exerciseGroup)
                {
                    var series = new LineSeries
                    {
                        Title = $"{WeightMetricToImperialConverter.GetWeightAsDouble(weightGroup.Key)} {L10n.GetWeightUnit()}"
                    };
                    plotModel.Series.Add(series);

                    var weightData = new List <DataPoint>();
                    foreach (var workout in weightGroup)
                    {
                        weightData.Add(new DataPoint(DateTimeAxis.ToDouble(workout.Created), workout.Reps));
                        count++;
                    }

                    series.ItemsSource = weightData;
                }

                var dateAxis = GetDateTimeAxis(count);
                plotModel.Axes.Add(dateAxis);

                var valueAxis = new LinearAxis
                {
                    Position       = AxisPosition.Left,
                    MinimumPadding = 0,
                    Title          = "Resps"
                };
                plotModel.Axes.Add(valueAxis);

                var plotView = new PlotView
                {
                    HeightRequest     = 300,
                    Model             = plotModel,
                    VerticalOptions   = LayoutOptions.Fill,
                    HorizontalOptions = LayoutOptions.Fill
                };

                list.Add(plotView);
            }

            _messagingService.Send(this, Messages.ChartBuilt, list);
        }