protected override void UpdateTeamsPredicates() { bool oldIgnoreEvents = ViewModel.Filters.IgnoreEvents; ViewModel.Filters.IgnoreEvents = true; ViewModel.TeamsPredicate.Clear(); var teamsPredicates = new List <IPredicate <TimelineEventVM> > (); LMTimelineVM lmTimeline = (LMTimelineVM)ViewModel; LMTeamVM homeTeamVM = (LMTeamVM)lmTimeline.HomeTeamTimelineVM.Team; LMTeamVM awayTeamVM = (LMTeamVM)lmTimeline.AwayTeamTimelineVM.Team; teamsPredicates.Add(new Predicate { Name = Catalog.GetString("No team / player tagged"), Expression = ev => (!(ev.Model as LMTimelineEvent).Teams.Any() && !(ev.Model as LMTimelineEvent).Players.Any()) }); foreach (var team in new LMTeamVM [] { homeTeamVM, awayTeamVM }) { var playersPredicates = new List <IPredicate <TimelineEventVM> > (); var teamPredicate = new OrPredicate <TimelineEventVM> { Name = team.Name, }; playersPredicates.Add(new Predicate { Name = Catalog.GetString("Team tagged"), Expression = ev => (ev.Model as LMTimelineEvent).Teams.Contains(team.Model) }); foreach (var player in team) { playersPredicates.Add(new Predicate { Name = player.Model.Name, Expression = ev => (ev.Model as LMTimelineEvent).Players.Contains(player.Model) }); } teamPredicate.AddRange(playersPredicates); teamsPredicates.Add(teamPredicate); } ViewModel.TeamsPredicate.AddRange(teamsPredicates); ViewModel.Filters.IgnoreEvents = oldIgnoreEvents; if (!ViewModel.Filters.IgnoreEvents) { ViewModel.Filters.EmitPredicateChanged(); } }
public async Task SetUp() { timelineVM = new LMTimelineVM(homeTeam, awayTeam); timelineVM.CreateTeamsTimelines(new List <TeamVM> { homeTeam, awayTeam }); var dealer = new DummyProjectDealer(); var projectvm = new LMProjectVM { Model = Utils.CreateProject() }; timelineVM.CreateEventTypeTimelines(projectvm.EventTypes); dealer.Project = projectvm; dealer.Timeline = timelineVM; eventsFilterController.SetViewModel(dealer); CreateEvents(); await eventsFilterController.Start(); }