--- trunk/lib/BackupPC/SearchLib.pm 2005/10/16 17:41:10 216 +++ trunk/lib/BackupPC/SearchLib.pm 2005/10/16 17:41:52 217 @@ -121,45 +121,64 @@ } my $sort_def = { - default => 'date_a', - sql => { - share_d => 'shares.name DESC', - share_a => 'shares.name ASC', - path_d => 'files.path DESC', - path_a => 'files.path ASC', - num_d => 'files.backupnum DESC', - num_a => 'files.backupnum ASC', - size_d => 'files.size DESC', - size_a => 'files.size ASC', - date_d => 'files.date DESC', - date_a => 'files.date ASC', - }, - est => { - share_d => 'sname STRD', - share_a => 'sname STRA', - path_d => 'filepath STRD', - path_a => 'filepath STRA', - num_d => 'backupnum NUMD', - num_a => 'backupnum NUMA', - size_d => 'size NUMD', - size_a => 'size NUMA', - date_d => 'date NUMD', - date_a => 'date NUMA', + search => { + default => 'date_a', + sql => { + share_d => 'shares.name DESC', + share_a => 'shares.name ASC', + path_d => 'files.path DESC', + path_a => 'files.path ASC', + num_d => 'files.backupnum DESC', + num_a => 'files.backupnum ASC', + size_d => 'files.size DESC', + size_a => 'files.size ASC', + date_d => 'files.date DESC', + date_a => 'files.date ASC', + }, + est => { + share_d => 'sname STRD', + share_a => 'sname STRA', + path_d => 'filepath STRD', + path_a => 'filepath STRA', + num_d => 'backupnum NUMD', + num_a => 'backupnum NUMA', + size_d => 'size NUMD', + size_a => 'size NUMA', + date_d => 'date NUMD', + date_a => 'date NUMA', + } + }, burn => { + default => 'date_a', + sql => { + share_d => 'share DESC', + share_a => 'share ASC', + num_d => 'backupnum DESC', + num_a => 'backupnum ASC', + date_d => 'date DESC', + date_a => 'date ASC', + age_d => 'age DESC', + age_a => 'age ASC', + size_d => 'size DESC', + size_a => 'size ASC', + incsize_d => 'inc_size DESC', + incsize_a => 'inc_size ASC', + } } }; -sub getSort($$) { - my ($type, $sort_order) = @_; +sub getSort($$$) { + my ($part,$type, $sort_order) = @_; - $sort_order ||= $sort_def->{'default'}; + die "unknown part: $part" unless ($sort_def->{$part}); + die "unknown type: $type" unless ($sort_def->{$part}->{$type}); - die "unknown type: $type" unless ($sort_def->{$type}); + $sort_order ||= $sort_def->{$part}->{'default'}; - if (my $ret = $sort_def->{$type}->{$sort_order}) { + if (my $ret = $sort_def->{$part}->{$type}->{$sort_order}) { return $ret; } else { # fallback to default sort order - return $sort_def->{$type}->{ $sort_def->{'default'} }; + return $sort_def->{$part}->{$type}->{ $sort_def->{$part}->{'default'} }; } } @@ -193,7 +212,7 @@ my $where = getWhere($param); $sql_where = " WHERE ". $where if ($where); - my $order = getSort('sql', $param->{'sort'}); + my $order = getSort('search', 'sql', $param->{'sort'}); my $sql_order = qq{ ORDER BY $order @@ -295,7 +314,7 @@ # $cond->set_max( $offset + $on_page ); $cond->set_options( $HyperEstraier::Condition::SURE ); - $cond->set_order( getSort('est', $param->{'sort'} ) ); + $cond->set_order( getSort('search', 'est', $param->{'sort'} ) ); # get the result of search my @res; @@ -399,11 +418,16 @@ ); } -sub getBackupsNotBurned() { +sub getBackupsNotBurned($) { + my $param = shift; my $dbh = get_dbh(); - my $sql = q{ + my $order = getSort('burn', 'sql', $param->{'sort'}); + +print STDERR "## sort=". ($param->{'sort'} || 'no sort param') . " burn sql order: $order\n"; + + my $sql = qq{ SELECT backups.hostID AS hostID, hosts.name AS host, @@ -411,6 +435,7 @@ backups.num AS backupnum, backups.type AS type, backups.date AS date, + date_part('epoch',now()) - backups.date as age, backups.size AS size, backups.id AS id, backups.inc_size AS inc_size, @@ -432,14 +457,15 @@ backups.size, backups.inc_size, backups.parts - ORDER BY backups.date + ORDER BY $order }; my $sth = $dbh->prepare( $sql ); my @ret; $sth->execute(); while ( my $row = $sth->fetchrow_hashref() ) { - $row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) ); + $row->{'age'} = sprintf("%0.1f", ( $row->{'age'} / 86400 ) ); + #$row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) ); $row->{'size'} = sprintf("%0.2f", $row->{'size'} / 1024 / 1024); # do some cluster calculation (approximate) and convert to kB @@ -450,7 +476,9 @@ return @ret; } -sub displayBackupsGrid() { +sub displayBackupsGrid($) { + + my $param = shift; my $retHTML .= q{
@@ -785,15 +813,18 @@ - Share - Backup no + } . + sort_header($param, 'Share', 'share', 'center') . + sort_header($param, '#', 'num', 'center') . + qq{ Type - date - age/days - size/MB - gzip size/kB + } . + sort_header($param, 'Date', 'date', 'center') . + sort_header($param, 'Age/days', 'age', 'center') . + sort_header($param, 'Size/Mb', 'size', 'center') . + sort_header($param, 'gzip size/Kb', 'incsize', 'center') . + qq{ - }; my @color = (' bgcolor="#e0e0e0"', ''); @@ -801,7 +832,7 @@ my $i = 0; my $host = ''; - foreach my $backup ( getBackupsNotBurned() ) { + foreach my $backup ( getBackupsNotBurned($param) ) { if ($host ne $backup->{'host'}) { $i++; @@ -884,12 +915,14 @@ }; - my ($sort_what, $sort_dir) = split(/_/,$param->{'sort'},2); + sub sort_header($$$$) { + my ($param, $display, $name, $align) = @_; - sub sort_header($$$) { - my ($param, $display, $name) = @_; + my ($sort_what, $sort_dir) = split(/_/,$param->{'sort'},2); - my $html = '{'sort'}; + + my $html = qq{{'sort'} = $name . '_a'; } $html .= '' . $display . ''; + $param->{'sort'} = $old_sort; + return $html; } $retHTML .= - sort_header($param, 'Share', 'share') . - sort_header($param, 'Type and Name', 'path') . - sort_header($param, '#', 'num') . - sort_header($param, 'Size', 'size') . - sort_header($param, 'Date', 'date'); + sort_header($param, 'Share', 'share', 'center') . + sort_header($param, 'Type and Name', 'path', 'center') . + sort_header($param, '#', 'num', 'center') . + sort_header($param, 'Size', 'size', 'center') . + sort_header($param, 'Date', 'date', 'center'); $retHTML .= qq{ Media