in synergy/client/app/js/controllers.js [1639:1751]
function buildAssignments() {
var result = {
"failed": 0,
"passed": 0,
"skipped": 0
};
var assignees = [];
var specs = [];
tribes = [];
var duplicateAssignments = [];
var prettyAssignments = [];
var allResolved;
for (var username in $scope.run.assignments) {
if ($scope.run.assignments.hasOwnProperty(username)) {
var user = $scope.run.assignments[username];
var line = {
assignments: []
};
for (var assign = 0, maxAssign = user.assignments.length; assign < maxAssign; assign++) {
var assignment = user.assignments[assign];
line.userDisplayName = assignment.userDisplayName;
line.username = assignment.username;
line.specificationId = assignment.specificationId;
line.label = assignment.label;
line.labelId = assignment.labelId;
line.specification = assignment.specification;
line.tribes = assignment.tribes;
assignees.indexOf(line.userDisplayName) < 0 && assignees.push(line.userDisplayName);
specs.indexOf(line.specification) < 0 && specs.push(line.specification);
getTribes(assignment);
assignment.total = parseInt(assignment.total, 10);
assignment.completed = parseInt(assignment.completed, 10);
assignment.failedColor = "#62c462";
allResolved = allIssuesResolved(assignment.issues);
if (parseInt(assignment.failed, 10) > 0 && !allResolved) {
assignment.failedColor = "#ee5f5b";
}
if (assignment.total > 0) {
assignment.progress = Math.round(100 * 10 * assignment.completed / assignment.total) / 10;
assignment.progressLabel = "Completed " + assignment.progress + "%";
} else {
assignment.progressLabel = "No cases to test";
assignment.progress = 100;
}
assignment.info = (allResolved && assignment.progress === 100 && parseInt(assignment.failed, 10) === 0) ? "finished" : assignment.info;
var _t = (assignment.started.length > 0 ? "Started: " + assignment.started : "");
_t += (assignment.lastUpdated.length > 0 ? "; Last updated: " + assignment.lastUpdated : "");
assignment.tooltip = assignment.total > 0 ? _t : "At the time of assignment creation, there were no matching cases. You can try to start this assignment to see if situation has changed";
if (assignment.issues.length === 1) {
assignment.issuesLink = (assignment.issues.length > 0) ? "<a style='color: " + assignment.failedColor + "; font-weight: bold' href='" + $scope.SYNERGY.issues.viewLink($scope.project.name, assignment.issues) + "'>" + assignment.issues.length + " issue</a> " : " ";
} else if (assignment.issues.length > 1) {
assignment.issuesLink = (assignment.issues.length > 0) ? "<a style='color: " + assignment.failedColor + "; font-weight: bold' href='" + $scope.SYNERGY.issues.viewLink($scope.project.name, assignment.issues) + "'>" + assignment.issues.length + " issues</a> " : " ";
}
if (typeof line.assignments[$scope.platforms.indexOf(assignment.platform)] !== "undefined") {
line.assignments[$scope.platforms.indexOf(assignment.platform)].duplicates = true;
assignment.duplicates = true;
duplicateAssignments.push(assignment);
} else {
assignment.duplicates = false;
line.assignments[$scope.platforms.indexOf(assignment.platform)] = assignment;
}
if (!_coverage[$scope.platforms.indexOf(assignment.platform)]) { // FIXME
_coverage[$scope.platforms.indexOf(assignment.platform)] = {total: 0, completed: 0, name: assignment.platform};
}
_coverage[$scope.platforms.indexOf(assignment.platform)].total += parseInt(assignment.total, 10);
_coverage[$scope.platforms.indexOf(assignment.platform)].completed += parseInt(assignment.completed, 10);
result.failed += Math.floor(assignment.failed);
result.passed += Math.floor(assignment.passed);
result.skipped += Math.floor(assignment.skipped);
}
for (var p = 0, maxp = $scope.platforms.length; p < maxp; p++) {
if (!line.assignments[p]) {
line.assignments[p] = {"_hidden": new Date()};
}
}
prettyAssignments.push(line);
}
}
// duplicates
for (var dupl = 0, maxa = duplicateAssignments.length; dupl < maxa; dupl++) {
prettyAssignments.push(getLineForDupliciteAssignment(duplicateAssignments[dupl]));
}
assignees.push("All");
assignees.sort(function (a, b) {
return a.toLowerCase() < b.toLowerCase() ? -1 : 1;
});
specs.push("All");
specs.sort(function (a, b) {
return a.toLowerCase() < b.toLowerCase() ? -1 : 1;
});
tribes.push("All");
tribes.sort(function (a, b) {
return a.toLowerCase() < b.toLowerCase() ? -1 : 1;
});
$scope.assignees = assignees;
$scope.specifications = specs;
$scope.tribes = tribes;
countResults(result);
$scope.prettyAssignments = prettyAssignments;
SynergyUtils.ProgressChart([issueCollector.issuesStats.opened / (issueCollector.issuesStats.total / 100), 100 - (issueCollector.issuesStats.opened / (issueCollector.issuesStats.total / 100))], ["#ccc", "#62c462"], ["Unresolved", "Resolved"], "issuesResolution");
SynergyUtils.ProgressChart([issueCollector.issuesStats.unknown / (issueCollector.issuesStats.total / 100), issueCollector.issuesStats.P1 / (issueCollector.issuesStats.total / 100), issueCollector.issuesStats.P2 / (issueCollector.issuesStats.total / 100), issueCollector.issuesStats.P3 / (issueCollector.issuesStats.total / 100), issueCollector.issuesStats.P4 / (issueCollector.issuesStats.total / 100)], ["#E8EBAB", "#ee5f5b", "#f89406", "#fbeed5", "#ccc"], ["Unknown (" + issueCollector.issuesStats.unknown + ")", "P1 (" + issueCollector.issuesStats.P1 + ")", "P2 (" + issueCollector.issuesStats.P2 + ")", "P3 (" + issueCollector.issuesStats.P3 + ")", "P4 (" + issueCollector.issuesStats.P4 + ")"], "issuesPriority");
$scope.allIssues = issueCollector.issues;
$scope.unresolvedIssues = issueCollector.issuesStats.unresolvedIssues;
$scope.P1Issues = issueCollector.issuesStats.P1Issues;
$scope.P2Issues = issueCollector.issuesStats.P2Issues;
$scope.P3Issues = issueCollector.issuesStats.P3Issues;
}