}
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'} };
}
}
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
# $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;
);
}
-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,
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,
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
return @ret;
}
-sub displayBackupsGrid() {
+sub displayBackupsGrid($) {
+
+ my $param = shift;
my $retHTML .= q{
<form id="forma" method="POST" action="}.$MyURL.q{?action=burn">
<td class="tableheader">
<input type="checkbox" name="allFiles" id="allFiles" onClick="checkAll('allFiles');">
</td>
- <td align="center">Share</td>
- <td align="center">Backup no</td>
+ } .
+ sort_header($param, 'Share', 'share', 'center') .
+ sort_header($param, '#', 'num', 'center') .
+ qq{
<td align="center">Type</td>
- <td align="center">date</td>
- <td align="center">age/days</td>
- <td align="center">size/MB</td>
- <td align="center">gzip size/kB</td>
+ } .
+ 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{
</tr>
-
};
my @color = (' bgcolor="#e0e0e0"', '');
my $i = 0;
my $host = '';
- foreach my $backup ( getBackupsNotBurned() ) {
+ foreach my $backup ( getBackupsNotBurned($param) ) {
if ($host ne $backup->{'host'}) {
$i++;
<td></td>
};
- 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 = '<td align="center"';
+ my $old_sort = $param->{'sort'};
+
+ my $html = qq{<td align="$align"};
if (lc($sort_what) eq lc($name)) {
my $dir = lc($sort_dir);
$dir =~ tr/ad/da/;
$param->{'sort'} = $name . '_a';
}
$html .= '<a href="' . page_uri($param) . '">' . $display . '</a></td>';
+ $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{
<td align="center">Media</td>