Beispiel #1
0
 public Control[] ControlsForTrainingEntry(TrainingEntry entry)
 {
     return(new Control[] {
         new Label {
             Text = (entry.Date ?? DateTime.MinValue).ToLongDateString(), TextAlign = ContentAlignment.MiddleCenter, Tag = (entry.Date ?? DateTime.MinValue).ToOADate()
         },
         new Label {
             Text = entry.Sport + (entry.TrainingTypeSpecified ? " (" + entry.TrainingType + ")" : ""), TextAlign = ContentAlignment.MiddleCenter, Tag = entry.Sport + (entry.TrainingTypeSpecified ? " (" + entry.TrainingType + ")" : "")
         },
         new Label {
             Text = entry.Duration.ToString(), TextAlign = ContentAlignment.MiddleCenter, Tag = (entry.Duration ?? TimeSpan.Zero).TotalSeconds
         },
         new Label {
             Text = entry.Calories == 0 ? "" : entry.Calories.ToString(), TextAlign = ContentAlignment.MiddleCenter, Tag = entry.Calories ?? 0
         },
         new ZoneDataBox {
             ZoneData = entry.HrZones ?? ZoneData.Empty(), OverlayText = entry.AverageHrSpecified ? '\u00d8' + entry.AverageHr.ToString() : "", Tag = entry.AverageHr ?? 0
         },
         new Label {
             Text = entry.DistanceKm > 0 ? entry.DistanceKm.ToString(CultureInfo.InvariantCulture) : "", TextAlign = ContentAlignment.MiddleCenter, Tag = entry.DistanceM ?? 0
         },
         new Label {
             Text = entry.Feeling == Common.Index.None ? "" : Enum.GetName(typeof(Common.Index), entry.Feeling ?? Common.Index.Count), BackColor = entry.Feeling < Common.Index.Count ? GetColor((double)(entry.Feeling ?? Common.Index.Count) / ((int)Common.Index.Count - 1), Color.Red, Color.Yellow, Color.Green) : _elcTraining.FirstColor, TextAlign = ContentAlignment.MiddleCenter, Tag = entry.Feeling == Common.Index.None ? "" : Enum.GetName(typeof(Common.Index), entry.Feeling ?? Common.Index.Count)
         },
         new Label {
             Text = entry.Note, Tag = entry.Note ?? "", TextAlign = ContentAlignment.MiddleLeft
         }
     });
 }
