summaryrefslogtreecommitdiffstats
path: root/extensions/MyDashboard/web/js/prod_comp_search.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/MyDashboard/web/js/prod_comp_search.js')
-rw-r--r--extensions/MyDashboard/web/js/prod_comp_search.js127
1 files changed, 127 insertions, 0 deletions
diff --git a/extensions/MyDashboard/web/js/prod_comp_search.js b/extensions/MyDashboard/web/js/prod_comp_search.js
new file mode 100644
index 000000000..db9d47c5c
--- /dev/null
+++ b/extensions/MyDashboard/web/js/prod_comp_search.js
@@ -0,0 +1,127 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This Source Code Form is "Incompatible With Secondary Licenses", as
+ * defined by the Mozilla Public License, v. 2.0.
+ */
+
+// Product and component search to file a new bug
+YUI({
+ base: 'js/yui3/',
+ combine: false
+}).use("node", "json-stringify", "autocomplete", "escape",
+ "datasource-io", "datasource-jsonschema", "array-extras", function (Y) {
+ var counter = 0,
+ format = '',
+ cloned_bug_id = '',
+ dataSource = null,
+ autoComplete = null;
+
+ var resultListFormat = function(query, results) {
+ Y.log(results);
+ return Y.Array.map(results, function (result) {
+ var data = result.raw;
+ return Y.Escape.html(data.product) + " :: " +
+ Y.Escape.html(data.component);
+ });
+ };
+
+ var dataSource = new Y.DataSource.IO({
+ source: 'jsonrpc.cgi',
+ ioConfig: {
+ method: "POST",
+ headers: { 'Content-Type': 'application/json' }
+ }
+ });
+
+ dataSource.plug(Y.Plugin.DataSourceJSONSchema, {
+ schema: {
+ resultsListLocator : "result.products",
+ resultFields : [ "product", "component" ]
+ }
+ });
+
+ var input = Y.one('#prod_comp_search');
+
+ input.plug(Y.Plugin.AutoComplete, {
+ enableCache: true,
+ source: dataSource,
+ minQueryLength: 3,
+ queryDelay: 0.05,
+ resultFormatter: resultListFormat,
+ maxResultsDisplayed: 25,
+ suppressInputUpdate: true,
+ maxResults: 25,
+ requestTemplate: function (query) {
+ counter = counter + 1;
+ var json_object = {
+ version: "1.1",
+ method : "MyDashboard.prod_comp_search",
+ id : counter,
+ params : { search: query }
+ };
+ return Y.JSON.stringify(json_object);
+ },
+// resultListLocator: 'response.result.products',
+// resultListLocator: 'result.products'
+// resultListLocator: function (response) {
+// Y.log(response);
+// return (response && response.data && response.data.result.products) || [];
+// },
+// // Makes sure an array is returned even on an error.
+// if (response.error) {
+// return [];
+// }
+//
+// Y.log(response);
+//
+// return response.query.results;
+//
+// return [{
+// product: "Foo",
+// component: "Bar"
+// }];
+// var query = response.query.results.json,
+// addresses;
+//
+// if (query.status !== 'OK') {
+// return [];
+// }
+//
+// // Grab the actual addresses from the YQL query.
+// addresses = query.results;
+//
+// // Makes sure an array is always returned.
+// return addresses.length > 0 ? addresses : [addresses];
+// },
+ });
+
+ input.ac.on('query', function() {
+ Y.one("#prod_comp_throbber").removeClass('bz_default_hidden');
+ });
+
+ input.ac.after('results', function() {
+ Y.one("#prod_comp_throbber").addClass('bz_default_hidden');
+ });
+
+ input.ac.on('select', function (itemNode, result) {
+ var url = "enter_bug.cgi?product=" + encodeURIComponent(result.component) +
+ "&component=" + encodeURIComponent(result.product);
+ Y.log(url);
+ //autoComplete.dataReturnEvent.subscribe(function(type, args) {
+ // args[0].autoHighlight = args[2].length == 1;
+ //});
+// doBeforeLoadData: function(sQuery, oResponse, oPayload) {
+// Y.one("#prod_comp_throbber").addClass('bz_default_hidden');
+// return true;
+// }
+ });
+
+// autoComplete.textboxFocusEvent.subscribe(function () {
+// var input = Y.one(field);
+// if (input.value && input.value.length > 3) {
+// sendQuery(input.value);
+// }
+// });
+});