URI escape branch names in URLs. Don't strip + from branch name.
[buildfarm-server.git] / templates / fstatus.tt
1 [%#
2
3 Copyright (c) 2003-2010, Andrew Dunstan
4
5 See accompanying License file for license details
6
7 -%]
8 [%
9  flag_imgs = {
10      perl = '/img/camel.png',
11      python = '/img/python.png',
12      debug = '/img/bug.png',
13      pam => '/img/pam.png',
14      cassert => '/img/cassert.png',
15      openssl => '/img/ssl_icon.gif',
16      nls => '/img/translateicon.gif',
17      krb5 => '/img/krb.gif',
18      tcl => '/img/tcl.png',
19      vpath => '/img/vpath.png',
20      xml => '/img/xml.png',
21      'thread-safety' => '/img/threads.gif',
22      'integer-datetimes' = '/img/days.png',
23      git => '/img/git.png',
24      };
25
26   filter = '';
27   IF max_days ; filter = 'max_days=' _ max_days ; END ;
28   FOREACH qmemb IN qmembers ; IF filter ; filter = "$filter&" ; END ; filter = filter _ 'member=' _ qmemb ; END ;
29   FOREACH qstage IN qstages ; IF filter ; filter = "$filter&" ; END ; filter = filter _ 'stage=' _ qstage ; END ;
30   FOREACH qbranch IN qbranches ; IF filter ; filter = "$filter&" ; END ; filter = filter _ 'branch=' _ qbranch ; END ;
31 -%]
32 [%- BLOCK img ; IF flag == 'depend' or flag == 'gnu-ld' ; ; ELSIF flag_imgs.$flag %]<img src="[% flag_imgs.$flag %]" title="[% flag %]" alt="[% flag %]" height="16" width="16" class="inline" align="bottom" />  [% ELSE %][%#
33                                                                                                                                                                                                           flag ; ' '
34 %][% END ; END -%]
35 [%- BLOCK sysnotes ; IF row.sys_notes %]<img src="/img/notes.png" height="16" width="16" title="[% row.sys_notes_ts.replace(' .*','') | html %]: [% row.sys_notes | html %]" />
36 [%- ELSE %]&nbsp;[% END ; END -%]
37 [%- BLOCK cl %] class="[% SWITCH bgfor.replace('-.*','') -%]
38   [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
39 [%- END -%]
40 [% WRAPPER 'page.tt' 
41         title = 'Exim BuildFarm Recent Failures'
42         bodyclass = 'none'
43         pagebutton = 'failures'
44 %]
45     <h1>Exim BuildFarm Recent Failures</h1>
46     <p>
47       Shown here are build failures that occurred in the last [% max_days %] days.
48     </p>
49     <p>
50        Use the farm member link for history of that member 
51        on the relevant branch.
52     </p>
53
54                 <div class="nav">
55           <ul>
56             <li [% IF sortby != 'name' && sortby != 'namenobranch' %] id='thismenu' [% END %]><a href="/cgi-bin/show_failures.pl[% IF filter ; '?' _ filter; END %]" title="Sort By Branch, Date">Sort By Branch, Date</a></li>
57             <li  [% IF sortby == 'name' %] id='thismenu' [% END %]><a href="/cgi-bin/show_failures.pl?sortby=name[% IF filter ; "&$filter"; END %]" title="Sort By Branch, Name">Sort By Branch, Name</a></li>
58             <li [% IF sortby == 'namenobranch' %] id='thismenu' [% END %]><a href="/cgi-bin/show_failures.pl?sortby=namenobranch[% IF filter ; "&$filter"; END %]" title="Sort By Name">Sort By Name</a></li>
59           </ul>
60                   </div>
61 <br />
62 <table border="0"><tr><td>
63 <h3>Filter</h3>
64 <form action="/cgi-bin/show_failures.pl" method="get">
65 <table border="none">
66 <tr><td>Days</td><td>Branch(es)</td><td>Member(s)</td><td>Stage(s)</td><td>&nbsp;</td></tr>
67 <tr><td>
68 <select name="max_days">
69 [% maxday_range = [ 3 .. 90 ] ; FOREACH maxdays IN maxday_range %]<option>[% maxdays %]</option>
70 [% END %]
71 </selecto</td><td>>
72 <select name="branch" multiple="multiple">
73 <option value="">All</option>
74 [% FOREACH sbranch IN all_branches %]<option>[% sbranch %]</option>
75 [% END %]
76 </select>
77 </td><td>
78 <select name="member" multiple="multiple">
79 <option value="">All</option>
80 [% FOREACH smemb IN all_members %]<option>[% smemb %]</option>
81 [% END %]
82 </select>
83 </td><td>
84 <select name="stage" multiple="multiple">
85 <option value="">All</option>
86 [% FOREACH sstage IN all_stages %]<option>[% sstage %]</option>
87 [% END %]
88 </select>
89 </td><td>
90 <input type="submit" name="filter" value="Submit" />
91 </td></tr></table>
92 </form>
93 </td></tr><tr><td>
94 <h3>&nbsp;</h3>
95 <table><tr><th class="head" rowspan="2">Legend</th>
96 [% FOREACH flagset IN flag_imgs %]
97 <td><img src="[% flagset.value %]" title="[% flagset.key %]" alt="[% flagset.key %]" height="16" width="16" class="inline"  align="center"/> =  [% flagset.key %]</td>
98 [% IF loop.count == 7 %]</tr><tr>[% END %]
99 [% END %]
100 </tr></table>
101 </td></tr></table>
102     <table cellspacing="0">
103 [% brch = "" %]
104 [% IF sortby == 'namenobranch' %]
105 <tr><th colspan="2">Alias</th><th>Branch</th><th>System</th><th>Status</th><th>Flags</th></tr>
106 [% END %]
107 [% FOREACH row IN statrows %]
108 [% IF row.branch != brch && sortby != 'namenobranch' ; brch = row.branch %]
109 <tr><th class="head" colspan="5">Branch: [% brch %]</th></tr>
110 <tr><th colspan="2">Alias</th><th>System</th><th>Status</th><th>Flags</th></tr>
111 [% END %]
112 <tr [% PROCESS cl bgfor=row.stage %]>
113     <td [% PROCESS cl bgfor=row.current_stage %]><a 
114     href="show_history.pl?nm=[% row.sysname %]&amp;br=[% row.branch | uri %]"
115     title="History"
116   >[% row.sysname %]</a></td>
117     <td>[% PROCESS sysnotes %]</td>
118     [% IF sortby == 'namenobranch' %]<td>[% row.branch %]</td>[% END %]
119     <td><span class="opsys">[% row.operating_system %]
120             [% row.os_version %]</span> <span class="compiler">
121             [%- row.compiler %]
122             [% row.compiler_version %]</span> <span class="arch">
123             [%- row.architecture %]</span></td>
124     <td class="status">
125             [%- row.when_ago | replace('\s','&nbsp;') %]&nbsp;ago&nbsp;
126             [% row.stage -%]
127             <a href="show_log.pl?nm=
128                [%- row.sysname %]&amp;dt=
129                [%- row.snapshot | uri %]">
130                 [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
131
132     <td class="failflags">[% FOREACH flag IN row.build_flags.split().sort() ; PROCESS img ; END %]</td>
133 </tr>
134 [% END %]
135     </table>
136 [% END %]