<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -470,6 +470,7 @@ class WebStatus(service.MultiService):
         #self.putChild(&quot;&quot;, IndexOrWaterfallRedirection())
         self.putChild(&quot;waterfall&quot;, WaterfallStatusResource())
         self.putChild(&quot;grid&quot;, GridStatusResource())
+        self.putChild(&quot;tgrid&quot;, TransposedGridStatusResource())
         self.putChild(&quot;builders&quot;, BuildersResource()) # has builds/steps/logs
         self.putChild(&quot;changes&quot;, ChangesResource())
         self.putChild(&quot;buildslaves&quot;, BuildSlavesResource())</diff>
      <filename>buildbot/status/web/baseweb.py</filename>
    </modified>
    <modified>
      <diff>@@ -66,7 +66,7 @@ class GridStatusMixin(object):
 #        if p:
 #            self.title = &quot;BuildBot: %s&quot; % p
 #
-    def build_td(self, request, build):
+    def build_td(self, request, build, extra=''):
         if not build:
             return '&lt;td class=&quot;build&quot;&gt;&amp;nbsp;&lt;/td&gt;\n'
 
@@ -85,7 +85,9 @@ class GridStatusMixin(object):
         text = '&lt;br /&gt;\n'.join(text)
         class_ = build_get_class(build)
 
-        return '&lt;td class=&quot;build %s&quot;&gt;%s&lt;/td&gt;\n' % (class_, text)
+        if extra:
+            extra = '&lt;br/&gt;' + extra
+        return '&lt;td class=&quot;build %s&quot;&gt;%s%s&lt;/td&gt;\n' % (class_, text, extra)
 
     def builder_td(self, request, builder):
         state, builds = builder.getState()
@@ -173,7 +175,9 @@ class GridStatusResource(HtmlResource, GridStatusMixin):
 
 
     def body(self, request):
-        &quot;This method builds the main waterfall display.&quot;
+        &quot;&quot;&quot;This method builds the regular grid display.
+        That is, build stamps across the top, build hosts down the left side
+        &quot;&quot;&quot;
 
         # get url parameters
         numBuilds = int(request.args.get(&quot;width&quot;, [5])[0])
@@ -266,10 +270,12 @@ class TransposedGridStatusResource(HtmlResource, GridStatusMixin):
 
 
     def body(self, request):
-        &quot;This method builds the main waterfall display.&quot;
+        &quot;&quot;&quot;This method builds the transposed grid display.
+        That is, build hosts across the top, ebuild stamps down the left side
+        &quot;&quot;&quot;
 
         # get url parameters
-        numBuilds = int(request.args.get(&quot;width&quot;, [5])[0])
+        numBuilds = int(request.args.get(&quot;length&quot;, [5])[0])
         categories = request.args.get(&quot;category&quot;, [])
         branch = request.args.get(&quot;branch&quot;, [ANYBRANCH])[0]
         if branch == 'trunk': branch = None
@@ -292,12 +298,12 @@ class TransposedGridStatusResource(HtmlResource, GridStatusMixin):
         if branch != ANYBRANCH:
             data += '\n&lt;br /&gt;&lt;b&gt;Branch:&lt;/b&gt; %s' % (branch or 'trunk')
         data += '&lt;/td&gt;\n'
-        for stamp in stamps:
-            data += self.stamp_td(stamp)
-        data += '&lt;/tr&gt;\n'
 
         sortedBuilderNames = status.getBuilderNames()[:]
         sortedBuilderNames.sort()
+
+        builder_builds = {}
+
         for bn in sortedBuilderNames:
             builds = [None] * len(stamps)
 
@@ -313,10 +319,20 @@ class TransposedGridStatusResource(HtmlResource, GridStatusMixin):
                         builds[i] = build
                 build = build.getPreviousBuild()
 
-            data += '&lt;tr&gt;\n'
             data += self.builder_td(request, builder)
-            for build in builds:
-                data += self.build_td(request, build)
+            builder_builds[bn] = builds
+
+        data += '&lt;/tr&gt;\n'
+
+        for i in range(len(stamps)):
+            data += '&lt;tr&gt;\n'
+            data += self.stamp_td(stamps[i])
+            for bn in sortedBuilderNames:
+                if stamps[i].branch:
+                    extra = 'on ' + str(stamps[i].branch)
+                else:
+                    extra = ''
+                data += self.build_td(request, builder_builds[bn][i], extra)
             data += '&lt;/tr&gt;\n'
 
         data += '&lt;/table&gt;\n'</diff>
      <filename>buildbot/status/web/grid.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8763836af826d2190814c2b196c2bbb2d5015cc4</id>
    </parent>
  </parents>
  <author>
    <name>Joshua Kugler</name>
    <email>jkugler@hosanna.kugler.localdomain</email>
  </author>
  <url>http://github.com/djmitche/buildbot/commit/19fcf45c60d3058b2ed3688d78f33979ba9fe001</url>
  <id>19fcf45c60d3058b2ed3688d78f33979ba9fe001</id>
  <committed-date>2009-04-29T13:34:35-07:00</committed-date>
  <authored-date>2009-04-29T13:34:35-07:00</authored-date>
  <message>Further work on a transposed grid
I think it's done</message>
  <tree>a934a3e2b2e5737db27fa4c7be5151392812518c</tree>
  <committer>
    <name>Joshua Kugler</name>
    <email>jkugler@hosanna.kugler.localdomain</email>
  </committer>
</commit>