Beispiel #2
0
 public Control[] ControlsForUnifiedTrainingEntry(TrainingEntry entry)
 {
     return(new Control[] {
         new Label {
             Text = (entry.Date ?? DateTime.MinValue).ToLongDateString(), TextAlign = ContentAlignment.MiddleCenter, Tag = (entry.Date ?? DateTime.MinValue).ToOADate()
         },
         new Label {
             Text = entry.Sport + (entry.TrainingTypeSpecified ? " (" + entry.TrainingType + ")" : "") + " - " + entry.Duration, TextAlign = ContentAlignment.MiddleCenter, Tag = entry.Sport + (entry.TrainingTypeSpecified ? " (" + entry.TrainingType + ")" : "") + " - " + entry.Duration
         },
         new Label {
             Text = entry.Feeling == Common.Index.None ? "" : Enum.GetName(typeof(Common.Index), (entry.Feeling ?? Common.Index.Count)), BackColor = entry.Feeling < Common.Index.Count ? GetColor((double)(entry.Feeling ?? Common.Index.Count) / ((int)Common.Index.Count - 1), Color.Red, Color.Yellow, Color.Green) : _elcUnified.FirstColor, TextAlign = ContentAlignment.MiddleCenter, Tag = entry.Feeling == Common.Index.None ? "" : Enum.GetName(typeof(Common.Index), (entry.Feeling ?? Common.Index.Count))
         },
         new ZoneDataBox {
             ZoneData = entry.HrZones ?? ZoneData.Empty(), OverlayText = entry.AverageHr == 0 ? "" : '\u00d8' + entry.AverageHr.ToString(), Tag = entry.AverageHr > 0 ? entry.AverageHr.ToString() : ""
         },
         new Label {
             Text = entry.DistanceKm > 0 ? entry.DistanceKm.ToString(CultureInfo.InvariantCulture) + " km" : "", TextAlign = ContentAlignment.MiddleCenter, Tag = entry.DistanceKm
         },
         new Label {
             Text = entry.Calories > 0 ? entry.Calories.ToString() + " kcal" : "", BorderStyle = BorderStyle.None, TextAlign = ContentAlignment.MiddleCenter, Tag = entry.Calories
         },
         new Label {
             Text = entry.Note, TextAlign = ContentAlignment.MiddleLeft, Tag = entry.NoteSpecified ? entry.Note : ""
         }
     });
 }
        private void MergeDataset(TrainingDataset ds, Dictionary <string, TrainingEntry> entries)
        {
            var    dsEntries    = ds.GetEntries();
            double lastProgress = -1;

            for (int i = 0; i < dsEntries.Count; i++)
            {
                dsEntries[i].Word = dsEntries[i].Word.ToLower().Trim();
                double progress = Math.Round(i * 100.0 / dsEntries.Count, 2);
                if (progress != lastProgress)
                {
                    lastProgress = progress;
                    Console.Write($"\r   -> %{progress}");
                }

                if (IsValidEntry(dsEntries[i]))
                {
                    TrainingEntry entry = GetEntry(dsEntries[i], entries);
                    entry.Phonetics = PreparePhonetics(dsEntries[i].Phonetics);

                    ConvertAudios(dsEntries[i], entry);
                }
            }

            SaveTrainingIndex(entries);
            Console.WriteLine($"\r   -> Done!      ");
        }
