private static string GetEvents(IReadOnlyCollection <ExecutableTarget> executableTargets) { var builder = new StringBuilder(); // When not hovering anything, highlight the default plan var defaultTarget = executableTargets.SingleOrDefault(x => x.IsDefault); var defaultPlan = defaultTarget != null ? ExecutionPlanner.GetExecutionPlan(executableTargets, new[] { defaultTarget?.Name }) : new ExecutableTarget[0]; defaultPlan.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").addClass('highlight');")); foreach (var executableTarget in executableTargets) { var executionPlan = ExecutionPlanner.GetExecutionPlan(executableTargets, new[] { executableTarget.Name }); builder .AppendLine($@" $(""#{executableTarget.Name}"").hover(") .AppendLine(" function() {"); executableTargets.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").removeClass('highlight');")); executionPlan.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").addClass('highlight');")); builder .AppendLine(" },") .AppendLine(" function() {"); executionPlan.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").removeClass('highlight');")); defaultPlan.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").addClass('highlight');")); builder .AppendLine(" });"); } return(builder.ToString()); }
private static string GetEvents(IReadOnlyCollection <ExecutableTarget> executableTargets) { var builder = new StringBuilder(); // When not hovering anything, highlight the default plan var defaultPlan = executableTargets.Where(x => x.IsDefault) .SelectMany(x => ExecutionPlanner.GetExecutionPlan(executableTargets, new[] { x.Name })) .Distinct().ToList(); defaultPlan.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").addClass('highlight');")); foreach (var executableTarget in executableTargets) { var executionPlan = ExecutionPlanner.GetExecutionPlan(executableTargets, new[] { executableTarget.Name }); builder .AppendLine($@" $(""#{executableTarget.Name}"").hover(") .AppendLine(" function() {"); executableTargets.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").removeClass('highlight');")); executionPlan.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").addClass('highlight');")); builder .AppendLine(" },") .AppendLine(" function() {"); executionPlan.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").removeClass('highlight');")); defaultPlan.ForEach(x => builder.AppendLine($@" $(""#{x.Name}"").addClass('highlight');")); builder .AppendLine(" });"); } return(builder.ToString()); }