annotate js/bugzilla.js @ 72:0eab9a3ff12f

replaced my last commit w/ a serial xhr queue, so that the dashboard requests are serialized but other ones aren't.
author Atul Varma <avarma@mozilla.com>
date Sun, 25 Apr 2010 18:21:34 -0700
parents 51c1829956d9
children d1f7c1d38abe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 var Bugzilla = {
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2 BASE_URL: "https://api-dev.bugzilla.mozilla.org/latest",
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 BASE_UI_URL: "https://bugzilla.mozilla.org",
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4 DEFAULT_OPTIONS: {
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 method: "GET"
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6 },
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 getShowBugURL: function Bugzilla_getShowBugURL(id) {
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 return this.BASE_UI_URL + "/show_bug.cgi?id=" + id;
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9 },
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10 queryString: function Bugzilla_queryString(data) {
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 var parts = [];
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 for (name in data) {
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 var values = data[name];
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14 if (!values.forEach)
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15 values = [values];
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 values.forEach(
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17 function(value) {
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
18 parts.push(encodeURI(name) + "=" + encodeURI(value));
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19 });
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 }
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 return parts.join("&");
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 },
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 ajax: function Bugzilla_ajax(options) {
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24 var newOptions = {__proto__: this.DEFAULT_OPTIONS};
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 for (name in options)
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 newOptions[name] = options[name];
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 options = newOptions;
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 function onLoad() {
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 options.success(JSON.parse(xhr.responseText));
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31 }
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32
69
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents: 18
diff changeset
33 var xhr = options.xhr ? options.xhr : new XMLHttpRequest();
0
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 var url = this.BASE_URL + options.url;
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 if (options.data)
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37 url = url + "?" + this.queryString(options.data);
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 xhr.open(options.method, url);
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 xhr.setRequestHeader("Accept", "application/json");
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40 xhr.setRequestHeader("Content-Type", "application/json");
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 xhr.addEventListener("load", onLoad, false);
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 xhr.send(null);
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 return xhr;
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 },
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 getBug: function Bugzilla_getBug(id, cb) {
72
0eab9a3ff12f replaced my last commit w/ a serial xhr queue, so that the dashboard requests are serialized but other ones aren't.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
46 return this.ajax({url: "/bug/" + id,
0eab9a3ff12f replaced my last commit w/ a serial xhr queue, so that the dashboard requests are serialized but other ones aren't.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
47 success: cb});
0
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 },
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 search: function Bugzilla_search(query, cb) {
72
0eab9a3ff12f replaced my last commit w/ a serial xhr queue, so that the dashboard requests are serialized but other ones aren't.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
50 return this.ajax({url: "/bug",
0eab9a3ff12f replaced my last commit w/ a serial xhr queue, so that the dashboard requests are serialized but other ones aren't.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
51 data: query,
0eab9a3ff12f replaced my last commit w/ a serial xhr queue, so that the dashboard requests are serialized but other ones aren't.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
52 success: cb});
0
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 }
32d83aaf1afe Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54 };