Beispiel #4
0
        private void FillEntryData(TrainingEntry entry)
        {
            ResetForm();

            if (entry.AverageHrSpecified)
            {
                txtAvgHR.Text = entry.AverageHr.ToString();
            }
            if (entry.CaloriesSpecified)
            {
                txtCalories.Text = entry.Calories.ToString();
            }
            if (entry.DateSpecified)
            {
                datDate.Value = entry.Date ?? DateTime.MinValue;
            }
            if (entry.DistanceMSpecified)
            {
                txtDistance.Text = entry.DistanceKm.ToString(CultureInfo.InvariantCulture);
            }
            if (entry.DurationStringSpecified)
            {
                txtDuration.Text = entry.DurationString;
            }
            if (entry.FeelingSpecified)
            {
                comFeeling.Text = Enum.GetName(typeof(Common.Index), entry.Feeling ?? Common.Index.Count);
            }
            if (entry.HrZoneStringSpecified)
            {
                txtZone1.Text = (entry.HrZones ?? ZoneData.Empty()).Zone1.ToString();
                txtZone2.Text = (entry.HrZones ?? ZoneData.Empty()).Zone2.ToString();
                txtZone3.Text = (entry.HrZones ?? ZoneData.Empty()).Zone3.ToString();
                txtZone4.Text = (entry.HrZones ?? ZoneData.Empty()).Zone4.ToString();
                txtZone5.Text = (entry.HrZones ?? ZoneData.Empty()).Zone5.ToString();
            }
            if (entry.NoteSpecified)
            {
                txtNotes.Text = entry.Note;
            }
            if (entry.SportSpecified)
            {
                comSport.Text = Enum.GetName(typeof(Common.Sport), entry.Sport ?? Common.Sport.Count);
            }
            if (entry.TrainingTypeSpecified)
            {
                comTrainingType.Text = Enum.GetName(typeof(Common.TrainingType), entry.TrainingType);
            }
            if (entry.EquipmentNameSpecified)
            {
                comEquipment.Text = entry.Equipment.Name;
            }

            DistanceTimeChanged();
        }
        private void DownloadData(string word)
        {
            WebClient client = new WebClient();

            client.Headers.Add("User-Agent",
                               "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36");

            try
            {
                String        url      = $"https://www.howtopronounce.com/{word}/";
                String        html     = Encoding.UTF8.GetString(client.DownloadData(url));
                List <String> audioURL = GetAudioURL(html);

                if (audioURL.Count > 0)
                {
                    TrainingEntry entry = null;

                    lock (this)
                    {
                        entry = ds.GetEntry(word);
                    }

                    entry.Word      = word;
                    entry.Phonetics = "";
                    lock (this)
                    {
                        totalEntryCount++;
                    }

                    String path = @"d:\" + Convert.ToBase64String(Encoding.ASCII.GetBytes(word)).Replace("=", "")
                                  .Replace("/", "").Replace("\\", "") + ".mp3";
                    foreach (String u in audioURL)
                    {
                        client.DownloadFile(u, path);
                        entry.AddAudio(path, "HowToPronounce@" + url);

                        lock (this)
                        {
                            totalAudioCount++;
                        }
                        File.Delete(path);
                    }
                    Console.WriteLine($"{totalEntryCount} -> {totalAudioCount}");
                }
            }
            catch (Exception ex)
            {
                int h = 0;
            }
        }
        private TrainingEntry GetEntry(TrainingEntry entry, Dictionary <string, TrainingEntry> entries)
        {
            if (entries.ContainsKey(entry.Word))
            {
                return(entries[entry.Word]);
            }

            TrainingEntry result = new TrainingEntry();

            result.Word = entry.Word;

            entries[entry.Word] = result;

            return(result);
        }
        public async Task Get()
        {
            var result = await _hubService.SampleHubData("28851-396");

            var locationName = "Kitchen";


            var trainingEntity = new TrainingEntry
            {
                Device1  = result.DeviceValues.ContainsKey("56c9e0a87b4a795e09da5579420eed32") ? result.DeviceValues["56c9e0a87b4a795e09da5579420eed32"].Rssi : -1001,
                Device2  = result.DeviceValues.ContainsKey("4a3fde3f9fe79bb5ce47718413502b5f") ? result.DeviceValues["4a3fde3f9fe79bb5ce47718413502b5f"].Rssi : -1001,
                Device3  = result.DeviceValues.ContainsKey("abf31fdd6af3691cd640e84b68a12009") ? result.DeviceValues["abf31fdd6af3691cd640e84b68a12009"].Rssi : -1001,
                Location = locationName
            };

            await _storageService.InsertTrainingEntryAsync(trainingEntity);
        }
        private void DownloadData(string url)
        {
            WebClient client = new WebClient();

            try
            {
                String html     = Encoding.UTF8.GetString(client.DownloadData(url));
                String audioURL = GetAudioURL(html);

                if (audioURL != null)
                {
                    String path = @"d:\" + Convert.ToBase64String(Encoding.ASCII.GetBytes(audioURL)).Replace("=", "")
                                  .Replace("/", "").Replace("\\", "") + ".mp3";
                    String word      = GetWord(html);
                    String phonetics = GetPhonetics(html).Trim();

                    if (phonetics != null)
                    {
                        client.DownloadFile(audioURL, path);
                        TrainingEntry entry = null;

                        lock (this)
                        {
                            entry = ds.GetEntry(word);
                        }

                        entry.Word      = word;
                        entry.Phonetics = phonetics;
                        entry.AddAudio(path, "Longman@" + url);

                        lock (this)
                        {
                            totalCount++;
                        }

                        Console.WriteLine(totalCount);
                        File.Delete(path);
                    }
                }
            }
            catch (Exception ex)
            {
                int h = 0;
            }
        }
        private void ConvertAudios(TrainingEntry dsEntry, TrainingEntry entry1)
        {
            String targetFolder = TargetFolder + "Audio Files\\" +
                                  dsEntry.Word.Substring(0, Math.Min(2, dsEntry.Word.Length)) + "\\";

            if (entry1.AudioFileCount == 0)
            {
                Directory.CreateDirectory(targetFolder);
            }

            foreach (TrainingAudioFile audio in dsEntry.AudioFiles)
            {
                String input  = audio.FilePath;
                String output = targetFolder + entry1.Word + "_" + entry1.AudioFileCount + ".wav";
                FFMPEG.ConvertAudioToWave(input, output, SamplingRate);

                entry1.AudioFileCount++;
            }
        }
