diff options
author | Matěj Cepl <mcepl@redhat.com> | 2011-03-17 00:40:09 +0100 |
---|---|---|
committer | Matěj Cepl <mcepl@redhat.com> | 2011-03-25 14:24:45 +0100 |
commit | 94d80944f20fd1bed0b522613b97762cdb811655 (patch) | |
tree | 6c3c5c7ccf93e0d37542079412415bb0c3681596 /data/lib/queries.js | |
parent | bcf1996cbdd2118a88226b24a4c78a08fe21749b (diff) | |
download | bugzilla-triage-94d80944f20fd1bed0b522613b97762cdb811655.tar.gz |
First ideas about splitting queries to separate module.
Diffstat (limited to 'data/lib/queries.js')
-rw-r--r-- | data/lib/queries.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/data/lib/queries.js b/data/lib/queries.js new file mode 100644 index 0000000..b43b616 --- /dev/null +++ b/data/lib/queries.js @@ -0,0 +1,70 @@ +// Released under the MIT/X11 license +// http://www.opensource.org/licenses/mit-license.php +"use strict"; + +function getSelection () { + var text = ""; + var selectionObject = window.getSelection(); + if (selectionObject.rangeCount > 0) { + text = selectionObject.getRangeAt(0).toString().trim(); + } + return text; +} + + +/** + * Opens a new tab with a query for the given text in the selected component + * + * @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 + * @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)); + } +} + +/** + * Get the text to search for and prepare other things for the real executive + * function this.queryInNewTab, and run it. + */ +function queryForSelection() { + var text = getSelection(); + if (!text) { + postMessage(new Message("GetClipboard", "queryLocal")); + } else { + queryInNewTab(text, getComponent(), getProduct()); + } +} |