annotate js/modules/app.js @ 58:f9001601bed6

authenticated users now get an authenticated dashboard w/ confidential bugs.
author Atul Varma <avarma@mozilla.com>
date Sun, 25 Apr 2010 00:51:07 -0700
parents 4728c2db6fd6
children 440c8e2d776d
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;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
5
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
6 exports.whenChanged = function whenChanged(cb) {
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
7 callbacks.push(cb);
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
8 };
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
9
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
10 exports.get = function get() {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
11 var isLoggedIn = (username && username != "");
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
12 var isAuthenticated = (isLoggedIn && password && password != "");
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
13
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
14 return {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
15 username: username,
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
16 password: password,
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
17 isLoggedIn: isLoggedIn,
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
18 isAuthenticated: isAuthenticated
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
19 };
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
20 };
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
21
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
22 exports.set = function set(newUsername, newPassword) {
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
23 if (newUsername == username && newPassword == password)
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
24 return;
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 username = newUsername;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
27 password = newPassword;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
28
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
29 var info = exports.get();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
30
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
31 callbacks.forEach(function(cb) { cb(info); });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
32 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
33 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
34
58
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
35 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
36 exports.Bugzilla = {
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
37 ajax: function ajax(options) {
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
38 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
39
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
40 if (user.isAuthenticated) {
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
41 if (!options.data)
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
42 options.data = {};
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
43 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
44 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
45 }
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
46
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
47 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
48 },
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
49 __proto__: require("bugzilla")
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
50 };
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
51 };
f9001601bed6 authenticated users now get an authenticated dashboard w/ confidential bugs.
Atul Varma <avarma@mozilla.com>
parents: 56
diff changeset
52
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
53 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
54 var $ = require("jQuery");
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
55
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
56 $("#login form").submit(
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
57 function(event) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
58 event.preventDefault();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
59 require("app/login").set($("#login .username").val(),
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
60 $("#login .password").val());
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
61 $("#login").fadeOut();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
62 });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
63
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
64 require("app/login").whenChanged(
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
65 function maybeChangeUsernameField(user) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
66 var usernameField = $("#login .username");
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
67 if (user.isLoggedIn && usernameField.val() != user.username)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
68 usernameField.val(user.username);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
69 });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
70
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
71 require("app/ui").whenStarted(
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
72 function maybeShowLoginForm() {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
73 if (!require("app/login").get().isLoggedIn)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
74 $("#login").fadeIn();
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
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
77 exports.init = function init() {
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
78 };
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
79 };
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
80
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
81 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
82 var $ = require("jQuery");
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
83 var startupCallbacks = [];
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
84
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
85 require("app/login").whenChanged(
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
86 function changeUI(user) {
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
87 var show = {
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
88 "no-login": false,
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
89 "login": false,
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
90 "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
91 "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
92 "no-auth-login": false
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
93 };
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
94
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
95 if (user.isLoggedIn) {
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
96 show["login"] = true;
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
97 if (user.isAuthenticated)
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
98 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
99 else {
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
100 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
101 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
102 }
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
103 } else {
54
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
104 show["no-login"] = true;
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
105 show["no-auth"] = true;
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
106 }
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
107
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
108 for (classSuffix in show) {
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
109 var query = $(".requires-" + classSuffix);
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
110 if (show[classSuffix])
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
111 query.show();
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
112 else
1199b970c68b present 'Log In' when user isn't authenticated
Atul Varma <avarma@mozilla.com>
parents: 53
diff changeset
113 query.hide();
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
114 }
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
115 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
116
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
117 $("#header .menu li").click(
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
118 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
119 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
120 var dialog = $("#" + name);
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
121 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
122 throw new Error("dialog not found: " + name);
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
123 dialog.fadeIn();
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
124 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
125
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
126 $(".dialog").click(
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
127 function dismissDialogOnOutsideClick(event) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
128 if (event.target == this)
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
129 $(this).fadeOut();
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
130 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
131
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
132 function setupDocumentTitleChanger(document) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
133 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
134
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
135 require("app/login").whenChanged(
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
136 function changeTitle(user) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
137 var title = BASE_TITLE;
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
138
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
139 if (user.isLoggedIn)
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
140 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
141
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
142 if (document.title != title) {
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
143 document.title = title;
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
144 $("#header .title").text(title);
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
145 }
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
146 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
147 };
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
148
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
149 exports.whenStarted = function whenStarted(cb) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
150 startupCallbacks.push(cb);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
151 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
152
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
153 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
154 setupDocumentTitleChanger(document);
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
155
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
156 require("app/ui/dashboard").init();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
157 require("app/ui/login-form").init();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
158 require("app/ui/hash").init(document);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
159
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
160 startupCallbacks.forEach(function(cb) { cb(); });
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
161 startupCallbacks.splice(0);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
162 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
163 };
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
164
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
165 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
166 function usernameFromHash(location) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
167 if (location.hash) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
168 var match = location.hash.match(/#username=(.*)/);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
169 if (match)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
170 return unescape(match[1]);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
171 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
172 return "";
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
173 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
174
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
175 function usernameToHash(username) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
176 return "#username=" + escape(username);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
177 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
178
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
179 function setLoginFromHash(location) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
180 var username = usernameFromHash(location);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
181
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
182 var user = require("app/login").get();
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
183 if (user.username != username)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
184 require("app/login").set(username, "");
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
185 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
186
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
187 exports.init = function init(document) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
188 require("app/login").whenChanged(
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
189 function(user) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
190 if (user.isLoggedIn) {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
191 var hash = usernameToHash(user.username);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
192 if (document.location.hash != hash)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
193 document.location.hash = hash;
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
194 } else
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
195 document.location.hash = "";
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
196 });
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
197
53
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
198 var window = document.defaultView;
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
199
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
200 function onHashChange() {
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
201 setLoginFromHash(document.location);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
202 }
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
203
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
204 if ("onhashchange" in window)
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
205 window.addEventListener("hashchange", onHashChange, false);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
206 else
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
207 window.setInterval(onHashChange, 1000);
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
208
aa9b33b10820 dashboard responds to location.hash changes now.
Atul Varma <avarma@mozilla.com>
parents: 51
diff changeset
209 onHashChange();
43
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
210 };
0974c1df3714 moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents: 41
diff changeset
211 };
47
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
212
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
213 Require.modules["app/ui/dashboard"] = function(exports, require) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
214 var $ = require("jQuery");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
215 var cache = require("cache");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
216 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
217 var bugzilla = require("app/bugzilla-auth").Bugzilla;
47
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
218 var window = require("window");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
219
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
220 function sortByLastChanged(bugs) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
221 var lctimes = {};
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
222
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
223 bugs.forEach(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
224 function(bug) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
225 lctimes[bug.id] = dateUtils.dateFromISO8601(bug.last_change_time);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
226 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
227
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
228 function compare(a, b) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
229 var alc = lctimes[a.id];
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
230 var blc = lctimes[b.id];
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
231
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
232 if (alc < blc)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
233 return -1;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
234 if (alc > blc)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
235 return 1;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
236 return 0;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
237 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
238
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
239 bugs.sort(compare);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
240 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
241
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
242 function updatePrettyDates(query) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
243 query.find(".last-changed").each(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
244 function() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
245 var lcTime = $(this).attr("data-last-change");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
246 $(this).text(dateUtils.prettyDate(lcTime));
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
247 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
248 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
249
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
250 const PRETTY_DATE_UPDATE_INTERVAL = 1000 * 60;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
251
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
252 window.setInterval(function() { updatePrettyDates($("#reports")); },
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
253 PRETTY_DATE_UPDATE_INTERVAL);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
254
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
255 function showBugs(query, bugs) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
256 var table = $("#templates .bugs").clone();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
257 var rowTemplate = table.find(".bug-row").remove();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
258 sortByLastChanged(bugs);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
259 bugs.reverse();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
260 bugs.forEach(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
261 function(bug) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
262 var row = rowTemplate.clone();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
263 row.attr("id", "bug-id-" + bug.id);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
264 row.find(".summary").text(bug.summary);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
265 row.addClass("status-" + bug.status);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
266 if (bug.priority != "--") {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
267 row.addClass(bug.priority);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
268 row.addClass(bug.severity);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
269 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
270 row.find(".last-changed").attr("data-last-change",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
271 bug.last_change_time);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
272
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
273 row.click(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
274 function onClick() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
275 window.open(bugzilla.getShowBugURL(bug.id));
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
276 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
277
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
278 row.hover(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
279 function onIn() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
280 var tooltip = $("#templates .bug-tooltip").clone();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
281 tooltip.find(".priority").text(bug.priority);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
282 // TODO: Show more information in tooltip.
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
283 $(this).append(tooltip);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
284 },
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
285 function onOut() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
286 $(this).find(".bug-tooltip").remove();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
287 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
288
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
289 table.append(row);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
290 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
291 updatePrettyDates(table);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
292 query.find(".bugs").remove();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
293 query.append(table);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
294 table.hide();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
295 removeDuplicateBugs();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
296 table.fadeIn();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
297 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
298
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
299 // 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
300 // 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
301 // 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
302 // the most "interesting" part of each bug.
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
303 function removeDuplicateBugs() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
304 var visited = {};
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
305 $("#reports .bug-row").each(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
306 function() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
307 var id = $(this).attr("id");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
308 if (id in visited)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
309 $(this).remove();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
310 else
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
311 visited[id] = true;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
312 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
313 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
314
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
315 function report(selector, searchTerms) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
316 var newTerms = {__proto__: defaults};
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
317 for (name in searchTerms)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
318 newTerms[name.replace(/_DOT_/g, ".")] = searchTerms[name];
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
319
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
320 var cached = cache.get(selector);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
321 if (cached)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
322 showBugs($(selector), cached);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
323
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
324 $(selector).find("h2").addClass("loading");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
325
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
326 bugzilla.search(newTerms,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
327 function(response) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
328 cache.set(selector, response.bugs);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
329 showBugs($(selector), response.bugs);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
330 $(selector).find("h2").removeClass("loading");
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
331 });
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
332 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
333
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
334 function timeAgo(ms) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
335 var now = new Date();
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
336 var then = new Date(now - ms);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
337 return dateUtils.dateToISO8601(then);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
338 }
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
339
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
340 const MS_PER_HOUR = 1000 * 60 * 60;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
341 const MS_PER_DAY = MS_PER_HOUR * 24;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
342 const MS_PER_WEEK = MS_PER_DAY * 7;
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
343
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
344 var defaults = {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
345 changed_after: timeAgo(MS_PER_WEEK * 14)
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
346 };
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
347
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
348 function update(myUsername) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
349 report("#assigned-bugs",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
350 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
351 email1: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
352 email1_type: "equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
353 email1_assigned_to: 1});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
354
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
355 report("#fixed-bugs",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
356 {resolution: ["FIXED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
357 changed_after: timeAgo(MS_PER_WEEK),
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
358 email1: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
359 email1_type: "equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
360 email1_assigned_to: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
361 email1_reporter: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
362 email1_cc: 1});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
363
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
364 report("#code-reviews",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
365 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
366 flag_DOT_requestee: myUsername});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
367
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
368 report("#reported-bugs",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
369 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
370 email1: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
371 email1_type: "equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
372 email1_reporter: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
373 email2: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
374 email2_type: "not_equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
375 email2_assigned_to: 1});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
376
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
377 report("#cc-bugs",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
378 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"],
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
379 email1: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
380 email1_type: "equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
381 email1_cc: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
382 email2: myUsername,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
383 email2_type: "not_equals",
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
384 email2_assigned_to: 1,
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
385 email2_reporter: 1});
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
386 };
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
387
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
388 exports.init = function init() {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
389 require("app/login").whenChanged(
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
390 function changeSearchCriteria(user) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
391 if (user.isLoggedIn) {
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
392 update(user.username);
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
393 }
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 };
0b71df72ebe1 integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents: 43
diff changeset
396 };