public void SetPreviewSets(StrengthTrainingItemDTO origItem, StrengthTrainingItemDTO item) { for (int i = 0; i < origItem.Series.Count; i++) { item.Series[i].Tag = origItem.Series[i]; } }
public void FillTrainingFromPlan(TrainingPlanDay planDay, StrengthTrainingEntryDTO strengthEntry) { strengthEntry.Entries.Clear(); foreach (TrainingPlanEntry trainingPlanEntry in planDay.Entries) { var strengthItem = new StrengthTrainingItemDTO(); strengthItem.ExerciseId = trainingPlanEntry.ExerciseId; strengthItem.TrainingPlanItemId = trainingPlanEntry.GlobalId; strengthEntry.AddEntry(strengthItem); foreach (var set in trainingPlanEntry.Sets) { var serie = new SerieDTO(); if (FillRepetitionNumber && set.RepetitionNumberMax.HasValue && set.RepetitionNumberMin.HasValue && set.RepetitionNumberMax == set.RepetitionNumberMin) { serie.RepetitionNumber = set.RepetitionNumberMax.Value; } serie.DropSet = set.DropSet; serie.SetType = (SetType)set.RepetitionsType; serie.TrainingPlanItemId = set.GlobalId; strengthItem.AddSerie(serie); } } strengthEntry.TrainingPlanItemId = planDay.GlobalId; strengthEntry.TrainingPlanId = planDay.TrainingPlan.GlobalId; fillSuperSets(planDay, strengthEntry); }
public void SetRestTime_AllSetsWithTimes() { StrengthTrainingItemDTO item = new StrengthTrainingItemDTO(); var set1 = new SerieDTO("2x4"); set1.StartTime = DateTime.Today.AddDays(-2).AddMinutes(10); set1.EndTime = DateTime.Today.AddDays(-2).AddMinutes(20); item.AddSerie(set1); var set2 = new SerieDTO("12x3"); set2.StartTime = DateTime.Today.AddDays(-2).AddMinutes(40); set2.EndTime = DateTime.Today.AddDays(-2).AddMinutes(60); item.AddSerie(set2); var set3 = new SerieDTO("12x43"); set3.StartTime = DateTime.Today.AddDays(-2).AddMinutes(30); set3.EndTime = DateTime.Today.AddDays(-2).AddMinutes(70); item.AddSerie(set3); item.SetRestTime(TimeSpan.FromSeconds(30)); Assert.AreEqual(30, (int)(set2.StartTime.Value - set1.EndTime.Value).TotalSeconds); Assert.AreEqual(30, (int)(set3.StartTime.Value - set2.EndTime.Value).TotalSeconds); Assert.AreEqual(10, (int)(set1.EndTime.Value - set1.StartTime.Value).TotalMinutes); Assert.AreEqual(20, (int)(set2.EndTime.Value - set2.StartTime.Value).TotalMinutes); Assert.AreEqual(40, (int)(set3.EndTime.Value - set3.StartTime.Value).TotalMinutes); }
public StrengthTrainingItemViewModel(StrengthTrainingItemDTO item) { this.item = item; for (int index = 0; index < item.Series.Count; index++) { var set = item.Series[index]; sets.Add(new SetViewModel(this, set)); } //ObjectsReposidory.WorkoutPlans }
public override void OnValueChanged(SourceGrid.CellContext sender, EventArgs e) { base.OnValueChanged(sender, e); Grid grid1 = (Grid)sender.Grid; StrengthTrainingItemDTO entry = null; var row = grid1.Rows[sender.Position.Row]; if (row == null) { return; } if (row.Tag == null) { entry = new StrengthTrainingItemDTO(); row.Tag = entry; strengthEntry.AddEntry(entry); parent.AddEmptyRow(parent.GetSeriesNumber()); } else { entry = (StrengthTrainingItemDTO)row.Tag; } Guid newId = (Guid)sender.Value; if (newId == Guid.Empty) { sender.Value = entry.ExerciseId; return; } entry.ExerciseId = newId; parent.UpdateCellsReadOnlyMode(row); if (!(grid1[row.Index, usrStrengthTrainingSourceGridBase.DeleteRowColumnIndex] is SourceGrid.Cells.Button)) { grid1[row.Index, usrStrengthTrainingSourceGridBase.ExerciseColumnIndex].View.ForeColor = Color.Black; if (parent.ReadOnly) { return; } var bnCol1 = new SourceGrid.Cells.Button(null); bnCol1.Image = StrengthTrainingResources.Delete; bnCol1.ToolTipText = StrengthTrainingEntryStrings.DeleteThisEntryBtn; var ctrButton1 = new SourceGrid.Cells.Controllers.Button(); ctrButton1.Executed += new EventHandler(deleteRowBtn_Execute); bnCol1.View = new SourceGrid.Cells.Views.Button(); bnCol1.AddController(ctrButton1); grid1[row.Index, usrStrengthTrainingSourceGridBase.DeleteRowColumnIndex] = bnCol1; } }
public StrengthTrainingItemViewModel AddExercise(ExerciseLightDTO exercise) { StrengthTrainingItemDTO item = new StrengthTrainingItemDTO(); item.Exercise = exercise; Entry.Entries.Add(item); item.Position = Entry.Entries.Count; item.StrengthTrainingEntry = Entry; StrengthTrainingItemViewModel itemViewModel = new StrengthTrainingItemViewModel(item); _exercises.Add(itemViewModel); return(itemViewModel); }
//public void Delete(SetViewModel set) //{ // //entryModel.Delete(this); // var index = set.Set.StrengthTrainingItem.Series.IndexOf(set.Set); // set.Set.StrengthTrainingItem.Series.Remove(set.Set); // set.Set.StrengthTrainingItem = null; // sets.Remove(set); // var exercisesInSuperSet = item.GetJoinedItems(); // foreach (var strengthTrainingItemDto in exercisesInSuperSet) // { // if (strengthTrainingItemDto.Series.Count > index) // { // var joinedSet = strengthTrainingItemDto.Series[index]; // strengthTrainingItemDto.Series.Remove(joinedSet); // joinedSet.StrengthTrainingItem = null; // } // } //} public void JoinExercise(Guid globalId) { if (string.IsNullOrEmpty(this.item.SuperSetGroup)) { this.item.SuperSetGroup = Guid.NewGuid().ToString(); } var exercise = ApplicationState.Current.Cache.Exercises.GetItem(globalId); StrengthTrainingItemDTO item = new StrengthTrainingItemDTO(); item.SuperSetGroup = this.item.SuperSetGroup; item.Exercise = exercise; this.item.StrengthTrainingEntry.Entries.Add(item); item.Position = this.item.StrengthTrainingEntry.Entries.Count; item.StrengthTrainingEntry = this.item.StrengthTrainingEntry; }
public void PrepareCopiedStrengthTraining(StrengthTrainingItemDTO dto, CopyStrengthTrainingMode mode) { if (Settings.CopyStrengthTrainingMode == CopyStrengthTrainingMode.OnlyExercises) { dto.Series.Clear(); } else if (Settings.CopyStrengthTrainingMode == CopyStrengthTrainingMode.WithoutSetsData) { foreach (var serieDto in dto.Series) { serieDto.RepetitionNumber = null; serieDto.Weight = null; } } }
StrengthTrainingItemDTO createStrengthTrainingItem(ExerciseType exerciseType, params string[] sets) { ExerciseDTO exercise = new ExerciseDTO(); exercise.ExerciseType = exerciseType; StrengthTrainingItemDTO item = new StrengthTrainingItemDTO(); item.Exercise = exercise; foreach (var serie in sets) { SerieDTO set = new SerieDTO(serie); item.AddSerie(set); } return(item); }
SerieDTO addNewSet(StrengthTrainingItemDTO item) { SerieDTO newSet = new SerieDTO(); if (Settings.CopyValuesForNewSet && item.Series.Count > 0) {//if the settings for copy values is set then when we create next set for the same exercise we should copy reps and weight //from the previous set var previousSet = item.Series[item.Series.Count - 1]; newSet.RepetitionNumber = previousSet.RepetitionNumber; newSet.Weight = previousSet.Weight; //newSet.DropSet = previousSet.DropSet; newSet.SetType = previousSet.SetType; newSet.IsSuperSlow = previousSet.IsSuperSlow; } item.AddSerie(newSet); return(newSet); }
public static void SetRestTime(this StrengthTrainingItemDTO item, TimeSpan restTime) { DateTime previousEnd = DateTime.Today; for (int i = 0; i < item.Series.Count; i++) { TimeSpan setTime = TimeSpan.Zero; var set = item.Series[i]; if (set.StartTime.HasValue && set.EndTime.HasValue) { setTime = set.EndTime.Value - set.StartTime.Value; } set.StartTime = previousEnd + restTime; set.EndTime = set.StartTime + setTime; previousEnd = set.EndTime.Value; } }
public IList <SerieDTO> GetIncorrectSets(StrengthTrainingItemDTO item) { List <SerieDTO> incorrectSets = new List <SerieDTO>(); if (!limits.ContainsKey(item.Exercise.ExerciseType)) { return(incorrectSets); } var allWithWeight = item.Series.Where(x => x.Weight != null); var limit = limits[item.Exercise.ExerciseType]; var wrongBecauseOfMaxLimit = allWithWeight.Where(x => x.Weight.Value >= (decimal)limit.Value).ToArray(); incorrectSets.AddRange(wrongBecauseOfMaxLimit); //var afterLimit = item.Series.Where(x => x.Weight.HasValue && x.Weight.Value < (decimal)limit.Item2).ToArray(); var afterLimit = allWithWeight.Where(x => !incorrectSets.Contains(x)).ToArray(); if (afterLimit.Length < 3) { return(incorrectSets); } var withoutMax = afterLimit.Select(x => (double)x.Weight.Value).OrderBy(x => x).Take(afterLimit.Length - 1).ToList(); var max = withoutMax.Last(); withoutMax.Add(max + limit.Key); //var avg = srednia(item.Series.Select(x => (double)x.Weight.Value).ToArray()); var srWithoutMax = srednia(withoutMax.ToArray()); var odchSdWithoutMax = odchylenie(srWithoutMax, withoutMax.ToArray()); foreach (var set in afterLimit) { //var arr = item.Series.Where(x => x != set).Select(x => (double)x.Weight.Value).ToArray(); //var sr = srednia(arr); //var odchStd = odchylenie(sr, arr); if (3 * odchSdWithoutMax < Math.Abs((double)set.Weight.Value - srWithoutMax)) // if (Math.Abs(avg-sr)>70) { incorrectSets.Add(set); } } return(incorrectSets); }
public void SetRestTime_SetsWithoutTimes() { StrengthTrainingItemDTO item = new StrengthTrainingItemDTO(); var set1 = new SerieDTO("2x4"); item.AddSerie(set1); var set2 = new SerieDTO("12x3"); item.AddSerie(set2); var set3 = new SerieDTO("12x43"); item.AddSerie(set3); item.SetRestTime(TimeSpan.FromSeconds(30)); Assert.AreEqual(30, (int)(set2.StartTime.Value - set1.EndTime.Value).TotalSeconds); Assert.AreEqual(30, (int)(set3.StartTime.Value - set2.EndTime.Value).TotalSeconds); }
public void EnsureNewRowAdded() { if (IsReadOnly) {//in readonly mode we dont need an empty row return; } foreach (var model in Items) { if (model.IsNew) { return; } } var i = new StrengthTrainingItemDTO(); //entry.AddEntry(i); Items.Add(new StrengthTrainingItemViewModel(i)); UpdateReadOnly(); }
public void FillTrainingFromPlan(TrainingPlanDay planDay, StrengthTrainingEntryDTO strengthEntry) { strengthEntry.Entries.Clear(); foreach (TrainingPlanEntry trainingPlanEntry in planDay.Entries) { var strengthItem = new StrengthTrainingItemDTO(); strengthItem.Exercise = trainingPlanEntry.Exercise; strengthItem.DoneWay = trainingPlanEntry.DoneWay; strengthItem.SuperSetGroup = trainingPlanEntry.GroupName; strengthItem.TrainingPlanItemId = trainingPlanEntry.GlobalId; strengthEntry.AddEntry(strengthItem); foreach (var set in trainingPlanEntry.Sets) { var serie = new SerieDTO(); if (strengthItem.Exercise.ExerciseType == ExerciseType.Cardio) { if (FillRepetitionNumber && set.RepetitionNumberMin.HasValue) { serie.Weight = set.RepetitionNumberMin.Value; } } else { if (FillRepetitionNumber && set.RepetitionNumberMax.HasValue && set.RepetitionNumberMin.HasValue && set.RepetitionNumberMax == set.RepetitionNumberMin) { serie.RepetitionNumber = set.RepetitionNumberMax.Value; } } serie.IsSuperSlow = set.IsSuperSlow; serie.IsRestPause = set.IsRestPause; serie.DropSet = set.DropSet; serie.SetType = (SetType)set.RepetitionsType; serie.TrainingPlanItemId = set.GlobalId; strengthItem.AddSerie(serie); } } strengthEntry.TrainingPlanItemId = planDay.GlobalId; strengthEntry.TrainingPlanId = planDay.TrainingPlan.GlobalId; }
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { StateHelper stateHelper = new StateHelper(this.State); var item = stateHelper.GetValue <Guid>("SelectedItemId", Guid.Empty); if (item != Guid.Empty && (SelectedItem == null || SelectedItem.InstanceId == item)) { //SelectedItem = ApplicationState.Current.TrainingDay.TrainingDay.StrengthWorkout.GetStrengthTrainingItem(item); SelectedItem = Entry.GetStrengthTrainingItem(item); } fill(); base.OnNavigatedTo(e); if (SelectedExercise != null) {//join exercise in superset SelectedItemView.JoinExercise(SelectedExercise.GlobalId); SelectedExercise = null; } ctrlTimer.IsStarted = EditMode && ApplicationState.Current.IsTimerEnabled; }
public StrengthTrainingItemViewModel(StrengthTrainingItemDTO item) { this.item = item; sets = new ObservableCollection <SetViewModel>(); sets.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(sets_CollectionChanged); if (item.Series == null) { item.Series = new List <SerieDTO>(); } foreach (var set in item.Series) { if (IsCardio) { Sets.Add(new CardioSessionViewModel(set)); } else { Sets.Add(new SetViewModel(set)); } } NotifyPropertyChanged("IsRecord"); }
public static bool IsCardio(this StrengthTrainingItemDTO item) { var exercise = item.Exercise; return(exercise != null?exercise.ExerciseType == ExerciseType.Cardio:false); }