From 389997c33d6e66768e3effa407939b7a94612a42 Mon Sep 17 00:00:00 2001 From: Matěj Cepl Date: Thu, 29 Apr 2010 17:33:51 +0200 Subject: More rearrangements to push more stuff to generic BZPage object. --- bugzillaBugTriage.js | 359 ++++++++++++++++++++++++++------------------------- 1 file changed, 180 insertions(+), 179 deletions(-) diff --git a/bugzillaBugTriage.js b/bugzillaBugTriage.js index 6dc00a9..d8f2ebf 100644 --- a/bugzillaBugTriage.js +++ b/bugzillaBugTriage.js @@ -147,7 +147,7 @@ XMLRPCMessage.prototype.xml = function() { xml += "\n"; xml += "" - + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data), + + this.getParamXML(this.dataTypeOf(data), data) + "\n"; xml += "\n"; @@ -224,7 +224,7 @@ XMLRPCMessage.prototype.doArrayXML = function(data) { var xml = "\n"; for ( var i = 0; i < data.length; i++) { xml += "" - + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data[i]), + + this.getParamXML(this.dataTypeOf(data[i]), data[i]) + "\n"; } xml += "\n"; @@ -237,7 +237,7 @@ XMLRPCMessage.prototype.doStructXML = function(data) { xml += "\n"; xml += "" + i + "\n"; xml += "" - + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data[i]), + + this.getParamXML(this.dataTypeOf(data[i]), data[i]) + "\n"; xml += "\n"; } @@ -249,19 +249,19 @@ XMLRPCMessage.prototype.getParamXML = function(type, data) { var xml; switch (type) { case "date": - xml = XMLRPCMessage.doDateXML(data); + xml = this.doDateXML(data); break; case "array": - xml = XMLRPCMessage.doArrayXML(data); + xml = this.doArrayXML(data); break; case "struct": - xml = XMLRPCMessage.doStructXML(data); + xml = this.doStructXML(data); break; case "boolean": - xml = XMLRPCMessage.doBooleanXML(data); + xml = this.doBooleanXML(data); break; default: - xml = XMLRPCMessage.doValueXML(type, data); + xml = this.doValueXML(type, data); break; } return xml; @@ -723,6 +723,21 @@ BZPage.prototype.clickMouse = function(target) { target.dispatchEvent(localEvent); }; +/** + * format date to be in ISO format (just day part) + * + * @param date + * @return string with the formatted date + */ +BZPage.prototype.getISODate = function (dateStr) { + function pad(n) { + return n < 10 ? '0' + n : n; + } + var date = new Date(dateStr); + return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + + pad(date.getDate()); +}; + /** * select element of the array where regexp in the first element matches second * parameter of this function @@ -747,6 +762,163 @@ BZPage.prototype.filterByRegexp = function(list, chosingMark) { } }; +/** + * Add text to the text box (comment box or status whiteboard) + * + * @param id + * string with the id of the element + * @param string2BAdded + * string to be added to the comment box + * + * @return none + */ +BZPage.prototype.addTextToTextBox = function(id, string2BAdded) { + var textBox = this.doc.getElementById(id); + var separator = ", "; + if (textBox.tagName.toLowerCase() === "textarea") { + separator = "\n\n"; + } else { + // don't add string if it is already there + if (textBox.value.indexOf(string2BAdded) != -1) { + return; + } + } + + // don't remove the current content of the comment box, + // just behave accordingly + if (textBox.value.length > 0) { + textBox.value = textBox.value.trim() + separator; + } + textBox.value = textBox.value + string2BAdded; +}; + +/** + * Add new keyword among the keywords. + * + * @param str + * string with the new keyword + * @return none + * + * Checks for the existing keywords. + */ +BZPage.prototype.addKeyword = function(str) { + this.addTextToTextBox("keywords", str); +}; + +/** + * generalized hasKeyword ... search in the value of the box with given id + * + * @param id + * String with ID of the element we want to check + * @param str + * String to be searched for + * @return Boolean found? + */ +BZPage.prototype.idContainsWord = function(id, str) { + try { + var kwd = this.doc.getElementById(id).value; + } catch (e) { + // For those who don't have particular element at all or if it is empty + return false; + } + console.log("id = " + id + ", kwd = " + kwd.trim()); + return (kwd.trim().indexOf(str) != -1); +}; + +/** + * Check for the presence of a keyword + * + * @param str + * string with the keyword + * @return Boolean + */ +BZPage.prototype.hasKeyword = function(str) { + return (this.idContainsWord('keywords', str)); +}; + +/** + * Set additional keyword if it isn't there + * + * @param str + * string with the keyword + * @return none + */ +BZPage.prototype.setKeyword = function(str) { + this.addTextToTextBox('keywords', str); +}; + +BZPage.prototype.getOptionValue = function(id) { + // Some special bugs don't have version for example + try { + return this.doc.getElementById(id).value; + } catch (e) { + console.error("Failed to find element with id = " + id); + return "#NA"; + } +}; + +/** + * Generic function to add new button to the page. Actually copies new button + * from the old one (in order to have the same look-and-feel, etc. + * + * @param originalLocation + * object after which the new button will be added + * @param newId + * string with the id of the new button; has to be unique in whole + * page + * @param newLabel + * string with the label which will be shown to user + * @param commentString + * string with comment to be added to the comment box + * @param nState + * string with the new state bug should switch to (see + * generalPurposeCureForAllDisease function for details) + * @param secPar + * string with second parameter for generalPurposeForAllDisease + * @param doSubmit + * bool optional whether the button should submit whole page (default + * true) + * + * @return none + */ +BZPage.prototype.addNewButton = function(originalLocation, newId, newLabel, + commentString, nState, secPar, doSubmit, after) { + var that = this; + var commStr = ""; + if (doSubmit === undefined) { // missing optional argument + doSubmit = false; + } + if (after === undefined) { // missing optional argument + after = false; + } + if (msgStrs[commentString]) { + commStr = msgStrs[commentString]; + } + var newButton = this.doc.createElement("input"); + newButton.setAttribute("id", newId); + if (doSubmit) { + newButton.setAttribute("type", "submit"); + } else { + newButton.setAttribute("type", "button"); + } + newButton.value = newLabel; + newButton.addEventListener("click", function(evt) { + that.generalPurposeCureForAllDisease(commStr, nState, secPar); + }, false); + + if (after) { + originalLocation.parentNode.insertBefore(newButton, + originalLocation.nextSibling); + originalLocation.parentNode.insertBefore(this.doc + .createTextNode("\u00A0"), newButton); + } else { + originalLocation.parentNode.insertBefore(newButton, originalLocation); + originalLocation.parentNode.insertBefore(this.doc + .createTextNode("\u00A0"), originalLocation); + } +}; + + // ==================================================================================== // MozillaBugzilla object @@ -1013,73 +1185,6 @@ function RHBugzillaPage(doc) { RHBugzillaPage.prototype = BZPage.prototype.create(); -/** - * format date to be in ISO format (just day part) - * - * @param date - * @return string with the formatted date - */ -RHBugzillaPage.prototype.getISODate = function (dateStr) { - function pad(n) { - return n < 10 ? '0' + n : n; - } - var date = new Date(dateStr); - return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' - + pad(date.getDate()); -}; - -/** - * generalized hasKeyword ... search in the value of the box with given id - * - * @param id - * String with ID of the element we want to check - * @param str - * String to be searched for - * @return Boolean found? - */ -RHBugzillaPage.prototype.idContainsWord = function(id, str) { - try { - var kwd = this.doc.getElementById(id).value; - } catch (e) { - // For those who don't have particular element at all or if it is empty - return false; - } - console.log("id = " + id + ", kwd = " + kwd.trim()); - return (kwd.trim().indexOf(str) != -1); -}; - -/** - * Check for the presence of a keyword - * - * @param str - * string with the keyword - * @return Boolean - */ -RHBugzillaPage.prototype.hasKeyword = function(str) { - return (this.idContainsWord('keywords', str)); -}; - -/** - * Set additional keyword if it isn't there - * - * @param str - * string with the keyword - * @return none - */ -RHBugzillaPage.prototype.setKeyword = function(str) { - this.addTextToTextBox('keywords', str); -}; - -RHBugzillaPage.prototype.getOptionValue = function(id) { - // Some special bugs don't have version for example - try { - return this.doc.getElementById(id).value; - } catch (e) { - console.error("Failed to find element with id = " + id); - return "#NA"; - } -}; - /* Offline supporting functions */ /** * @@ -1262,49 +1367,6 @@ RHBugzillaPage.prototype.getVersion = function() { return verNo; }; -/** - * Add text to the text box (comment box or status whiteboard) - * - * @param id - * string with the id of the element - * @param string2BAdded - * string to be added to the comment box - * - * @return none - */ -RHBugzillaPage.prototype.addTextToTextBox = function(id, string2BAdded) { - var textBox = this.doc.getElementById(id); - var separator = ", "; - if (textBox.tagName.toLowerCase() === "textarea") { - separator = "\n\n"; - } else { - // don't add string if it is already there - if (textBox.value.indexOf(string2BAdded) != -1) { - return; - } - } - - // don't remove the current content of the comment box, - // just behave accordingly - if (textBox.value.length > 0) { - textBox.value = textBox.value.trim() + separator; - } - textBox.value = textBox.value + string2BAdded; -}; - -/** - * Add new keyword among the keywords. - * - * @param str - * string with the new keyword - * @return none - * - * Checks for the existing keywords. - */ -RHBugzillaPage.prototype.addKeyword = function(str) { - this.addTextToTextBox("keywords", str); -}; - RHBugzillaPage.prototype.commentsWalker = function(fce) { var comments = this.doc.getElementById("comments").getElementsByClassName( "bz_comment"); @@ -1524,67 +1586,6 @@ RHBugzillaPage.prototype.fillInWhiteBoard = function(iLine, driverStr) { this.doc.getElementById("chipmagic").style.display = "none"; }; -/** - * Generic function to add new button to the page. Actually copies new button - * from the old one (in order to have the same look-and-feel, etc. - * - * @param originalLocation - * object after which the new button will be added - * @param newId - * string with the id of the new button; has to be unique in whole - * page - * @param newLabel - * string with the label which will be shown to user - * @param commentString - * string with comment to be added to the comment box - * @param nState - * string with the new state bug should switch to (see - * generalPurposeCureForAllDisease function for details) - * @param secPar - * string with second parameter for generalPurposeForAllDisease - * @param doSubmit - * bool optional whether the button should submit whole page (default - * true) - * - * @return none - */ -RHBugzillaPage.prototype.addNewButton = function(originalLocation, newId, newLabel, - commentString, nState, secPar, doSubmit, after) { - var that = this; - var commStr = ""; - if (doSubmit === undefined) { // missing optional argument - doSubmit = false; - } - if (after === undefined) { // missing optional argument - after = false; - } - if (msgStrs[commentString]) { - commStr = msgStrs[commentString]; - } - var newButton = this.doc.createElement("input"); - newButton.setAttribute("id", newId); - if (doSubmit) { - newButton.setAttribute("type", "submit"); - } else { - newButton.setAttribute("type", "button"); - } - newButton.value = newLabel; - newButton.addEventListener("click", function(evt) { - that.generalPurposeCureForAllDisease(commStr, nState, secPar); - }, false); - - if (after) { - originalLocation.parentNode.insertBefore(newButton, - originalLocation.nextSibling); - originalLocation.parentNode.insertBefore(this.doc - .createTextNode("\u00A0"), newButton); - } else { - originalLocation.parentNode.insertBefore(newButton, originalLocation); - originalLocation.parentNode.insertBefore(this.doc - .createTextNode("\u00A0"), originalLocation); - } -}; - /** * Get attached Xorg.0.log, parse it and find the value of chip. Does not fill * the whiteboard itself, just adds button to do so,paramList so that slow -- cgit