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
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
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
10 exports.isLoggedIn = function isLoggedIn() {
50
7a0bafc5379a fixed login bug
Atul Varma <avarma@mozilla.com>
parents: 47
diff changeset
11 return (username && username != "");
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
12 };
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
13
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
14 exports.set = function set(newUsername, newPassword) {
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
15 if (newUsername == username && newPassword == password)
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
16 return;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
17
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
18 username = newUsername;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
19 password = newPassword;
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
20
50
7a0bafc5379a fixed login bug
Atul Varma <avarma@mozilla.com>
parents: 47
diff changeset
21 var isLoggedIn = (username && username != "");
7a0bafc5379a fixed login bug
Atul Varma <avarma@mozilla.com>
parents: 47
diff changeset
22 var isAuthenticated = (isLoggedIn && password && password != "");
41
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
23
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
24 callbacks.forEach(
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
25 function(cb) {
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
26 cb({username: username,
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
27 password: password,
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
28 isLoggedIn: isLoggedIn,
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
29 isAuthenticated: isAuthenticated});
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
30 });
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
31 };
7a1162b1b7e7 Added app module
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
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 };