aboutsummaryrefslogtreecommitdiffstats
path: root/data/lib/rhbzpage.js
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@redhat.com>2011-03-25 16:23:51 +0100
committerMatěj Cepl <mcepl@redhat.com>2011-03-25 17:55:56 +0100
commit0ace4d34ece35b717b64ee1d3312cdc3c07696b5 (patch)
tree0e9cfe3000295c14d08a09c617b8aa8b89285cc4 /data/lib/rhbzpage.js
parenta9e66d84f83d3f21fffd4cd9872ac8934e455edf (diff)
downloadbugzilla-triage-0ace4d34ece35b717b64ee1d3312cdc3c07696b5.tar.gz
Cut out general bugzilla functions to a special module.
Diffstat (limited to 'data/lib/rhbzpage.js')
-rw-r--r--data/lib/rhbzpage.js369
1 files changed, 5 insertions, 364 deletions
diff --git a/data/lib/rhbzpage.js b/data/lib/rhbzpage.js
index ddec25e..81116ba 100644
--- a/data/lib/rhbzpage.js
+++ b/data/lib/rhbzpage.js
@@ -1,8 +1,5 @@
// Released under the MIT/X11 license
// http://www.opensource.org/licenses/mit-license.php
-"use strict";
-var titleParsedAttachment = "Part of the thread where crash happened";
-
// For identification of graphics card
var manuChipStrs = [ [ "ATI Radeon", "ATI", "1002" ],
@@ -57,7 +54,6 @@ var ProfessionalProducts = [
// END OF CONSTANTS
var btSnippet = null;
-var reqCounter = 0; // TODO should be probably a dict indexed by called method
function RHOnMessageHandler(msg) {
switch (msg.cmd) {
@@ -77,7 +73,7 @@ function RHOnMessageHandler(msg) {
findInterestingLine(msg.data, msg.cmd);
break;
case "queryUpstream":
- queryUpstreamCallback(msg.data);
+ queryUpstreamCallback(msg.data, constantData.queryUpstreamBug);
break;
default:
console.error("Error: unknown RPC call " + msg.toSource());
@@ -126,7 +122,7 @@ function RHcentralCommandDispatch(cmdLabel, cmdParams) {
closeSomeRelease();
break;
case "queryStringUpstreamBugzilla":
- queryUpstream();
+ queryUpstream(constantData.queryUpstreamBug);
break;
case "sendBugUpstream":
sendBugUpstream();
@@ -144,198 +140,7 @@ function RHcentralCommandDispatch(cmdLabel, cmdParams) {
}
}
-function addAttachmentCallback(resp) {
- var newAttachID = parseInt(resp.params.param.value.array.data.value.int, 10);
- console.log("attachID = " + newAttachID);
- // FIXME callback.call(param, newAttachID, data.length);
-}
-
-/**
- *
- * This has to stay in RHBugzillaPage because upstream doesn't have addAttachment
- * XML-RPC call yet.
- */
-function addAttachment(data, callback, param) {
- var params = [];
-
- if (!constantData.passwordState.passAvailable) {
- console.error("addAttachment : No password, no XML-RPC calls; sorry");
- return null;
- }
-
- params.push(getBugNo());
- params.push({
- description: titleParsedAttachment,
- filename: "parsed-backtrace.txt",
- contenttype: "text/plain",
- data: window.btoa(data),
- nomail: true
- });
-
- postMessage(new Message("MakeXMLRPCall", {
- url: constantData.XMLRPCData[window.location.hostname].url,
- login: getLogin(),
- method: "bugzilla.addAttachment",
- params: params,
- callRPC: "AddAttachmentCallback"
- }));
- reqCounter++;
-}
-
/* === Bugzilla functions === */
-/**
- *
- */
-function pasteBacktraceInComments(atts) {
- /*
- Let's comment it out, and we'll see if anything breaks.
- TODO This paragraph looks suspicous ... what is it?
- Does it belong to this function?
- var notedLabel = document.querySelector("label[for='newcc']");
- while (notedLabel.firstChild) {
- var node = notedLabel.removeChild(notedLabel.firstChild);
- notedLabel.parentNode.insertBefore(node, notedLabel);
- }
- notedLabel.parentNode.removeChild(notedLabel);
- */
-
- // FIXME BROKEN and its depending functions are even more broken
- return null;
-
- var abrtQueryURL = "https://bugzilla.redhat.com/buglist.cgi?" +
- "cmdtype=dorem&remaction=run&namedcmd=all%20NEW%20abrt%20crashes&"+
- "sharer_id=74116";
-
- var mainTitle = document
- .getElementsByClassName("bz_alias_short_desc_container")[0];
-
- createDeadLink ("callAbrtQuery_link",
- "Abrt bugs", mainTitle, abrtQueryURL, [], false, null, "a");
-
- if (idContainsWord("cf_devel_whiteboard", 'btparsed')) {
- addStuffToTextBox('status_whiteboard', 'btparsed');
- }
-
- if (!(isTriaged() || idContainsWord("status_whiteboard",
- 'btparsed') || (atts.length > 0))) {
- var btAttachments = atts
- .filter(function(att) {
- return (/File: backtrace/.test(att[0]));
- });
- // TODO we need to go through all backtrace attachments, but
- // just the first one will do for now, we would need to do async
- //
- btAttachments.forEach(function(x) {
- var attURL = "https://bugzilla.redhat.com/attachment.cgi?id="
- + x[1];
- if ((!btSnippet) && // ???? FIXME
- (!idContainsWord("status_whiteboard", 'btparsed'))) {
- Request({
- url: attURL,
- onComplete: function(response) {
- if (response.status == 200) {
- btSnippet = parseBacktrace(response.text);
- if (btSnippet) {
- addCheckShowLink(x,btSnippet);
- }
- }
- }
- }).get();
- }
- }, this);
- }
- // Add "show BT" links
- if (parsedAttachments.length > 0) {
- this.parsedAttachments.forEach(function (att) {
- addShowParsedBTLink(att);
- });
- }
-}
-
-/**
- * Open new window with the content of the attachment.
- *
- * @param id Number of the attachment id
- * @return none
- */
-function showAttachment(id) {
- postMessage(new Message("OpenURLinPanel",
- "https://" + window.location.hostname + "/attachment.cgi?id=" + id));
-}
-
-/**
- * add a link opening a window with the parsed backtrace
- *
- * @param att Attachment object
- */
-function addShowParsedBTLink(att) {
- var elem = att[4].querySelector("td:last-of-type");
- createDeadLink("showParsedBacktraceWindow-" + att[1], "showBT",
- elem, showAttachment, att[1], true);
-}
-
-/**
- * Unfinished ... see above FIXME BROKEN AND DOESN'T WORK
- */
-function addNewAttachmentRow(origAtt,
- newAttId, newAttSize) {
- var that = this;
- var oldAddBTLink = document.getElementById("attachBacktraceActivator");
- oldAddBTLink.parentNode.removeChild(oldAddBTLink);
- var newTRElem = origAtt[4].cloneNode(true);
-
- // fix number of the attachment
- Array.forEach(newTRElem.getElementsByTagName("a"), function (aEl) {
- aEl.setAttribute("href",
- aEl.getAttribute("href").replace(origAtt[1], newAttId));
- });
-
- var aElements = newTRElem.getElementsByTagName("a");
- aElements[0].setAttribute("name","parsed-backtrace.txt");
- aElements[0].getElementsByTagName("b")[0].textContent = titleParsedAttachment;
-
- var sizeSpan = newTRElem.getElementsByClassName("bz_attach_extra_info")[0];
- sizeSpan.textContent = "(" + (newAttSize / 1024).toFixed(2) + " KB, text/plain)";
-
- // aElements[1].textContent = new Date().toString(); TODO we should add eventually, but not pressing
-
- var vcardSpan = newTRElem.getElementsByClassName("vcard")[0];
- if (vcardSpan !== undefined) {
- var vcardSpanClassList = vcardSpan.classList;
- if (/@redhat\.com/.test(this.login) && !vcardSpanClassList.contains("redhat_user")) {
- vcardSpanClassList.add("redhat_user");
- }
- var vcardAElem = vcardSpan.getElementsByTagName("a")[0];
- vcardAElem.setAttribute("title", this.login);
- vcardAElem.setAttribute("href", "mailto:" + this.login);
- vcardAElem.className = "email";
- vcardAElem.innerHTML="<span class='fn'>" + this.login + "</span>";
- }
-
- var elem = newTRElem.querySelector("td:last-of-type");
- this.createDeadLink("showBacktrace", "show BT", elem,
- this.showAttachment, newAttId, false);
-
- origAtt[4].parentNode.insertBefore(newTRElem, origAtt[4].nextSibling);
-}
-
-/**
- * Add a link to create a new attachment with a parsed backtrace
- *
- * @param oldAtt Object with an attachment row
- * @param snippet String with parsed backtrace
- * @return none
- */
-function addCheckShowLink(oldAtt, snippet) {
- var elem = oldAtt[4].querySelector("td:last-of-type");
-/*
- createDeadLink("attachBacktraceActivator", "add parsed BT", elem, function(x) {
- // pass function and parameters as two separate parameters, the function to be called from
- // addAttachment
- addAttachment(snippet, addNewAttachmentRow, oldAtt);
- }, [], true);
-*/
-}
/**
* Make it sailent that the some attachments with bad MIME type are present
@@ -361,79 +166,16 @@ function markBadAttachments(atts) {
createDeadLink("fixAllButton", "Fix all", titleElement, function() {
Array.forEach(badAttachments, function(x) {
- fixAttachById(x[1]);
+ fixAttachById(x[1], constantData.XMLRPCData[window.location.hostname].url);
});
}, [], false, null, "f");
badAttachments.forEach(function(x, i, a) {
- addTextLink(x);
+ addTextLink(x, constantData.XMLRPCData[window.location.hostname].url);
});
}
}
/**
- * Is this bug a RHEL bug?
- *
- * @return Boolean true if it is a RHEL bug
- */
-function isEnterprise() {
- var result = ProfessionalProducts.some(function(elem,idx,arr) {
- return new RegExp(elem).test(getProduct());
- });
- return result;
-}
-
-/**
- * Find out whether the bug is needed an attention of bugZappers
- *
- * @return Boolean whether the bug has been triaged or not
- */
-function isTriaged() {
- return hasKeyword("Triaged");
-}
-
-/**
- * Set branding colours to easily distinguish between Fedora and RHEL bugs
- *
- * @param brand String with product of the current bug
- * @param version String with the version of the bug
- * @param its String with the IsueTracker numbers
- * @return none
- */
-
-/**
- *
- */
-function queryUpstreamCallback(text) {
- var searchData = filterByRegexp(constantData.queryUpstreamBug, getComponent());
- var urlBase = searchData.url;
- text = searchData.searchBy+":"+searchData.fillIn+" "+text.trim();
- if (searchData.fillIn == "$$$") {
- text = text.replace("$$$", getComponent());
- }
- text = encodeURIComponent(text).replace("%20","+");
- postMessage(new Message("OpenURLinTab", urlBase + text));
-}
-
-/**
- * Search simple query in the upstream bugzilla appropriate for the component
- *
- * @return none
- */
-function queryUpstream() {
- if (!constantData.queryUpstreamBug) {
- alert("We don't have constantData.queryUpstreamBug set up!");
- return null;
- }
- var text = getSelection();
- if (!text) {
- postMessage(new Message("GetClipboard", "queryUpstream"));
- }
- else {
- queryUpstreamCallback(text);
- }
-}
-
-/**
* Open a tab in the upstream bugzilla to create a new bug
*
* @return none
@@ -594,107 +336,6 @@ function findInterestingLine(wholeLog, backMsg) {
}
/**
- * Return string with the ID for the external_id SELECT for external bugzilla
- *
- * @param URLhostname String hostname of the external bugzilla
- * @return String with the string for the external_id SELECT
- */
-function getBugzillaName(URLhostname) {
- var bugzillaID = "";
- var bzLabelNames = constantData.bugzillaLabelNames;
- if (bzLabelNames[URLhostname]) {
- bugzillaID = bzLabelNames[URLhostname];
- }
- else {
- bugzillaID = "";
- }
- return bugzillaID;
-}
-
-/**
- * Callback function for the XMLRPC request
- *
- * @param ret Object with xmlhttprequest response with attributes:
- * + status -- int return code
- * + statusText
- * + responseHeaders
- * + responseText
- */
-function XMLRPCcallback() {
- reqCounter--;
- if (reqCounter <= 0) {
- setTimeout(function () {
- window.location.reload(true);
- }, 1000);
- }
-}
-
-/**
- * The worker function -- call XMLRPC to fix MIME type of the particular
- * attachment
- *
- * @param id Integer with the attachment id to be fixed
- * @param type String with the new MIME type, optional defaults to "text/plain"
- * @param email Boolean whether email should be sent to appropriate person;
- * option, defaults to false
- *
- * updateAttachMimeType($data_ref, $username, $password)
- *
- * Update the attachment mime type of an attachment. The first argument is a
- * data hash containing information on the new MIME type and the attachment id
- * that you want to act on.
- *
- * $data_ref = { "attach_id" => "<Attachment ID>", # Attachment ID to perform
- * MIME type change on. "mime_type" => "<New MIME Type Value>", # Legal MIME
- * type value that you want to change the attachment to. "nomail" => 0, #
- * OPTIONAL Flag that is either 1 or 0 if you want email to be sent or not for
- * this change };
- *
- */
-function fixAttachById(id, type, email) {
- var params = [];
-
- if (type === undefined) {
- type = "text/plain";
- }
- if (email === undefined) {
- email = false;
- }
-
- // https://bugzilla.redhat.com/\
- // docs/en/html/api/extensions/compat_xmlrpc/code/webservice.html
- // test on https://bugzilla.redhat.com/show_bug.cgi?id=485145
- params.push({
- 'attach_id' : id,
- 'mime_type' : type,
- 'nomail' : !email
- });
-
- postMessage(new Message("MakeXMLRPCall", {
- url: constantData.XMLRPCData[window.location.hostname].url,
- login: getLogin(),
- method: "bugzilla.updateAttachMimeType",
- params: params,
- callRPC: "FixAttachmentMIMECallback"
- }));
- reqCounter++;
-}
-
-/**
- * Add a link to the bad attachment for fixing it.
- *
- * @param
- * <TR> DOM jQuery element with a bad attachment
- * @return none
- */
-function addTextLink(row) {
- var elemS = row[4].getElementsByTagName("td");
- var elem = elemS[elemS.length - 1];
- createDeadLink("addFix2TextLink", "text", elem,
- fixAttachById, row[1], "br");
-}
-
-/**
* Add information about the upstream bug upstream, and closing it.
*
* @param evt Event which called this handler
@@ -719,7 +360,7 @@ function addClosingUpstream() {
inputBox.value = externalBugID;
}
// get bugzillaName and set the label
- var bugzillaName = getBugzillaName(wholeURL.host);
+ var bugzillaName = getBugzillaName(wholeURL.host, constantData.bugzillaLabelNames);
selectOptionByLabel("external_id", bugzillaName);
}
else if (!isNaN(inputBox.value)) {