annotate js/modules/app.js @ 63:88b856b1353b

added file-bug dialog
author Atul Varma <avarma@mozilla.com>
date Sun, 25 Apr 2010 08:30:50 -0700
parents 68b4c80e884f
children a196cc29fffb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
1 Require.modules["app/login"] = function(exports) {
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
2 var callbacks = [];
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
3 var username;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
4 var password;
59
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
5 var passwordProvider;
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
6
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
7 exports.setPasswordProvider = function setPasswordProvider(pp) {
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
8 passwordProvider = pp;
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
9 };
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
10
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
11 exports.whenChanged = function whenChanged(cb) {
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
12 callbacks.push(cb);
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
13 };
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
14
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
15 exports.get = function get() {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
16 var isLoggedIn = (username && username != "");
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
17 var isAuthenticated = (isLoggedIn && password && password != "");
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
18
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
19 return {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
20 username: username,
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
21 password: password,
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
22 isLoggedIn: isLoggedIn,
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
23 isAuthenticated: isAuthenticated
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
24 };
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
25 };
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
26
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
27 exports.set = function set(newUsername, newPassword) {
59
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
28 if ((newUsername && newUsername != "") &&
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
29 (!newPassword || newPassword == "") &&
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
30 (passwordProvider))
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
31 newPassword = passwordProvider(newUsername);
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
32
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
33 if (newUsername == username && newPassword == password)
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
34 return;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
35
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
36 username = newUsername;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
37 password = newPassword;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
38
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
39 var info = exports.get();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
40
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
41 callbacks.forEach(function(cb) { cb(info); });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
42 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
43 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
44
58
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
45 Require.modules["app/bugzilla-auth"] = function(exports, require) {
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
46 exports.Bugzilla = {
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
47 ajax: function ajax(options) {
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
48 var user = require("app/login").get();
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
49
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
50 if (user.isAuthenticated) {
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
51 if (!options.data)
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
52 options.data = {};
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
53 options.data.username = user.username;
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
54 options.data.password = user.password;
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
55 }
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
56
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
57 return this.__proto__.ajax.call(this, options);
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
58 },
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
59 __proto__: require("bugzilla")
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
60 };
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
61 };
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
62
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
63 Require.modules["app/ui/login-form"] = function(exports, require) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
64 var $ = require("jQuery");
59
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
65 var cachedUsername = $("#login .username").val();
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
66 var cachedPassword = $("#login .password").val();
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
67
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
68 $("#login form").submit(
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
69 function(event) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
70 event.preventDefault();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
71 require("app/login").set($("#login .username").val(),
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
72 $("#login .password").val());
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
73 $("#login").fadeOut();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
74 });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
75
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
76 require("app/login").whenChanged(
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
77 function maybeChangeUsernameField(user) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
78 var usernameField = $("#login .username");
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
79 if (user.isLoggedIn && usernameField.val() != user.username)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
80 usernameField.val(user.username);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
81 });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
82
59
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
83 require("app/login").setPasswordProvider(
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
84 function maybeGetCachedPasswordFromForm(username) {
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
85 if (cachedUsername == username)
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
86 return cachedPassword;
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
87 return "";
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
88 });
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
89
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
90 require("app/ui").whenStarted(
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
91 function maybeShowLoginForm() {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
92 if (!require("app/login").get().isLoggedIn)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
93 $("#login").fadeIn();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
94 });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
95
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
96 exports.init = function init() {
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
97 };
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
98 };
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
99
63
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
100 Require.modules["app/ui/file-bug"] = function(exports, require) {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
101 const EM_DASH = "\u2014";
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
102
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
103 var $ = require("jQuery");
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
104 var cache = require("cache");
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
105 var bugzilla = require("app/bugzilla-auth").Bugzilla;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
106 var window = require("window");
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
107 var config = cache.get("configuration");
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
108 var needToFetchConfig = config ? false : true;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
109 var categories;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
110 var queuedRespond;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
111
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
112 function buildCategories() {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
113 categories = [];
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
114 for (product in config.product)
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
115 for (component in config.product[product].component)
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
116 categories.push(product + EM_DASH + component);
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
117 }
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
118
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
119 function fetchConfig() {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
120 bugzilla.ajax({url: "/configuration",
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
121 data: {flags: 0},
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
122 success: function(result) {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
123 config = result;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
124 cache.set("configuration", result);
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
125 if (queuedRespond)
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
126 queuedRespond();
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
127 }});
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
128 }
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
129
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
130 var categoryOptions = {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
131 minLength: 2,
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
132 source: function(request, response) {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
133 function respond() {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
134 queuedRespond = null;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
135
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
136 var suggs = [];
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
137 var terms = request.term.split(" ");
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
138
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
139 if (!categories)
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
140 buildCategories();
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
141
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
142 categories.forEach(
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
143 function(category) {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
144 for (var i = 0; i < terms.length; i++)
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
145 if (!category.match(terms[i], "i"))
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
146 return;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
147 suggs.push(category);
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
148 });
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
149
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
150 response(suggs);
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
151 };
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
152
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
153 if (!config) {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
154 queuedRespond = respond;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
155 if (needToFetchConfig) {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
156 needToFetchConfig = false;
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
157 fetchConfig();
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
158 }
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
159 } else
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
160 respond();
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
161 }
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
162 };
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
163
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
164 $("input#category").autocomplete(categoryOptions);
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
165 $("#file-bug").submit(
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
166 function(event) {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
167 event.preventDefault();
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
168 var parts = $("input#category").val().split(EM_DASH);
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
169 window.open(bugzilla.BASE_UI_URL + "/enter_bug.cgi?" +
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
170 "product=" + escape(parts[0]) + "&" +
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
171 "component=" + escape(parts[1]));
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
172 });
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
173
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
174 exports.init = function init() {
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
175 };
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
176 };
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
177
60
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
178 Require.modules["app/ui/find-user"] = function(exports, require) {
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
179 var $ = require("jQuery");
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
180 var bugzilla = require("app/bugzilla-auth").Bugzilla;
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
181 var window = require("window");
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
182 var currReq;
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
183
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
184 var options = {
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
185 minLength: 2,
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
186 delay: 1000,
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
187 source: function(request, response) {
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
188 function success(result) {
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
189 currReq = null;
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
190 var suggs = [];
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
191 result.users.forEach(
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
192 function(user) {
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
193 suggs.push({label: user.real_name + " (" + user.name + ")",
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
194 value: user.name});
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
195 });
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
196 response(suggs);
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
197 }
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
198 if (currReq)
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
199 currReq.abort();
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
200 currReq = bugzilla.ajax({url: "/user",
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
201 data: {match: request.term},
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
202 success: success});
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
203 }
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
204 };
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
205
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
206 $("#find-user .query").autocomplete(options);
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
207 $("#find-user form").submit(
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
208 function(event) {
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
209 event.preventDefault();
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
210 var username = $("#find-user .query").val();
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
211 var url = require("app/ui/hash").usernameToHash(username);
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
212 window.open(url);
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
213 });
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
214
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
215 exports.init = function init() {
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
216 };
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
217 };
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
218
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
219 Require.modules["app/ui"] = function(exports, require) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
220 var $ = require("jQuery");
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
221 var startupCallbacks = [];
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
222
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
223 require("app/login").whenChanged(
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
224 function changeUI(user) {
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
225 var show = {
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
226 "no-login": false,
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
227 "login": false,
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
228 "auth-login": false,
56
4728c2db6fd6 changed 'Log In' to 'Authenticate' if user is logged in but unauthenticated.
Atul Varma <avarma@mozilla.com>
parents: 55
diff changeset
229 "no-auth": false,
4728c2db6fd6 changed 'Log In' to 'Authenticate' if user is logged in but unauthenticated.
Atul Varma <avarma@mozilla.com>
parents: 55
diff changeset
230 "no-auth-login": false
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
231 };
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
232
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
233 if (user.isLoggedIn) {
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
234 show["login"] = true;
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
235 if (user.isAuthenticated)
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
236 show["auth-login"] = true;
56
4728c2db6fd6 changed 'Log In' to 'Authenticate' if user is logged in but unauthenticated.
Atul Varma <avarma@mozilla.com>
parents: 55
diff changeset
237 else {
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
238 show["no-auth"] = true;
56
4728c2db6fd6 changed 'Log In' to 'Authenticate' if user is logged in but unauthenticated.
Atul Varma <avarma@mozilla.com>
parents: 55
diff changeset
239 show["no-auth-login"] = true;
4728c2db6fd6 changed 'Log In' to 'Authenticate' if user is logged in but unauthenticated.
Atul Varma <avarma@mozilla.com>
parents: 55
diff changeset
240 }
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
241 } else {
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
242 show["no-login"] = true;
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
243 show["no-auth"] = true;
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
244 }
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
245
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
246 for (classSuffix in show) {
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
247 var query = $(".requires-" + classSuffix);
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
248 if (show[classSuffix])
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
249 query.show();
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
250 else
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
251 query.hide();
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
252 }
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
253 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
254
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
255 $("#header .menu li").click(
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
256 function openDialog(event) {
51
3af7cd6ae638 changed menu items to use data-dialog attr instead of title, which sets tooltips.
Atul Varma <avarma@mozilla.com>
parents: 50
diff changeset
257 var name = this.getAttribute("data-dialog");
3af7cd6ae638 changed menu items to use data-dialog attr instead of title, which sets tooltips.
Atul Varma <avarma@mozilla.com>
parents: 50
diff changeset
258 var dialog = $("#" + name);
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
259 if (dialog.length == 0)
51
3af7cd6ae638 changed menu items to use data-dialog attr instead of title, which sets tooltips.
Atul Varma <avarma@mozilla.com>
parents: 50
diff changeset
260 throw new Error("dialog not found: " + name);
62
68b4c80e884f focus on first input element of newly opened dialogs
Atul Varma <avarma@mozilla.com>
parents: 60
diff changeset
261 dialog.fadeIn(
68b4c80e884f focus on first input element of newly opened dialogs
Atul Varma <avarma@mozilla.com>
parents: 60
diff changeset
262 function() {
68b4c80e884f focus on first input element of newly opened dialogs
Atul Varma <avarma@mozilla.com>
parents: 60
diff changeset
263 dialog.find("input:first").focus();
68b4c80e884f focus on first input element of newly opened dialogs
Atul Varma <avarma@mozilla.com>
parents: 60
diff changeset
264 });
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
265 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
266
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
267 $(".dialog").click(
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
268 function dismissDialogOnOutsideClick(event) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
269 if (event.target == this)
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
270 $(this).fadeOut();
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
271 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
272
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
273 function setupDocumentTitleChanger(document) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
274 const BASE_TITLE = document.title;
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
275
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
276 require("app/login").whenChanged(
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
277 function changeTitle(user) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
278 var title = BASE_TITLE;
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
279
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
280 if (user.isLoggedIn)
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
281 title = user.username + "'s " + BASE_TITLE;
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
282
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
283 if (document.title != title) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
284 document.title = title;
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
285 $("#header .title").text(title);
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
286 }
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
287 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
288 };
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
289
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
290 exports.whenStarted = function whenStarted(cb) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
291 startupCallbacks.push(cb);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
292 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
293
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
294 exports.init = function init(document) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
295 setupDocumentTitleChanger(document);
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
296
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
297 require("app/ui/dashboard").init();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
298 require("app/ui/login-form").init();
60
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
299 require("app/ui/find-user").init();
63
88b856b1353b added file-bug dialog
Atul Varma <avarma@mozilla.com>
parents: 62
diff changeset
300 require("app/ui/file-bug").init();
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
301 require("app/ui/hash").init(document);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
302
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
303 startupCallbacks.forEach(function(cb) { cb(); });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
304 startupCallbacks.splice(0);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
305 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
306 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
307
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
308 Require.modules["app/ui/hash"] = function(exports, require) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
309 function usernameFromHash(location) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
310 if (location.hash) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
311 var match = location.hash.match(/#username=(.*)/);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
312 if (match)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
313 return unescape(match[1]);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
314 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
315 return "";
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
316 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
317
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
318 function setLoginFromHash(location) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
319 var username = usernameFromHash(location);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
320
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
321 var user = require("app/login").get();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
322 if (user.username != username)
59
440c8e2d776d dashboard now auto-authenticated via cached form field password on firefox, if available.
Atul Varma <avarma@mozilla.com>
parents: 58
diff changeset
323 require("app/login").set(username);
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
324 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
325
60
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
326 exports.usernameToHash = function usernameToHash(username) {
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
327 return "#username=" + escape(username);
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
328 };
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
329
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
330 exports.init = function init(document) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
331 require("app/login").whenChanged(
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
332 function(user) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
333 if (user.isLoggedIn) {
60
07d3d1560b93 added find a user functionality
Atul Varma <avarma@mozilla.com>
parents: 59
diff changeset
334 var hash = exports.usernameToHash(user.username);
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
335 if (document.location.hash != hash)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
336 document.location.hash = hash;
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
337 } else
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
338 document.location.hash = "";
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
339 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
340
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
341 var window = document.defaultView;
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
342
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
343 function onHashChange() {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
344 setLoginFromHash(document.location);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
345 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
346
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
347 if ("onhashchange" in window)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
348 window.addEventListener("hashchange", onHashChange, false);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
349 else
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
350 window.setInterval(onHashChange, 1000);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
351
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
352 onHashChange();
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
353 };
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
354 };
47
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
355
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
356 Require.modules["app/ui/dashboard"] = function(exports, require) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
357 var $ = require("jQuery");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
358 var cache = require("cache");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
359 var dateUtils = require("date-utils");
58
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
360 var bugzilla = require("app/bugzilla-auth").Bugzilla;
47
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
361 var window = require("window");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
362
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
363 function sortByLastChanged(bugs) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
364 var lctimes = {};
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
365
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
366 bugs.forEach(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
367 function(bug) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
368 lctimes[bug.id] = dateUtils.dateFromISO8601(bug.last_change_time);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
369 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
370
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
371 function compare(a, b) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
372 var alc = lctimes[a.id];
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
373 var blc = lctimes[b.id];
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
374
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
375 if (alc < blc)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
376 return -1;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
377 if (alc > blc)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
378 return 1;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
379 return 0;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
380 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
381
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
382 bugs.sort(compare);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
383 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
384
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
385 function updatePrettyDates(query) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
386 query.find(".last-changed").each(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
387 function() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
388 var lcTime = $(this).attr("data-last-change");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
389 $(this).text(dateUtils.prettyDate(lcTime));
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
390 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
391 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
392
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
393 const PRETTY_DATE_UPDATE_INTERVAL = 1000 * 60;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
394
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
395 window.setInterval(function() { updatePrettyDates($("#reports")); },
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
396 PRETTY_DATE_UPDATE_INTERVAL);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
397
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
398 function showBugs(query, bugs) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
399 var table = $("#templates .bugs").clone();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
400 var rowTemplate = table.find(".bug-row").remove();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
401 sortByLastChanged(bugs);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
402 bugs.reverse();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
403 bugs.forEach(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
404 function(bug) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
405 var row = rowTemplate.clone();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
406 row.attr("id", "bug-id-" + bug.id);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
407 row.find(".summary").text(bug.summary);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
408 row.addClass("status-" + bug.status);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
409 if (bug.priority != "--") {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
410 row.addClass(bug.priority);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
411 row.addClass(bug.severity);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
412 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
413 row.find(".last-changed").attr("data-last-change",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
414 bug.last_change_time);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
415
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
416 row.click(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
417 function onClick() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
418 window.open(bugzilla.getShowBugURL(bug.id));
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
419 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
420
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
421 row.hover(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
422 function onIn() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
423 var tooltip = $("#templates .bug-tooltip").clone();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
424 tooltip.find(".priority").text(bug.priority);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
425 // TODO: Show more information in tooltip.
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
426 $(this).append(tooltip);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
427 },
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
428 function onOut() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
429 $(this).find(".bug-tooltip").remove();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
430 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
431
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
432 table.append(row);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
433 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
434 updatePrettyDates(table);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
435 query.find(".bugs").remove();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
436 query.append(table);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
437 table.hide();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
438 removeDuplicateBugs();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
439 table.fadeIn();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
440 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
441
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
442 // Remove duplicate bugs, preferring the first listing of a bug in
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
443 // the DOM to later ones. This is b/c the reports further down the
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
444 // page are the less "interesting" ones, and we want to capture
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
445 // the most "interesting" part of each bug.
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
446 function removeDuplicateBugs() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
447 var visited = {};
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
448 $("#reports .bug-row").each(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
449 function() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
450 var id = $(this).attr("id");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
451 if (id in visited)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
452 $(this).remove();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
453 else
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
454 visited[id] = true;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
455 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
456 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
457
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
458 function report(selector, searchTerms) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
459 var newTerms = {__proto__: defaults};
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
460 for (name in searchTerms)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
461 newTerms[name.replace(/_DOT_/g, ".")] = searchTerms[name];
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
462
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
463 var cached = cache.get(selector);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
464 if (cached)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
465 showBugs($(selector), cached);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
466
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
467 $(selector).find("h2").addClass("loading");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
468
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
469 bugzilla.search(newTerms,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
470 function(response) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
471 cache.set(selector, response.bugs);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
472 showBugs($(selector), response.bugs);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
473 $(selector).find("h2").removeClass("loading");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
474 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
475 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
476
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
477 function timeAgo(ms) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
478 var now = new Date();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
479 var then = new Date(now - ms);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
480 return dateUtils.dateToISO8601(then);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
481 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
482
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
483 const MS_PER_HOUR = 1000 * 60 * 60;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
484 const MS_PER_DAY = MS_PER_HOUR * 24;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
485 const MS_PER_WEEK = MS_PER_DAY * 7;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
486
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
487 var defaults = {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
488 changed_after: timeAgo(MS_PER_WEEK * 14)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
489 };
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
490
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
491 function update(myUsername) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
492 report("#assigned-bugs",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
493 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
494 email1: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
495 email1_type: "equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
496 email1_assigned_to: 1});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
497
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
498 report("#fixed-bugs",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
499 {resolution: ["FIXED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
500 changed_after: timeAgo(MS_PER_WEEK),
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
501 email1: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
502 email1_type: "equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
503 email1_assigned_to: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
504 email1_reporter: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
505 email1_cc: 1});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
506
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
507 report("#code-reviews",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
508 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
509 flag_DOT_requestee: myUsername});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
510
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
511 report("#reported-bugs",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
512 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
513 email1: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
514 email1_type: "equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
515 email1_reporter: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
516 email2: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
517 email2_type: "not_equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
518 email2_assigned_to: 1});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
519
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
520 report("#cc-bugs",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
521 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
522 email1: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
523 email1_type: "equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
524 email1_cc: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
525 email2: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
526 email2_type: "not_equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
527 email2_assigned_to: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
528 email2_reporter: 1});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
529 };
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
530
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
531 exports.init = function init() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
532 require("app/login").whenChanged(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
533 function changeSearchCriteria(user) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
534 if (user.isLoggedIn) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
535 update(user.username);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
536 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
537 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
538 };
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
539 };