Esempio n. 1
0
        private void Import_OnClick(object sender, RoutedEventArgs e)
        {
            var importText = ImportText.Text;
            var lines = importText.Split(new [] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
            foreach (var line in lines)
            {
                var lineParts = line.Split(new [] {','}, 2);
                if (String.IsNullOrWhiteSpace(lineParts[0]) || lineParts.Length < 2)
                {
                    continue;
                }

                int teamNumber;
                if (!Int32.TryParse(lineParts[0], out teamNumber))
                {
                   continue;
                }

                var teamName = lineParts[1];

                if (competition.Teams.Any(t => t.Number == teamNumber))
                {
                    continue;
                }

                var newTeam = new Team { Number = teamNumber, Name = teamName.Replace("\"", "") };
                competition.Teams.Add(newTeam);
            }

            ImportText.Text = String.Empty;
            NavigationHelper.GoBack();
        }
Esempio n. 2
0
        public static MatchSummaryData2014 Calculate(Team team, int matchesToInclude)
        {
            var summaryData = new MatchSummaryData2014();
            var matchData = matchesToInclude > 0 ? team.MatchData2014.OrderByDescending(t => t.MatchNumber).Take(matchesToInclude).ToArray() : team.MatchData2014.ToArray();
            var matchCount = matchData.Length;

            if (matchCount == 0)
            {
                return summaryData;
            }

            summaryData.MatchCount = matchCount;

            // set up
            summaryData.StartingPositionSidePct = matchData.Count(m => m.StartingPosition == StartingPosition.Side) / (double)matchCount;
            summaryData.StartingPositionMiddlePct = matchData.Count(m => m.StartingPosition == StartingPosition.Middle) / (double)matchCount;
            summaryData.StartingPositionGoaliePct = matchData.Count(m => m.StartingPosition == StartingPosition.Goalie) / (double)matchCount;

            // autonomous
            summaryData.MobilityPct = matchData.Count(m => m.Mobility) / (double)matchCount;
            summaryData.AutonomousHighPct = matchData.Sum(m => m.AutonomousHigh + m.AutonomousHighHot) / (double)matchCount;
            summaryData.AutonomousHighHotPct = summaryData.AutonomousHigh > 0 ? matchData.Sum(m => m.AutonomousHighHot) / (double)summaryData.AutonomousHigh : 0;

            summaryData.AutonomousLowPct = matchData.Sum(m => m.AutonomousLow + m.AutonomousLowHot) / (double)matchCount;
            summaryData.AutonomousLowHotPct = summaryData.AutonomousLow > 0 ? matchData.Sum(m => m.AutonomousLowHot) / (double)summaryData.AutonomousLow : 0;

            // offensive
            summaryData.TeleOperatedHighPerMatch = matchData.Sum(m => m.TeleOperatedHighGoal) / (double)matchCount;
            var highGoalAttempts = matchData.Sum(m => m.TeleOperatedHighGoalMiss + m.TeleOperatedHighGoal);
            if (highGoalAttempts > 0)
            {
                summaryData.TeleOperatedHighPercent = matchData.Sum(m => m.TeleOperatedHighGoal) / (double)highGoalAttempts;
            }

            summaryData.TeleOperatedLowPerMatch = matchData.Sum(m => m.TeleOperatedLowGoal) / (double)matchCount;

            summaryData.TeleOperatedTrussPerMatch = matchData.Sum(m => m.TeleOperatedTruss) / (double)matchCount;
            summaryData.TeleOperatedCatchPerMatch = matchData.Sum(m => m.TeleOperatedCatch) / (double)matchCount;

            // posessions
            summaryData.PossessionCount = matchData.Sum(m => m.TeleOperatedPossessionFront + m.TeleOperatedPossessionMiddle + m.TeleOperatedPossessionBack);
            if (summaryData.PossessionCount > 0)
            {
                summaryData.PosessionFrontPct = matchData.Sum(m => m.TeleOperatedPossessionFront) / (double)summaryData.PossessionCount;
                summaryData.PosessionMiddlePct = matchData.Sum(m => m.TeleOperatedPossessionMiddle) / (double)summaryData.PossessionCount;
                summaryData.PosessionBackPct = matchData.Sum(m => m.TeleOperatedPossessionBack) / (double)summaryData.PossessionCount;
            }

            summaryData.TeleOperatedBallsLost = matchData.Sum(m => m.TeleOperatedBallsLost.GetValueOrDefault()) / (double)matchCount;

            // defense
            summaryData.ShotsDefendedPerMatch = matchData.Sum(m => m.ShotsDefended) / (double)matchCount;
            summaryData.RobotContactsPerMatch = matchData.Sum(m => m.RobotContact) / (double)matchCount;
            summaryData.PinnedOpponentsPerMatch = matchData.Sum(m => m.PinnedOpponents) / (double)matchCount;

            // other
            summaryData.FoulsPerMatch = matchData.Sum(m => m.Fouls) / (double)matchCount;

            // comments
            summaryData.OverallComments = string.Join(Environment.NewLine + "-------" + Environment.NewLine, matchData.OrderByDescending(m => m.MatchNumber).Take(matchesToInclude).Select(m => m.OverallComments));
            summaryData.ManuverabilityComments = string.Join(Environment.NewLine + "-------" + Environment.NewLine, matchData.OrderByDescending(m => m.MatchNumber).Take(matchesToInclude).Select(m => m.ManuverabilityComments));
            summaryData.ShooterComments = string.Join(Environment.NewLine + "-------" + Environment.NewLine, matchData.OrderByDescending(m => m.MatchNumber).Take(matchesToInclude).Select(m => m.ShooterComments));
            summaryData.CollectorComments = string.Join(Environment.NewLine + "-------" + Environment.NewLine, matchData.OrderByDescending(m => m.MatchNumber).Take(matchesToInclude).Select(m => m.CollectorComments));

            return summaryData;
        }
Esempio n. 3
0
 private void AddTeamButton_OnClick(object sender, RoutedEventArgs e)
 {
     var team = new Team();
     this.defaultViewModel.Competition.Teams.Add(team);
     this.Frame.Navigate(typeof(TeamDetails), team);
 }
Esempio n. 4
0
 private static Team GetTeam(Competition competition, int number)
 {
     var team = competition.Teams.SingleOrDefault(t => t.Number == number);
     if (team == null)
     {
         team = new Team { Number = number };
         competition.Teams.Add(team);
     }
     return team;
 }