Beispiel #10
0
        public async Task InsertTrainingEntryAsync(TrainingEntry entity)
        {
            try
            {
                var insertOrMergeOperation = TableOperation.InsertOrMerge(entity);
                var result = await _table.ExecuteAsync(insertOrMergeOperation);

                var insertedCustomer = result.Result as TrainingEntry;

                if (result.RequestCharge.HasValue)
                {
                    Console.WriteLine("Request Charge of InsertOrMerge Operation: " + result.RequestCharge);
                }
            }
            catch (StorageException e)
            {
                Console.WriteLine(e.Message);
                Console.ReadLine();
                throw;
            }
        }
        private bool IsValidEntry(TrainingEntry entry)
        {
            bool result = true;

            result = entry.Word.Length > 0;
            result = result && !entry.Word.Contains(" ");
            result = result && !entry.Word.Contains("\r");
            result = result && !entry.Word.Contains("\n");
            result = result && !entry.Word.Contains("\t");
            result = result && !entry.Word.Contains("(");
            result = result && !entry.Word.Contains(")");
            result = result && !entry.Word.Contains("/");
            result = result && !entry.Word.StartsWith("-");
            result = result && !entry.Word.EndsWith("-");
            result = result && !entry.Word.EndsWith("_");

            result = result && !entry.Phonetics.Contains("\r");
            result = result && !entry.Phonetics.Contains("\n");
            result = result && !entry.Phonetics.Contains("\t");


            return(result);
        }
