/[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 124 by dpavlin, Tue Sep 20 16:23:04 2005 UTC revision 142 by ravilov, Fri Oct 7 08:58:45 2005 UTC
# Line 309  sub getBackupsNotBurned() { Line 309  sub getBackupsNotBurned() {
309                  FROM backups                  FROM backups
310                  INNER JOIN shares       ON backups.shareID=shares.ID                  INNER JOIN shares       ON backups.shareID=shares.ID
311                  INNER JOIN hosts        ON backups.hostID = hosts.ID                  INNER JOIN hosts        ON backups.hostID = hosts.ID
312                  LEFT OUTER JOIN archive_backup ON archive_backup.backup_id = backups.id AND archive_backup.backup_id IS NULL                  LEFT OUTER JOIN archive_backup ON archive_backup.backup_id = backups.id
313                  WHERE backups.size > 0                  WHERE backups.size > 0 AND archive_backup.backup_id IS NULL
314                  GROUP BY                  GROUP BY
315                          backups.hostID,                          backups.hostID,
316                          hosts.name,                          hosts.name,
# Line 340  sub getBackupsNotBurned() { Line 340  sub getBackupsNotBurned() {
340          return @ret;                return @ret;      
341  }  }
342    
343  sub displayBackupsGrid()  sub displayBackupsGrid() {
344    {  
345        my $retHTML = "";          my $retHTML .= q{
346                          <form id="forma" method="POST" action="}.$MyURL.q{?action=burn">
347          $retHTML .= <<EOF3;          };
348  <script language="javascript" type="text/javascript">  
349            $retHTML .= <<'EOF3';
350    <style type="text/css">
351  <!--  <!--
352    DIV#fixedBox {
353            position: absolute;
354            top: 50em;
355            left: -24%;
356            padding: 0.5em;
357            width: 20%;
358            background-color: #E0F0E0;
359            border: 1px solid #00C000;
360    }
361    
362    DIV#fixedBox, DIV#fixedBox INPUT, DIV#fixedBox TEXTAREA {
363            font-size: 10pt;
364    }
365    
366    FORM>DIV#fixedBox {
367            position: fixed !important;
368            left: 0.5em !important;
369            top: auto !important;
370            bottom: 1em !important;
371            width: 15% !important;
372    }
373    
374    DIV#fixedBox INPUT[type=text], DIV#fixedBox TEXTAREA {
375            border: 1px solid #00C000;
376    }
377    
378    DIV#fixedBox #note {
379            display: block;
380            width: 100%;
381    }
382    
383    DIV#fixedBox #submitBurner {
384            display: block;
385            width: 100%;
386            margin-top: 0.5em;
387            cursor: pointer;
388    }
389    
390    * HTML {
391            overflow-y: hidden;
392    }
393    
394    * HTML BODY {
395            overflow-y: auto;
396            height: 100%;
397            font-size: 100%;
398    }
399    
400    * HTML DIV#fixedBox {
401            position: absolute;
402    }
403    
404    #mContainer, #gradient, #mask, #progressIndicator {
405            display: block;
406            width: 100%;
407            font-size: 10pt;
408            font-weight: bold;
409            text-align: center;
410            vertical-align: middle;
411            padding: 1px;
412    }
413    
414    #gradient, #mask, #progressIndicator {
415            left: 0;
416            border-width: 1px;
417            border-style: solid;
418            border-color: #000000;
419            color: #404040;
420            margin: 0.4em;
421            position: absolute;
422            margin-left: -1px;
423            margin-top: -1px;
424            margin-bottom: -1px;
425            overflow: hidden;
426    }
427    
428    #mContainer {
429            display: block;
430            position: relative;
431            padding: 0px;
432            margin-top: 0.4em;
433            margin-bottom: 0.5em;
434    }
435    
436    #gradient {
437            z-index: 1;
438            background-color: #FFFF00;
439    }
440    
441    #mask {
442            z-index: 2;
443            background-color: #FFFFFF;
444    }
445    
446    #progressIndicator {
447            z-index: 3;
448            background-color: transparent;
449    }
450    -->
451    </style>
452    <script type="text/javascript">
453    <!--
454    
455    var debug_div = null;
456    var media_size = 4400 * 1024;
457    
458    function debug(msg) {
459    //      return; // Disable debugging
460    
461            if (! debug_div) debug_div = document.getElementById('debug');
462    
463            // this will create debug div if it doesn't exist.
464            if (! debug_div) {
465                    debug_div = document.createElement('div');
466                    if (document.body) document.body.appendChild(debug_div);
467                    else debug_div = null;
468            }
469            if (debug_div) {
470                    debug_div.appendChild(document.createTextNode(msg));
471                    debug_div.appendChild(document.createElement("br"));
472            }
473    }
474    
475      function checkAll(location)  
476      {  var element_id_cache = Array();
477        for (var i=0;i<document.forma.elements.length;i++)  
478        {  function element_id(name,element) {
479          var e = document.forma.elements[i];          if (! element_id_cache[name]) {
480          if ((e.checked || !e.checked) && e.name != \'all\') {                  element_id_cache[name] = self.document.getElementById(name);
481              if (eval("document.forma."+location+".checked")) {          }
482                  e.checked = true;          return element_id_cache[name];
483              } else {  }
484                  e.checked = false;  
485              }  function checkAll(location) {
486          }          var f = element_id('forma') || null;
487        }          if (!f) return false;
488      }  
489                var len = f.elements.length;
490      function sumiraj()          var check_all = element_id('allFiles');
491      {          var suma = check_all.checked ? (parseInt(f.elements['totalsize'].value) || 0) : 0;
492          var suma = 0;  
493          for (var i = 0; i < document.forma.elements.length; i++)              for (var i = 0; i < len; i++) {
494                  {                  var e = f.elements[i];
495                          var e = document.forma.elements[i];                  if (e.name != 'all' && e.name.substr(0, 3) == 'fcb') {
496                          if ((e.checked || !e.checked) && e.name != \'all\')                          if (check_all.checked) {
497                          {                                  if (e.checked) continue;
498                                  if (e.checked)                                  var el = element_id("fss" + e.name.substr(3));
499                                  {                                  var size = parseInt(el.value) || 0;
500                                          var ret = e.name.match("fcb(.*)");                                  debug('suma: '+suma+' size: '+size);
501                                          suma += parseInt(eval("document.forma.fss"+ret[1]+".value") || 0);                                  if ((suma + size) < media_size) {
502                                                                                    suma += size;
503                                            e.checked = true;
504                                    } else {
505                                            break;
506                                  }                                  }
507                          }                          } else {
508          }                                  e.checked = false;
509          document.forma.totalsize.value = suma;                          }
510                    }
511            }
512            update_sum(suma);
513    }
514    
515    function update_sum(suma) {
516            element_id('forma').elements['totalsize'].value = suma;
517            pbar_set(suma, media_size);
518            debug('total size: ' + suma);
519    }
520    
521    function sumiraj(e) {
522            var suma = parseInt(element_id('forma').elements['totalsize'].value) || 0;
523            var len = element_id('forma').elements.length;
524            if (e) {
525                    var size = parseInt( element_id("fss" + e.name.substr(3)).value);
526                    if (e.checked) {
527                            suma += size;
528                    } else {
529                            suma -= size;
530                    }
531            } else {
532                    suma = 0;
533                    for (var i = 0; i < len; i++) {
534                            var e = element_id('forma').elements[i];
535                            if (e.name != 'all' && e.checked && e.name.substr(0,3) == 'fcb') {
536                                    var el = element_id("fss" + e.name.substr(3));
537                                    if (el && el.value) suma += parseInt(el.value) || 0;
538                            }
539                    }
540            }
541            update_sum(suma);
542          return suma;          return suma;
543      }  }
544  //-->  
545  </script>        /* progress bar */
546    
547    var _pbar_width = null;
548    var _pbar_warn = 10;    // change color in last 10%
549    
550    function pbar_reset() {
551            element_id("mask").style.left = "0px";
552            _pbar_width = element_id("mContainer").offsetWidth - 2;
553            element_id("mask").style.width = _pbar_width + "px";
554            element_id("mask").style.display = "block";
555            element_id("progressIndicator").style.zIndex  = 10;
556            element_id("progressIndicator").innerHTML = "0";
557    }
558    
559    function dec2hex(d) {
560            var hch = '0123456789ABCDEF';
561            var a = d % 16;
562            var q = (d - a) / 16;
563            return hch.charAt(q) + hch.charAt(a);
564    }
565    
566    function pbar_set(amount, max) {
567            debug('pbar_set('+amount+', '+max+')');
568    
569            if (_pbar_width == null) {
570                    var _mc = element_id("mContainer");
571                    if (_pbar_width == null) _pbar_width = parseInt(_mc.offsetWidth ? (_mc.offsetWidth - 2) : 0) || null;
572                    if (_pbar_width == null) _pbar_width = parseInt(_mc.clientWidth ? (_mc.clientWidth + 2) : 0) || null;
573                    if (_pbar_width == null) _pbar_width = 0;
574            }
575    
576            var pcnt = Math.floor(amount * 100 / max);
577            var p90 = 100 - _pbar_warn;
578            var pcol = pcnt - p90;
579            if (Math.round(pcnt) <= 100) {
580                    if (pcol < 0) pcol = 0;
581                    var e = element_id("submitBurner");
582                    debug('enable_button');
583                    e.disabled = false;
584                    var a = e.getAttributeNode('disabled') || null;
585                    if (a) e.removeAttributeNode(a);
586            } else {
587                    debug('disable button');
588                    pcol = _pbar_warn;
589                    var e = element_id("submitBurner");
590                    if (!e.disabled) e.disabled = true;
591            }
592            var col_g = Math.floor((_pbar_warn - pcol) * 255 / _pbar_warn);
593            var col = '#FF' + dec2hex(col_g) + '00';
594    
595            //debug('pcol: '+pcol+' g:'+col_g+' _pbar_warn:'+ _pbar_warn + ' color: '+col);
596            element_id("gradient").style.backgroundColor = col;
597    
598            element_id("progressIndicator").innerHTML = pcnt + '%';
599            //element_id("progressIndicator").innerHTML = amount;
600    
601            element_id("mask").style.clip = 'rect(' + Array(
602                    '0px',
603                    element_id("mask").offsetWidth + 'px',
604                    element_id("mask").offsetHeight + 'px',
605                    Math.round(_pbar_width * amount / max) + 'px'
606            ).join(' ') + ')';
607    }
608    
609    if (!self.body) self.body = new Object();
610    self.onload = self.document.onload = self.body.onload = function() {
611            //pbar_reset();
612            sumiraj();
613    };
614    
615    // -->
616    </script>
617    <div id="fixedBox">
618    
619    Size: <input type="text" name="totalsize" size="7" readonly="readonly" style="text-align:right;" value="0" /> kB
620    
621    <div id="mContainer">
622            <div id="gradient">&nbsp;</div>
623            <div id="mask">&nbsp;</div>
624            <div id="progressIndicator">0%</div>
625    </div>
626    <br/>
627    
628    Note:
629    <textarea name="note" cols="10" rows="5" id="note"></textarea>
630    
631    <input type="submit" id="submitBurner" value="Burn selected" name="submitBurner" />
632    
633    </div>
634    <!--
635    <div id="debug" style="float: right; width: 10em; border: 1px #ff0000 solid; background-color: #ffe0e0; -moz-opacity: 0.7;">
636    no debug output yet
637    </div>
638    -->
639  EOF3  EOF3
640          $retHTML .= q{          $retHTML .= q{
                 <form name="forma" method="GET" action=};  
                 $retHTML .= "\"".$MyURL."\"";  
                 $retHTML .= q{?action=burn>  
641                          <input type="hidden" value="burn" name="action">                          <input type="hidden" value="burn" name="action">
642                          <input type="hidden" value="results" name="search_results">                          <input type="hidden" value="results" name="search_results">
643                          <table style="fview" border="0" cellspacing="0" cellpadding="2">                          <table style="fview" border="0" cellspacing="0" cellpadding="2">
644                          <tr class="tableheader">                          <tr class="tableheader">
645                          <td class="tableheader">                          <td class="tableheader">
646                                  <input type="checkbox" name="allFiles" onClick="checkAll('allFiles');">                                  <input type="checkbox" name="allFiles" id="allFiles" onClick="checkAll('allFiles');">
647                          </td>                          </td>
648                          <td align="center">Share</td>                          <td align="center">Share</td>
649                          <td align="center">Backup no</td>                          <td align="center">Backup no</td>
# Line 405  EOF3 Line 654  EOF3
654                          <td align="center">gzip size</td>                          <td align="center">gzip size</td>
655                          </tr>                          </tr>
656    
                         <tr><td colspan=7 style="tableheader">  
                         <input type="submit" value="Burn selected backups on medium" name="submitBurner">  
                         </td></tr>  
657          };          };
658    
659          my @color = (' bgcolor="#e0e0e0"', '');          my @color = (' bgcolor="#e0e0e0"', '');
# Line 422  EOF3 Line 668  EOF3
668                          $host = $backup->{'host'};                          $host = $backup->{'host'};
669                  }                  }
670                  my $ftype = "";                  my $ftype = "";
671                
                 $retHTML .= "<tr" . $color[$i %2 ] . ">";  
                 $retHTML .= '<td class="fview"><input type="checkbox" name="fcb' .  
                                                                                         $backup->{'hostid'}.'_'.$backup->{'backupnum'} .  
                                                                                         '" value="' . $backup->{'hostid'}.'_'.$backup->{'backupnum'} .  
                                                                                         '" onClick="sumiraj();"></td>';  
               
