aboutsummaryrefslogtreecommitdiffstats
path: root/data/lib/bzpage.js
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@redhat.com>2011-03-23 20:18:23 +0100
committerMatěj Cepl <mcepl@redhat.com>2011-03-23 20:18:23 +0100
commit2e5993bc9bd0d468f4e9d12dd39e0548ba9adda1 (patch)
treef31a0d612efbfa5beb78e4718768c55c650f14d8 /data/lib/bzpage.js
parentc662ccddab2cbcc6d13f49a21c04a6aea808f457 (diff)
downloadbugzilla-triage-2e5993bc9bd0d468f4e9d12dd39e0548ba9adda1.tar.gz
Fix indentation and else for Mozilla coding guidelines.
Diffstat (limited to 'data/lib/bzpage.js')
-rw-r--r--data/lib/bzpage.js1078
1 files changed, 544 insertions, 534 deletions
diff --git a/data/lib/bzpage.js b/data/lib/bzpage.js
index 893a5ea..9afb112 100644
--- a/data/lib/bzpage.js
+++ b/data/lib/bzpage.js
@@ -9,43 +9,44 @@ var NumberOfFrames = 7;
// constants
var SalmonPink = new Color(255, 224, 176); // RGB 255, 224, 176; HSL 36, 2,
- // 85
+ // 85
var ReporterColor = new Color(255, 255, 166); // RGB 255, 255, 166; HSL 60, 2,
- // 83
+ // 83
// global variables
var config = {};
var constantData = {}; // This should be probably eliminated ASAP or
- // or done by other means. TODO
+ // or done by other means. TODO
/**
* central handler processing messages from the main script.
*/
onMessage = function onMessage(msg) {
- console.log("onMessage - incoming : msg.cmd = " + msg.cmd);
- switch (msg.cmd) {
- case "ReloadThePage":
- document.location.reload(true);
- break;
- case "queryLocal":
- queryInNewTab(msg.data, getComponent(), getProduct());
- break;
- case "CreateButtons":
- constantData = msg.data.constData;
- config = msg.data.config;
- generateButtons(msg.data.instPkgs, msg.data.kNodes);
- break;
- case "Error":
- alert("Error " + msg.data);
- break;
- case "Unhandled":
- break;
- default:
- if (RHOnMessageHandler) {
- RHOnMessageHandler(msg);
- } else {
- console.error("Error: unknown RPC call " + msg.toSource());
- }
- }
+ console.log("onMessage - incoming : msg.cmd = " + msg.cmd);
+ switch (msg.cmd) {
+ case "ReloadThePage":
+ document.location.reload(true);
+ break;
+ case "queryLocal":
+ queryInNewTab(msg.data, getComponent(), getProduct());
+ break;
+ case "CreateButtons":
+ constantData = msg.data.constData;
+ config = msg.data.config;
+ generateButtons(msg.data.instPkgs, msg.data.kNodes);
+ break;
+ case "Error":
+ alert("Error " + msg.data);
+ break;
+ case "Unhandled":
+ break;
+ default:
+ if (RHOnMessageHandler) {
+ RHOnMessageHandler(msg);
+ }
+ else {
+ console.error("Error: unknown RPC call " + msg.toSource());
+ }
+ }
};
/**
@@ -60,9 +61,9 @@ onMessage = function onMessage(msg) {
* impatiently when this bite us.
*/
function executeCommand(cmdObj) {
- for (var key in cmdObj) {
- centralCommandDispatch(key, cmdObj[key]);
- }
+ for (var key in cmdObj) {
+ centralCommandDispatch(key, cmdObj[key]);
+ }
}
/**
@@ -72,105 +73,106 @@ function executeCommand(cmdObj) {
* @param cmdParams Object with the appropriate parameters for the command
*/
function centralCommandDispatch (cmdLabel, cmdParams) {
- console.log("centralCommandDispatch : cmdLabel = " + cmdLabel);
- switch (cmdLabel) {
- case "name":
- case "position":
- break;
- case "resolution":
- case "product":
- case "component":
- case "version":
- case "priority":
- selectOption(cmdLabel, cmdParams);
- break;
- case "status":
- selectOption("bug_status", cmdParams);
- break;
- case "platform":
- selectOption("rep_platform", cmdParams);
- break;
- case "os":
- selectOption("op_sys", cmdParams);
- break;
- case "severity":
- selectOption("bug_severity", cmdParams);
- break;
- case "target":
- selectOption("target_milestone", cmdParams);
- break;
- case "addKeyword":
- addStuffToTextBox("keywords",cmdParams);
- break;
- case "removeKeyword":
- removeStuffFromTextBox("keywords", cmdParams);
- break;
- case "addWhiteboard":
- addStuffToTextBox("status_whiteboard",cmdParams);
- break;
- case "removeWhiteboard":
- removeStuffFromTextBox("status_whiteboard",cmdParams);
- break;
- case "assignee":
- changeAssignee(cmdParams);
- break;
- case "qacontact":
- clickMouse("bz_qa_contact_edit_action");
- document.getElementById("qa_contact").value = cmdParams;
- break;
- case "url":
- clickMouse("bz_url_edit_action");
- document.getElementById("bug_file_loc").value = cmdParams;
- break;
- // TODO dependson/blocked doesn't work. Find out why.
- case "addDependsOn":
- clickMouse("dependson_edit_action");
- addStuffToTextBox("dependson", cmdParams);
- break;
- case "removeDependsOn":
- clickMouse("dependson_edit_action");
- removeStuffFromTextBox("dependson", cmdParams);
- break;
- case "addBlocks":
- clickMouse("blocked_edit_action");
- addStuffToTextBox("blocked", cmdParams);
- break;
- case "removeBlocks":
- clickMouse("blocked_edit_action");
- removeStuffFromTextBox("blocked", cmdParams);
- break;
- case "comment":
- addStuffToTextBox("comment", cmdParams);
- break;
- case "commentIdx":
- throw "There should be no commentIdx here at all.";
- break;
- case "setNeedinfo":
- // cmdParams are actually ignored for now; we may in future
- // distinguish different actors to be target of needinfo
- setNeedinfoReporter();
- break;
- case "addCC":
- addToCCList(cmdParams);
- break;
- case "queryStringOurBugzilla":
- queryForSelection();
- break;
- // TODO flags, see also
- case "commit":
- if (cmdParams) {
- // Directly commit the form
- document.forms.namedItem("changeform").submit();
- }
- break;
- default:
- if (RHcentralCommandDispatch) {
- RHcentralCommandDispatch(cmdLabel, cmdParams);
- } else {
- console.error("Unknown command:\n" + cmdLabel + "\nparameters:\n" + cmdParams);
- }
- break;
- }
+ console.log("centralCommandDispatch : cmdLabel = " + cmdLabel);
+ switch (cmdLabel) {
+ case "name":
+ case "position":
+ break;
+ case "resolution":
+ case "product":
+ case "component":
+ case "version":
+ case "priority":
+ selectOption(cmdLabel, cmdParams);
+ break;
+ case "status":
+ selectOption("bug_status", cmdParams);
+ break;
+ case "platform":
+ selectOption("rep_platform", cmdParams);
+ break;
+ case "os":
+ selectOption("op_sys", cmdParams);
+ break;
+ case "severity":
+ selectOption("bug_severity", cmdParams);
+ break;
+ case "target":
+ selectOption("target_milestone", cmdParams);
+ break;
+ case "addKeyword":
+ addStuffToTextBox("keywords",cmdParams);
+ break;
+ case "removeKeyword":
+ removeStuffFromTextBox("keywords", cmdParams);
+ break;
+ case "addWhiteboard":
+ addStuffToTextBox("status_whiteboard",cmdParams);
+ break;
+ case "removeWhiteboard":
+ removeStuffFromTextBox("status_whiteboard",cmdParams);
+ break;
+ case "assignee":
+ changeAssignee(cmdParams);
+ break;
+ case "qacontact":
+ clickMouse("bz_qa_contact_edit_action");
+ document.getElementById("qa_contact").value = cmdParams;
+ break;
+ case "url":
+ clickMouse("bz_url_edit_action");
+ document.getElementById("bug_file_loc").value = cmdParams;
+ break;
+ // TODO dependson/blocked doesn't work. Find out why.
+ case "addDependsOn":
+ clickMouse("dependson_edit_action");
+ addStuffToTextBox("dependson", cmdParams);
+ break;
+ case "removeDependsOn":
+ clickMouse("dependson_edit_action");
+ removeStuffFromTextBox("dependson", cmdParams);
+ break;
+ case "addBlocks":
+ clickMouse("blocked_edit_action");
+ addStuffToTextBox("blocked", cmdParams);
+ break;
+ case "removeBlocks":
+ clickMouse("blocked_edit_action");
+ removeStuffFromTextBox("blocked", cmdParams);
+ break;
+ case "comment":
+ addStuffToTextBox("comment", cmdParams);
+ break;
+ case "commentIdx":
+ throw "There should be no commentIdx here at all.";
+ break;
+ case "setNeedinfo":
+ // cmdParams are actually ignored for now; we may in future
+ // distinguish different actors to be target of needinfo
+ setNeedinfoReporter();
+ break;
+ case "addCC":
+ addToCCList(cmdParams);
+ break;
+ case "queryStringOurBugzilla":
+ queryForSelection();
+ break;
+ // TODO flags, see also
+ case "commit":
+ if (cmdParams) {
+ // Directly commit the form
+ document.forms.namedItem("changeform").submit();
+ }
+ break;
+ default:
+ if (RHcentralCommandDispatch) {
+ RHcentralCommandDispatch(cmdLabel, cmdParams);
+ }
+ else {
+ console.error("Unknown command:\n" + cmdLabel + "\nparameters:\n" + cmdParams);
+ }
+ break;
+ }
}
/**
@@ -185,57 +187,59 @@ function centralCommandDispatch (cmdLabel, cmdParams) {
* do actual activity.
*/
function killNodes(doc, target, remove) {
- var targetArr = target instanceof Array ? target : target.trim().split(/[,\s]+/);
- targetArr.forEach(function(x) {
- if (remove) {
- var targetNode = doc.getElementById(x);
- targetNode.parentNode.removeChild(targetNode);
- } else {
- x.style.display = "none";
- }
- });
+ var targetArr = target instanceof Array ? target : target.trim().split(/[,\s]+/);
+ targetArr.forEach(function(x) {
+ if (remove) {
+ var targetNode = doc.getElementById(x);
+ targetNode.parentNode.removeChild(targetNode);
+ }
+ else {
+ x.style.display = "none";
+ }
+ });
}
/**
* Change assignee of the bug
*
* @param newAssignee String with the email address of new assigneeAElement
- * or 'default' if the component's default assignee should be used.
- * Value null clears "Reset Assignee to default for component" checkbox
+ * or 'default' if the component's default assignee should be used.
+ * Value null clears "Reset Assignee to default for component" checkbox
* @return none
*/
function changeAssignee (newAssignee) {
- var defAssigneeButton = null;
- // Previous assignee should know what's going on in his bug
- addToCCList(getOwner());
-
- // Optional value null
- if (newAssignee === null) {
- document.getElementById("set_default_assignee").removeAttribute(
- "checked");
+ var defAssigneeButton = null;
+ // Previous assignee should know what's going on in his bug
+ addToCCList(getOwner());
+
+ // Optional value null
+ if (newAssignee === null) {
+ document.getElementById("set_default_assignee").removeAttribute(
+ "checked");
+ return ;
+ }
+
+ if (getDefaultAssignee) {
+ if (newAssignee === "default") {
+ var defAss = getDefaultAssignee();
+ if (defAss) {
+ newAssignee = defAss;
+ }
+ else {
return ;
+ }
}
+ }
- if (getDefaultAssignee) {
- if (newAssignee === "default") {
- var defAss = getDefaultAssignee();
- if (defAss) {
- newAssignee = defAss;
- } else {
- return ;
- }
- }
- }
-
- if (newAssignee) {
- clickMouse("bz_assignee_edit_action");
- document.getElementById("assigned_to").value = newAssignee;
- document.getElementById("set_default_assignee").checked = false;
- defAssigneeButton = document.getElementById("defassignee_btn");
- if (defAssigneeButton) {
- defAssigneeButton.style.display = "none";
- }
+ if (newAssignee) {
+ clickMouse("bz_assignee_edit_action");
+ document.getElementById("assigned_to").value = newAssignee;
+ document.getElementById("set_default_assignee").checked = false;
+ defAssigneeButton = document.getElementById("defassignee_btn");
+ if (defAssigneeButton) {
+ defAssigneeButton.style.display = "none";
}
+ }
}
/**
@@ -247,29 +251,29 @@ function changeAssignee (newAssignee) {
* function will set up new one.
*/
function addToCommentsDropdown (cmdObj) {
- var select = document.getElementById("comment_action");
- if (!select) {
- config.commandsList = [];
- document.getElementById("comments").innerHTML +=
- "<div id='make_bugzilla_comment_action'>" +
- " <label for='comment_action'>Add Comment: </label>" +
- " <select id='comment_action'>" +
- " <option value=''>-- Select Comment from List --</option>" +
- " </select>" +
- "</div>";
- select = document.getElementById("comment_action");
- select.addEventListener("change", function (evt) {
- var value = select.options[select.selectedIndex].value;
- executeCommand(config.commandsList[value]);
- }, false);
- }
+ var select = document.getElementById("comment_action");
+ if (!select) {
+ config.commandsList = [];
+ document.getElementById("comments").innerHTML +=
+ "<div id='make_bugzilla_comment_action'>" +
+ " <label for='comment_action'>Add Comment: </label>" +
+ " <select id='comment_action'>" +
+ " <option value=''>-- Select Comment from List --</option>" +
+ " </select>" +
+ "</div>";
+ select = document.getElementById("comment_action");
+ select.addEventListener("change", function (evt) {
+ var value = select.options[select.selectedIndex].value;
+ executeCommand(config.commandsList[value]);
+ }, false);
+ }
- var opt = document.createElement("option");
- var objIdx = config.commandsList.length + 1;
- opt.value = objIdx;
- config.commandsList[objIdx] = cmdObj;
- opt.textContent = cmdObj.name;
- select.appendChild(opt);
+ var opt = document.createElement("option");
+ var objIdx = config.commandsList.length + 1;
+ opt.value = objIdx;
+ config.commandsList[objIdx] = cmdObj;
+ opt.textContent = cmdObj.name;
+ select.appendChild(opt);
}
/**
@@ -283,116 +287,119 @@ function addToCommentsDropdown (cmdObj) {
* @return none
*/
function createNewButton (location, after, cmdObj) {
- try {
- var newId = cmdObj.name.toLowerCase().replace(/[^a-z0-9]+/,"","g") + "_btn";
- } catch (e) {
- console.error("createNewButton : e = " + e +
- "\ncreateNewButton : cmdObj.toSource() = " +
- cmdObj.toSource());
- }
-
- // protection against double-firings
- if (document.getElementById(newId)) {
- console.log("Element with id " + newId + " already exists!");
- return ;
- }
-
- var newButton = document.createElement("input");
- newButton.setAttribute("id", newId);
- newButton.setAttribute("type", "button");
- newButton.value = cmdObj.name;
- newButton.addEventListener("click", function(evt) {
- executeCommand(cmdObj);
- }, false);
-
- var originalLocation = document.getElementById(location);
-
- try {
- if (after) {
- originalLocation.parentNode.insertBefore(newButton,
- originalLocation.nextSibling);
- originalLocation.parentNode.insertBefore(document
- .createTextNode("\u00A0"), newButton);
- } else {
- originalLocation.parentNode.insertBefore(newButton, originalLocation);
- originalLocation.parentNode.insertBefore(document
- .createTextNode("\u00A0"), originalLocation);
- }
- } catch (e) {
- if (e instanceof TypeError) {
- console.error("cannot find originalLocation element with id " + location);
- } else {
- throw e;
- }
- }
+ try {
+ var newId = cmdObj.name.toLowerCase().replace(/[^a-z0-9]+/,"","g") + "_btn";
+ } catch (e) {
+ console.error("createNewButton : e = " + e +
+ "\ncreateNewButton : cmdObj.toSource() = " +
+ cmdObj.toSource());
+ }
+
+ // protection against double-firings
+ if (document.getElementById(newId)) {
+ console.log("Element with id " + newId + " already exists!");
+ return ;
+ }
+
+ var newButton = document.createElement("input");
+ newButton.setAttribute("id", newId);
+ newButton.setAttribute("type", "button");
+ newButton.value = cmdObj.name;
+ newButton.addEventListener("click", function(evt) {
+ executeCommand(cmdObj);
+ }, false);
+
+ var originalLocation = document.getElementById(location);
+
+ try {
+ if (after) {
+ originalLocation.parentNode.insertBefore(newButton,
+ originalLocation.nextSibling);
+ originalLocation.parentNode.insertBefore(document
+ .createTextNode("\u00A0"), newButton);
+ }
+ else {
+ originalLocation.parentNode.insertBefore(newButton, originalLocation);
+ originalLocation.parentNode.insertBefore(document
+ .createTextNode("\u00A0"), originalLocation);
+ }
+ } catch (e) {
+ if (e instanceof TypeError) {
+ console.error("cannot find originalLocation element with id " + location);
+ }
+ else {
+ throw e;
+ }
+ }
}
/**
* Generate button based on
*/
function generateButtons (pkgs, kNodes) {
- var topRowPosition = "topRowPositionID";
- var bottomRowPosition = "commit";
-
- // =========================================================
- if (kNodes && window.location.hostname in kNodes) {
- var killConf = kNodes[window.location.hostname];
- killNodes(document, killConf[0], killConf[1]);
- }
-
- // create anchor for the top toolbar
- var commentBox = document.getElementById("comment");
- var brElement = document.createElement("br");
- brElement.setAttribute("id",topRowPosition);
- commentBox.parentNode.normalize();
- commentBox.parentNode.insertBefore(brElement, commentBox);
-
- for (var pkg in pkgs) {
- for (var cmdIdx in pkgs[pkg]) {
- var cmdObj = pkgs[pkg][cmdIdx];
- if (cmdObj.position !== undefined) {
- switch (cmdObj.position) {
- case "topRow":
- createNewButton(topRowPosition, false, cmdObj);
- break;
- case "bottomRow":
- createNewButton(bottomRowPosition, false, cmdObj);
- break;
- case "dropDown":
- addToCommentsDropdown(cmdObj);
- break;
- default: // [+-]ID
- var firstChr = cmdObj.position.charAt(0);
- var newId = cmdObj.position.substr(1);
- createNewButton(newId, firstChr === "+", cmdObj);
- break;
- }
- } else {
- console.error("generateButtons : rejected cmdObj = " +
- cmdObj.toSource());
- }
+ var topRowPosition = "topRowPositionID";
+ var bottomRowPosition = "commit";
+
+ // =========================================================
+ if (kNodes && window.location.hostname in kNodes) {
+ var killConf = kNodes[window.location.hostname];
+ killNodes(document, killConf[0], killConf[1]);
+ }
+
+ // create anchor for the top toolbar
+ var commentBox = document.getElementById("comment");
+ var brElement = document.createElement("br");
+ brElement.setAttribute("id",topRowPosition);
+ commentBox.parentNode.normalize();
+ commentBox.parentNode.insertBefore(brElement, commentBox);
+
+ for (var pkg in pkgs) {
+ for (var cmdIdx in pkgs[pkg]) {
+ var cmdObj = pkgs[pkg][cmdIdx];
+ if (cmdObj.position !== undefined) {
+ switch (cmdObj.position) {
+ case "topRow":
+ createNewButton(topRowPosition, false, cmdObj);
+ break;
+ case "bottomRow":
+ createNewButton(bottomRowPosition, false, cmdObj);
+ break;
+ case "dropDown":
+ addToCommentsDropdown(cmdObj);
+ break;
+ default: // [+-]ID
+ var firstChr = cmdObj.position.charAt(0);
+ var newId = cmdObj.position.substr(1);
+ createNewButton(newId, firstChr === "+", cmdObj);
+ break;
}
+ }
+ else {
+ console.error("generateButtons : rejected cmdObj = " +
+ cmdObj.toSource());
+ }
}
- // TODO This is weird in this place, but that's the place where all constantData etc.
- // are finally defined and available.
- if (RHBZinit) {
- RHBZinit();
- }
+ }
+ // TODO This is weird in this place, but that's the place where all constantData etc.
+ // are finally defined and available.
+ if (RHBZinit) {
+ RHBZinit();
+ }
}
function setConfigurationButton () {
- var additionalButtons = document.querySelector("#bugzilla-body *.related_actions");
- var configurationButtonUI = document.createElement("li");
- configurationButtonUI.innerHTML = "\u00A0-\u00A0<a href='' id='configurationButton'>"
- + "Triage configuration</a>";
- additionalButtons.appendChild(configurationButtonUI);
- document.getElementById("configurationButton").addEventListener(
- "click",
- function(evt) {
- postMessage(new Message("ChangeJSONURL", null));
- evt.stopPropagation();
- evt.preventDefault();
- }, false);
+ var additionalButtons = document.querySelector("#bugzilla-body *.related_actions");
+ var configurationButtonUI = document.createElement("li");
+ configurationButtonUI.innerHTML = "\u00A0-\u00A0<a href='' id='configurationButton'>"
+ + "Triage configuration</a>";
+ additionalButtons.appendChild(configurationButtonUI);
+ document.getElementById("configurationButton").addEventListener(
+ "click",
+ function(evt) {
+ postMessage(new Message("ChangeJSONURL", null));
+ evt.stopPropagation();
+ evt.preventDefault();
+ }, false);
}
/**
@@ -401,7 +408,7 @@ function setConfigurationButton () {
* @return string
*/
function getSummary() {
- return document.getElementById("short_desc_nonedit_display").textContent;
+ return document.getElementById("short_desc_nonedit_display").textContent;
}
/**
@@ -410,37 +417,37 @@ function getSummary() {
* @return string
*/
function getReporter () {
- var reporterElement = getOptionTableCell("bz_show_bug_column_2", "Reported");
- // RH Bugzilla after upgrade to 3.6.2 moved the information to other column
- if (!reporterElement) {
- reporterElement = getOptionTableCell("bz_show_bug_column_1", "Reported", true);
- }
- // Maemo calls the label "Reporter" and it doesn't have ids on table columns ... TODO(maemo)
- return parseMailto(reporterElement);
+ var reporterElement = getOptionTableCell("bz_show_bug_column_2", "Reported");
+ // RH Bugzilla after upgrade to 3.6.2 moved the information to other column
+ if (!reporterElement) {
+ reporterElement = getOptionTableCell("bz_show_bug_column_1", "Reported", true);
+ }
+ // Maemo calls the label "Reporter" and it doesn't have ids on table columns ... TODO(maemo)
+ return parseMailto(reporterElement);
}
function getComponent() {
- var elem = document.getElementById("component");
- if (elem) {
- return elem.value;
- }
- return null;
+ var elem = document.getElementById("component");
+ if (elem) {
+ return elem.value;
+ }
+ return null;
}
function getProduct() {
- var elem = document.getElementById("product");
- if (elem) {
- return elem.value;
- }
- return null;
+ var elem = document.getElementById("product");
+ if (elem) {
+ return elem.value;
+ }
+ return null;
}
function commentsWalker (fce) {
- var comments = document.getElementById("comments").
- getElementsByClassName("bz_comment");
- Array.forEach(comments, function(item) {
- fce(item);
- });
+ var comments = document.getElementById("comments").
+ getElementsByClassName("bz_comment");
+ Array.forEach(comments, function(item) {
+ fce(item);
+ });
}
/**
@@ -448,22 +455,22 @@ function commentsWalker (fce) {
*
*/
function checkComments () {
- var reporter = getReporter();
- commentsWalker(function(x) {
- var email = parseMailto(x.getElementsByClassName("vcard")[0]
- .getElementsByTagName("a")[0]);
- if (email.indexOf(reporter) != -1) {
- x.style.backgroundColor = ReporterColor.toString();
- }
- });
+ var reporter = getReporter();
+ commentsWalker(function(x) {
+ var email = parseMailto(x.getElementsByClassName("vcard")[0]
+ .getElementsByTagName("a")[0]);
+ if (email.indexOf(reporter) != -1) {
+ x.style.backgroundColor = ReporterColor.toString();
+ }
+ });
}
function collectComments () {
- var outStr = "";
- commentsWalker(function(x) {
- outStr += x.getElementsByTagName("pre")[0].textContent + "\n";
- });
- return outStr.trim();
+ var outStr = "";
+ commentsWalker(function(x) {
+ outStr += x.getElementsByTagName("pre")[0].textContent + "\n";
+ });
+ return outStr.trim();
}
@@ -478,37 +485,37 @@ function collectComments () {
*
*/
function selectOption (id, label, fireEvent) {
- if (!fireEvent) {
- fireEvent = true;
- }
- var sel = document.getElementById(id);
- sel.value = label;
- if (fireEvent) {
- var intEvent = document.createEvent("HTMLEvents");
- intEvent.initEvent("change", true, true);
- sel.dispatchEvent(intEvent);
- }
+ if (!fireEvent) {
+ fireEvent = true;
+ }
+ var sel = document.getElementById(id);
+ sel.value = label;
+ if (fireEvent) {
+ var intEvent = document.createEvent("HTMLEvents");
+ intEvent.initEvent("change", true, true);
+ sel.dispatchEvent(intEvent);
+ }
}
function selectOptionByLabel(id, label, fireEvent) {
- if (!fireEvent) {
- fireEvent = true;
- }
- var sel = document.getElementById(id);
- var labelRE = new RegExp(label.trim());
- var ourOption = Array.filter(sel.options, function (op) {
- return op.textContent.trim() === label;
- });
-
- if (ourOption[0]) {
- sel.value = ourOption[0].value;
- }
-
- if (fireEvent) {
- var intEvent = document.createEvent("HTMLEvents");
- intEvent.initEvent("change", true, true);
- sel.dispatchEvent(intEvent);
- }
+ if (!fireEvent) {
+ fireEvent = true;
+ }
+ var sel = document.getElementById(id);
+ var labelRE = new RegExp(label.trim());
+ var ourOption = Array.filter(sel.options, function (op) {
+ return op.textContent.trim() === label;
+ });
+
+ if (ourOption[0]) {
+ sel.value = ourOption[0].value;
+ }
+
+ if (fireEvent) {
+ var intEvent = document.createEvent("HTMLEvents");
+ intEvent.initEvent("change", true, true);
+ sel.dispatchEvent(intEvent);
+ }
}
/**
@@ -518,10 +525,10 @@ function selectOptionByLabel(id, label, fireEvent) {
* @return None
*/
function clickMouse (targetID) {
- var localEvent = document.createEvent("MouseEvents");
- localEvent.initMouseEvent("click", true, true, document.defaultView, 0, 0,
- 0, 0, 0, false, false, false, false, 0, null);
- document.getElementById(targetID).dispatchEvent(localEvent);
+ var localEvent = document.createEvent("MouseEvents");
+ localEvent.initMouseEvent("click", true, true, document.defaultView, 0, 0,
+ 0, 0, 0, false, false, false, false, 0, null);
+ document.getElementById(targetID).dispatchEvent(localEvent);
}
/**
@@ -533,13 +540,14 @@ function clickMouse (targetID) {
* @return none
*/
function addStuffToTextBox (id, stuff) {
- var textBox = document.getElementById(id);
- if (textBox.tagName.toLowerCase() === "textarea") {
- stuff = textBox.value ? "\n\n" + stuff : stuff;
- textBox.value += stuff;
- } else {
- textBox.value = addCSVValue(textBox.value,stuff);
- }
+ var textBox = document.getElementById(id);
+ if (textBox.tagName.toLowerCase() === "textarea") {
+ stuff = textBox.value ? "\n\n" + stuff : stuff;
+ textBox.value += stuff;
+ }
+ else {
+ textBox.value = addCSVValue(textBox.value,stuff);
+ }
}
/**
@@ -549,8 +557,8 @@ function addStuffToTextBox (id, stuff) {
* @param stuff String/Array with keyword(s) to be removed
*/
function removeStuffFromTextBox (id, stuff) {
- var changedElement = document.getElementById(id);
- changedElement.value = removeCSVValue(changedElement.value,stuff);
+ var changedElement = document.getElementById(id);
+ changedElement.value = removeCSVValue(changedElement.value,stuff);
}
/**
@@ -561,14 +569,14 @@ function removeStuffFromTextBox (id, stuff) {
* @return Boolean found?
*/
function idContainsWord (id, str) {
- var kwd = "";
- try {
- kwd = document.getElementById(id).value;
- } catch (e) {
- // For those who don't have particular element at all or if it is empty
- return false;
- }
- return (isInList(str, kwd.trim().split(/[,\s]+/)));
+ var kwd = "";
+ try {
+ kwd = document.getElementById(id).value;
+ } catch (e) {
+ // For those who don't have particular element at all or if it is empty
+ return false;
+ }
+ return (isInList(str, kwd.trim().split(/[,\s]+/)));
}
/**
@@ -578,7 +586,7 @@ function idContainsWord (id, str) {
* @return Boolean
*/
function hasKeyword (str) {
- return (idContainsWord('keywords', str));
+ return (idContainsWord('keywords', str));
}
/**
@@ -587,21 +595,21 @@ function hasKeyword (str) {
* @return Element with the href attribute containng the information
*/
function getOptionTableCell(tableId, label) {
- var cleanLabelRE = new RegExp("^\\s*([^.:]*):?\\s*$");
- label = label.trim().replace(cleanLabelRE,"$1").toLowerCase();
-
- var rows = document.getElementById(tableId).getElementsByTagName("tr");
- var ourLine = Array.filter(rows, function(row) {
- var curLabel = row.getElementsByTagName("td")[0].textContent.toLowerCase();
- curLabel = curLabel.replace(cleanLabelRE,"$1");
- return (curLabel === label); // maybe this could be a RE match instead
- });
+ var cleanLabelRE = new RegExp("^\\s*([^.:]*):?\\s*$");
+ label = label.trim().replace(cleanLabelRE,"$1").toLowerCase();
- if (ourLine.length > 0) {
- return ourLine[0].getElementsByTagName("td")[1].
- getElementsByTagName("a")[0];
- }
- return null;
+ var rows = document.getElementById(tableId).getElementsByTagName("tr");
+ var ourLine = Array.filter(rows, function(row) {
+ var curLabel = row.getElementsByTagName("td")[0].textContent.toLowerCase();
+ curLabel = curLabel.replace(cleanLabelRE,"$1");
+ return (curLabel === label); // maybe this could be a RE match instead
+ });
+
+ if (ourLine.length > 0) {
+ return ourLine[0].getElementsByTagName("td")[1].
+ getElementsByTagName("a")[0];
+ }
+ return null;
}
/**
@@ -613,17 +621,17 @@ function getOptionTableCell(tableId, label) {
* with parameter [reporter|assignee|general-email-address]
*/
function setNeedinfoReporter () {
- clickMouse("needinfo");
- selectOption("needinfo_role", "reporter");
+ clickMouse("needinfo");
+ selectOption("needinfo_role", "reporter");
}
/**
*
*/
function getOwner () {
- // TODO(maemo) doesn't work on maemo
- var assigneeAElement = getOptionTableCell("bz_show_bug_column_1","Assigned To");
- return parseMailto(assigneeAElement);
+ // TODO(maemo) doesn't work on maemo
+ var assigneeAElement = getOptionTableCell("bz_show_bug_column_1","Assigned To");
+ return parseMailto(assigneeAElement);
}
/**
@@ -633,8 +641,8 @@ function getOwner () {
* @return String with the maintainer's email address
*/
function getDefaultBugzillaMaintainer (component) {
- var address = filterByRegexp(constantData.defBugzillaMaintainerArr, component);
- return address;
+ var address = filterByRegexp(constantData.defBugzillaMaintainerArr, component);
+ return address;
}
/**
@@ -642,37 +650,37 @@ function getDefaultBugzillaMaintainer (component) {
*
* @param DOM element to be parsed
* @return array with string name of the attachment, integer its id number,
- * string of MIME type, integer of size in kilobytes, and the whole
- * element itself
+ * string of MIME type, integer of size in kilobytes, and the whole
+ * element itself
*
* TODO error handling is missing ... it's bleee
*/
function parseAttachmentLine(inElem) {
- var MIMEtype = "";
- var size = 0;
+ var MIMEtype = "";
+ var size = 0;
- // Skip over obsolete attachments
- if (inElem.getElementsByClassName("bz_obsolete").length > 0) {
- return ([]);
- }
+ // Skip over obsolete attachments
+ if (inElem.getElementsByClassName("bz_obsolete").length > 0) {
+ return ([]);
+ }
- // getting name of the attachment
- var attName = inElem.getElementsByTagName("b")[0].textContent.trim();
+ // getting name of the attachment
+ var attName = inElem.getElementsByTagName("b")[0].textContent.trim();
- // TODO probably could use url.URL object
- var aHrefsArr = inElem.getElementsByTagName("a");
- var aHref = Array.filter(aHrefsArr, function(x) {
- return x.textContent.trim() === "Details";
- })[0];
- var id = parseURL(aHref.getAttribute("href")).params.id;
+ // TODO probably could use url.URL object
+ var aHrefsArr = inElem.getElementsByTagName("a");
+ var aHref = Array.filter(aHrefsArr, function(x) {
+ return x.textContent.trim() === "Details";
+ })[0];
+ var id = parseURL(aHref.getAttribute("href")).params.id;
- // getting MIME type and size
- var stringArray = inElem.getElementsByClassName("bz_attach_extra_info")[0].textContent.
- replace(/[\n ()]+/g, " ").trim().split(", ");
- size = parseInt(stringArray[0], 10);
- MIMEtype = stringArray[1].split(" ")[0];
+ // getting MIME type and size
+ var stringArray = inElem.getElementsByClassName("bz_attach_extra_info")[0].textContent.
+ replace(/[\n ()]+/g, " ").trim().split(", ");
+ size = parseInt(stringArray[0], 10);
+ MIMEtype = stringArray[1].split(" ")[0];
- return [ attName, id, MIMEtype, size, inElem ];
+ return [ attName, id, MIMEtype, size, inElem ];
}
/**
@@ -680,17 +688,17 @@ function parseAttachmentLine(inElem) {
*
* @return Array of arrays, one for each attachments;
* each record has string name of the attachment, integer its id number,
- * string of MIME type, integer of size in kilobytes, and the whole
- * element itself
+ * string of MIME type, integer of size in kilobytes, and the whole
+ * element itself
*/
function getAttachments () {
- var outAtts = [];
- var atts = document.getElementById("attachment_table").
- getElementsByTagName("tr");
- for ( var i = 1, ii = atts.length - 1; i < ii; i++) {
- outAtts.push(parseAttachmentLine(atts[i]));
- }
- return outAtts;
+ var outAtts = [];
+ var atts = document.getElementById("attachment_table").
+ getElementsByTagName("tr");
+ for ( var i = 1, ii = atts.length - 1; i < ii; i++) {
+ outAtts.push(parseAttachmentLine(atts[i]));
+ }
+ return outAtts;
}
/**
@@ -699,19 +707,19 @@ function getAttachments () {
* @return String with the login name of the currently logged-in user
*/
function getLogin () {
- var lastLIElement = document.querySelector("#header ul.links li:last-of-type");
- var loginArr = lastLIElement.textContent.split("\n");
- var loginStr = loginArr[loginArr.length - 1].trim();
- return loginStr;
+ var lastLIElement = document.querySelector("#header ul.links li:last-of-type");
+ var loginArr = lastLIElement.textContent.split("\n");
+ var loginStr = loginArr[loginArr.length - 1].trim();
+ return loginStr;
}
function getSelection () {
- var text = "";
- var selectionObject = window.getSelection();
- if (selectionObject.rangeCount > 0) {
- text = selectionObject.getRangeAt(0).toString().trim();
- }
- return text;
+ var text = "";
+ var selectionObject = window.getSelection();
+ if (selectionObject.rangeCount > 0) {
+ text = selectionObject.getRangeAt(0).toString().trim();
+ }
+ return text;
}
/**
@@ -720,42 +728,42 @@ function getSelection () {
* @param text to be searched for
* @param component String with the component name (maybe latter regexp?)
* @param product (optional) string with the product name, if undefined,
- * search in all products
+ * search in all products
* @return None
*
*/
function queryInNewTab(text, component, product) {
- var urlStr = "https://" + window.location.hostname + "/buglist.cgi?query_format=advanced";
- if (product) {
- urlStr += "&product=" + product.trim();
- }
- if (component) {
- if ("equivalentComponents" in constantData) {
- var equivCompsArr = constantData.equivalentComponents.
- filter(function (REstr) {
- return new RegExp(REstr).test(getComponent());
- }, this);
- if (equivCompsArr.length > 0) {
- component = equivCompsArr[0];
- }
- }
- urlStr += "&component=" + component.trim();
- }
-
- // using more complicated query tables here, because they can be more easily
- // edited
- // for further investigative searches
- if (text) {
- text = encodeURIComponent(text.trim());
- var searchText = "&field0-0-0=longdesc&type0-0-0=substring&value0-0-0="
- + text
- + "&field0-0-1=attach_data.thedata&type0-0-1=substring&value0-0-1="
- + text
- + "&field0-0-2=status_whiteboard&type0-0-2=substring&value0-0-2="
- + text;
- urlStr += searchText;
- postMessage(new Message("OpenURLinTab", urlStr));
- }
+ var urlStr = "https://" + window.location.hostname + "/buglist.cgi?query_format=advanced";
+ if (product) {
+ urlStr += "&product=" + product.trim();
+ }
+ if (component) {
+ if ("equivalentComponents" in constantData) {
+ var equivCompsArr = constantData.equivalentComponents.
+ filter(function (REstr) {
+ return new RegExp(REstr).test(getComponent());
+ }, this);
+ if (equivCompsArr.length > 0) {
+ component = equivCompsArr[0];
+ }
+ }
+ urlStr += "&component=" + component.trim();
+ }
+
+ // using more complicated query tables here, because they can be more easily
+ // edited
+ // for further investigative searches
+ if (text) {
+ text = encodeURIComponent(text.trim());
+ var searchText = "&field0-0-0=longdesc&type0-0-0=substring&value0-0-0="
+ + text
+ + "&field0-0-1=attach_data.thedata&type0-0-1=substring&value0-0-1="
+ + text
+ + "&field0-0-2=status_whiteboard&type0-0-2=substring&value0-0-2="
+ + text;
+ urlStr += searchText;
+ postMessage(new Message("OpenURLinTab", urlStr));
+ }
}
/**
@@ -763,12 +771,13 @@ function queryInNewTab(text, component, product) {
* function this.queryInNewTab, and run it.
*/
function queryForSelection() {
- var text = getSelection();
- if (!text) {
- postMessage(new Message("GetClipboard", "queryLocal"));
- } else {
- queryInNewTab(text, getComponent(), getProduct());
- }
+ var text = getSelection();
+ if (!text) {
+ postMessage(new Message("GetClipboard", "queryLocal"));
+ }
+ else {
+ queryInNewTab(text, getComponent(), getProduct());
+ }
}
/**
@@ -778,17 +787,18 @@ function queryForSelection() {
* of the bugzilla should be added
*/
function addToCCList (who) {
- if (!who) {
- return ;
- }
- if (who === "self") {
- document.getElementById("addselfcc").checked = true;
- } else {
- clickMouse("cc_edit_area_showhide");
- if (!isInList(who, getCCList())) {
- addStuffToTextBox("newcc",who);
- }
+ if (!who) {
+ return ;
+ }
+ if (who === "self") {
+ document.getElementById("addselfcc").checked = true;
+ }
+ else {
+ clickMouse("cc_edit_area_showhide");
+ if (!isInList(who, getCCList())) {
+ addStuffToTextBox("newcc",who);
}
+ }
}
/**
@@ -797,58 +807,58 @@ function addToCCList (who) {
* @return Array with email addresses as Strings.
*/
function getCCList () {
- var CCListSelect = document.getElementById("cc");
- var outCCList = [];
- if (CCListSelect) {
- outCCList = Array.map(CCListSelect.options, function(item) {
- return item.value;
- });
- }
- return outCCList;
+ var CCListSelect = document.getElementById("cc");
+ var outCCList = [];
+ if (CCListSelect) {
+ outCCList = Array.map(CCListSelect.options, function(item) {
+ return item.value;
+ });
+ }
+ return outCCList;
}
function startup() {
- // First, preflight check ... if we are not logged in, there
- // is nothing we can do.
- var logoutLink = Array.some(document.links, function (x) {
- return x.search === "?logout=1" ;
- });
- if (!logoutLink) {
- return null; // This should just finish whole content script without
- // doing any harm to anybody.
- }
-
- // Prepare for query buttons
- // element ID brElementPlace_location is later used in JSON files
- // Stay with this add_comment element even if RH BZ upgrades, this seems
- // to be generally much more stable (even with other bugzillas, e.g. b.gnome.org)
- // then some getElementById.
- var commentArea = document.getElementsByName("add_comment")[0].parentNode;
- if (commentArea) {
- var brElementPlacer = commentArea.getElementsByTagName("br");
- brElementPlacer = brElementPlacer[0];
- if (brElementPlacer) {
- brElementPlacer.setAttribute("id","brElementPlacer_location");
- brElementPlacer.parentNode.insertBefore(document.createElement("br"),
- brElementPlacer);
- }
- }
-
- // TODO Probably could be ignored ... used only once on line 973 of rhbzpage.js
- // if (parseAbrtBacktraces && this.RE.Abrt.test(getSummary())) {
- // title = document.getElementById("short_desc_nonedit_display").textContent;
-
- // So, now we know we are logged in, so we can get to
- // the real work.
- setConfigurationButton();
- submitHandlerInstalled = false;
-
- checkComments();
-
- postMessage(new Message("GetInstalledPackages", {
- location: window.location.href,
- login: getLogin()
- }));
+ // First, preflight check ... if we are not logged in, there
+ // is nothing we can do.
+ var logoutLink = Array.some(document.links, function (x) {
+ return x.search === "?logout=1" ;
+ });
+ if (!logoutLink) {
+ return null; // This should just finish whole content script without
+ // doing any harm to anybody.
+ }
+
+ // Prepare for query buttons
+ // element ID brElementPlace_location is later used in JSON files
+ // Stay with this add_comment element even if RH BZ upgrades, this seems
+ // to be generally much more stable (even with other bugzillas, e.g. b.gnome.org)
+ // then some getElementById.
+ var commentArea = document.getElementsByName("add_comment")[0].parentNode;
+ if (commentArea) {
+ var brElementPlacer = commentArea.getElementsByTagName("br");
+ brElementPlacer = brElementPlacer[0];
+ if (brElementPlacer) {
+ brElementPlacer.setAttribute("id","brElementPlacer_location");
+ brElementPlacer.parentNode.insertBefore(document.createElement("br"),
+ brElementPlacer);
+ }
+ }
+
+ // TODO Probably could be ignored ... used only once on line 973 of rhbzpage.js
+ // if (parseAbrtBacktraces && this.RE.Abrt.test(getSummary())) {
+ // title = document.getElementById("short_desc_nonedit_display").textContent;
+
+ // So, now we know we are logged in, so we can get to
+ // the real work.
+ setConfigurationButton();
+ submitHandlerInstalled = false;
+
+ checkComments();
+
+ postMessage(new Message("GetInstalledPackages", {
+ location: window.location.href,
+ login: getLogin()
+ }));
}
startup();