Beispiel #12
0
        private void ButOkClick(object sender, EventArgs e)
        {
            TimeSpan duration;
            ZoneData zoneData;

            if (!IsDataValid(out duration, out zoneData))
            {
                return;
            }

            TrainingEntry entry;

            if (!chkRace.Checked)
            {
                entry = new TrainingEntry(duration)
                {
                    Date         = datDate.Value,
                    Sport        = (Common.Sport)comSport.SelectedIndex,
                    TrainingType =
                        comTrainingType.Text.Equals("")
                            ? Common.TrainingType.None
                            : (Common.TrainingType)Enum.Parse(typeof(Common.TrainingType), comTrainingType.Text),
                    Calories   = txtCalories.Text == "" ? 0 : int.Parse(txtCalories.Text),
                    AverageHr  = txtAvgHR.Text == "" ? 0 : int.Parse(txtAvgHR.Text),
                    HrZones    = zoneData,
                    DistanceKm = txtDistance.Text == "" ? 0 : double.Parse(txtDistance.Text),
                    Feeling    =
                        comFeeling.Text != ""
                            ? (Common.Index)(int) Common.Index.Count - comFeeling.SelectedIndex
                            : Common.Index.None,
                    Note      = txtNotes.Text,
                    Equipment = Model.Instance.Equipment.FirstOrDefault(ee => ee.Name.Equals(comEquipment.Text))
                };
            }
            else if (comSport.SelectedIndex == (int)Common.Sport.Running)
            {
                if (runningRaceEntryControl1.ExactTime == null)
                {
                    MessageBox.Show("Please enter the exact time of the race!", "Enter exact time", MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);
                    return;
                }
                if (runningRaceEntryControl1.ExactDistanceKm == null)
                {
                    MessageBox.Show("Please enter the exact distance of the race!", "Enter exact distance", MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);
                    return;
                }
                if (runningRaceEntryControl1.Competition == "")
                {
                    MessageBox.Show("Please enter the competition name!", "Enter competition", MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);
                    return;
                }

                entry = new RunningRace(duration, runningRaceEntryControl1.ExactTime.Value, 1000 * (double)runningRaceEntryControl1.ExactDistanceKm.Value, runningRaceEntryControl1.Competition)
                {
                    Date         = datDate.Value,
                    Sport        = (Common.Sport)comSport.SelectedIndex,
                    TrainingType =
                        comTrainingType.Text.Equals("")
                            ? Common.TrainingType.None
                            : (Common.TrainingType)Enum.Parse(typeof(Common.TrainingType), comTrainingType.Text),
                    Calories   = txtCalories.Text == "" ? 0 : int.Parse(txtCalories.Text),
                    AverageHr  = txtAvgHR.Text == "" ? 0 : int.Parse(txtAvgHR.Text),
                    HrZones    = zoneData,
                    DistanceKm = txtDistance.Text == "" ? 0 : double.Parse(txtDistance.Text),
                    Feeling    =
                        comFeeling.Text != ""
                            ? (Common.Index)(int) Common.Index.Count - comFeeling.SelectedIndex
                            : Common.Index.None,
                    Note      = txtNotes.Text,
                    Equipment = Model.Instance.Equipment.FirstOrDefault(ee => ee.Name.Equals(comEquipment.Text)),

                    RaceAverageHr = runningRaceEntryControl1.RaceAverageHr
                };

                if (runningRaceEntryControl1.OverallRank != 0)
                {
                    ((RunningRace)entry).OverallRank = runningRaceEntryControl1.OverallRank;
                }
                if (runningRaceEntryControl1.AgeGroupRank != 0)
                {
                    ((RunningRace)entry).AgeGroupRank = runningRaceEntryControl1.AgeGroupRank;
                }
            }
            else if (comSport.SelectedIndex == (int)Common.Sport.Squash)
            {
                if (squashMatchEntryControl1.Result == "")
                {
                    MessageBox.Show("Please enter the result of the match!", "Enter result", MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);
                    return;
                }
                if (squashMatchEntryControl1.Competition == "")
                {
                    MessageBox.Show("Please enter the competition name!", "Enter competition", MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);
                    return;
                }

                entry = new SquashMatch(duration, squashMatchEntryControl1.Result, squashMatchEntryControl1.Competition)
                {
                    Date         = datDate.Value,
                    Sport        = (Common.Sport)comSport.SelectedIndex,
                    TrainingType =
                        comTrainingType.Text.Equals("")
                            ? Common.TrainingType.None
                            : (Common.TrainingType)Enum.Parse(typeof(Common.TrainingType), comTrainingType.Text),
                    Calories   = txtCalories.Text == "" ? 0 : int.Parse(txtCalories.Text),
                    AverageHr  = txtAvgHR.Text == "" ? 0 : int.Parse(txtAvgHR.Text),
                    HrZones    = zoneData,
                    DistanceKm = txtDistance.Text == "" ? 0 : double.Parse(txtDistance.Text),
                    Feeling    =
                        comFeeling.Text != ""
                            ? (Common.Index)(int) Common.Index.Count - comFeeling.SelectedIndex
                            : Common.Index.None,
                    Note      = txtNotes.Text,
                    Equipment = Model.Instance.Equipment.FirstOrDefault(ee => ee.Name.Equals(comEquipment.Text)),

                    MatchTime      = squashMatchEntryControl1.ExactTime,
                    Opponent       = squashMatchEntryControl1.Opponent,
                    MatchAverageHr = squashMatchEntryControl1.MatchAverageHr,
                };
            }
            else
            {
                throw new NotImplementedException("This sport doesnt know competitions!");
            }

            NewEntry = entry;

            Model.Instance.AddEntry(entry);

            ResetForm();
            Close();
        }
Beispiel #13
0
 public TrainingEntryForm(TrainingEntry entry)
     : this()
 {
     FillEntryData(entry);
 }