aboutsummaryrefslogtreecommitdiffstats
path: root/data/lib/queries.js
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@redhat.com>2011-03-17 00:40:09 +0100
committerMatěj Cepl <mcepl@redhat.com>2011-06-05 14:44:00 +0200
commit75815608b97febce430a5f85b7eb7ce737470a12 (patch)
tree235f174d0a220251ec4ee8b4d434b9c01e17b460 /data/lib/queries.js
parent3fe9f14f10381242a193d91f7dc8ea0307091f8e (diff)
downloadbugzilla-triage-75815608b97febce430a5f85b7eb7ce737470a12.tar.gz
First ideas about splitting queries to separate module.
Diffstat (limited to 'data/lib/queries.js')
-rw-r--r--data/lib/queries.js70
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());
+ }
+}