Thanks Uwe and Diez, I'll give these suggestions a go..

-C

On Wed, Jun 17, 2009 at 6:38 AM, Diez B. Roggisch <[email protected]> wrote:

>
> Corey Kovacs schrieb:
> > I am trying create a representation of a computer rack using genshi in
> > TG2. What I am trying to do is
> > loop through the rack elevations and when I find an elevation where a
> > host belongs, I want to add some
> > data to show a host is at that spot. Thats the easy part. I also want to
> > modify the rowspan for the <td>
> > element so that the host <td> spans the appropriate number of elevations
> > to show the vertical size of
> > the machine.
> >
> > I've done this using PHP but have long since decided to rewrite my
> > project in Python/TG. Now I am
> > finding that i am somewhat limited in what i can achieve with immutable
> > variables.
> >
> > Basically, I need this..
> >
> > temp=0
> > print "<TABLE>"
> > print "<TR><TD>row</TD><TD>rack.rackid</TD><TD>row</TD></TR>"
> > for(row=1; row<43; row++)
> >    for host in hostlist:
> >      if host.elevation == row:
> >          uspan = host.height-1
> >          print "<TR><TD>row</TD><TD
> > rowspan=uspan>host.hostname</TD><TD>row</TD></TR>"
> >          while temp > 0 :
> >            row++
> >            print "<TR><TD>row</TD><TD>row</TD></TR>"
> >            uspan--
> >    else
> >          print "<TR><TD>row</TD><TD></TD><TD>row</TD></TR>"
> >
> > print "<TR><TD>row</TD><TD>PDU</TD><TD>row</TD></TR>"
> > print "<TR><TD>row</TD><TD>PDU</TD><TD>row</TD></TR>"
> >
> >
> > The above (really ugly) pseudo-code mashup tries to explain it
>
> I guess there is an error in there, the temp-variable is never set. But
> I guess you could ditch it & use
>
> while uspan:
>     ...
>
>
> Now in genshi, one does this via pre-computation of the rowlist.
> Essentially, you extract your logic to create a data-structure that fits
> your needs. You can do this in your controller (I don't see anything
> wrong with that, the MVC-pattern in webapps goes only so far), or inside
> a <?python-block.
>
> rows = [None] * 43
> for host in hostlist:
>     host_rows = [Bunch()] * host.height
>     for row in host_rows:
>         row.rowspan = None
>         row.host = host # for template reference
>     host_rows[0].rowspan = host.heighth - 1
>     rows[host.elevation:host.elevation + host.height] = host_rows
>
>
> Then in the template, you can do this:
>
> <table>
>   <py:c py:strip="True" py:for="row in rows">
>   <tr py:if="not row">normal row without host</tr>
>   <tr py:if="row and row.rowspan"><!-- first row with host -->
>   </tr>
>   <tr py:if="row and not row.rowspan"><!-- following host-rows -->
>   </tr>
>   </py:c>
> </table>
>
>
>
> Diez
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to