in scomp.js [253:304]
function buildBugsField(aSignature) {
var sigRow = document.getElementById(
"sdata_" + encodeURIComponent(aSignature)
);
var bugsField = sigRow.querySelector(".bugs");
for (var i = 0; i <= gSigData[aSignature].bugs.length - 1; i++) {
if (i > 0) {
// Add spaces when we have multiple bugs.
bugsField.appendChild(document.createTextNode(" "));
}
var link = bugsField.appendChild(document.createElement("a"));
link.dataset["bugid"] = gSigData[aSignature].bugs[i];
link.setAttribute(
"href",
gBzBasePath + "show_bug.cgi?id=" + gSigData[aSignature].bugs[i]
);
link.textContent = gSigData[aSignature].bugs[i];
// Add Bugzilla data.
if (gBugInfo[gSigData[aSignature].bugs[i]]) {
beautifyBugzillaLink(link);
} else {
fetchFile(
gBzBasePath +
"rest/bug/" +
gSigData[aSignature].bugs[i] +
"?include_fields=id,summary,status,resolution",
"json",
function (aLink, aData) {
if (aData && aData.bugs && aData.bugs.length) {
gBugInfo[aData.bugs[0].id] = aData.bugs[0];
beautifyBugzillaLink(aLink);
} else if (aData && aData.error) {
// On error, create fake bug info.
gBugInfo[aLink.dataset["bugid"]] = {
status: "ERROR",
resolution: "",
summary: aData.message,
};
beautifyBugzillaLink(aLink);
} else {
console.log(
"ERROR - couldn't find info for bug " +
aLink.dataset["bugid"] +
"!"
);
}
}.bind(undefined, link), // Prepend link to the argument list.
true // Accept 401 responses and still return them as JSON.
);
}
}
}