/[BackupPC]/trunk/lib/BackupPC/SearchLib.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/BackupPC/SearchLib.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 253 by dpavlin, Mon Dec 12 13:41:08 2005 UTC revision 262 by dpavlin, Tue Dec 13 00:10:44 2005 UTC
# Line 381  sub get_tgz_size_by_name($) { Line 381  sub get_tgz_size_by_name($) {
381                  $size = (stat("${tgz}.tar.gz"))[7];                  $size = (stat("${tgz}.tar.gz"))[7];
382          } elsif (-d $tgz) {          } elsif (-d $tgz) {
383                  opendir(my $dir, $tgz) || die "can't opendir $tgz: $!";                  opendir(my $dir, $tgz) || die "can't opendir $tgz: $!";
384                  my @parts = grep { !/^\./ && -f "$tgz/$_" } readdir($dir);                  my @parts = grep { !/^\./ && !/md5/ && -f "$tgz/$_" } readdir($dir);
385                  $size = 0;                  $size = 0;
386                  foreach my $part (@parts) {                  foreach my $part (@parts) {
387                          $size += (stat("$tgz/$part"))[7] || die "can't stat $tgz/$part: $!";                          $size += (stat("$tgz/$part"))[7] || die "can't stat $tgz/$part: $!";
388                  }                  }
389                  closedir $dir;                  closedir $dir;
390            } else {
391                    return -1;
392          }          }
393    
394          return $size;          return $size;
# Line 418  sub getGzipSize($$) Line 420  sub getGzipSize($$)
420          );          );
421  }  }
422    
423    sub getVolumes($) {
424            my $id = shift;
425    
426            my $max_archive_size = $Conf{MaxArchiveSize} || die "no MaxArchiveSize";
427    
428            my $sth = $dbh->prepare(qq{
429                    select
430                            size
431                    from backup_parts
432                    where backup_id = ?
433                    order by part_nr asc
434            });
435    
436            $sth->execute($id);
437    
438            my $cumulative_size = 0;
439            my $volumes = 1;
440    
441            while(my ($size) = $sth->fetchrow_array) {
442                    if ($cumulative_size + $size > $max_archive_size) {
443                            $volumes++;
444                            $cumulative_size = $size;
445                    } else {
446                            $cumulative_size += $size;
447                    }
448            }
449    
450            return ($volumes,$cumulative_size);
451    }
452    
453  sub getBackupsNotBurned($) {  sub getBackupsNotBurned($) {
454    
455          my $param = shift;          my $param = shift;
# Line 466  print STDERR "## sort=". ($param->{'sort Line 498  print STDERR "## sort=". ($param->{'sort
498          while ( my $row = $sth->fetchrow_hashref() ) {          while ( my $row = $sth->fetchrow_hashref() ) {
499                  $row->{'age'} = sprintf("%0.1f", ( $row->{'age'} / 86400 ) );                  $row->{'age'} = sprintf("%0.1f", ( $row->{'age'} / 86400 ) );
500                  #$row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) );                  #$row->{'age'} = sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) );
                 $row->{'size'} = sprintf("%0.2f", $row->{'size'} / 1024 / 1024);  
501    
502                  # do some cluster calculation (approximate) and convert to kB                  my $max_archive_size = $Conf{MaxArchiveSize} || die "no MaxArchiveSize";
503                  $row->{'inc_size'} = int(($row->{'inc_size'} + 1023 ) / ( 2 * 1024 ) * 2);                  if ($row->{size} > $max_archive_size) {
504                            ($row->{volumes}, $row->{inc_size_calc}) = getVolumes($row->{id});
505                    }
506    
507                    $row->{size} = sprintf("%0.2f", $row->{size} / 1024 / 1024);
508    
509                    # do some cluster calculation (approximate)
510                    $row->{inc_size} = int(( ($row->{inc_size} + 1023 ) / 2 )  * 2);
511                    $row->{inc_size_calc} ||= $row->{inc_size};
512                  push @ret, $row;                  push @ret, $row;
513          }          }
514                
515          return @ret;                return @ret;
516  }  }
517    
518  sub displayBackupsGrid($) {  sub displayBackupsGrid($) {
# Line 589  DIV#fixedBox #submitBurner { Line 628  DIV#fixedBox #submitBurner {
628          background-color: transparent;          background-color: transparent;
629  }  }
630    
631  #parts {  #volumes {
632          padding: 0.4em;          padding: 0.4em;
633          display: none;          display: none;
634          width: 100%;          width: 100%;
# Line 615  var max_file_size = $max_archive_file_si Line 654  var max_file_size = $max_archive_file_si
654          $retHTML .= <<'EOF3';          $retHTML .= <<'EOF3';
655    
656  function debug(msg) {  function debug(msg) {
657          return; // Disable debugging  //      return; // Disable debugging
658    
659          if (! debug_div) debug_div = document.getElementById('debug');          if (! debug_div) debug_div = document.getElementById('debug');
660    
# Line 673  function checkAll(location) { Line 712  function checkAll(location) {
712    
713  function update_sum(suma, suma_disp) {  function update_sum(suma, suma_disp) {
714          if (! suma_disp) suma_disp = suma;          if (! suma_disp) suma_disp = suma;
715          element_id('forma').elements['totalsize'].value = suma_disp;          suma_disp = Math.floor(suma_disp / 1024);
716            element_id('forma').elements['totalsize_kb'].value = suma_disp;
717            element_id('forma').elements['totalsize'].value = suma;
718          pbar_set(suma, media_size);          pbar_set(suma, media_size);
719          debug('total size: ' + suma);          debug('total size: ' + suma);
720  }  }
721    
722  function sumiraj(e) {  function update_size(name, checked, suma) {
723          var suma = parseInt(element_id('forma').elements['totalsize'].value) || 0;          var size = parseInt( element_id("fss" + name).value);
724          var len = element_id('forma').elements.length;  
725          if (e) {          if (checked) {
726                  var size = parseInt( element_id("fss" + e.name.substr(3)).value);                  suma += size;
727                  if (e.checked) {          } else {
728                          suma += size;                  suma -= size;
729            }
730    
731            var volumes = parseInt( element_id("prt" + name).value);
732            debug('update_size('+name+','+checked+') suma: '+suma+' volumes: '+volumes);
733            if (volumes > 1) {
734                    if (checked) {
735                            element_id("volumes").innerHTML = "This will take "+volumes+" mediums!";
736                            element_id("volumes").style.display = 'block';
737                            suma = size;
738                            update_sum(suma);
739                  } else {                  } else {
740                          suma -= size;                          suma -= size;
741                            element_id("volumes").style.display = 'none';
742                  }                  }
743            }
744    
745                  var parts = parseInt( element_id("prt" + e.name.substr(3)).value);          return suma;
746                  if (suma > max_file_size && suma == size && parts > 1) {  }
                         element_id("parts").innerHTML = "This will take "+parts+" mediums!";  
                         element_id("parts").style.display = 'block';  
                         update_sum(media_size, suma);  
                         suma = media_size;  
                         return suma;  
                 } else {  
                         element_id("parts").style.display = 'none';  
                 }  
747    
748    function sumiraj(e) {
749            var suma = parseInt(element_id('forma').elements['totalsize'].value) || 0;
750            var len = element_id('forma').elements.length;
751            if (e) {
752                    suma = update_size(e.name.substr(3), e.checked, suma);
753                  if (suma < 0) suma = 0;                  if (suma < 0) suma = 0;
754          } else {          } else {
755                  suma = 0;                  suma = 0;
756                  for (var i = 0; i < len; i++) {                  for (var i = 0; i < len; i++) {
757                          var e = element_id('forma').elements[i];                          var fel = element_id('forma').elements[i];
758                          if (e.name != 'all' && e.checked && e.name.substr(0,3) == 'fcb') {                          if (fel.name != 'all' && fel.checked && fel.name.substr(0,3) == 'fcb') {
759                                  var el = element_id("fss" + e.name.substr(3));                                  suma = update_size(fel.name.substr(3), fel.checked, suma);
                                 if (el && el.value) suma += parseInt(el.value) || 0;  
760                          }                          }
761                  }                  }
762          }          }
# Line 789  self.onload = self.document.onload = sel Line 838  self.onload = self.document.onload = sel
838  </script>  </script>
839  <div id="fixedBox">  <div id="fixedBox">
840    
841  Size: <input type="text" name="totalsize" size="7" readonly="readonly" style="text-align:right;" value="0" /> kB  <input type="hidden" name="totalsize"/>
842    Size: <input type="text" name="totalsize_kb" size="7" readonly="readonly" style="text-align:right;" value="0" /> kB
843    
844  <div id="mContainer">  <div id="mContainer">
845          <div id="gradient">&nbsp;</div>          <div id="gradient">&nbsp;</div>
# Line 798  Size: <input type="text" name="totalsize Line 848  Size: <input type="text" name="totalsize
848  </div>  </div>
849  <br/>  <br/>
850    
851  <div id="parts">&nbsp;</div>  <div id="volumes">&nbsp;</div>
852    
853  Note:  Note:
854  <textarea name="note" cols="10" rows="5" id="note"></textarea>  <textarea name="note" cols="10" rows="5" id="note"></textarea>
# Line 806  Note: Line 856  Note:
856  <input type="submit" id="submitBurner" value="Burn selected" name="submitBurner" />  <input type="submit" id="submitBurner" value="Burn selected" name="submitBurner" />
857    
858  </div>  </div>
 <!--  
859  <div id="debug" style="float: right; width: 10em; border: 1px #ff0000 solid; background-color: #ffe0e0; -moz-opacity: 0.7;">  <div id="debug" style="float: right; width: 10em; border: 1px #ff0000 solid; background-color: #ffe0e0; -moz-opacity: 0.7;">
860  no debug output yet  no debug output yet
861  </div>  </div>
 -->  
862  EOF3  EOF3
863          $retHTML .= q{          $retHTML .= q{
864                          <input type="hidden" value="burn" name="action">                          <input type="hidden" value="burn" name="action">
# Line 831  EOF3 Line 879  EOF3
879                  sort_header($param, 'Size/Mb', 'size', 'center') .                  sort_header($param, 'Size/Mb', 'size', 'center') .
880                  sort_header($param, 'gzip size/Kb', 'incsize', 'center') .                  sort_header($param, 'gzip size/Kb', 'incsize', 'center') .
881          qq{          qq{
882                          </tr>                          <td align="center">medias</td></tr>
883          };          };
884    
885          my @color = (' bgcolor="#e0e0e0"', '');          my @color = (' bgcolor="#e0e0e0"', '');
# Line 858  EOF3 Line 906  EOF3
906                          <input type="checkbox" name="fcb' . $checkbox_key . '" value="' . $checkbox_key . '" onClick="sumiraj(this);">';                          <input type="checkbox" name="fcb' . $checkbox_key . '" value="' . $checkbox_key . '" onClick="sumiraj(this);">';
907                  }                  }
908    
909                    my $img_url = $Conf{CgiImageDirURL};
910    
911                  $retHTML .=                  $retHTML .=
912                          '</td>' .                          '</td>' .
913                          '<td align="right">' . $backup->{'host'} . ':' . $backup->{'share'} . '</td>' .                          '<td align="right">' . $backup->{'host'} . ':' . $backup->{'share'} . '</td>' .
# Line 866  EOF3 Line 916  EOF3
916                          '<td align="center">' . epoch_to_iso( $backup->{'date'} ) . '</td>' .                          '<td align="center">' . epoch_to_iso( $backup->{'date'} ) . '</td>' .
917                          '<td align="center">' . $backup->{'age'} . '</td>' .                          '<td align="center">' . $backup->{'age'} . '</td>' .
918                          '<td align="right">' . $backup->{'size'} . '</td>' .                          '<td align="right">' . $backup->{'size'} . '</td>' .
919                          '<td align="right">' . $backup->{'inc_size'} .                          '<td align="right">' . sprintf("%0.1f", $backup->{'inc_size'} / 1024 ) .
920                          '<input type="hidden" id="fss'.$checkbox_key .'" value="'. $backup->{'inc_size'} .'"></td>' .                          '<input type="hidden" id="fss'.$checkbox_key .'" value="'. $backup->{'inc_size_calc'} .'"></td>' .
921                          '<input type="hidden" id="prt'.$checkbox_key .'" value="'. $backup->{'parts'} .'"></td>' .                          '<input type="hidden" id="prt'.$checkbox_key .'" value="'. $backup->{'volumes'} .'"></td>' .
922                            '<td align="left">' . ( qq{<img src="$img_url/icon-cd.gif" alt="media">} x $backup->{volumes} ) . '</td>' .
923    
924                          "</tr>\n";                          "</tr>\n";
925          }          }

Legend:
Removed from v.253  
changed lines
  Added in v.262

  ViewVC Help
Powered by ViewVC 1.1.26