package scrum.client.dashboard; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import scrum.client.admin.User; import scrum.client.common.AScrumWidget; import scrum.client.issues.Issue; import scrum.client.project.Project; import scrum.client.project.Requirement; import scrum.client.sprint.Task; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Widget; public class TeamTasksWidget extends AScrumWidget { private HTML html; @Override protected Widget onInitialization() { html = new HTML(); return html; } @Override protected void onUpdate() { Project project = getCurrentProject(); StringBuilder sb = new StringBuilder(); sb.append("<div class='TeamTasksWidget'>"); List<User> lazyUsers = new ArrayList<User>(); for (User user : project.getTeamMembers()) { sb.append("<div class='TeamTasksWidget-user'>"); List<Task> tasks = project.getClaimedTasks(user); List<Issue> issues = project.getClaimedBugs(user); if (tasks.isEmpty() && issues.isEmpty()) { lazyUsers.add(user); continue; } sb.append("<span style='color: ").append(project.getUserConfig(user).getColor()).append(";'>"); sb.append(user.getName()); sb.append("</span> is working on"); sb.append("<ul>"); for (Issue issue : issues) { sb.append("<li>").append(issue.toHtml()).append("</li>"); } List<Requirement> requirements = new ArrayList<Requirement>(getRequirements(tasks)); Collections.sort(requirements, project.getRequirementsOrderComparator()); for (Requirement req : requirements) { sb.append("<li>"); sb.append(req.toHtml()); sb.append("<ul>"); List<Task> usersTasks = req.getClaimedTasks(user); Collections.sort(usersTasks, Task.NUMBER_COMPARATOR); for (Task task : usersTasks) { sb.append("<li>").append(task.toHtml()).append("</li>"); } sb.append("</ul></li>"); } sb.append("</ul></div>"); } for (User user : lazyUsers) { sb.append("<div class='TeamTasksWidget-user'>"); sb.append("<span style='color: ").append(project.getUserConfig(user).getColor()).append(";'>"); sb.append(user.getName()); sb.append("</span> is working on <span style='color: red;'>nothing</span></div>"); } sb.append("</div>"); html.setHTML(sb.toString()); } private Set<Requirement> getRequirements(List<Task> tasks) { Set<Requirement> reqs = new HashSet<Requirement>(); for (Task task : tasks) { reqs.add(task.getRequirement()); } return reqs; } }