672                  $retHTML .=                  $retHTML .=
673                            '<tr' . $color[$i %2 ] . '>
674                            <td class="fview">';
675                    # FIXME
676                    $backup->{'fs_size'} = int($backup->{'size'} * 1024);
677                    if (($backup->{'fs_size'} || 0) > 0) {
678                            $retHTML .= '
679                            <input type="checkbox" name="fcb' .
680                            $backup->{'hostid'}.'_'.$backup->{'backupnum'} .
681                            '" value="' . $backup->{'hostid'}.'_'.$backup->{'backupnum'} .
682                            '" onClick="sumiraj(this);">';
683                    }
684                    $retHTML .=
685                            '</td>' .
686                          '<td align="right">' . $backup->{'host'} . ':' . $backup->{'share'} . '</td>' .                          '<td align="right">' . $backup->{'host'} . ':' . $backup->{'share'} . '</td>' .
687                          '<td align="center">' . $backup->{'backupnum'} . '</td>' .                          '<td align="center">' . $backup->{'backupnum'} . '</td>' .
688                          '<td align="center">' . $backup->{'type'} . '</td>' .                          '<td align="center">' . $backup->{'type'} . '</td>' .
# Line 437  EOF3 Line 690  EOF3
690                          '<td align="center">' . $backup->{'age'} . '</td>' .                          '<td align="center">' . $backup->{'age'} . '</td>' .
691                          '<td align="right">' . $backup->{'size'} . '</td>' .                          '<td align="right">' . $backup->{'size'} . '</td>' .
692                          '<td align="right">' . $backup->{'fs_size'} .                          '<td align="right">' . $backup->{'fs_size'} .
693                          '<input type="hidden" name="fss'.$backup->{'hostid'}.'_'.$backup->{'backupnum'} . '"'.                          '<input type="hidden" iD="fss'.$backup->{'hostid'}.'_'.$backup->{'backupnum'} . '" value="'. $backup->{'fs_size'} .'"></td>' .
                         'value="'. $backup->{'fs_size'} .'"'.'</td>' .  
                         "</tr>\n";  
   
694    
695                            "</tr>\n";
696          }          }
697    
698          $retHTML .= "</table>";          $retHTML .= "</table>";
         $retHTML .= "total gzip size:<input type=\"text\" name=\"totalsize\"><br>";  
         $retHTML .= "Note:<input type=\"text\" name=\"note\">";  
699          $retHTML .= "</form>";          $retHTML .= "</form>";
700                
701          return $retHTML;          return $retHTML;

Legend:
Removed from v.124  
changed lines
  Added in v.142

  ViewVC Help
Powered by ViewVC 1.1.26