]>
Commit | Line | Data |
---|---|---|
aff192e6 DM |
1 | package PVE::HTMLGrid; |
2 | ||
3 | use strict; | |
4 | ||
5 | # define some symbolic names for standard widths used | |
6 | my $col_widths = { | |
7 | fw => 735, # overall form width | |
8 | ||
9 | fw1 => 150, # col1 | |
10 | fw2 => 205, # col2 | |
11 | fw4 => 205, # col4 | |
12 | }; | |
13 | ||
14 | # compute width of col3 | |
15 | $col_widths->{fw3} = $col_widths->{fw} - | |
16 | $col_widths->{fw1} - $col_widths->{fw2} - $col_widths->{fw4}; | |
17 | ||
18 | $col_widths->{fw3to4} = $col_widths->{fw3} + $col_widths->{fw4}; | |
19 | $col_widths->{fw2to4} = $col_widths->{fw2} + | |
20 | $col_widths->{fw3} + $col_widths->{fw4}; | |
21 | ||
22 | sub get_width { | |
23 | my $name = shift; | |
24 | ||
25 | die "internal error" if !defined ($col_widths->{$name}); | |
26 | return $col_widths->{$name}; | |
27 | } | |
28 | ||
29 | sub new { | |
30 | my ($type, @wa) = @_; | |
31 | ||
32 | my $self = {}; | |
33 | ||
34 | $self->{rowcount} = 0; | |
35 | $self->{colums} = scalar (@wa); | |
36 | $self->{data} = []; | |
37 | ||
38 | my @awidth; | |
39 | my @aalign; | |
40 | foreach my $wd (@wa) { | |
41 | my ($w, $align) = split (/:/, $wd); | |
42 | ||
43 | my $rw = $col_widths->{$w}; | |
44 | $w = $rw if defined ($rw); | |
45 | ||
46 | push @awidth, $w; | |
47 | push @aalign, $align; | |
48 | } | |
49 | ||
50 | $self->{widths} = [ @awidth ]; | |
51 | $self->{aligns} = [ @aalign ]; | |
52 | ||
53 | ||
54 | bless($self); | |
55 | ||
56 | return $self; | |
57 | } | |
58 | ||
59 | sub add_row { | |
60 | my ($self, @cols) = @_; | |
61 | ||
62 | push @{$self->{data}}, [ @cols ]; | |
63 | } | |
64 | ||
65 | sub html { | |
66 | my ($self) = @_; | |
67 | ||
68 | my $out = "<table class=grid border=0 cellspacing=0 cellpadding=2>"; | |
69 | my $widths = $self->{widths}; | |
70 | my $aligns = $self->{aligns}; | |
71 | for (my $i = 0; $i < $self->{colums}; $i++) { | |
72 | $out .= "<COL width='@$widths[$i]'>"; | |
73 | } | |
74 | ||
75 | foreach my $ca (@{$self->{data}}) { | |
76 | $out .= "<tr>"; | |
77 | ||
78 | for (my $i = 0; $i < $self->{colums}; $i++) { | |
79 | ||
80 | my $align = @$aligns[$i] ? "align='@$aligns[$i]'" : ''; | |
81 | $out .= "<td $align>@$ca[$i]</td>" | |
82 | } | |
83 | ||
84 | $out .= "</tr>"; | |
85 | } | |
86 | $out .= "</table>"; | |
87 | ||
88 | $self->{rowcount} = 0; | |
89 | $self->{data} = []; | |
90 | ||
91 | return $out; | |
92 | } | |
93 | ||
94 | 1; |