Merge lp:~chris.gagnon/qa-coverage-dashboard/reuse-inline-js-convert-to-static into lp:qa-coverage-dashboard
- reuse-inline-js-convert-to-static
- Merge into trunk
Proposed by
Chris Gagnon
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 761 | ||||
Proposed branch: | lp:~chris.gagnon/qa-coverage-dashboard/reuse-inline-js-convert-to-static | ||||
Merge into: | lp:qa-coverage-dashboard | ||||
Diff against target: |
1960 lines (+893/-895) 26 files modified
gaps/static/gaps/js/gaps_chart.js (+21/-0) gaps/templates/branch_list.html (+0/-70) gaps/templates/build.html (+0/-46) gaps/templates/gaps/branch_list.html (+70/-0) gaps/templates/gaps/build.html (+46/-0) gaps/templates/gaps/gaps_layout.html (+10/-0) gaps/templates/gaps/integration_list.html (+65/-0) gaps/templates/gaps/job.html (+65/-0) gaps/templates/gaps/job_list.html (+96/-0) gaps/templates/gaps/main.html (+34/-0) gaps/templates/gaps/project_detail.html (+83/-0) gaps/templates/gaps/project_list.html (+202/-0) gaps/templates/gaps/stack_detail.html (+100/-0) gaps/templates/gaps/stack_list.html (+93/-0) gaps/templates/gaps_layout.html (+0/-1) gaps/templates/integration_list.html (+0/-65) gaps/templates/job.html (+0/-65) gaps/templates/job_list.html (+0/-96) gaps/templates/main.html (+0/-34) gaps/templates/project_detail.html (+0/-90) gaps/templates/project_list.html (+0/-201) gaps/templates/stack_detail.html (+0/-106) gaps/templates/stack_list.html (+0/-113) gaps/urls.py (+0/-3) gaps/views.py (+4/-4) qa_dashboard/settings.py (+4/-1) |
||||
To merge this branch: | bzr merge lp:~chris.gagnon/qa-coverage-dashboard/reuse-inline-js-convert-to-static | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Allan LeSage (community) | Approve | ||
Review via email: mp+214345@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
- 761. By Chris Gagnon
-
remove extra { in gaps_layout
- 762. By Chris Gagnon
-
update settings.py to use local static js
- 763. By Chris Gagnon
-
resync with trunk
Revision history for this message
Chris Gagnon (chris.gagnon) wrote : | # |
- 764. By Chris Gagnon
-
resync with trunk
Revision history for this message
Allan LeSage (allanlesage) wrote : | # |
Ok this diff is pure murder--next time let's take one step at a time, no? I.e. make the changes and *then* move the files. I promise to be way more responsive to the MPs, sorry for the delay.
Please don't mark the bug *fix committed* until this branch is committed to trunk, IMO--or is this policy different in your ubuntu-history?
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added directory 'gaps/static' | |||
2 | === added directory 'gaps/static/gaps' | |||
3 | === added directory 'gaps/static/gaps/js' | |||
4 | === added file 'gaps/static/gaps/js/gaps_chart.js' | |||
5 | --- gaps/static/gaps/js/gaps_chart.js 1970-01-01 00:00:00 +0000 | |||
6 | +++ gaps/static/gaps/js/gaps_chart.js 2014-04-07 22:20:52 +0000 | |||
7 | @@ -0,0 +1,21 @@ | |||
8 | 1 | function create_gaps_line_chart(data_url) { | ||
9 | 2 | d3.json(data_url, function(data) { | ||
10 | 3 | nv.addGraph(function() { | ||
11 | 4 | var chart = nv.models.lineChart() | ||
12 | 5 | .width(1100).height(400); | ||
13 | 6 | chart.forceY([0, 1]); | ||
14 | 7 | chart.xAxis | ||
15 | 8 | .axisLabel('Date') | ||
16 | 9 | .tickFormat(function(d){return d3.time.format('%Y%m%d')(new Date(d * 1000));}) | ||
17 | 10 | |||
18 | 11 | chart.yAxis | ||
19 | 12 | .axisLabel('%') | ||
20 | 13 | .tickFormat(d3.format('%')) | ||
21 | 14 | d3.select('#line-chart svg').datum(data).transition().duration(500).call(chart); | ||
22 | 15 | |||
23 | 16 | nv.utils.windowResize(chart.update); | ||
24 | 17 | |||
25 | 18 | return chart; | ||
26 | 19 | }); //d3.json | ||
27 | 20 | }); //addGraph | ||
28 | 21 | } //create_gaps_chart | ||
29 | 0 | 22 | ||
30 | === removed file 'gaps/templates/branch_list.html' | |||
31 | --- gaps/templates/branch_list.html 2014-03-07 16:58:26 +0000 | |||
32 | +++ gaps/templates/branch_list.html 1970-01-01 00:00:00 +0000 | |||
33 | @@ -1,70 +0,0 @@ | |||
34 | 1 | {% extends "layout.html" %} | ||
35 | 2 | {% load dashboard_extras %} | ||
36 | 3 | |||
37 | 4 | {% block content %} | ||
38 | 5 | <script type='text/javascript'> | ||
39 | 6 | //<![CDATA[ | ||
40 | 7 | $(document).ready(function() { | ||
41 | 8 | $(".data-table").dataTable({ | ||
42 | 9 | "bPaginate": false, | ||
43 | 10 | "aaSorting": [[0, 'desc']] | ||
44 | 11 | }); | ||
45 | 12 | }); | ||
46 | 13 | //]]> | ||
47 | 14 | </script> | ||
48 | 15 | <div class='grid_15'> | ||
49 | 16 | <h2> | ||
50 | 17 | Branches | ||
51 | 18 | </h2> | ||
52 | 19 | </div> | ||
53 | 20 | <div class='grid_2'> | ||
54 | 21 | <h3 class='nav-title'> | ||
55 | 22 | BRANCH FILTER | ||
56 | 23 | </h3> | ||
57 | 24 | <ul class='left_nav'> | ||
58 | 25 | <li> | ||
59 | 26 | <a href='{% url branches %}'>All</a> | ||
60 | 27 | </li> | ||
61 | 28 | </ul> | ||
62 | 29 | </div> | ||
63 | 30 | <div class='grid_13'> | ||
64 | 31 | <table class='data-table basic wide'> | ||
65 | 32 | <thead> | ||
66 | 33 | <tr> | ||
67 | 34 | <th>Branch</th> | ||
68 | 35 | <th>Revno</th> | ||
69 | 36 | <th>Date</th> | ||
70 | 37 | <th>Series</th> | ||
71 | 38 | <th>Package</th> | ||
72 | 39 | <th>Upload Date</th> | ||
73 | 40 | </tr> | ||
74 | 41 | </thead> | ||
75 | 42 | <tbody> | ||
76 | 43 | {% for branch in branch_list %} | ||
77 | 44 | <tr> | ||
78 | 45 | <td> | ||
79 | 46 | <a href='job/{{ job.name }}'> | ||
80 | 47 | {{ branch.name }} | ||
81 | 48 | </a> | ||
82 | 49 | </td> | ||
83 | 50 | <td class='num'> | ||
84 | 51 | {{ branch.revno }} | ||
85 | 52 | </td> | ||
86 | 53 | <td> | ||
87 | 54 | {{ branch.rev_date }} | ||
88 | 55 | </td> | ||
89 | 56 | <td> | ||
90 | 57 | {{ branch.series }} | ||
91 | 58 | </td> | ||
92 | 59 | <td> | ||
93 | 60 | {{ branch.package }} | ||
94 | 61 | </td> | ||
95 | 62 | <td> | ||
96 | 63 | {{ branch.package_date }} | ||
97 | 64 | </td> | ||
98 | 65 | </tr> | ||
99 | 66 | {% endfor %} | ||
100 | 67 | </tbody> | ||
101 | 68 | </table> | ||
102 | 69 | </div> | ||
103 | 70 | {% endblock %} | ||
104 | 71 | 0 | ||
105 | === removed file 'gaps/templates/build.html' | |||
106 | --- gaps/templates/build.html 2014-03-07 16:58:26 +0000 | |||
107 | +++ gaps/templates/build.html 1970-01-01 00:00:00 +0000 | |||
108 | @@ -1,46 +0,0 @@ | |||
109 | 1 | {% extends "layout.html" %} | ||
110 | 2 | {% load dashboard_extras %} | ||
111 | 3 | |||
112 | 4 | {% block page_name %}QA Coverage Dashboard{% endblock %} | ||
113 | 5 | |||
114 | 6 | {% block content %} | ||
115 | 7 | {{ build.timestamp }} | ||
116 | 8 | <div class='grid_13'> | ||
117 | 9 | <table class='data-table basic wide'> | ||
118 | 10 | <thead> | ||
119 | 11 | <tr> | ||
120 | 12 | <th>Number</th> | ||
121 | 13 | <th>Flavor</th> | ||
122 | 14 | <th>Series</th> | ||
123 | 15 | <th>Result</th> | ||
124 | 16 | <th>Duration</th> | ||
125 | 17 | <th>Timestamp</th> | ||
126 | 18 | </tr> | ||
127 | 19 | </thead> | ||
128 | 20 | <tbody> | ||
129 | 21 | {% for run in runs %} | ||
130 | 22 | <tr> | ||
131 | 23 | <td> | ||
132 | 24 | <a href='{{ run.url }}'>{{ run.number }}</a> | ||
133 | 25 | <td> | ||
134 | 26 | {{ run.flavor }} | ||
135 | 27 | </td> | ||
136 | 28 | <td> | ||
137 | 29 | {{ run.series }} | ||
138 | 30 | </td> | ||
139 | 31 | <td> | ||
140 | 32 | {{ run.result }} | ||
141 | 33 | </td> | ||
142 | 34 | <td> | ||
143 | 35 | {{ run.duration }} | ||
144 | 36 | </td> | ||
145 | 37 | <td> | ||
146 | 38 | {{ run.timestamp }} | ||
147 | 39 | </td> | ||
148 | 40 | </tr> | ||
149 | 41 | {% endfor %} | ||
150 | 42 | </tbody> | ||
151 | 43 | </table> | ||
152 | 44 | </div> | ||
153 | 45 | |||
154 | 46 | {% endblock %} | ||
155 | 47 | 0 | ||
156 | === added directory 'gaps/templates/gaps' | |||
157 | === added file 'gaps/templates/gaps/branch_list.html' | |||
158 | --- gaps/templates/gaps/branch_list.html 1970-01-01 00:00:00 +0000 | |||
159 | +++ gaps/templates/gaps/branch_list.html 2014-04-07 22:20:52 +0000 | |||
160 | @@ -0,0 +1,70 @@ | |||
161 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
162 | 2 | {% load dashboard_extras %} | ||
163 | 3 | |||
164 | 4 | {% block content %} | ||
165 | 5 | <script type='text/javascript'> | ||
166 | 6 | //<![CDATA[ | ||
167 | 7 | $(document).ready(function() { | ||
168 | 8 | $(".data-table").dataTable({ | ||
169 | 9 | "bPaginate": false, | ||
170 | 10 | "aaSorting": [[0, 'desc']] | ||
171 | 11 | }); | ||
172 | 12 | }); | ||
173 | 13 | //]]> | ||
174 | 14 | </script> | ||
175 | 15 | <div class='grid_15'> | ||
176 | 16 | <h2> | ||
177 | 17 | Branches | ||
178 | 18 | </h2> | ||
179 | 19 | </div> | ||
180 | 20 | <div class='grid_2'> | ||
181 | 21 | <h3 class='nav-title'> | ||
182 | 22 | BRANCH FILTER | ||
183 | 23 | </h3> | ||
184 | 24 | <ul class='left_nav'> | ||
185 | 25 | <li> | ||
186 | 26 | <a href='{% url branches %}'>All</a> | ||
187 | 27 | </li> | ||
188 | 28 | </ul> | ||
189 | 29 | </div> | ||
190 | 30 | <div class='grid_13'> | ||
191 | 31 | <table class='data-table basic wide'> | ||
192 | 32 | <thead> | ||
193 | 33 | <tr> | ||
194 | 34 | <th>Branch</th> | ||
195 | 35 | <th>Revno</th> | ||
196 | 36 | <th>Date</th> | ||
197 | 37 | <th>Series</th> | ||
198 | 38 | <th>Package</th> | ||
199 | 39 | <th>Upload Date</th> | ||
200 | 40 | </tr> | ||
201 | 41 | </thead> | ||
202 | 42 | <tbody> | ||
203 | 43 | {% for branch in branch_list %} | ||
204 | 44 | <tr> | ||
205 | 45 | <td> | ||
206 | 46 | <a href='job/{{ job.name }}'> | ||
207 | 47 | {{ branch.name }} | ||
208 | 48 | </a> | ||
209 | 49 | </td> | ||
210 | 50 | <td class='num'> | ||
211 | 51 | {{ branch.revno }} | ||
212 | 52 | </td> | ||
213 | 53 | <td> | ||
214 | 54 | {{ branch.rev_date }} | ||
215 | 55 | </td> | ||
216 | 56 | <td> | ||
217 | 57 | {{ branch.series }} | ||
218 | 58 | </td> | ||
219 | 59 | <td> | ||
220 | 60 | {{ branch.package }} | ||
221 | 61 | </td> | ||
222 | 62 | <td> | ||
223 | 63 | {{ branch.package_date }} | ||
224 | 64 | </td> | ||
225 | 65 | </tr> | ||
226 | 66 | {% endfor %} | ||
227 | 67 | </tbody> | ||
228 | 68 | </table> | ||
229 | 69 | </div> | ||
230 | 70 | {% endblock %} | ||
231 | 0 | 71 | ||
232 | === added file 'gaps/templates/gaps/build.html' | |||
233 | --- gaps/templates/gaps/build.html 1970-01-01 00:00:00 +0000 | |||
234 | +++ gaps/templates/gaps/build.html 2014-04-07 22:20:52 +0000 | |||
235 | @@ -0,0 +1,46 @@ | |||
236 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
237 | 2 | {% load dashboard_extras %} | ||
238 | 3 | |||
239 | 4 | {% block page_name %}QA Coverage Dashboard{% endblock %} | ||
240 | 5 | |||
241 | 6 | {% block content %} | ||
242 | 7 | {{ build.timestamp }} | ||
243 | 8 | <div class='grid_13'> | ||
244 | 9 | <table class='data-table basic wide'> | ||
245 | 10 | <thead> | ||
246 | 11 | <tr> | ||
247 | 12 | <th>Number</th> | ||
248 | 13 | <th>Flavor</th> | ||
249 | 14 | <th>Series</th> | ||
250 | 15 | <th>Result</th> | ||
251 | 16 | <th>Duration</th> | ||
252 | 17 | <th>Timestamp</th> | ||
253 | 18 | </tr> | ||
254 | 19 | </thead> | ||
255 | 20 | <tbody> | ||
256 | 21 | {% for run in runs %} | ||
257 | 22 | <tr> | ||
258 | 23 | <td> | ||
259 | 24 | <a href='{{ run.url }}'>{{ run.number }}</a> | ||
260 | 25 | <td> | ||
261 | 26 | {{ run.flavor }} | ||
262 | 27 | </td> | ||
263 | 28 | <td> | ||
264 | 29 | {{ run.series }} | ||
265 | 30 | </td> | ||
266 | 31 | <td> | ||
267 | 32 | {{ run.result }} | ||
268 | 33 | </td> | ||
269 | 34 | <td> | ||
270 | 35 | {{ run.duration }} | ||
271 | 36 | </td> | ||
272 | 37 | <td> | ||
273 | 38 | {{ run.timestamp }} | ||
274 | 39 | </td> | ||
275 | 40 | </tr> | ||
276 | 41 | {% endfor %} | ||
277 | 42 | </tbody> | ||
278 | 43 | </table> | ||
279 | 44 | </div> | ||
280 | 45 | |||
281 | 46 | {% endblock %} | ||
282 | 0 | 47 | ||
283 | === added file 'gaps/templates/gaps/gaps_layout.html' | |||
284 | --- gaps/templates/gaps/gaps_layout.html 1970-01-01 00:00:00 +0000 | |||
285 | +++ gaps/templates/gaps/gaps_layout.html 2014-04-07 22:20:52 +0000 | |||
286 | @@ -0,0 +1,10 @@ | |||
287 | 1 | {% extends "layout.html" %} | ||
288 | 2 | {% load staticfiles %} | ||
289 | 3 | {% block extra_headers %} | ||
290 | 4 | <link type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/nvd3/0.9/nv.d3.css" rel="stylesheet" /> | ||
291 | 5 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.2.2/d3.min.js"></script> | ||
292 | 6 | <!-- need to switch back to cdnjs when bugs are fixed | ||
293 | 7 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/nvd3/0.9/nv.d3.js"></script>--> | ||
294 | 8 | <script type="text/javascript" src="//6df403e3d98e2ac67ac2-180150c581869d2c4c18db9c9e3179c4.r40.cf1.rackcdn.com/nv.d3.js"></script> | ||
295 | 9 | <script type='text/javascript' src='{% static "gaps/js/gaps_chart.js" %}'></script> | ||
296 | 10 | {% endblock%} | ||
297 | 0 | 11 | ||
298 | === added file 'gaps/templates/gaps/integration_list.html' | |||
299 | --- gaps/templates/gaps/integration_list.html 1970-01-01 00:00:00 +0000 | |||
300 | +++ gaps/templates/gaps/integration_list.html 2014-04-07 22:20:52 +0000 | |||
301 | @@ -0,0 +1,65 @@ | |||
302 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
303 | 2 | {% load dashboard_extras %} | ||
304 | 3 | |||
305 | 4 | {% block page_name %}QA Coverage Dashboard{% endblock %} | ||
306 | 5 | |||
307 | 6 | {% block content %} | ||
308 | 7 | <script type='text/javascript'> | ||
309 | 8 | //<![CDATA[ | ||
310 | 9 | $(document).ready(function() { | ||
311 | 10 | $(".data-table").dataTable({ | ||
312 | 11 | "bPaginate": false, | ||
313 | 12 | "aaSorting": [[0, 'desc']] | ||
314 | 13 | }); | ||
315 | 14 | }); | ||
316 | 15 | //]]> | ||
317 | 16 | </script> | ||
318 | 17 | <div class='grid_15'> | ||
319 | 18 | <h2> | ||
320 | 19 | Integration Testing [TBD] | ||
321 | 20 | </h2> | ||
322 | 21 | </div> | ||
323 | 22 | <div class='grid_2'> | ||
324 | 23 | <h3 class='nav-title'> | ||
325 | 24 | STACKS | ||
326 | 25 | </h3> | ||
327 | 26 | <ul class='left_nav'> | ||
328 | 27 | <li> | ||
329 | 28 | <a href='{% url stacks %}'>All</a> | ||
330 | 29 | </li> | ||
331 | 30 | </ul> | ||
332 | 31 | </div> | ||
333 | 32 | <div class='grid_13'> | ||
334 | 33 | This page is work in progress.<BR> | ||
335 | 34 | It will be used to show test results for the daily-release process | ||
336 | 35 | integration tests. | ||
337 | 36 | <table class='data-table basic wide'> | ||
338 | 37 | <thead> | ||
339 | 38 | <tr> | ||
340 | 39 | <th>Name</th> | ||
341 | 40 | <th>Release</th> | ||
342 | 41 | <th>Series</th> | ||
343 | 42 | <th>Results</th> | ||
344 | 43 | </tr> | ||
345 | 44 | </thead> | ||
346 | 45 | <tbody> | ||
347 | 46 | {% for test in test_list %} | ||
348 | 47 | <tr> | ||
349 | 48 | <td> | ||
350 | 49 | <a href='{% url stacks %}/{{ test.stack_name }}'>{{ test.stack_name }}</a> | ||
351 | 50 | </td> | ||
352 | 51 | <td> | ||
353 | 52 | {{ test.release }} | ||
354 | 53 | </td> | ||
355 | 54 | <td> | ||
356 | 55 | {{ test.series }} | ||
357 | 56 | </td> | ||
358 | 57 | <td> | ||
359 | 58 | {{ test.results }} | ||
360 | 59 | </td> | ||
361 | 60 | </tr> | ||
362 | 61 | {% endfor %} | ||
363 | 62 | </tbody> | ||
364 | 63 | </table> | ||
365 | 64 | </div> | ||
366 | 65 | {% endblock %} | ||
367 | 0 | 66 | ||
368 | === added file 'gaps/templates/gaps/job.html' | |||
369 | --- gaps/templates/gaps/job.html 1970-01-01 00:00:00 +0000 | |||
370 | +++ gaps/templates/gaps/job.html 2014-04-07 22:20:52 +0000 | |||
371 | @@ -0,0 +1,65 @@ | |||
372 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
373 | 2 | {% load dashboard_extras %} | ||
374 | 3 | |||
375 | 4 | {% block page_name %}QA Coverage Dashboard{% endblock %} | ||
376 | 5 | |||
377 | 6 | {% block content %} | ||
378 | 7 | <script type='text/javascript'> | ||
379 | 8 | //<![CDATA[ | ||
380 | 9 | $(document).ready(function() { | ||
381 | 10 | $(".data-table").dataTable({ | ||
382 | 11 | "bPaginate": false, | ||
383 | 12 | "aaSorting": [[0, 'desc']] | ||
384 | 13 | }); | ||
385 | 14 | }); | ||
386 | 15 | //]]> | ||
387 | 16 | </script> | ||
388 | 17 | <div class='grid_15'> | ||
389 | 18 | <h2> | ||
390 | 19 | Job: {{ job.name }} | ||
391 | 20 | </h2> | ||
392 | 21 | </div> | ||
393 | 22 | <div class='grid_2'> | ||
394 | 23 | <h3 class='nav-title'> | ||
395 | 24 | BUILD FILTER | ||
396 | 25 | </h3> | ||
397 | 26 | <ul class='left_nav'> | ||
398 | 27 | <li> | ||
399 | 28 | <a href='?show=all'>All</a> | ||
400 | 29 | </li> | ||
401 | 30 | {% for result in result_list %} | ||
402 | 31 | <li> | ||
403 | 32 | <a href='{% url jobs %}{{ job.name }}?show={{ result.name }}'>{{ result.name }}</a> | ||
404 | 33 | </li> | ||
405 | 34 | {% endfor %} | ||
406 | 35 | </ul> | ||
407 | 36 | </div> | ||
408 | 37 | <div class='grid_13'> | ||
409 | 38 | </div> | ||
410 | 39 | <div class='grid_13'> | ||
411 | 40 | <table class='data-table basic wide'> | ||
412 | 41 | <thead> | ||
413 | 42 | <tr> | ||
414 | 43 | <th>Number</th> | ||
415 | 44 | <th>Status</th> | ||
416 | 45 | <th>Timestamp</th> | ||
417 | 46 | </tr> | ||
418 | 47 | </thead> | ||
419 | 48 | <tbody> | ||
420 | 49 | {% for build in build_list %} | ||
421 | 50 | <tr> | ||
422 | 51 | <td class='num'> | ||
423 | 52 | <a href="{{ build.url }}">{{ build.number }}</a> | ||
424 | 53 | </td> | ||
425 | 54 | <td> | ||
426 | 55 | {{ build.result }} | ||
427 | 56 | </td> | ||
428 | 57 | <td> | ||
429 | 58 | {{ build.timestamp }} | ||
430 | 59 | </td> | ||
431 | 60 | </tr> | ||
432 | 61 | {% endfor %} | ||
433 | 62 | </tbody> | ||
434 | 63 | </table> | ||
435 | 64 | </div> | ||
436 | 65 | {% endblock %} | ||
437 | 0 | 66 | ||
438 | === added file 'gaps/templates/gaps/job_list.html' | |||
439 | --- gaps/templates/gaps/job_list.html 1970-01-01 00:00:00 +0000 | |||
440 | +++ gaps/templates/gaps/job_list.html 2014-04-07 22:20:52 +0000 | |||
441 | @@ -0,0 +1,96 @@ | |||
442 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
443 | 2 | {% load dashboard_extras %} | ||
444 | 3 | |||
445 | 4 | {% block page_name %}QA Coverage Dashboard{% endblock %} | ||
446 | 5 | |||
447 | 6 | {% block content %} | ||
448 | 7 | <script type='text/javascript'> | ||
449 | 8 | //<![CDATA[ | ||
450 | 9 | $(document).ready(function() { | ||
451 | 10 | $(".data-table").dataTable({ | ||
452 | 11 | "bPaginate": false, | ||
453 | 12 | "aaSorting": [[0, 'desc']] | ||
454 | 13 | }); | ||
455 | 14 | }); | ||
456 | 15 | //]]> | ||
457 | 16 | </script> | ||
458 | 17 | <div class='grid_15'> | ||
459 | 18 | <h2> | ||
460 | 19 | Jobs | ||
461 | 20 | </h2> | ||
462 | 21 | </div> | ||
463 | 22 | <div class='grid_2'> | ||
464 | 23 | <h3 class='nav-title'> | ||
465 | 24 | JOB FILTER | ||
466 | 25 | </h3> | ||
467 | 26 | <ul class='left_nav'> | ||
468 | 27 | <li> | ||
469 | 28 | <a href='{% url jobs %}'>All</a> | ||
470 | 29 | </li> | ||
471 | 30 | <li> | ||
472 | 31 | <a href='{% url jobs %}?show=autolanding'>Autolanding</a> | ||
473 | 32 | </li> | ||
474 | 33 | <li> | ||
475 | 34 | <a href='{% url jobs %}?show=ci'>CI</a> | ||
476 | 35 | </li> | ||
477 | 36 | <li> | ||
478 | 37 | <a href='{% url jobs %}?show=daily'>Daily</a> | ||
479 | 38 | </li> | ||
480 | 39 | <li> | ||
481 | 40 | <a href='{% url jobs %}?show=coverity'>Coverity</a> | ||
482 | 41 | </li> | ||
483 | 42 | </ul> | ||
484 | 43 | </div> | ||
485 | 44 | <div class='grid_13'> | ||
486 | 45 | <table class='data-table basic wide'> | ||
487 | 46 | <thead> | ||
488 | 47 | <tr> | ||
489 | 48 | <th>Job</th> | ||
490 | 49 | <th>Release</th> | ||
491 | 50 | <th>Arch</th> | ||
492 | 51 | <th>Date</th> | ||
493 | 52 | <th>Build</th> | ||
494 | 53 | <th>Duration</th> | ||
495 | 54 | <th>Tests</th> | ||
496 | 55 | <th>Coverage</th> | ||
497 | 56 | <th>Bugs</th> | ||
498 | 57 | </tr> | ||
499 | 58 | </thead> | ||
500 | 59 | <tbody> | ||
501 | 60 | {% for job in job_list %} | ||
502 | 61 | <tr> | ||
503 | 62 | <td> | ||
504 | 63 | <a href='job/{{ job.name }}'> | ||
505 | 64 | {{ job.name }} | ||
506 | 65 | </a> | ||
507 | 66 | </td> | ||
508 | 67 | <td> | ||
509 | 68 | {{ job.series }} | ||
510 | 69 | </td> | ||
511 | 70 | <td> | ||
512 | 71 | {{ job.arch }} | ||
513 | 72 | </td> | ||
514 | 73 | <td> | ||
515 | 74 | {{ job.last_run_date }} | ||
516 | 75 | </td> | ||
517 | 76 | <td class='num'> | ||
518 | 77 | {{ job.build_count }} | ||
519 | 78 | </td> | ||
520 | 79 | <td class='num'> | ||
521 | 80 | {{ job.duration }} | ||
522 | 81 | </td> | ||
523 | 82 | <td class='num'> | ||
524 | 83 | {{ job.test_count }} | ||
525 | 84 | </td> | ||
526 | 85 | <td class='num {{job.coverage_rate|pass_rate_color}}'> | ||
527 | 86 | {{ job.coverage_rate_pct }} | ||
528 | 87 | </td> | ||
529 | 88 | <td class='num'> | ||
530 | 89 | {{ job.bug_count }} | ||
531 | 90 | </td> | ||
532 | 91 | </tr> | ||
533 | 92 | {% endfor %} | ||
534 | 93 | </tbody> | ||
535 | 94 | </table> | ||
536 | 95 | </div> | ||
537 | 96 | {% endblock %} | ||
538 | 0 | 97 | ||
539 | === added file 'gaps/templates/gaps/main.html' | |||
540 | --- gaps/templates/gaps/main.html 1970-01-01 00:00:00 +0000 | |||
541 | +++ gaps/templates/gaps/main.html 2014-04-07 22:20:52 +0000 | |||
542 | @@ -0,0 +1,34 @@ | |||
543 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
544 | 2 | {% load dashboard_extras %} | ||
545 | 3 | |||
546 | 4 | {% block content %} | ||
547 | 5 | <script type='text/javascript'> | ||
548 | 6 | //<![CDATA[ | ||
549 | 7 | $(document).ready(function() { | ||
550 | 8 | $(".data-table").dataTable({ | ||
551 | 9 | "bPaginate": false, | ||
552 | 10 | "aaSorting": [[0, 'desc']] | ||
553 | 11 | }); | ||
554 | 12 | }); | ||
555 | 13 | //]]> | ||
556 | 14 | </script> | ||
557 | 15 | <div class='grid_15'> | ||
558 | 16 | <ul> | ||
559 | 17 | <li> | ||
560 | 18 | <h2> | ||
561 | 19 | <a href='{% url stacks %}?show=head'>Stacks</a> | ||
562 | 20 | </h2> | ||
563 | 21 | </li> | ||
564 | 22 | <li> | ||
565 | 23 | <h2> | ||
566 | 24 | <a href='{% url projects %}'>Projects</a> | ||
567 | 25 | </h2> | ||
568 | 26 | </li> | ||
569 | 27 | <li> | ||
570 | 28 | <h2> | ||
571 | 29 | <a href='{% url integration %}'>Daily Integration [TBD]</a> | ||
572 | 30 | </h2> | ||
573 | 31 | </li> | ||
574 | 32 | </ul> | ||
575 | 33 | </div> | ||
576 | 34 | {% endblock %} | ||
577 | 0 | 35 | ||
578 | === added file 'gaps/templates/gaps/project_detail.html' | |||
579 | --- gaps/templates/gaps/project_detail.html 1970-01-01 00:00:00 +0000 | |||
580 | +++ gaps/templates/gaps/project_detail.html 2014-04-07 22:20:52 +0000 | |||
581 | @@ -0,0 +1,83 @@ | |||
582 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
583 | 2 | {% load dashboard_extras staticfiles %} | ||
584 | 3 | {% load percentage %} | ||
585 | 4 | |||
586 | 5 | {% block content %} | ||
587 | 6 | <style> | ||
588 | 7 | #line-chart svg { | ||
589 | 8 | height: 400px; | ||
590 | 9 | width: 1100px; | ||
591 | 10 | } | ||
592 | 11 | </style> | ||
593 | 12 | <script type='text/javascript'> | ||
594 | 13 | //<![CDATA[ | ||
595 | 14 | $(document).ready(function() { | ||
596 | 15 | $(".data-table").dataTable({ | ||
597 | 16 | "bPaginate": false, | ||
598 | 17 | "aaSorting": [[2, 'desc']] | ||
599 | 18 | }); | ||
600 | 19 | }); | ||
601 | 20 | //]]> | ||
602 | 21 | </script> | ||
603 | 22 | <script type="text/javascript"> | ||
604 | 23 | d3.json('{% url "gaps_api_project" project.name %}', function(data) { | ||
605 | 24 | nv.addGraph(function() { | ||
606 | 25 | var chart = nv.models.lineChart() | ||
607 | 26 | .width(1100).height(400); | ||
608 | 27 | chart.forceY([0, 1]); | ||
609 | 28 | chart.xAxis | ||
610 | 29 | .axisLabel('Date') | ||
611 | 30 | .tickFormat(function(d){return d3.time.format('%Y%m%d')(new Date(d * 1000));}) | ||
612 | 31 | |||
613 | 32 | chart.yAxis | ||
614 | 33 | .axisLabel('%') | ||
615 | 34 | .tickFormat(d3.format('%')) | ||
616 | 35 | d3.select('#line-chart svg').datum(data).transition().duration(500).call(chart); | ||
617 | 36 | |||
618 | 37 | nv.utils.windowResize(chart.update); | ||
619 | 38 | |||
620 | 39 | return chart; | ||
621 | 40 | }); | ||
622 | 41 | }); | ||
623 | 42 | </script> | ||
624 | 43 | <div class='grid_15'> | ||
625 | 44 | <h2> | ||
626 | 45 | Project: {{ project.name }} | ||
627 | 46 | </h2> | ||
628 | 47 | </div> | ||
629 | 48 | <div class='grid_13'> | ||
630 | 49 | {% if coverage_datas|length > 0 %} | ||
631 | 50 | <div class="grid_13"> | ||
632 | 51 | <div id="line-chart"> | ||
633 | 52 | <svg></svg> | ||
634 | 53 | </div> | ||
635 | 54 | </div> | ||
636 | 55 | <table class='data-table basic wide'> | ||
637 | 56 | <thead> | ||
638 | 57 | <tr> | ||
639 | 58 | <th>Jenkins Build</th> | ||
640 | 59 | <th>Line Coverage</th> | ||
641 | 60 | <th>Branch Coverage</th> | ||
642 | 61 | </tr> | ||
643 | 62 | </thead> | ||
644 | 63 | <tbody> | ||
645 | 64 | {% for coverage_data in coverage_datas %} | ||
646 | 65 | <tr> | ||
647 | 66 | <td> | ||
648 | 67 | <a href='{{ coverage_data.coverage_build.url }}'>{{ coverage_data.coverage_build.ran_at }}</a> | ||
649 | 68 | </td> | ||
650 | 69 | <td class='num'> | ||
651 | 70 | {{ coverage_data.line_coverage|percentage }}% | ||
652 | 71 | </td> | ||
653 | 72 | <td class='num'> | ||
654 | 73 | {{ coverage_data.branch_coverage|percentage }}% | ||
655 | 74 | </td> | ||
656 | 75 | </tr> | ||
657 | 76 | {% endfor %} | ||
658 | 77 | </tbody> | ||
659 | 78 | </table> | ||
660 | 79 | {% else %} | ||
661 | 80 | No coverage data was found for this project. Please pursue with your QA contact or on freenode in the #ubuntu-quality channel. | ||
662 | 81 | {% endif %} | ||
663 | 82 | </div> | ||
664 | 83 | {% endblock %} | ||
665 | 0 | 84 | ||
666 | === added file 'gaps/templates/gaps/project_list.html' | |||
667 | --- gaps/templates/gaps/project_list.html 1970-01-01 00:00:00 +0000 | |||
668 | +++ gaps/templates/gaps/project_list.html 2014-04-07 22:20:52 +0000 | |||
669 | @@ -0,0 +1,202 @@ | |||
670 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
671 | 2 | {% load staticfiles %} | ||
672 | 3 | {% load dashboard_extras %} | ||
673 | 4 | {% load percentage %} | ||
674 | 5 | |||
675 | 6 | {% block content %} | ||
676 | 7 | <script type='text/javascript'> | ||
677 | 8 | //<![CDATA[ | ||
678 | 9 | $(document).ready(function() { | ||
679 | 10 | $(".data-table").dataTable({ | ||
680 | 11 | "bPaginate": false, | ||
681 | 12 | "aaSorting": [[3, 'desc'], [0, 'asc']], | ||
682 | 13 | "aoColumns": [ | ||
683 | 14 | null, | ||
684 | 15 | null, | ||
685 | 16 | {"aDataSort": [3]}, | ||
686 | 17 | {"bVisible": false}, | ||
687 | 18 | {"aDataSort": [5]}, | ||
688 | 19 | {"bVisible": false}, | ||
689 | 20 | ] | ||
690 | 21 | }); | ||
691 | 22 | }); | ||
692 | 23 | //]]> | ||
693 | 24 | </script> | ||
694 | 25 | <div class='grid_15'> | ||
695 | 26 | <h2> | ||
696 | 27 | Projects | ||
697 | 28 | </h2> | ||
698 | 29 | {% if project_list %} | ||
699 | 30 | <div class='grid_13'></div> | ||
700 | 31 | <div id='avg_chart_text' class='avg_chart_box'> | ||
701 | 32 | <div class='chart_title'>Code Coverage</div> | ||
702 | 33 | <div class='avg_chart_box'> | ||
703 | 34 | <div id='lineGaugeContainer'></div> | ||
704 | 35 | </div> | ||
705 | 36 | <div class='avg_chart_box'> | ||
706 | 37 | <div id='branchGaugeContainer'></div> | ||
707 | 38 | </div> | ||
708 | 39 | <div class='avg_chart_box'> | ||
709 | 40 | <div id='reportingGaugeContainer'></div> | ||
710 | 41 | </div> | ||
711 | 42 | </div> | ||
712 | 43 | {% endif %} | ||
713 | 44 | </div> | ||
714 | 45 | <div class='grid_2'> | ||
715 | 46 | <h3 class='nav-title'> | ||
716 | 47 | PROJECT FILTER | ||
717 | 48 | </h3> | ||
718 | 49 | <ul class='left_nav'> | ||
719 | 50 | <li> | ||
720 | 51 | <a href='{% url 'projects' %}'>All</a> | ||
721 | 52 | </li> | ||
722 | 53 | {% for release in release_list %} | ||
723 | 54 | <li> | ||
724 | 55 | <a href='{% url 'projects' %}?show={{ release }} '>{{ release }}</a> | ||
725 | 56 | </li> | ||
726 | 57 | {% endfor %} | ||
727 | 58 | </ul> | ||
728 | 59 | </div> | ||
729 | 60 | <div class='grid_13'> | ||
730 | 61 | <table class='data-table basic wide'> | ||
731 | 62 | <thead> | ||
732 | 63 | <tr> | ||
733 | 64 | <th>Name</th> | ||
734 | 65 | <th>Last Build</th> | ||
735 | 66 | <th>Line Coverage</th> | ||
736 | 67 | <th>Line Coverage Sorting Criterion</th> | ||
737 | 68 | <th>Branch Coverage</th> | ||
738 | 69 | <th>Branch Coverage Sorting Criterion</th> | ||
739 | 70 | </tr> | ||
740 | 71 | </thead> | ||
741 | 72 | <tbody> | ||
742 | 73 | {% for project in project_list %} | ||
743 | 74 | <tr> | ||
744 | 75 | <td> | ||
745 | 76 | <a href='{% url 'projects' %}{{ project.name }}'>{{ project.name }}</a> | ||
746 | 77 | </td> | ||
747 | 78 | <td> | ||
748 | 79 | {{ project.last_build.ran_at }} | ||
749 | 80 | </td> | ||
750 | 81 | <td class='num'> | ||
751 | 82 | {% if project.last_coverage_data.line_coverage == None %} | ||
752 | 83 | N/A | ||
753 | 84 | {% else %} | ||
754 | 85 | {{ project.last_coverage_data.line_coverage|percentage }}% | ||
755 | 86 | {% endif %} | ||
756 | 87 | </td> | ||
757 | 88 | <td class='num'> | ||
758 | 89 | {{ project.last_coverage_data.line_coverage|percentage }} | ||
759 | 90 | </td> | ||
760 | 91 | <td class='num'> | ||
761 | 92 | {% if project.last_coverage_data.line_coverage == None %} | ||
762 | 93 | N/A | ||
763 | 94 | {% else %} | ||
764 | 95 | {{ project.last_coverage_data.branch_coverage|percentage }}% | ||
765 | 96 | {% endif %} | ||
766 | 97 | </td> | ||
767 | 98 | <td class='num'> | ||
768 | 99 | {{ project.last_coverage_data.branch_coverage|percentage }} | ||
769 | 100 | </td> | ||
770 | 101 | </tr> | ||
771 | 102 | {% endfor %} | ||
772 | 103 | </tbody> | ||
773 | 104 | </table> | ||
774 | 105 | </div> | ||
775 | 106 | {% if project_list %} | ||
776 | 107 | {% load staticfiles %} | ||
777 | 108 | <script type="text/javascript" src='{% static "js/d3v3.js" %}'></script> | ||
778 | 109 | <script type="text/javascript" src='{% static "js/gauge.js" %}'></script> | ||
779 | 110 | <script type="text/javascript"> | ||
780 | 111 | |||
781 | 112 | function avgLines() { | ||
782 | 113 | // project reporting list | ||
783 | 114 | var total_projects = 0; | ||
784 | 115 | var reporting_project = 0; | ||
785 | 116 | var line_sum = 0; | ||
786 | 117 | var hit_sum = 0; | ||
787 | 118 | var total_sum = 0; | ||
788 | 119 | var taken_sum = 0; | ||
789 | 120 | |||
790 | 121 | {% for project in project_list %} | ||
791 | 122 | |||
792 | 123 | var line_count = {{ project.ci_project.line_count|default_if_none:"0" }} + 0; | ||
793 | 124 | |||
794 | 125 | total_projects = total_projects + 1; | ||
795 | 126 | |||
796 | 127 | if ( line_count > 0) { | ||
797 | 128 | reporting_project = reporting_project + 1; | ||
798 | 129 | } | ||
799 | 130 | |||
800 | 131 | line_sum = line_sum + line_count; | ||
801 | 132 | hit_sum = hit_sum + {{ project.ci_project.hit_count|default_if_none:"0" }} + 0; | ||
802 | 133 | total_sum = total_sum + {{ project.ci_project.total_count|default_if_none:"0" }} + 0; | ||
803 | 134 | taken_sum = taken_sum + {{ project.ci_project.taken_count|default_if_none:"0" }} + 0; | ||
804 | 135 | |||
805 | 136 | {% endfor %} | ||
806 | 137 | |||
807 | 138 | |||
808 | 139 | line_percent = (hit_sum / line_sum) | ||
809 | 140 | branch_percent = (taken_sum / total_sum) | ||
810 | 141 | proj_report_percent = (reporting_project / total_projects) | ||
811 | 142 | return [Math.round(line_percent * 100), Math.round(branch_percent * 100), Math.round(proj_report_percent * 100)] | ||
812 | 143 | } | ||
813 | 144 | |||
814 | 145 | var coverage_data = avgLines() | ||
815 | 146 | var gauges = []; | ||
816 | 147 | var gauge_size = 106.5; | ||
817 | 148 | function create_coverage_gauge(name, label, value) { | ||
818 | 149 | var config = | ||
819 | 150 | { | ||
820 | 151 | size: gauge_size, | ||
821 | 152 | label: label, | ||
822 | 153 | minorTicks: 5 | ||
823 | 154 | } | ||
824 | 155 | |||
825 | 156 | config.redZones = []; | ||
826 | 157 | config.redZones.push({ from: 0, to: 50 }); | ||
827 | 158 | |||
828 | 159 | config.yellowZones = []; | ||
829 | 160 | config.yellowZones.push({ from: 50, to: 85 }); | ||
830 | 161 | |||
831 | 162 | config.greenZones = []; | ||
832 | 163 | config.greenZones.push = ({ from: 85, to: 100 }); | ||
833 | 164 | |||
834 | 165 | gauges[name] = new Gauge(name + "GaugeContainer", config); | ||
835 | 166 | gauges[name].render(); | ||
836 | 167 | gauges[name].redraw(value); | ||
837 | 168 | } | ||
838 | 169 | |||
839 | 170 | Â function create_proj_report_gauge(name, label, value) { | ||
840 | 171 | Â var config = | ||
841 | 172 | { | ||
842 | 173 | size: gauge_size, | ||
843 | 174 | label: label, | ||
844 | 175 | minorTicks: 5 | ||
845 | 176 | } | ||
846 | 177 | |||
847 | 178 | config.redZones = []; | ||
848 | 179 | config.redZones.push({ from: 0, to: 85 }); | ||
849 | 180 | |||
850 | 181 | config.yellowZones = []; | ||
851 | 182 | config.yellowZones.push({ from: 85, to: 95 }); | ||
852 | 183 | |||
853 | 184 | config.greenZones = []; | ||
854 | 185 | config.greenZones.push = ({ from: 95, to: 100 }); | ||
855 | 186 | |||
856 | 187 | gauges[name] = new Gauge(name + "GaugeContainer", config); | ||
857 | 188 | gauges[name].render(); | ||
858 | 189 | gauges[name].redraw(value); | ||
859 | 190 | } | ||
860 | 191 | Â Â | ||
861 | 192 | |||
862 | 193 | function init_charts() { | ||
863 | 194 | create_coverage_gauge("line", "Line", coverage_data[0]) | ||
864 | 195 | create_coverage_gauge("branch", "Branch", coverage_data[1]) | ||
865 | 196 | create_proj_report_gauge("reporting", "Reporting", coverage_data[2]) | ||
866 | 197 | } | ||
867 | 198 | |||
868 | 199 | window.onload = init_charts() | ||
869 | 200 | </script> | ||
870 | 201 | {% endif %} | ||
871 | 202 | {% endblock %} | ||
872 | 0 | 203 | ||
873 | === added file 'gaps/templates/gaps/stack_detail.html' | |||
874 | --- gaps/templates/gaps/stack_detail.html 1970-01-01 00:00:00 +0000 | |||
875 | +++ gaps/templates/gaps/stack_detail.html 2014-04-07 22:20:52 +0000 | |||
876 | @@ -0,0 +1,100 @@ | |||
877 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
878 | 2 | {% load staticfiles %} | ||
879 | 3 | {% load dashboard_extras %} | ||
880 | 4 | {% load gaps_extras %} | ||
881 | 5 | {% load percentage %} | ||
882 | 6 | |||
883 | 7 | {% block content %} | ||
884 | 8 | <style> | ||
885 | 9 | #line-chart svg { | ||
886 | 10 | height: 400px; | ||
887 | 11 | width: 1100px; | ||
888 | 12 | } | ||
889 | 13 | </style> | ||
890 | 14 | <script type='text/javascript'> | ||
891 | 15 | //<![CDATA[ | ||
892 | 16 | $(document).ready(function() { | ||
893 | 17 | $(".data-table").dataTable({ | ||
894 | 18 | "bPaginate": false, | ||
895 | 19 | "aaSorting": [[2, 'desc']] | ||
896 | 20 | }); | ||
897 | 21 | }); | ||
898 | 22 | //]]> | ||
899 | 23 | </script> | ||
900 | 24 | <script type="text/javascript"> | ||
901 | 25 | d3.json('{% url 'gaps_api_stack' stack.name %}', function(data) { | ||
902 | 26 | nv.addGraph(function() { | ||
903 | 27 | var chart = nv.models.lineChart() | ||
904 | 28 | .width(900).height(400); | ||
905 | 29 | chart.forceY([0, 1]); | ||
906 | 30 | chart.xAxis | ||
907 | 31 | .axisLabel('Date') | ||
908 | 32 | .tickFormat(function(d){return d3.time.format('%Y%m%d')(new Date(d * 1000));}) | ||
909 | 33 | chart.yAxis | ||
910 | 34 | .axisLabel('%') | ||
911 | 35 | .tickFormat(d3.format('%')) | ||
912 | 36 | d3.select('#line-chart svg').datum(data).transition().duration(500).call(chart); | ||
913 | 37 | nv.utils.windowResize(chart.update); | ||
914 | 38 | return chart; | ||
915 | 39 | }); | ||
916 | 40 | }); | ||
917 | 41 | </script> | ||
918 | 42 | <div class='grid_15'> | ||
919 | 43 | <h2> | ||
920 | 44 | Stack: {{ stack.name }} | ||
921 | 45 | </h2> | ||
922 | 46 | </div> | ||
923 | 47 | <div class='grid_2'> | ||
924 | 48 | <h3 class='nav-title'> | ||
925 | 49 | STACKS | ||
926 | 50 | </h3> | ||
927 | 51 | <ul class='left_nav'> | ||
928 | 52 | {% for stack in stack_list %} | ||
929 | 53 | <li> | ||
930 | 54 | <a href='{% url 'stacks' %}{{ stack }}'>{{ stack }}</a> | ||
931 | 55 | </li> | ||
932 | 56 | {% endfor %} | ||
933 | 57 | </ul> | ||
934 | 58 | </div> | ||
935 | 59 | <div class="grid_13"> | ||
936 | 60 | <div id="line-chart"> | ||
937 | 61 | <svg></svg> | ||
938 | 62 | </div> | ||
939 | 63 | <table class='data-table basic wide'> | ||
940 | 64 | <thead> | ||
941 | 65 | <tr> | ||
942 | 66 | <th>Name</th> | ||
943 | 67 | <th>Last Build</th> | ||
944 | 68 | <th>Line Coverage</th> | ||
945 | 69 | <th>Branch Coverage</th> | ||
946 | 70 | </tr> | ||
947 | 71 | </thead> | ||
948 | 72 | <tbody> | ||
949 | 73 | {% for project in project_list %} | ||
950 | 74 | <tr> | ||
951 | 75 | <td> | ||
952 | 76 | <a href='{% url 'projects' %}{{ project.name }}/'>{{ project.name }}</a> | ||
953 | 77 | </td> | ||
954 | 78 | <td> | ||
955 | 79 | {{ project.last_build.ran_at }} | ||
956 | 80 | </td> | ||
957 | 81 | <td class='num'> | ||
958 | 82 | {% if project.last_coverage_data.line_coverage == None %} | ||
959 | 83 | N/A | ||
960 | 84 | {% else %} | ||
961 | 85 | {{ project.last_coverage_data.line_coverage|percentage }}% | ||
962 | 86 | {% endif %} | ||
963 | 87 | </td> | ||
964 | 88 | <td class='num'> | ||
965 | 89 | {% if project.last_coverage_data.branch_coverage == None %} | ||
966 | 90 | N/A | ||
967 | 91 | {% else %} | ||
968 | 92 | {{ project.last_coverage_data.branch_coverage|percentage }}% | ||
969 | 93 | {% endif %} | ||
970 | 94 | </td> | ||
971 | 95 | </tr> | ||
972 | 96 | {% endfor %} | ||
973 | 97 | </tbody> | ||
974 | 98 | </table> | ||
975 | 99 | </div> | ||
976 | 100 | {% endblock %} | ||
977 | 0 | 101 | ||
978 | === added file 'gaps/templates/gaps/stack_list.html' | |||
979 | --- gaps/templates/gaps/stack_list.html 1970-01-01 00:00:00 +0000 | |||
980 | +++ gaps/templates/gaps/stack_list.html 2014-04-07 22:20:52 +0000 | |||
981 | @@ -0,0 +1,93 @@ | |||
982 | 1 | {% extends "gaps/gaps_layout.html" %} | ||
983 | 2 | {% load staticfiles %} | ||
984 | 3 | {% load dashboard_extras %} | ||
985 | 4 | {% load gaps_extras %} | ||
986 | 5 | {% load percentage %} | ||
987 | 6 | |||
988 | 7 | {% block content %} | ||
989 | 8 | <style> | ||
990 | 9 | #line-chart svg { | ||
991 | 10 | height: 400px; | ||
992 | 11 | width: 1100px; | ||
993 | 12 | } | ||
994 | 13 | </style> | ||
995 | 14 | <script type='text/javascript'> | ||
996 | 15 | //<![CDATA[ | ||
997 | 16 | $(document).ready(function() { | ||
998 | 17 | $(".data-table").dataTable({ | ||
999 | 18 | "bPaginate": false, | ||
1000 | 19 | "aaSorting": [[0, 'desc']] | ||
1001 | 20 | }); | ||
1002 | 21 | }); | ||
1003 | 22 | //]]> | ||
1004 | 23 | </script> | ||
1005 | 24 | <script type="text/javascript"> | ||
1006 | 25 | var chart_url = '{% url "gaps_api_stack_list" %}' | ||
1007 | 26 | create_gaps_line_chart(chart_url) | ||
1008 | 27 | </script> | ||
1009 | 28 | <div class='grid_15'> | ||
1010 | 29 | <h2> | ||
1011 | 30 | {% if show_filter %} | ||
1012 | 31 | Stack : {{ show_filter }} | ||
1013 | 32 | {% else %} | ||
1014 | 33 | All Stacks | ||
1015 | 34 | {% endif %} | ||
1016 | 35 | </h2> | ||
1017 | 36 | </div> | ||
1018 | 37 | <div class='grid_2'> | ||
1019 | 38 | <h3 class='nav-title'> | ||
1020 | 39 | |||
1021 | 40 | </h3> | ||
1022 | 41 | <ul class='left_nav'> | ||
1023 | 42 | <li> | ||
1024 | 43 | <a href='{% url 'stacks' %}'>All</a> | ||
1025 | 44 | </li> | ||
1026 | 45 | {% for release in release_list %} | ||
1027 | 46 | <li> | ||
1028 | 47 | <a href='{% url 'stacks' %}?show={{ release }} '>{{ release }}</a> | ||
1029 | 48 | </li> | ||
1030 | 49 | {% endfor %} | ||
1031 | 50 | </ul> | ||
1032 | 51 | </div> | ||
1033 | 52 | <div class="grid_13"> | ||
1034 | 53 | <div id="line-chart"> | ||
1035 | 54 | <svg></svg> | ||
1036 | 55 | </div> | ||
1037 | 56 | <table class='data-table basic wide'> | ||
1038 | 57 | <thead> | ||
1039 | 58 | <tr> | ||
1040 | 59 | <th>Name</th> | ||
1041 | 60 | <th>Projects Reporting</th> | ||
1042 | 61 | <th>Line Coverage</th> | ||
1043 | 62 | <th>Branch Coverage</th> | ||
1044 | 63 | </tr> | ||
1045 | 64 | </thead> | ||
1046 | 65 | <tbody> | ||
1047 | 66 | {% for stack in stack_list %} | ||
1048 | 67 | <tr> | ||
1049 | 68 | <td> | ||
1050 | 69 | <a href='{% url 'stacks' %}{{ stack.name }}/'>{{ stack.name }}</a> | ||
1051 | 70 | </td> | ||
1052 | 71 | <td class='{{ stack.percent_reporting|percent_reporting_color }}'> | ||
1053 | 72 | {{ stack.percent_reporting|percentage }} | ||
1054 | 73 | </td> | ||
1055 | 74 | <td class='num'> | ||
1056 | 75 | {% if stack.last_coverage_observation.line_coverage == None %} | ||
1057 | 76 | N/A | ||
1058 | 77 | {% else %} | ||
1059 | 78 | {{ stack.last_coverage_observation.line_coverage|percentage }}% | ||
1060 | 79 | {% endif %} | ||
1061 | 80 | </td> | ||
1062 | 81 | <td class='num'> | ||
1063 | 82 | {% if stack.last_coverage_observation.branch_coverage == None %} | ||
1064 | 83 | N/A | ||
1065 | 84 | {% else %} | ||
1066 | 85 | {{ stack.last_coverage_observation.branch_coverage|percentage }}% | ||
1067 | 86 | {% endif %} | ||
1068 | 87 | </td> | ||
1069 | 88 | </tr> | ||
1070 | 89 | {% endfor %} | ||
1071 | 90 | </tbody> | ||
1072 | 91 | </table> | ||
1073 | 92 | </div> | ||
1074 | 93 | {% endblock %} | ||
1075 | 0 | 94 | ||
1076 | === removed file 'gaps/templates/gaps_layout.html' | |||
1077 | --- gaps/templates/gaps_layout.html 2014-03-09 21:55:39 +0000 | |||
1078 | +++ gaps/templates/gaps_layout.html 1970-01-01 00:00:00 +0000 | |||
1079 | @@ -1,1 +0,0 @@ | |||
1080 | 1 | {% extends "layout.html" %} | ||
1081 | 2 | 0 | ||
1082 | === removed file 'gaps/templates/integration_list.html' | |||
1083 | --- gaps/templates/integration_list.html 2014-03-07 16:58:26 +0000 | |||
1084 | +++ gaps/templates/integration_list.html 1970-01-01 00:00:00 +0000 | |||
1085 | @@ -1,65 +0,0 @@ | |||
1086 | 1 | {% extends "gaps_layout.html" %} | ||
1087 | 2 | {% load dashboard_extras %} | ||
1088 | 3 | |||
1089 | 4 | {% block page_name %}QA Coverage Dashboard{% endblock %} | ||
1090 | 5 | |||
1091 | 6 | {% block content %} | ||
1092 | 7 | <script type='text/javascript'> | ||
1093 | 8 | //<![CDATA[ | ||
1094 | 9 | $(document).ready(function() { | ||
1095 | 10 | $(".data-table").dataTable({ | ||
1096 | 11 | "bPaginate": false, | ||
1097 | 12 | "aaSorting": [[0, 'desc']] | ||
1098 | 13 | }); | ||
1099 | 14 | }); | ||
1100 | 15 | //]]> | ||
1101 | 16 | </script> | ||
1102 | 17 | <div class='grid_15'> | ||
1103 | 18 | <h2> | ||
1104 | 19 | Integration Testing [TBD] | ||
1105 | 20 | </h2> | ||
1106 | 21 | </div> | ||
1107 | 22 | <div class='grid_2'> | ||
1108 | 23 | <h3 class='nav-title'> | ||
1109 | 24 | STACKS | ||
1110 | 25 | </h3> | ||
1111 | 26 | <ul class='left_nav'> | ||
1112 | 27 | <li> | ||
1113 | 28 | <a href='{% url stacks %}'>All</a> | ||
1114 | 29 | </li> | ||
1115 | 30 | </ul> | ||
1116 | 31 | </div> | ||
1117 | 32 | <div class='grid_13'> | ||
1118 | 33 | This page is work in progress.<BR> | ||
1119 | 34 | It will be used to show test results for the daily-release process | ||
1120 | 35 | integration tests. | ||
1121 | 36 | <table class='data-table basic wide'> | ||
1122 | 37 | <thead> | ||
1123 | 38 | <tr> | ||
1124 | 39 | <th>Name</th> | ||
1125 | 40 | <th>Release</th> | ||
1126 | 41 | <th>Series</th> | ||
1127 | 42 | <th>Results</th> | ||
1128 | 43 | </tr> | ||
1129 | 44 | </thead> | ||
1130 | 45 | <tbody> | ||
1131 | 46 | {% for test in test_list %} | ||
1132 | 47 | <tr> | ||
1133 | 48 | <td> | ||
1134 | 49 | <a href='{% url stacks %}/{{ test.stack_name }}'>{{ test.stack_name }}</a> | ||
1135 | 50 | </td> | ||
1136 | 51 | <td> | ||
1137 | 52 | {{ test.release }} | ||
1138 | 53 | </td> | ||
1139 | 54 | <td> | ||
1140 | 55 | {{ test.series }} | ||
1141 | 56 | </td> | ||
1142 | 57 | <td> | ||
1143 | 58 | {{ test.results }} | ||
1144 | 59 | </td> | ||
1145 | 60 | </tr> | ||
1146 | 61 | {% endfor %} | ||
1147 | 62 | </tbody> | ||
1148 | 63 | </table> | ||
1149 | 64 | </div> | ||
1150 | 65 | {% endblock %} | ||
1151 | 66 | 0 | ||
1152 | === removed file 'gaps/templates/job.html' | |||
1153 | --- gaps/templates/job.html 2014-03-07 16:58:26 +0000 | |||
1154 | +++ gaps/templates/job.html 1970-01-01 00:00:00 +0000 | |||
1155 | @@ -1,65 +0,0 @@ | |||
1156 | 1 | {% extends "layout.html" %} | ||
1157 | 2 | {% load dashboard_extras %} | ||
1158 | 3 | |||
1159 | 4 | {% block page_name %}QA Coverage Dashboard{% endblock %} | ||
1160 | 5 | |||
1161 | 6 | {% block content %} | ||
1162 | 7 | <script type='text/javascript'> | ||
1163 | 8 | //<![CDATA[ | ||
1164 | 9 | $(document).ready(function() { | ||
1165 | 10 | $(".data-table").dataTable({ | ||
1166 | 11 | "bPaginate": false, | ||
1167 | 12 | "aaSorting": [[0, 'desc']] | ||
1168 | 13 | }); | ||
1169 | 14 | }); | ||
1170 | 15 | //]]> | ||
1171 | 16 | </script> | ||
1172 | 17 | <div class='grid_15'> | ||
1173 | 18 | <h2> | ||
1174 | 19 | Job: {{ job.name }} | ||
1175 | 20 | </h2> | ||
1176 | 21 | </div> | ||
1177 | 22 | <div class='grid_2'> | ||
1178 | 23 | <h3 class='nav-title'> | ||
1179 | 24 | BUILD FILTER | ||
1180 | 25 | </h3> | ||
1181 | 26 | <ul class='left_nav'> | ||
1182 | 27 | <li> | ||
1183 | 28 | <a href='?show=all'>All</a> | ||
1184 | 29 | </li> | ||
1185 | 30 | {% for result in result_list %} | ||
1186 | 31 | <li> | ||
1187 | 32 | <a href='{% url jobs %}{{ job.name }}?show={{ result.name }}'>{{ result.name }}</a> | ||
1188 | 33 | </li> | ||
1189 | 34 | {% endfor %} | ||
1190 | 35 | </ul> | ||
1191 | 36 | </div> | ||
1192 | 37 | <div class='grid_13'> | ||
1193 | 38 | </div> | ||
1194 | 39 | <div class='grid_13'> | ||
1195 | 40 | <table class='data-table basic wide'> | ||
1196 | 41 | <thead> | ||
1197 | 42 | <tr> | ||
1198 | 43 | <th>Number</th> | ||
1199 | 44 | <th>Status</th> | ||
1200 | 45 | <th>Timestamp</th> | ||
1201 | 46 | </tr> | ||
1202 | 47 | </thead> | ||
1203 | 48 | <tbody> | ||
1204 | 49 | {% for build in build_list %} | ||
1205 | 50 | <tr> | ||
1206 | 51 | <td class='num'> | ||
1207 | 52 | <a href="{{ build.url }}">{{ build.number }}</a> | ||
1208 | 53 | </td> | ||
1209 | 54 | <td> | ||
1210 | 55 | {{ build.result }} | ||
1211 | 56 | </td> | ||
1212 | 57 | <td> | ||
1213 | 58 | {{ build.timestamp }} | ||
1214 | 59 | </td> | ||
1215 | 60 | </tr> | ||
1216 | 61 | {% endfor %} | ||
1217 | 62 | </tbody> | ||
1218 | 63 | </table> | ||
1219 | 64 | </div> | ||
1220 | 65 | {% endblock %} | ||
1221 | 66 | 0 | ||
1222 | === removed file 'gaps/templates/job_list.html' | |||
1223 | --- gaps/templates/job_list.html 2014-03-07 16:58:26 +0000 | |||
1224 | +++ gaps/templates/job_list.html 1970-01-01 00:00:00 +0000 | |||
1225 | @@ -1,96 +0,0 @@ | |||
1226 | 1 | {% extends "layout.html" %} | ||
1227 | 2 | {% load dashboard_extras %} | ||
1228 | 3 | |||
1229 | 4 | {% block page_name %}QA Coverage Dashboard{% endblock %} | ||
1230 | 5 | |||
1231 | 6 | {% block content %} | ||
1232 | 7 | <script type='text/javascript'> | ||
1233 | 8 | //<![CDATA[ | ||
1234 | 9 | $(document).ready(function() { | ||
1235 | 10 | $(".data-table").dataTable({ | ||
1236 | 11 | "bPaginate": false, | ||
1237 | 12 | "aaSorting": [[0, 'desc']] | ||
1238 | 13 | }); | ||
1239 | 14 | }); | ||
1240 | 15 | //]]> | ||
1241 | 16 | </script> | ||
1242 | 17 | <div class='grid_15'> | ||
1243 | 18 | <h2> | ||
1244 | 19 | Jobs | ||
1245 | 20 | </h2> | ||
1246 | 21 | </div> | ||
1247 | 22 | <div class='grid_2'> | ||
1248 | 23 | <h3 class='nav-title'> | ||
1249 | 24 | JOB FILTER | ||
1250 | 25 | </h3> | ||
1251 | 26 | <ul class='left_nav'> | ||
1252 | 27 | <li> | ||
1253 | 28 | <a href='{% url jobs %}'>All</a> | ||
1254 | 29 | </li> | ||
1255 | 30 | <li> | ||
1256 | 31 | <a href='{% url jobs %}?show=autolanding'>Autolanding</a> | ||
1257 | 32 | </li> | ||
1258 | 33 | <li> | ||
1259 | 34 | <a href='{% url jobs %}?show=ci'>CI</a> | ||
1260 | 35 | </li> | ||
1261 | 36 | <li> | ||
1262 | 37 | <a href='{% url jobs %}?show=daily'>Daily</a> | ||
1263 | 38 | </li> | ||
1264 | 39 | <li> | ||
1265 | 40 | <a href='{% url jobs %}?show=coverity'>Coverity</a> | ||
1266 | 41 | </li> | ||
1267 | 42 | </ul> | ||
1268 | 43 | </div> | ||
1269 | 44 | <div class='grid_13'> | ||
1270 | 45 | <table class='data-table basic wide'> | ||
1271 | 46 | <thead> | ||
1272 | 47 | <tr> | ||
1273 | 48 | <th>Job</th> | ||
1274 | 49 | <th>Release</th> | ||
1275 | 50 | <th>Arch</th> | ||
1276 | 51 | <th>Date</th> | ||
1277 | 52 | <th>Build</th> | ||
1278 | 53 | <th>Duration</th> | ||
1279 | 54 | <th>Tests</th> | ||
1280 | 55 | <th>Coverage</th> | ||
1281 | 56 | <th>Bugs</th> | ||
1282 | 57 | </tr> | ||
1283 | 58 | </thead> | ||
1284 | 59 | <tbody> | ||
1285 | 60 | {% for job in job_list %} | ||
1286 | 61 | <tr> | ||
1287 | 62 | <td> | ||
1288 | 63 | <a href='job/{{ job.name }}'> | ||
1289 | 64 | {{ job.name }} | ||
1290 | 65 | </a> | ||
1291 | 66 | </td> | ||
1292 | 67 | <td> | ||
1293 | 68 | {{ job.series }} | ||
1294 | 69 | </td> | ||
1295 | 70 | <td> | ||
1296 | 71 | {{ job.arch }} | ||
1297 | 72 | </td> | ||
1298 | 73 | <td> | ||
1299 | 74 | {{ job.last_run_date }} | ||
1300 | 75 | </td> | ||
1301 | 76 | <td class='num'> | ||
1302 | 77 | {{ job.build_count }} | ||
1303 | 78 | </td> | ||
1304 | 79 | <td class='num'> | ||
1305 | 80 | {{ job.duration }} | ||
1306 | 81 | </td> | ||
1307 | 82 | <td class='num'> | ||
1308 | 83 | {{ job.test_count }} | ||
1309 | 84 | </td> | ||
1310 | 85 | <td class='num {{job.coverage_rate|pass_rate_color}}'> | ||
1311 | 86 | {{ job.coverage_rate_pct }} | ||
1312 | 87 | </td> | ||
1313 | 88 | <td class='num'> | ||
1314 | 89 | {{ job.bug_count }} | ||
1315 | 90 | </td> | ||
1316 | 91 | </tr> | ||
1317 | 92 | {% endfor %} | ||
1318 | 93 | </tbody> | ||
1319 | 94 | </table> | ||
1320 | 95 | </div> | ||
1321 | 96 | {% endblock %} | ||
1322 | 97 | 0 | ||
1323 | === removed file 'gaps/templates/main.html' | |||
1324 | --- gaps/templates/main.html 2014-03-07 16:58:26 +0000 | |||
1325 | +++ gaps/templates/main.html 1970-01-01 00:00:00 +0000 | |||
1326 | @@ -1,34 +0,0 @@ | |||
1327 | 1 | {% extends "layout.html" %} | ||
1328 | 2 | {% load dashboard_extras %} | ||
1329 | 3 | |||
1330 | 4 | {% block content %} | ||
1331 | 5 | <script type='text/javascript'> | ||
1332 | 6 | //<![CDATA[ | ||
1333 | 7 | $(document).ready(function() { | ||
1334 | 8 | $(".data-table").dataTable({ | ||
1335 | 9 | "bPaginate": false, | ||
1336 | 10 | "aaSorting": [[0, 'desc']] | ||
1337 | 11 | }); | ||
1338 | 12 | }); | ||
1339 | 13 | //]]> | ||
1340 | 14 | </script> | ||
1341 | 15 | <div class='grid_15'> | ||
1342 | 16 | <ul> | ||
1343 | 17 | <li> | ||
1344 | 18 | <h2> | ||
1345 | 19 | <a href='{% url stacks %}?show=head'>Stacks</a> | ||
1346 | 20 | </h2> | ||
1347 | 21 | </li> | ||
1348 | 22 | <li> | ||
1349 | 23 | <h2> | ||
1350 | 24 | <a href='{% url projects %}'>Projects</a> | ||
1351 | 25 | </h2> | ||
1352 | 26 | </li> | ||
1353 | 27 | <li> | ||
1354 | 28 | <h2> | ||
1355 | 29 | <a href='{% url integration %}'>Daily Integration [TBD]</a> | ||
1356 | 30 | </h2> | ||
1357 | 31 | </li> | ||
1358 | 32 | </ul> | ||
1359 | 33 | </div> | ||
1360 | 34 | {% endblock %} | ||
1361 | 35 | 0 | ||
1362 | === removed file 'gaps/templates/project_detail.html' | |||
1363 | --- gaps/templates/project_detail.html 2014-03-14 19:54:57 +0000 | |||
1364 | +++ gaps/templates/project_detail.html 1970-01-01 00:00:00 +0000 | |||
1365 | @@ -1,90 +0,0 @@ | |||
1366 | 1 | {% extends "layout.html" %} | ||
1367 | 2 | {% load dashboard_extras %} | ||
1368 | 3 | {% load percentage %} | ||
1369 | 4 | {% block extra_headers %} | ||
1370 | 5 | <link type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/nvd3/0.9/nv.d3.css" rel="stylesheet" /> | ||
1371 | 6 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.2.2/d3.min.js"></script> | ||
1372 | 7 | <!-- need to switch back to cdnjs when bugs are fixed | ||
1373 | 8 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/nvd3/0.9/nv.d3.js"></script>--> | ||
1374 | 9 | <script type="text/javascript" src="//6df403e3d98e2ac67ac2-180150c581869d2c4c18db9c9e3179c4.r40.cf1.rackcdn.com/nv.d3.js"></script> | ||
1375 | 10 | {% endblock extra_headers %} | ||
1376 | 11 | |||
1377 | 12 | {% block content %} | ||
1378 | 13 | <style> | ||
1379 | 14 | #line-chart svg { | ||
1380 | 15 | height: 400px; | ||
1381 | 16 | width: 1100px; | ||
1382 | 17 | } | ||
1383 | 18 | </style> | ||
1384 | 19 | <script type='text/javascript'> | ||
1385 | 20 | //<![CDATA[ | ||
1386 | 21 | $(document).ready(function() { | ||
1387 | 22 | $(".data-table").dataTable({ | ||
1388 | 23 | "bPaginate": false, | ||
1389 | 24 | "aaSorting": [[2, 'desc']] | ||
1390 | 25 | }); | ||
1391 | 26 | }); | ||
1392 | 27 | //]]> | ||
1393 | 28 | </script> | ||
1394 | 29 | <script type="text/javascript"> | ||
1395 | 30 | d3.json('{% url "gaps_api_project" project.name %}', function(data) { | ||
1396 | 31 | nv.addGraph(function() { | ||
1397 | 32 | var chart = nv.models.lineChart() | ||
1398 | 33 | .width(1100).height(400); | ||
1399 | 34 | chart.forceY([0, 1]); | ||
1400 | 35 | chart.xAxis | ||
1401 | 36 | .axisLabel('Date') | ||
1402 | 37 | .tickFormat(function(d){return d3.time.format('%Y%m%d')(new Date(d * 1000));}) | ||
1403 | 38 | |||
1404 | 39 | chart.yAxis | ||
1405 | 40 | .axisLabel('%') | ||
1406 | 41 | .tickFormat(d3.format('%')) | ||
1407 | 42 | d3.select('#line-chart svg').datum(data).transition().duration(500).call(chart); | ||
1408 | 43 | |||
1409 | 44 | nv.utils.windowResize(chart.update); | ||
1410 | 45 | |||
1411 | 46 | return chart; | ||
1412 | 47 | }); | ||
1413 | 48 | }); | ||
1414 | 49 | </script> | ||
1415 | 50 | <div class='grid_15'> | ||
1416 | 51 | <h2> | ||
1417 | 52 | Project: {{ project.name }} | ||
1418 | 53 | </h2> | ||
1419 | 54 | </div> | ||
1420 | 55 | <div class='grid_13'> | ||
1421 | 56 | {% if coverage_datas|length > 0 %} | ||
1422 | 57 | <div class="grid_13"> | ||
1423 | 58 | <div id="line-chart"> | ||
1424 | 59 | <svg></svg> | ||
1425 | 60 | </div> | ||
1426 | 61 | </div> | ||
1427 | 62 | <table class='data-table basic wide'> | ||
1428 | 63 | <thead> | ||
1429 | 64 | <tr> | ||
1430 | 65 | <th>Jenkins Build</th> | ||
1431 | 66 | <th>Line Coverage</th> | ||
1432 | 67 | <th>Branch Coverage</th> | ||
1433 | 68 | </tr> | ||
1434 | 69 | </thead> | ||
1435 | 70 | <tbody> | ||
1436 | 71 | {% for coverage_data in coverage_datas %} | ||
1437 | 72 | <tr> | ||
1438 | 73 | <td> | ||
1439 | 74 | <a href='{{ coverage_data.coverage_build.url }}'>{{ coverage_data.coverage_build.ran_at }}</a> | ||
1440 | 75 | </td> | ||
1441 | 76 | <td class='num'> | ||
1442 | 77 | {{ coverage_data.line_coverage|percentage }}% | ||
1443 | 78 | </td> | ||
1444 | 79 | <td class='num'> | ||
1445 | 80 | {{ coverage_data.branch_coverage|percentage }}% | ||
1446 | 81 | </td> | ||
1447 | 82 | </tr> | ||
1448 | 83 | {% endfor %} | ||
1449 | 84 | </tbody> | ||
1450 | 85 | </table> | ||
1451 | 86 | {% else %} | ||
1452 | 87 | No coverage data was found for this project. Please pursue with your QA contact or on freenode in the #ubuntu-quality channel. | ||
1453 | 88 | {% endif %} | ||
1454 | 89 | </div> | ||
1455 | 90 | {% endblock %} | ||
1456 | 91 | 0 | ||
1457 | === removed file 'gaps/templates/project_list.html' | |||
1458 | --- gaps/templates/project_list.html 2014-03-14 16:52:09 +0000 | |||
1459 | +++ gaps/templates/project_list.html 1970-01-01 00:00:00 +0000 | |||
1460 | @@ -1,201 +0,0 @@ | |||
1461 | 1 | {% extends "gaps_layout.html" %} | ||
1462 | 2 | {% load dashboard_extras %} | ||
1463 | 3 | {% load percentage %} | ||
1464 | 4 | |||
1465 | 5 | {% block content %} | ||
1466 | 6 | <script type='text/javascript'> | ||
1467 | 7 | //<![CDATA[ | ||
1468 | 8 | $(document).ready(function() { | ||
1469 | 9 | $(".data-table").dataTable({ | ||
1470 | 10 | "bPaginate": false, | ||
1471 | 11 | "aaSorting": [[3, 'desc'], [0, 'asc']], | ||
1472 | 12 | "aoColumns": [ | ||
1473 | 13 | null, | ||
1474 | 14 | null, | ||
1475 | 15 | {"aDataSort": [3]}, | ||
1476 | 16 | {"bVisible": false}, | ||
1477 | 17 | {"aDataSort": [5]}, | ||
1478 | 18 | {"bVisible": false}, | ||
1479 | 19 | ] | ||
1480 | 20 | }); | ||
1481 | 21 | }); | ||
1482 | 22 | //]]> | ||
1483 | 23 | </script> | ||
1484 | 24 | <div class='grid_15'> | ||
1485 | 25 | <h2> | ||
1486 | 26 | Projects | ||
1487 | 27 | </h2> | ||
1488 | 28 | {% if project_list %} | ||
1489 | 29 | <div class='grid_13'></div> | ||
1490 | 30 | <div id='avg_chart_text' class='avg_chart_box'> | ||
1491 | 31 | <div class='chart_title'>Code Coverage</div> | ||
1492 | 32 | <div class='avg_chart_box'> | ||
1493 | 33 | <div id='lineGaugeContainer'></div> | ||
1494 | 34 | </div> | ||
1495 | 35 | <div class='avg_chart_box'> | ||
1496 | 36 | <div id='branchGaugeContainer'></div> | ||
1497 | 37 | </div> | ||
1498 | 38 | <div class='avg_chart_box'> | ||
1499 | 39 | <div id='reportingGaugeContainer'></div> | ||
1500 | 40 | </div> | ||
1501 | 41 | </div> | ||
1502 | 42 | {% endif %} | ||
1503 | 43 | </div> | ||
1504 | 44 | <div class='grid_2'> | ||
1505 | 45 | <h3 class='nav-title'> | ||
1506 | 46 | PROJECT FILTER | ||
1507 | 47 | </h3> | ||
1508 | 48 | <ul class='left_nav'> | ||
1509 | 49 | <li> | ||
1510 | 50 | <a href='{% url 'projects' %}'>All</a> | ||
1511 | 51 | </li> | ||
1512 | 52 | {% for release in release_list %} | ||
1513 | 53 | <li> | ||
1514 | 54 | <a href='{% url 'projects' %}?show={{ release }} '>{{ release }}</a> | ||
1515 | 55 | </li> | ||
1516 | 56 | {% endfor %} | ||
1517 | 57 | </ul> | ||
1518 | 58 | </div> | ||
1519 | 59 | <div class='grid_13'> | ||
1520 | 60 | <table class='data-table basic wide'> | ||
1521 | 61 | <thead> | ||
1522 | 62 | <tr> | ||
1523 | 63 | <th>Name</th> | ||
1524 | 64 | <th>Last Build</th> | ||
1525 | 65 | <th>Line Coverage</th> | ||
1526 | 66 | <th>Line Coverage Sorting Criterion</th> | ||
1527 | 67 | <th>Branch Coverage</th> | ||
1528 | 68 | <th>Branch Coverage Sorting Criterion</th> | ||
1529 | 69 | </tr> | ||
1530 | 70 | </thead> | ||
1531 | 71 | <tbody> | ||
1532 | 72 | {% for project in project_list %} | ||
1533 | 73 | <tr> | ||
1534 | 74 | <td> | ||
1535 | 75 | <a href='{% url 'projects' %}{{ project.name }}'>{{ project.name }}</a> | ||
1536 | 76 | </td> | ||
1537 | 77 | <td> | ||
1538 | 78 | {{ project.last_build.ran_at }} | ||
1539 | 79 | </td> | ||
1540 | 80 | <td class='num'> | ||
1541 | 81 | {% if project.last_coverage_data.line_coverage == None %} | ||
1542 | 82 | N/A | ||
1543 | 83 | {% else %} | ||
1544 | 84 | {{ project.last_coverage_data.line_coverage|percentage }}% | ||
1545 | 85 | {% endif %} | ||
1546 | 86 | </td> | ||
1547 | 87 | <td class='num'> | ||
1548 | 88 | {{ project.last_coverage_data.line_coverage|percentage }} | ||
1549 | 89 | </td> | ||
1550 | 90 | <td class='num'> | ||
1551 | 91 | {% if project.last_coverage_data.line_coverage == None %} | ||
1552 | 92 | N/A | ||
1553 | 93 | {% else %} | ||
1554 | 94 | {{ project.last_coverage_data.branch_coverage|percentage }}% | ||
1555 | 95 | {% endif %} | ||
1556 | 96 | </td> | ||
1557 | 97 | <td class='num'> | ||
1558 | 98 | {{ project.last_coverage_data.branch_coverage|percentage }} | ||
1559 | 99 | </td> | ||
1560 | 100 | </tr> | ||
1561 | 101 | {% endfor %} | ||
1562 | 102 | </tbody> | ||
1563 | 103 | </table> | ||
1564 | 104 | </div> | ||
1565 | 105 | {% if project_list %} | ||
1566 | 106 | {% load staticfiles %} | ||
1567 | 107 | <script type="text/javascript" src='{% static "js/d3v3.js" %}'></script> | ||
1568 | 108 | <script type="text/javascript" src='{% static "js/gauge.js" %}'></script> | ||
1569 | 109 | <script type="text/javascript"> | ||
1570 | 110 | |||
1571 | 111 | function avgLines() { | ||
1572 | 112 | // project reporting list | ||
1573 | 113 | var total_projects = 0; | ||
1574 | 114 | var reporting_project = 0; | ||
1575 | 115 | var line_sum = 0; | ||
1576 | 116 | var hit_sum = 0; | ||
1577 | 117 | var total_sum = 0; | ||
1578 | 118 | var taken_sum = 0; | ||
1579 | 119 | |||
1580 | 120 | {% for project in project_list %} | ||
1581 | 121 | |||
1582 | 122 | var line_count = {{ project.ci_project.line_count|default_if_none:"0" }} + 0; | ||
1583 | 123 | |||
1584 | 124 | total_projects = total_projects + 1; | ||
1585 | 125 | |||
1586 | 126 | if ( line_count > 0) { | ||
1587 | 127 | reporting_project = reporting_project + 1; | ||
1588 | 128 | } | ||
1589 | 129 | |||
1590 | 130 | line_sum = line_sum + line_count; | ||
1591 | 131 | hit_sum = hit_sum + {{ project.ci_project.hit_count|default_if_none:"0" }} + 0; | ||
1592 | 132 | total_sum = total_sum + {{ project.ci_project.total_count|default_if_none:"0" }} + 0; | ||
1593 | 133 | taken_sum = taken_sum + {{ project.ci_project.taken_count|default_if_none:"0" }} + 0; | ||
1594 | 134 | |||
1595 | 135 | {% endfor %} | ||
1596 | 136 | |||
1597 | 137 | |||
1598 | 138 | line_percent = (hit_sum / line_sum) | ||
1599 | 139 | branch_percent = (taken_sum / total_sum) | ||
1600 | 140 | proj_report_percent = (reporting_project / total_projects) | ||
1601 | 141 | return [Math.round(line_percent * 100), Math.round(branch_percent * 100), Math.round(proj_report_percent * 100)] | ||
1602 | 142 | } | ||
1603 | 143 | |||
1604 | 144 | var coverage_data = avgLines() | ||
1605 | 145 | var gauges = []; | ||
1606 | 146 | var gauge_size = 106.5; | ||
1607 | 147 | function create_coverage_gauge(name, label, value) { | ||
1608 | 148 | var config = | ||
1609 | 149 | { | ||
1610 | 150 | size: gauge_size, | ||
1611 | 151 | label: label, | ||
1612 | 152 | minorTicks: 5 | ||
1613 | 153 | } | ||
1614 | 154 | |||
1615 | 155 | config.redZones = []; | ||
1616 | 156 | config.redZones.push({ from: 0, to: 50 }); | ||
1617 | 157 | |||
1618 | 158 | config.yellowZones = []; | ||
1619 | 159 | config.yellowZones.push({ from: 50, to: 85 }); | ||
1620 | 160 | |||
1621 | 161 | config.greenZones = []; | ||
1622 | 162 | config.greenZones.push = ({ from: 85, to: 100 }); | ||
1623 | 163 | |||
1624 | 164 | gauges[name] = new Gauge(name + "GaugeContainer", config); | ||
1625 | 165 | gauges[name].render(); | ||
1626 | 166 | gauges[name].redraw(value); | ||
1627 | 167 | } | ||
1628 | 168 | |||
1629 | 169 | Â function create_proj_report_gauge(name, label, value) { | ||
1630 | 170 | Â var config = | ||
1631 | 171 | { | ||
1632 | 172 | size: gauge_size, | ||
1633 | 173 | label: label, | ||
1634 | 174 | minorTicks: 5 | ||
1635 | 175 | } | ||
1636 | 176 | |||
1637 | 177 | config.redZones = []; | ||
1638 | 178 | config.redZones.push({ from: 0, to: 85 }); | ||
1639 | 179 | |||
1640 | 180 | config.yellowZones = []; | ||
1641 | 181 | config.yellowZones.push({ from: 85, to: 95 }); | ||
1642 | 182 | |||
1643 | 183 | config.greenZones = []; | ||
1644 | 184 | config.greenZones.push = ({ from: 95, to: 100 }); | ||
1645 | 185 | |||
1646 | 186 | gauges[name] = new Gauge(name + "GaugeContainer", config); | ||
1647 | 187 | gauges[name].render(); | ||
1648 | 188 | gauges[name].redraw(value); | ||
1649 | 189 | } | ||
1650 | 190 | Â Â | ||
1651 | 191 | |||
1652 | 192 | function init_charts() { | ||
1653 | 193 | create_coverage_gauge("line", "Line", coverage_data[0]) | ||
1654 | 194 | create_coverage_gauge("branch", "Branch", coverage_data[1]) | ||
1655 | 195 | create_proj_report_gauge("reporting", "Reporting", coverage_data[2]) | ||
1656 | 196 | } | ||
1657 | 197 | |||
1658 | 198 | window.onload = init_charts() | ||
1659 | 199 | </script> | ||
1660 | 200 | {% endif %} | ||
1661 | 201 | {% endblock %} | ||
1662 | 202 | 0 | ||
1663 | === removed file 'gaps/templates/stack_detail.html' | |||
1664 | --- gaps/templates/stack_detail.html 2014-03-14 16:52:09 +0000 | |||
1665 | +++ gaps/templates/stack_detail.html 1970-01-01 00:00:00 +0000 | |||
1666 | @@ -1,106 +0,0 @@ | |||
1667 | 1 | {% extends "gaps_layout.html" %} | ||
1668 | 2 | {% load dashboard_extras %} | ||
1669 | 3 | {% load gaps_extras %} | ||
1670 | 4 | {% load percentage %} | ||
1671 | 5 | {% block extra_headers %} | ||
1672 | 6 | <link type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/nvd3/0.9/nv.d3.css" rel="stylesheet" /> | ||
1673 | 7 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.2.2/d3.min.js"></script> | ||
1674 | 8 | <!-- need to switch back to cdnjs when bugs are fixed | ||
1675 | 9 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/nvd3/0.9/nv.d3.js"></script>--> | ||
1676 | 10 | <script type="text/javascript" src="//6df403e3d98e2ac67ac2-180150c581869d2c4c18db9c9e3179c4.r40.cf1.rackcdn.com/nv.d3.js"></script> | ||
1677 | 11 | {% endblock extra_headers %} | ||
1678 | 12 | |||
1679 | 13 | {% block content %} | ||
1680 | 14 | <style> | ||
1681 | 15 | #line-chart svg { | ||
1682 | 16 | height: 400px; | ||
1683 | 17 | width: 1100px; | ||
1684 | 18 | } | ||
1685 | 19 | </style> | ||
1686 | 20 | <script type='text/javascript'> | ||
1687 | 21 | //<![CDATA[ | ||
1688 | 22 | $(document).ready(function() { | ||
1689 | 23 | $(".data-table").dataTable({ | ||
1690 | 24 | "bPaginate": false, | ||
1691 | 25 | "aaSorting": [[2, 'desc']] | ||
1692 | 26 | }); | ||
1693 | 27 | }); | ||
1694 | 28 | //]]> | ||
1695 | 29 | </script> | ||
1696 | 30 | <script type="text/javascript"> | ||
1697 | 31 | d3.json('{% url 'gaps_api_stack' stack.name %}', function(data) { | ||
1698 | 32 | nv.addGraph(function() { | ||
1699 | 33 | var chart = nv.models.lineChart() | ||
1700 | 34 | .width(900).height(400); | ||
1701 | 35 | chart.forceY([0, 1]); | ||
1702 | 36 | chart.xAxis | ||
1703 | 37 | .axisLabel('Date') | ||
1704 | 38 | .tickFormat(function(d){return d3.time.format('%Y%m%d')(new Date(d * 1000));}) | ||
1705 | 39 | chart.yAxis | ||
1706 | 40 | .axisLabel('%') | ||
1707 | 41 | .tickFormat(d3.format('%')) | ||
1708 | 42 | d3.select('#line-chart svg').datum(data).transition().duration(500).call(chart); | ||
1709 | 43 | nv.utils.windowResize(chart.update); | ||
1710 | 44 | return chart; | ||
1711 | 45 | }); | ||
1712 | 46 | }); | ||
1713 | 47 | </script> | ||
1714 | 48 | <div class='grid_15'> | ||
1715 | 49 | <h2> | ||
1716 | 50 | Stack: {{ stack.name }} | ||
1717 | 51 | </h2> | ||
1718 | 52 | </div> | ||
1719 | 53 | <div class='grid_2'> | ||
1720 | 54 | <h3 class='nav-title'> | ||
1721 | 55 | STACKS | ||
1722 | 56 | </h3> | ||
1723 | 57 | <ul class='left_nav'> | ||
1724 | 58 | {% for stack in stack_list %} | ||
1725 | 59 | <li> | ||
1726 | 60 | <a href='{% url 'stacks' %}{{ stack }}'>{{ stack }}</a> | ||
1727 | 61 | </li> | ||
1728 | 62 | {% endfor %} | ||
1729 | 63 | </ul> | ||
1730 | 64 | </div> | ||
1731 | 65 | <div class="grid_13"> | ||
1732 | 66 | <div id="line-chart"> | ||
1733 | 67 | <svg></svg> | ||
1734 | 68 | </div> | ||
1735 | 69 | <table class='data-table basic wide'> | ||
1736 | 70 | <thead> | ||
1737 | 71 | <tr> | ||
1738 | 72 | <th>Name</th> | ||
1739 | 73 | <th>Last Build</th> | ||
1740 | 74 | <th>Line Coverage</th> | ||
1741 | 75 | <th>Branch Coverage</th> | ||
1742 | 76 | </tr> | ||
1743 | 77 | </thead> | ||
1744 | 78 | <tbody> | ||
1745 | 79 | {% for project in project_list %} | ||
1746 | 80 | <tr> | ||
1747 | 81 | <td> | ||
1748 | 82 | <a href='{% url 'projects' %}{{ project.name }}/'>{{ project.name }}</a> | ||
1749 | 83 | </td> | ||
1750 | 84 | <td> | ||
1751 | 85 | {{ project.last_build.ran_at }} | ||
1752 | 86 | </td> | ||
1753 | 87 | <td class='num'> | ||
1754 | 88 | {% if project.last_coverage_data.line_coverage == None %} | ||
1755 | 89 | N/A | ||
1756 | 90 | {% else %} | ||
1757 | 91 | {{ project.last_coverage_data.line_coverage|percentage }}% | ||
1758 | 92 | {% endif %} | ||
1759 | 93 | </td> | ||
1760 | 94 | <td class='num'> | ||
1761 | 95 | {% if project.last_coverage_data.branch_coverage == None %} | ||
1762 | 96 | N/A | ||
1763 | 97 | {% else %} | ||
1764 | 98 | {{ project.last_coverage_data.branch_coverage|percentage }}% | ||
1765 | 99 | {% endif %} | ||
1766 | 100 | </td> | ||
1767 | 101 | </tr> | ||
1768 | 102 | {% endfor %} | ||
1769 | 103 | </tbody> | ||
1770 | 104 | </table> | ||
1771 | 105 | </div> | ||
1772 | 106 | {% endblock %} | ||
1773 | 107 | 0 | ||
1774 | === removed file 'gaps/templates/stack_list.html' | |||
1775 | --- gaps/templates/stack_list.html 2014-03-14 16:52:09 +0000 | |||
1776 | +++ gaps/templates/stack_list.html 1970-01-01 00:00:00 +0000 | |||
1777 | @@ -1,113 +0,0 @@ | |||
1778 | 1 | {% extends "gaps_layout.html" %} | ||
1779 | 2 | {% load dashboard_extras %} | ||
1780 | 3 | {% load gaps_extras %} | ||
1781 | 4 | {% load percentage %} | ||
1782 | 5 | {% block extra_headers %} | ||
1783 | 6 | <link type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/nvd3/0.9/nv.d3.css" rel="stylesheet" /> | ||
1784 | 7 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.2.2/d3.min.js"></script> | ||
1785 | 8 | <!-- need to switch back to cdnjs when bugs are fixed | ||
1786 | 9 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/nvd3/0.9/nv.d3.js"></script>--> | ||
1787 | 10 | <script type="text/javascript" src="//6df403e3d98e2ac67ac2-180150c581869d2c4c18db9c9e3179c4.r40.cf1.rackcdn.com/nv.d3.js"></script> | ||
1788 | 11 | {% endblock extra_headers %} | ||
1789 | 12 | |||
1790 | 13 | {% block content %} | ||
1791 | 14 | <style> | ||
1792 | 15 | #line-chart svg { | ||
1793 | 16 | height: 400px; | ||
1794 | 17 | width: 1100px; | ||
1795 | 18 | } | ||
1796 | 19 | </style> | ||
1797 | 20 | <script type='text/javascript'> | ||
1798 | 21 | //<![CDATA[ | ||
1799 | 22 | $(document).ready(function() { | ||
1800 | 23 | $(".data-table").dataTable({ | ||
1801 | 24 | "bPaginate": false, | ||
1802 | 25 | "aaSorting": [[0, 'desc']] | ||
1803 | 26 | }); | ||
1804 | 27 | }); | ||
1805 | 28 | //]]> | ||
1806 | 29 | </script> | ||
1807 | 30 | <script type="text/javascript"> | ||
1808 | 31 | d3.json('{% url 'gaps_api_stack_list' %}', function(data) { | ||
1809 | 32 | nv.addGraph(function() { | ||
1810 | 33 | var chart = nv.models.lineChart() | ||
1811 | 34 | .width(900).height(400); | ||
1812 | 35 | chart.forceY([0, 1]); | ||
1813 | 36 | chart.xAxis | ||
1814 | 37 | .axisLabel('Date') | ||
1815 | 38 | .tickFormat(function(d){return d3.time.format('%Y%m%d')(new Date(d * 1000));}) | ||
1816 | 39 | chart.yAxis | ||
1817 | 40 | .axisLabel('%') | ||
1818 | 41 | .tickFormat(d3.format('%')) | ||
1819 | 42 | d3.select('#line-chart svg').datum(data).transition().duration(500).call(chart); | ||
1820 | 43 | nv.utils.windowResize(chart.update); | ||
1821 | 44 | return chart; | ||
1822 | 45 | }); | ||
1823 | 46 | }); | ||
1824 | 47 | </script> | ||
1825 | 48 | <div class='grid_15'> | ||
1826 | 49 | <h2> | ||
1827 | 50 | {% if show_filter %} | ||
1828 | 51 | Stack : {{ show_filter }} | ||
1829 | 52 | {% else %} | ||
1830 | 53 | All Stacks | ||
1831 | 54 | {% endif %} | ||
1832 | 55 | </h2> | ||
1833 | 56 | </div> | ||
1834 | 57 | <div class='grid_2'> | ||
1835 | 58 | <h3 class='nav-title'> | ||
1836 | 59 | |||
1837 | 60 | </h3> | ||
1838 | 61 | <ul class='left_nav'> | ||
1839 | 62 | <li> | ||
1840 | 63 | <a href='{% url 'stacks' %}'>All</a> | ||
1841 | 64 | </li> | ||
1842 | 65 | {% for release in release_list %} | ||
1843 | 66 | <li> | ||
1844 | 67 | <a href='{% url 'stacks' %}?show={{ release }} '>{{ release }}</a> | ||
1845 | 68 | </li> | ||
1846 | 69 | {% endfor %} | ||
1847 | 70 | </ul> | ||
1848 | 71 | </div> | ||
1849 | 72 | <div class="grid_13"> | ||
1850 | 73 | <div id="line-chart"> | ||
1851 | 74 | <svg></svg> | ||
1852 | 75 | </div> | ||
1853 | 76 | <table class='data-table basic wide'> | ||
1854 | 77 | <thead> | ||
1855 | 78 | <tr> | ||
1856 | 79 | <th>Name</th> | ||
1857 | 80 | <th>Projects Reporting</th> | ||
1858 | 81 | <th>Line Coverage</th> | ||
1859 | 82 | <th>Branch Coverage</th> | ||
1860 | 83 | </tr> | ||
1861 | 84 | </thead> | ||
1862 | 85 | <tbody> | ||
1863 | 86 | {% for stack in stack_list %} | ||
1864 | 87 | <tr> | ||
1865 | 88 | <td> | ||
1866 | 89 | <a href='{% url 'stacks' %}{{ stack.name }}/'>{{ stack.name }}</a> | ||
1867 | 90 | </td> | ||
1868 | 91 | <td class='{{ stack.percent_reporting|percent_reporting_color }}'> | ||
1869 | 92 | {{ stack.percent_reporting|percentage }} | ||
1870 | 93 | </td> | ||
1871 | 94 | <td class='num'> | ||
1872 | 95 | {% if stack.last_coverage_observation.line_coverage == None %} | ||
1873 | 96 | N/A | ||
1874 | 97 | {% else %} | ||
1875 | 98 | {{ stack.last_coverage_observation.line_coverage|percentage }}% | ||
1876 | 99 | {% endif %} | ||
1877 | 100 | </td> | ||
1878 | 101 | <td class='num'> | ||
1879 | 102 | {% if stack.last_coverage_observation.branch_coverage == None %} | ||
1880 | 103 | N/A | ||
1881 | 104 | {% else %} | ||
1882 | 105 | {{ stack.last_coverage_observation.branch_coverage|percentage }}% | ||
1883 | 106 | {% endif %} | ||
1884 | 107 | </td> | ||
1885 | 108 | </tr> | ||
1886 | 109 | {% endfor %} | ||
1887 | 110 | </tbody> | ||
1888 | 111 | </table> | ||
1889 | 112 | </div> | ||
1890 | 113 | {% endblock %} | ||
1891 | 114 | 0 | ||
1892 | === modified file 'gaps/urls.py' | |||
1893 | --- gaps/urls.py 2014-03-07 21:20:19 +0000 | |||
1894 | +++ gaps/urls.py 2014-04-07 22:20:52 +0000 | |||
1895 | @@ -12,9 +12,6 @@ | |||
1896 | 12 | 12 | ||
1897 | 13 | # You should have received a copy of the GNU Affero General Public License | 13 | # You should have received a copy of the GNU Affero General Public License |
1898 | 14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
1899 | 15 | |||
1900 | 16 | from django.conf.urls import patterns, url | ||
1901 | 17 | |||
1902 | 18 | from django.conf.urls import ( | 15 | from django.conf.urls import ( |
1903 | 19 | patterns, | 16 | patterns, |
1904 | 20 | url, | 17 | url, |
1905 | 21 | 18 | ||
1906 | === modified file 'gaps/views.py' | |||
1907 | --- gaps/views.py 2014-03-14 16:52:09 +0000 | |||
1908 | +++ gaps/views.py 2014-04-07 22:20:52 +0000 | |||
1909 | @@ -19,7 +19,7 @@ | |||
1910 | 19 | @BreadCrumb("Stacks") | 19 | @BreadCrumb("Stacks") |
1911 | 20 | def stack_list(request): | 20 | def stack_list(request): |
1912 | 21 | stack_list_ = CoverageStack.objects.all() | 21 | stack_list_ = CoverageStack.objects.all() |
1914 | 22 | t = loader.get_template('stack_list.html') | 22 | t = loader.get_template('gaps/stack_list.html') |
1915 | 23 | c = Context({'stack_list': stack_list_, | 23 | c = Context({'stack_list': stack_list_, |
1916 | 24 | 'bread_crumb_trail': BreadCrumbTrail.leading_to( | 24 | 'bread_crumb_trail': BreadCrumbTrail.leading_to( |
1917 | 25 | stack_list)}) | 25 | stack_list)}) |
1918 | @@ -31,7 +31,7 @@ | |||
1919 | 31 | stack_list = CoverageStack.objects.all() | 31 | stack_list = CoverageStack.objects.all() |
1920 | 32 | project_list = CoverageProject.objects.filter( | 32 | project_list = CoverageProject.objects.filter( |
1921 | 33 | stack__name=name) | 33 | stack__name=name) |
1923 | 34 | t = loader.get_template('stack_detail.html') | 34 | t = loader.get_template('gaps/stack_detail.html') |
1924 | 35 | c = Context({'stack': stack_, | 35 | c = Context({'stack': stack_, |
1925 | 36 | 'stack_list': stack_list, | 36 | 'stack_list': stack_list, |
1926 | 37 | 'project_list': project_list, | 37 | 'project_list': project_list, |
1927 | @@ -42,7 +42,7 @@ | |||
1928 | 42 | @BreadCrumb("Projects") | 42 | @BreadCrumb("Projects") |
1929 | 43 | def project_list(request): | 43 | def project_list(request): |
1930 | 44 | project_list_ = CoverageProject.objects.all() | 44 | project_list_ = CoverageProject.objects.all() |
1932 | 45 | t = loader.get_template('project_list.html') | 45 | t = loader.get_template('gaps/project_list.html') |
1933 | 46 | c = Context({'project_list': project_list_, | 46 | c = Context({'project_list': project_list_, |
1934 | 47 | 'bread_crumb_trail': BreadCrumbTrail.leading_to( | 47 | 'bread_crumb_trail': BreadCrumbTrail.leading_to( |
1935 | 48 | project_list)}) | 48 | project_list)}) |
1936 | @@ -56,7 +56,7 @@ | |||
1937 | 56 | coverage_datas = CoverageData.objects.filter( | 56 | coverage_datas = CoverageData.objects.filter( |
1938 | 57 | coverage_build__project=project_).order_by( | 57 | coverage_build__project=project_).order_by( |
1939 | 58 | '-coverage_build__ran_at')[:10] | 58 | '-coverage_build__ran_at')[:10] |
1941 | 59 | t = loader.get_template('project_detail.html') | 59 | t = loader.get_template('gaps/project_detail.html') |
1942 | 60 | c = Context({'project': project_, | 60 | c = Context({'project': project_, |
1943 | 61 | 'coverage_datas': coverage_datas, | 61 | 'coverage_datas': coverage_datas, |
1944 | 62 | 'bread_crumb_trail': BreadCrumbTrail.leading_to( | 62 | 'bread_crumb_trail': BreadCrumbTrail.leading_to( |
1945 | 63 | 63 | ||
1946 | === modified file 'qa_dashboard/settings.py' | |||
1947 | --- qa_dashboard/settings.py 2014-03-07 00:07:26 +0000 | |||
1948 | +++ qa_dashboard/settings.py 2014-04-07 22:20:52 +0000 | |||
1949 | @@ -102,7 +102,10 @@ | |||
1950 | 102 | 102 | ||
1951 | 103 | # URL prefix for static files. | 103 | # URL prefix for static files. |
1952 | 104 | # Example: "http://media.lawrence.com/static/" | 104 | # Example: "http://media.lawrence.com/static/" |
1954 | 105 | STATIC_URL = STATIC_URL_BASE + assets_revision + '/' | 105 | |
1955 | 106 | #TODO CHANGE THIS BACK!!! WHEN WE MERGE BACK IN | ||
1956 | 107 | #STATIC_URL = STATIC_URL_BASE + assets_revision + '/' | ||
1957 | 108 | STATIC_URL = '/static/' | ||
1958 | 106 | 109 | ||
1959 | 107 | # URL prefix for admin static files -- CSS, JavaScript and images. | 110 | # URL prefix for admin static files -- CSS, JavaScript and images. |
1960 | 108 | # Make sure to use a trailing slash. | 111 | # Make sure to use a trailing slash. |
make sure to use ./manage collectstatic to make the static js files usable.