Changeset 1001
- Timestamp:
- Jun 3, 2011, 12:15:50 PM (13 years ago)
- Location:
- trunk/bitten
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bitten/htdocs/bitten.css
r846 r1001 6 6 background-image: url(bitten_buildf.png) !important; 7 7 } 8 9 /* Build page */ 8 10 9 11 #content.build h2.config, #content.build h2.step { background: #f7f7f7; … … 57 59 58 60 #content.build p.path { color: #999; font-size: smaller; margin-top: 0; } 61 62 #content.build .summary { color: #666; font-size: smaller; margin-top: 1em; } 63 #content.build .summary p { margin: 0; } 64 #content.build .summary p .detail { color: #999; font-style: italic; } 59 65 60 66 #content.build #charts { clear: right; float: right; margin-left: 0.5em; } -
trunk/bitten/recipe.py
r913 r1001 269 269 self.ctxt = Context(basedir, config, vars) 270 270 self._root = xml 271 271 self.onerror_default = vars.get('onerror', 'fail') 272 272 assert self.onerror_default in ('fail', 'ignore', 'continue') 273 273 -
trunk/bitten/templates/bitten_config.html
r1000 r1001 38 38 ${slave.processor or slave.machine or ''} 39 39 </div> 40 40 41 41 <ul py:def="build_steps(steps)" py:if="steps" class="steps"> 42 42 <li py:for="step in steps" … … 51 51 </li> 52 52 </ul> 53 53 54 <div py:def="status_summary(config)" class="summary"> 55 <p class="pending"> 56 ${config.builds_pending} build<py:if test="config.builds_pending != 1">s</py:if> pending 57 <span py:if="'platforms' in config" class="detail">(<py:for 58 each="platform, sep in separated([p for p in config.platforms if p.builds_inprogress], ', ')">${platform.name}: 59 ${platform.builds_pending}$sep</py:for>)</span> 60 </p> 61 <p class="inprogress"> 62 ${config.builds_inprogress or 'No'} build<py:if test="config.builds_inprogress != 1">s</py:if> in progress 63 <span py:if="'platforms' in config" class="detail">(<py:for 64 each="platform, sep in separated([p for p in config.platforms if p.builds_inprogress], ', ')">${platform.name}: 65 ${platform.builds_inprogress}$sep</py:for>)</span> 66 </p> 67 </div> 68 54 69 <div id="content" class="build"> 55 70 <h1>$title</h1><py:choose test="page_mode"><py:when test="'overview'"> 56 <py:if test="builds_pending"> 57 <div>$builds_pending pending build<py:if test="builds_pending > 1">s</py:if> 58 </div></py:if><py:if test="builds_inprogress"> 59 <div>$builds_inprogress in-progress build<py:if test="builds_inprogress > 1">s</py:if> 60 </div></py:if> 71 ${status_summary(dict(builds_pending=builds_pending, builds_inprogress=builds_inprogress))} 61 72 <form id="prefs" method="get" action=""> 62 73 <div> … … 68 79 <input type="submit" value="Update" /> 69 80 </div> 70 </form><py:for each="config in configs"> 71 <h2 class="config ${not config.active and 'deactivated' or ''}"> 72 <a href="$config.href">$config.label</a> 73 </h2><py:if test="config.builds_pending"> 74 <div>$config.builds_pending pending 75 build<py:if test="config.builds_pending > 1">s</py:if> <i>(<py:for each="platform in config.platforms"> 76 <py:if test="platform.builds_pending"> 77 $platform.name: $platform.builds_pending 78 </py:if></py:for>)</i> 79 </div></py:if><py:if test="config.builds_inprogress"> 80 <div>$config.builds_inprogress in-progress 81 build<py:if test="config.builds_inprogress > 1">s</py:if> <i>(<py:for each="platform in config.platforms"><py:if test="platform.builds_inprogress"> 82 $platform.name: $platform.builds_inprogress 83 </py:if></py:for>)</i> 84 </div></py:if> 85 <div py:if="config.description" class="description"> 86 $config.description 87 </div><py:if test="len(config.builds)"> 88 <h3 class="builds"><a href="$config.href">Latest builds</a></h3> 89 <table class="builds"><tbody><tr> 90 <th py:with="youngest_rev = config.youngest_rev"> 91 <a href="$youngest_rev.href">[$youngest_rev.display_rev]</a> 92 by ${format_author(youngest_rev.author)}<p class="date">$youngest_rev.date</p> 93 <p class="message">$youngest_rev.message</p> 94 </th> 95 <td py:for="build in config.builds" class="$build.cls"><py:choose> 96 <py:when test="build.status != 'pending'"> 97 <a href="$build.href">$build.platform</a> 98 <p class="date">$build.stopped</p> 99 ${slave_info(build.slave)} 100 ${build_status(build.status)} 101 </py:when><py:otherwise> 102 <strong>$build.platform</strong> 103 <p class="nobuild">No build yet</p> 104 </py:otherwise></py:choose> 105 </td> 106 </tr></tbody></table></py:if></py:for> 81 </form> 82 83 <py:for each="config in configs"> 84 <h2 class="config ${not config.active and 'deactivated' or ''}"> 85 <a href="$config.href">$config.label</a> 86 </h2> 87 ${status_summary(config)} 88 <div py:if="config.description" class="description"> 89 $config.description 90 </div><py:if test="len(config.builds)"> 91 <h3 class="builds"><a href="$config.href">Latest builds</a></h3> 92 <table class="builds"><tbody><tr> 93 <th py:with="youngest_rev = config.youngest_rev"> 94 <a href="$youngest_rev.href">[$youngest_rev.display_rev]</a> 95 by ${format_author(youngest_rev.author)}<p class="date">$youngest_rev.date</p> 96 <p class="message">$youngest_rev.message</p> 97 </th> 98 <td py:for="build in config.builds" class="$build.cls"><py:choose> 99 <py:when test="build.status != 'pending'"> 100 <a href="$build.href">$build.platform</a> 101 <p class="date">$build.stopped</p> 102 ${slave_info(build.slave)} 103 ${build_status(build.status)} 104 </py:when><py:otherwise> 105 <strong>$build.platform</strong> 106 <p class="nobuild">No build yet</p> 107 </py:otherwise></py:choose> 108 </td> 109 </tr></tbody></table></py:if> 110 </py:for> 107 111 108 112 </py:when><py:when test="'view_config'"> … … 111 115 <div id="chart_${chart.category}" style="${chart.style}"></div> 112 116 <script type="text/javascript"> 113 $(document).ready(function() { 114 115 $.getJSON('${chart.href}', function(json) { 116 117 $(document).ready(function() { 118 $.getJSON('${chart.href}', function(json) { 117 119 $("#chart_${chart.category}_title").append(json.title); 118 120 json.options['xaxis']['tickFormatter'] = function(rev) { return "[" + rev + "]"; }; 119 121 $.plot($("#chart_${chart.category}"), json.data, json.options); 120 }); 122 }); 121 123 }); 122 124 </script> … … 153 155 </py:if> 154 156 </p> 157 ${status_summary(config)} 155 158 <div py:if="config.description" class="description"> 156 159 $config.description … … 160 163 </div> 161 164 ${list_of_attachments(config.attachments, compact=True)} 162 <py:if test="config.builds_pending">163 <div>$config.builds_pending pending build<py:if test="config.builds_pending > 1">s</py:if> <i>(<py:for each="platform in config.platforms">164 <py:if test="platform.builds_pending">165 $platform.name: $platform.builds_pending166 </py:if></py:for>)</i>167 </div></py:if><py:if test="config.builds_inprogress">168 <div>$config.builds_inprogress in-progress build<py:if test="config.builds_inprogress > 1">s</py:if> <i>(<py:for each="platform in config.platforms"><py:if test="platform.builds_inprogress">169 $platform.name: $platform.builds_inprogress170 </py:if></py:for>)</i>171 </div></py:if>172 165 173 166 <table py:if="config.platforms and config.builds"
Note: See TracChangeset
for help on using the changeset viewer.