Exemple #1
0
        private async void button_parseRacenetApi_Click(object sender, RoutedEventArgs e)
        {
            // check and clean inputs
            var eventId = textBox_eventId.Text;

            if (String.IsNullOrWhiteSpace(eventId))
            {
                label_statusMessage.Content    = "No event ID";
                label_statusMessage.Foreground = Brushes.Red;
                return;
            }

            int eventIdInt;

            if (!Int32.TryParse(eventId, out eventIdInt))
            {
                label_statusMessage.Content    = "Event ID must be an integer";
                label_statusMessage.Foreground = Brushes.Red;
                return;
            }

            eventId = eventId.Trim();

            // handle URL if it exists
            var leagueUrl = textBox_leagueUrl.Text;

            if (!string.IsNullOrWhiteSpace(leagueUrl))
            {
                Properties.Settings.Default.leagueUrl = leagueUrl;
                Properties.Settings.Default.Save();
            }

            // clear all data
            rallyData = new Rally();
            label_statusMessage.Content    = "Data Cleared";
            label_statusMessage.Foreground = Brushes.Green;
            textBox_resultsInput.Clear();

            // progess reporting from task
            var progress = new Progress <int>(stagesProcessed =>
            {
                label_statusMessage.Content    = "Fetching data from Racenet... " + stagesProcessed + " stages retrieved ";
                label_statusMessage.Foreground = Brushes.Green;
            });

            // run task to get data
            var getDataTask = Task <Rally> .Factory.StartNew(() => racenetApiParser.GetRallyData(leagueUrl, eventId, progress));

            label_statusMessage.Content    = "Fetching data from Racenet (be patient, Racenet is slow)...";
            label_statusMessage.Foreground = Brushes.Green;

            await getDataTask;

            rallyData = getDataTask.Result;

            // crunch numbers
            if (rallyData == null)
            {
                label_statusMessage.Content    = "Failed to get data from Racenet";
                label_statusMessage.Foreground = Brushes.Red;
            }
            else
            {
                rallyData.CalculateTimes();
                label_statusMessage.Content    = rallyData.StageCount + " stages retrieved from Racenet, numbers crunched sucessfully";
                label_statusMessage.Foreground = Brushes.Green;
            }
        }
Exemple #2
0
 private void button_crunchNumbers_Click(object sender, RoutedEventArgs e)
 {
     rallyData.CalculateTimes();
     label_statusMessage.Content    = "Numbers Crunched";
     label_statusMessage.Foreground = Brushes.Green;
 }