Mercurial > bugzilla-dashboard
annotate js/modules/app.js @ 51:3af7cd6ae638
changed menu items to use data-dialog attr instead of title, which sets tooltips.
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Sat, 24 Apr 2010 21:30:58 -0700 |
parents | 7a0bafc5379a |
children | aa9b33b10820 |
rev | line source |
---|---|
41 | 1 Require.modules["app/login"] = function(exports) { |
2 var callbacks = []; | |
3 var username; | |
4 var password; | |
5 | |
6 exports.whenChanged = function whenChanged(cb) { | |
7 callbacks.push(cb); | |
8 }; | |
9 | |
10 exports.isLoggedIn = function isLoggedIn() { | |
50 | 11 return (username && username != ""); |
41 | 12 }; |
13 | |
14 exports.set = function set(newUsername, newPassword) { | |
15 if (newUsername == username && newPassword == password) | |
16 return; | |
17 | |
18 username = newUsername; | |
19 password = newPassword; | |
20 | |
50 | 21 var isLoggedIn = (username && username != ""); |
22 var isAuthenticated = (isLoggedIn && password && password != ""); | |
41 | 23 |
24 callbacks.forEach( | |
25 function(cb) { | |
26 cb({username: username, | |
27 password: password, | |
28 isLoggedIn: isLoggedIn, | |
29 isAuthenticated: isAuthenticated}); | |
30 }); | |
31 }; | |
32 }; | |
43
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
33 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
34 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
|
35 var $ = require("jQuery"); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
36 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
37 require("app/login").whenChanged( |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
38 function changeUI(user) { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
39 if (user.isLoggedIn) { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
40 $(".requires-no-login").hide(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
41 $(".requires-login").show(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
42 if (user.isAuthenticated) { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
43 $(".requires-auth-login").show(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
44 } else { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
45 $(".requires-auth-login").hide(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
46 } |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
47 } else { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
48 $(".requires-no-login").show(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
49 $(".requires-login").hide(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
50 $(".requires-auth-login").hide(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
51 } |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
52 }); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
53 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
54 $("#header .menu li").click( |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
55 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
|
56 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
|
57 var dialog = $("#" + name); |
43
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
58 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
|
59 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
|
60 dialog.fadeIn(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
61 }); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
62 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
63 $(".dialog").click( |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
64 function dismissDialogOnOutsideClick(event) { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
65 if (event.target == this) |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
66 $(this).fadeOut(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
67 }); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
68 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
69 function setupDocumentTitleChanger(document) { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
70 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
|
71 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
72 require("app/login").whenChanged( |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
73 function changeTitle(user) { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
74 var title = BASE_TITLE; |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
75 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
76 if (user.isLoggedIn) |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
77 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
|
78 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
79 if (document.title != title) { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
80 document.title = title; |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
81 $("#header .title").text(title); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
82 } |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
83 }); |
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 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
86 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
|
87 setupDocumentTitleChanger(document); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
88 |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
89 $("#login form").submit( |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
90 function(event) { |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
91 event.preventDefault(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
92 require("app/login").set($("#login .username").val(), |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
93 $("#login .password").val()); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
94 $("#login").fadeOut(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
95 }); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
96 |
47
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
97 require("app/ui/dashboard").init(); |
43
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
98 require("app/login").set($("#login .username").val(), |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
99 $("#login .password").val()); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
100 if (!require("app/login").isLoggedIn()) |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
101 $("#login").fadeIn(); |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
102 }; |
0974c1df3714
moved lots of app ui logic to require('app/ui')
Atul Varma <avarma@mozilla.com>
parents:
41
diff
changeset
|
103 }; |
47
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
104 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
105 Require.modules["app/ui/dashboard"] = function(exports, require) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
106 var $ = require("jQuery"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
107 var cache = require("cache"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
108 var dateUtils = require("date-utils"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
109 var bugzilla = require("bugzilla"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
110 var window = require("window"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
111 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
112 function sortByLastChanged(bugs) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
113 var lctimes = {}; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
114 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
115 bugs.forEach( |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
116 function(bug) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
117 lctimes[bug.id] = dateUtils.dateFromISO8601(bug.last_change_time); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
118 }); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
119 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
120 function compare(a, b) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
121 var alc = lctimes[a.id]; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
122 var blc = lctimes[b.id]; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
123 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
124 if (alc < blc) |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
125 return -1; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
126 if (alc > blc) |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
127 return 1; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
128 return 0; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
129 } |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
130 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
131 bugs.sort(compare); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
132 } |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
133 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
134 function updatePrettyDates(query) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
135 query.find(".last-changed").each( |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
136 function() { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
137 var lcTime = $(this).attr("data-last-change"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
138 $(this).text(dateUtils.prettyDate(lcTime)); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
139 }); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
140 } |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
141 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
142 const PRETTY_DATE_UPDATE_INTERVAL = 1000 * 60; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
143 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
144 window.setInterval(function() { updatePrettyDates($("#reports")); }, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
145 PRETTY_DATE_UPDATE_INTERVAL); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
146 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
147 function showBugs(query, bugs) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
148 var table = $("#templates .bugs").clone(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
149 var rowTemplate = table.find(".bug-row").remove(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
150 sortByLastChanged(bugs); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
151 bugs.reverse(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
152 bugs.forEach( |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
153 function(bug) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
154 var row = rowTemplate.clone(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
155 row.attr("id", "bug-id-" + bug.id); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
156 row.find(".summary").text(bug.summary); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
157 row.addClass("status-" + bug.status); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
158 if (bug.priority != "--") { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
159 row.addClass(bug.priority); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
160 row.addClass(bug.severity); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
161 } |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
162 row.find(".last-changed").attr("data-last-change", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
163 bug.last_change_time); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
164 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
165 row.click( |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
166 function onClick() { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
167 window.open(bugzilla.getShowBugURL(bug.id)); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
168 }); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
169 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
170 row.hover( |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
171 function onIn() { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
172 var tooltip = $("#templates .bug-tooltip").clone(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
173 tooltip.find(".priority").text(bug.priority); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
174 // TODO: Show more information in tooltip. |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
175 $(this).append(tooltip); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
176 }, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
177 function onOut() { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
178 $(this).find(".bug-tooltip").remove(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
179 }); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
180 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
181 table.append(row); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
182 }); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
183 updatePrettyDates(table); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
184 query.find(".bugs").remove(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
185 query.append(table); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
186 table.hide(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
187 removeDuplicateBugs(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
188 table.fadeIn(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
189 } |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
190 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
191 // 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
|
192 // 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
|
193 // 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
|
194 // the most "interesting" part of each bug. |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
195 function removeDuplicateBugs() { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
196 var visited = {}; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
197 $("#reports .bug-row").each( |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
198 function() { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
199 var id = $(this).attr("id"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
200 if (id in visited) |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
201 $(this).remove(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
202 else |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
203 visited[id] = true; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
204 }); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
205 } |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
206 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
207 function report(selector, searchTerms) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
208 var newTerms = {__proto__: defaults}; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
209 for (name in searchTerms) |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
210 newTerms[name.replace(/_DOT_/g, ".")] = searchTerms[name]; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
211 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
212 var cached = cache.get(selector); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
213 if (cached) |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
214 showBugs($(selector), cached); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
215 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
216 $(selector).find("h2").addClass("loading"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
217 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
218 bugzilla.search(newTerms, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
219 function(response) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
220 cache.set(selector, response.bugs); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
221 showBugs($(selector), response.bugs); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
222 $(selector).find("h2").removeClass("loading"); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
223 }); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
224 } |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
225 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
226 function timeAgo(ms) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
227 var now = new Date(); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
228 var then = new Date(now - ms); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
229 return dateUtils.dateToISO8601(then); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
230 } |
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 const MS_PER_HOUR = 1000 * 60 * 60; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
233 const MS_PER_DAY = MS_PER_HOUR * 24; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
234 const MS_PER_WEEK = MS_PER_DAY * 7; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
235 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
236 var defaults = { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
237 changed_after: timeAgo(MS_PER_WEEK * 14) |
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 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
240 function update(myUsername) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
241 report("#assigned-bugs", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
242 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"], |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
243 email1: myUsername, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
244 email1_type: "equals", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
245 email1_assigned_to: 1}); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
246 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
247 report("#fixed-bugs", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
248 {resolution: ["FIXED"], |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
249 changed_after: timeAgo(MS_PER_WEEK), |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
250 email1: myUsername, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
251 email1_type: "equals", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
252 email1_assigned_to: 1, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
253 email1_reporter: 1, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
254 email1_cc: 1}); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
255 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
256 report("#code-reviews", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
257 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"], |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
258 flag_DOT_requestee: myUsername}); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
259 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
260 report("#reported-bugs", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
261 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"], |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
262 email1: myUsername, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
263 email1_type: "equals", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
264 email1_reporter: 1, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
265 email2: myUsername, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
266 email2_type: "not_equals", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
267 email2_assigned_to: 1}); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
268 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
269 report("#cc-bugs", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
270 {status: ["NEW", "UNCONFIRMED", "ASSIGNED", "REOPENED"], |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
271 email1: myUsername, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
272 email1_type: "equals", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
273 email1_cc: 1, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
274 email2: myUsername, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
275 email2_type: "not_equals", |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
276 email2_assigned_to: 1, |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
277 email2_reporter: 1}); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
278 }; |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
279 |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
280 exports.init = function init() { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
281 require("app/login").whenChanged( |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
282 function changeSearchCriteria(user) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
283 if (user.isLoggedIn) { |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
284 update(user.username); |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
285 } |
0b71df72ebe1
integrated dashboard into main.html.
Atul Varma <avarma@mozilla.com>
parents:
43
diff
changeset
|
286 }); |
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 }; |