function buildBugsField()

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.
      );
    }
  }
}