]> git.proxmox.com Git - pve-manager.git/blob - lib/PVE.old/HTMLGrid.pm
imported from svn 'pve-manager/pve2'
[pve-manager.git] / lib / PVE.old / HTMLGrid.pm
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;