Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^4: HTML::Template with HTML::Pager

by flyby (Acolyte)
on Oct 09, 2013 at 20:46 UTC ( [id://1057623]=note: print w/replies, xml ) Need Help??


in reply to Re^3: HTML::Template with HTML::Pager
in thread HTML::Template with HTML::Pager

It's an array of hash refs. That's how you get the named fields out.

my $hashref = { 'rows' => "$i $x", 'offset' => "offset $offset", 'i' => "$i", 'x' => $x, 'INTERFACE' => \@r, }; push(@total, $hashref);

That's looped over a bunch of test data and then fed to get_data_callback as $data. It's just test junk but works as expected.

<TD BGCOLOR=#ffffff><TMPL_VAR NAME="rows"></TD>

produces the correct data stored in the hashref listed above.

The documentation doesn't mention the ability to pass as hash to get_data_callback so I'm not sure how/if that would work.

I've also been poking over the Pager.pm code between work issues but nothing has jumped out at me yet. It seems like either it's not possible or it's just not in the code because it's a default or obvious how it's suppose to work. Just not obvious to me. :)

thanks for looking,

-Matt

-- And this works --

Gen some random headers and add them to an array of hashrefs:

my @headers = ("1","2", "three", "4", "blank", "blank", "blank", "desc +-1", "desc-2", "desc-3", "desc-4", "desc-5"); for (@headers) { my $href = { 'HEADER' => $_ }; push(@h, $href); };

Make the primary array of hashrefs:

my $hashref = { 'rows' => "$i $x", 'offset' => "offset", 'name' => "some data $i", 'x' => $x, 'INTERFACE' => \@r, }; push(@total, $hashref);

Create the HTML::Template setup:

my $template = HTML::Template->new( filename => 'testing.tmpl', die_on_bad_params => 0, associate => $query, );

Add the header array of hashrefs to the template. Might be able to do this at the same time as you create the $template.. but for some reason it didn't work the first time I tried it.

$template->param(HEADER => \@h );

That works with this Template:

<TMPL_VAR NAME="PAGER_JAVASCRIPT"> <FORM> <TABLE BORDER=0 BGCOLOR=#000000 WIDTH=100%> <TR><TD><TABLE BORDER=0 WIDTH=100%> <!-- TMPL_LOOP NAME="HEADER" --> <TH BGCOLOR=#ffffff><!-- TMPL_VAR NAME="HEADER" --></TH> <!-- /TMPL_LOOP --> </TR> <TMPL_LOOP NAME="PAGER_DATA_LIST"> <TR> <TD BGCOLOR=#ffffff><TMPL_VAR NAME="rows"></TD> <TD BGCOLOR=#ffffff><TMPL_VAR NAME="offset"></TD> <TD BGCOLOR=#ffffff><TMPL_VAR NAME="name"></TD> <TD BGCOLOR=#ffffff><TMPL_VAR NAME="x"></TD> <!-- TMPL_LOOP NAME=INTERFACE --> <TD BGCOLOR=#ffffff><!-- TMPL_VAR NAME="description" --></TD> <!-- /TMPL_LOOP --> </TR> </TMPL_LOOP> <TR><TD><TD BGCOLOR=#DDDDDD COLSPAN=15 ALIGN=CENTER> <TMPL_VAR NAME="PAGER_PREV"> <TMPL_VAR NAME="PAGER_JUMP"> <TMPL_VAR NAME="PAGER_NEXT"> </TD></TR> </TABLE> </TABLE> <TMPL_VAR NAME="PAGER_HIDDEN"> </FORM>

Gives me the correct <TH></TH> headers I want. Cool beans.

-Matt

Replies are listed 'Best First'.
Re^5: HTML::Template with HTML::Pager
by flyby (Acolyte) on Oct 09, 2013 at 22:20 UTC

    Reading the code more closely the segment that you posted seems to be the key. HTML::Pager doesn't bother creating "real" table headers with <TH></TH>. It just makes the first row of data bold, <B>, and calls that that table headers. I guess I could do the same thing with my data but it seems kind of lame to generate tables without "real" headers.

    Maybe there is a way inject another TMPL_LOOP before the PAGER_DATA_LIST loop and use that as the headers.

    Thanks for the help. Gives me some direction to work in.

    -Matt

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1057623]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2024-04-19 13:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found