/[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 128 by dpavlin, Thu Sep 22 13:31:04 2005 UTC
# 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=};
347          $retHTML .= <<EOF3;                  $retHTML .= "\"".$MyURL."\"";
348                    $retHTML .= q{?action=burn>
349            };
350    
351            $retHTML .= <<'EOF3';
352    <style>
353    <!--
354    
355    div#fixedBox {
356            position: absolute;
357            bottom: 1em;
358            left: 0.5em;
359            padding: 0.5em;
360            width: 10em;
361            background: #e0f0e0;
362            border: 1px solid #00ff00;
363    }
364    @media screen {
365            div#fixedBox {
366                    position: fixed;
367            }
368            /* Don't do this at home */
369            * html {
370                    overflow-y: hidden;
371            }
372            * html body {
373                    overflow-y: auto;
374                    height: 100%;
375                    padding: 0 1em 0 12em;
376                    font-size: 100%;
377            }
378            * html div#fixedBox {
379                    position: absolute;    
380            }
381            /* All done. */
382    }
383    
384    #mContainer {
385            position: relative;
386            width: 100%;
387            height: 1.1em;
388            padding: 0px;
389            border: 1px solid #000000;
390    }
391    
392    #gradient {
393            position: absolute;
394            top: 0px;
395            left: 0px;
396            width: 100%;
397            height: 100%;
398            display: block;
399            background-color: #ffff00;
400    }
401    
402    #mask {
403            position: absolute;
404            top: 0px;
405            left: 0px;
406            width: 100%;
407            height: 100%;
408            display: block;
409            font-size: 1px;
410            background-color: #FFFFFF;
411            overflow: hidden;
412    }
413    
414    #progressIndicator {
415            position: absolute;
416            top: 0px;
417            left: 0px;
418            width: 100%;
419            height: 100%;
420            display: block;
421            font-weight: bold;
422            color: #404040;
423            font-size: 10pt;
424            text-align: center;
425    }
426    
427    -->
428    </style>
429  <script language="javascript" type="text/javascript">  <script language="javascript" type="text/javascript">
430  <!--  <!--
431    
432      function checkAll(location)  var debug_div = null;
433      {  var media_size = 4400 * 1024;
434        for (var i=0;i<document.forma.elements.length;i++)  
435        {  function debug(msg) {
436          var e = document.forma.elements[i];  //      return; // Disable debugging
437          if ((e.checked || !e.checked) && e.name != \'all\') {  
438              if (eval("document.forma."+location+".checked")) {          if (! debug_div) debug_div = document.getElementById('debug');
439                  e.checked = true;  
440              } else {          // this will create debug div if it doesn't exist.
441                  e.checked = false;          if (! debug_div) {
442              }                  debug_div = document.createElement('div');
443          }                  if (document.body) document.body.appendChild(debug_div);
444        }                  else debug_div = null;
445      }          }
446            if (debug_div) {
447                    debug_div.appendChild(document.createTextNode(msg));
448                    debug_div.appendChild(document.createElement("br"));
449            }
450    }
451    
452    
453    var element_id_cache = Array();
454    
455    function element_id(name,element) {
456            if (! element_id_cache[name]) {
457                    element_id_cache[name] = self.document.getElementById(name);
458            }
459            return element_id_cache[name];
460    }
461    
462    function checkAll(location) {
463            var len = element_id('forma').elements.length;
464            var check_all = element_id('allFiles');
465    
466            for (var i = 0; i < len; i++) {
467    
468                    var e = element_id('forma').elements[i];
469                    if ((e.checked || !e.checked) && e.name != 'all') {
470                            if (check_all.checked) {
471                                    e.checked = true;
472                            } else {
473                                    e.checked = false;
474                            }
475                    }
476            }
477    
478            sumiraj();
479    }
480            
481      function sumiraj()  function sumiraj(e) {
482      {          var suma = parseInt(element_id('forma').totalsize.value) || 0;
483          var suma = 0;          var len = element_id('forma').elements.length;
484          for (var i = 0; i < document.forma.elements.length; i++)              if (e) {
485                  {                  var size = parseInt( element_id("fss" + e.name.substr(3)).value );
486                          var e = document.forma.elements[i];                  if (e.checked) {
487                          if ((e.checked || !e.checked) && e.name != \'all\')                          suma += size;
488                          {                  } else {
489                                  if (e.checked)                          suma -= size;
490                                  {                  }
491                                          var ret = e.name.match("fcb(.*)");          } else {
492                                          suma += parseInt(eval("document.forma.fss"+ret[1]+".value") || 0);                  suma = 0;
493                                                            for (var i = 0; i < len; i++) {
494                                  }                          var e = element_id('forma').elements[i];
495                          }                          if (e.name != 'all' && e.checked && e.name.substr(0,3) == 'fcb') {
496          }                                  var el = element_id("fss" + e.name.substr(3));
497          document.forma.totalsize.value = suma;                                  if (el && el.value) suma += parseInt(el.value) || 0;
498                            }
499                    }
500            }
501            element_id('forma').totalsize.value = suma;
502            pbar_set(suma, media_size);
503            debug('total size: '+suma);
504          return suma;          return suma;
505      }  }
506    
507    /* progress bar */
508    
509    var _pbar_width = 0;
510    var _pbar_warn = 10;    // change color in last 10%
511    
512    function pbar_reset() {
513            element_id("mask").style.left = "0px";
514            _pbar_width = element_id("mContainer").offsetWidth - 2;
515            element_id("mask").style.width = _pbar_width + "px";
516            element_id("progressIndicator").style.zIndex  = 10;
517            element_id("mask").style.display = "block";
518            element_id("progressIndicator").innerHTML = "0";
519    }
520    
521    function dec2hex(d) {
522            var hch="0123456789ABCDEF";
523            var a=d%16;
524            var q=(d-a)/16;
525            return hch.charAt(q)+hch.charAt(a);
526    }
527    
528    
529    function pbar_set(amount, max) {
530    
531            debug('pbar_set( '+amount+' , '+max+' )');
532    
533            curWidth = parseInt(element_id("mask").offsetWidth);
534            curLeft = parseInt(element_id("mask").offsetLeft);
535    
536    
537            var pcnt = Math.floor( amount * 100 / max );
538            var p90 = 100 - _pbar_warn;
539            var pcol = pcnt - p90;
540            if (pcol < _pbar_warn) {
541                    if (pcol < 0) pcol = 0;
542                    var e = element_id("submitBurner");
543                    if (e && e.disabled) {
544                            debug('enable_button');
545                            var a = e.getAttributeNode('disabled') || null;
546                            if (a) e.removeAttributeNode(a);
547                    }
548            } else if (pcol > _pbar_warn) {
549                    debug('disable button');
550                    pcol = _pbar_warn;
551                    var e = element_id("submitBurner");
552                    if (! e.disabled) e.disabled = true;
553            }
554            var col_g = Math.floor( ( _pbar_warn - pcol ) * 255 / _pbar_warn );
555            var col = '#ff' + dec2hex( col_g ) + '00';
556    
557            //debug('pcol: '+pcol+' g:'+col_g+' _pbar_warn:'+ _pbar_warn + ' color: '+col);
558            element_id("gradient").style.backgroundColor = col;
559    
560            var size = parseInt( _pbar_width * amount / max );
561    
562            curWidth = _pbar_width - size;
563            curLeft = size ;
564    
565            //debug('size: '+size+' curWidth '+curWidth+' curLeft: '+curLeft);
566    
567            element_id("progressIndicator").innerHTML = pcnt + '%';
568            //element_id("progressIndicator").innerHTML = amount;
569    
570            if (curLeft > _pbar_width) {
571                    element_id("mask").style.display = "none";
572                    return;
573            } else {
574                    element_id("mask").style.display = "";
575            }
576    
577            //if(parseInt(element_id("mask").offsetWidth)>10)
578            element_id("mask").style.width = curWidth + "px";
579            element_id("mask").style.left = curLeft + "px";
580    
581    }
582    
583    if (!self.body) self.body = new Object();
584    self.onload = self.document.onload = self.body.onload = function() {
585            pbar_reset();
586            sumiraj();
587    }
588    
589  //-->  //-->
590  </script>        </script>
591    <div id="fixedBox">
592    
593    Size:
594    <input type="text" name="totalsize" size="7" readonly>
595    
596    <div id="mContainer">
597            <div id="gradient"></div>
598            <div id="mask"></div>
599            <div id="progressIndicator">&nbsp;</div>
600    </div>
601    
602    <br/>
603    Note:
604    <br/>
605    <textarea name="note" cols="10" rows="5">
606    </textarea>
607    <br/>
608    <input type="submit" id="submitBurner" value="Burn selected" name="submitBurner">
609    
610    </div>
611    <div id="debug" style="float: right; width: 10em; border: 1px #ff0000 solid; background-color: #ffe0e0; -moz-opacity: 0.7;">
612    no debug output yet
613    </div>
614  EOF3  EOF3
615          $retHTML .= q{          $retHTML .= q{
                 <form name="forma" method="GET" action=};  
                 $retHTML .= "\"".$MyURL."\"";  
                 $retHTML .= q{?action=burn>  
616                          <input type="hidden" value="burn" name="action">                          <input type="hidden" value="burn" name="action">
617                          <input type="hidden" value="results" name="search_results">                          <input type="hidden" value="results" name="search_results">
618                          <table style="fview" border="0" cellspacing="0" cellpadding="2">                          <table style="fview" border="0" cellspacing="0" cellpadding="2">
619                          <tr class="tableheader">                          <tr class="tableheader">
620                          <td class="tableheader">                          <td class="tableheader">
621                                  <input type="checkbox" name="allFiles" onClick="checkAll('allFiles');">                                  <input type="checkbox" name="allFiles" id="allFiles" onClick="checkAll('allFiles');">
622                          </td>                          </td>
623                          <td align="center">Share</td>                          <td align="center">Share</td>
624                          <td align="center">Backup no</td>                          <td align="center">Backup no</td>
# Line 405  EOF3 Line 629  EOF3
629                          <td align="center">gzip size</td>                          <td align="center">gzip size</td>
630                          </tr>                          </tr>
631    
                         <tr><td colspan=7 style="tableheader">  
                         <input type="submit" value="Burn selected backups on medium" name="submitBurner">  
                         </td></tr>  
632          };          };
633    
634          my @color = (' bgcolor="#e0e0e0"', '');          my @color = (' bgcolor="#e0e0e0"', '');
# Line 422  EOF3 Line 643  EOF3
643                          $host = $backup->{'host'};                          $host = $backup->{'host'};
644                  }                  }
645                  my $ftype = "";                  my $ftype = "";
646                
                 $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>';  
               
647                  $retHTML .=                  $retHTML .=
648                            '<tr' . $color[$i %2 ] . '>
649                            <td class="fview">';
650                    # FIXME
651                    $backup->{'fs_size'} = int($backup->{'size'} * 1024);
652                    if (($backup->{'fs_size'} || 0) > 0) {
653                            $retHTML .= '
654                            <input type="checkbox" name="fcb' .
655                            $backup->{'hostid'}.'_'.$backup->{'backupnum'} .
656                            '" value="' . $backup->{'hostid'}.'_'.$backup->{'backupnum'} .
657                            '" onClick="sumiraj(this);">';
658                    }
659                    $retHTML .=
660                            '</td>' .
661                          '<td align="right">' . $backup->{'host'} . ':' . $backup->{'share'} . '</td>' .                          '<td align="right">' . $backup->{'host'} . ':' . $backup->{'share'} . '</td>' .
662                          '<td align="center">' . $backup->{'backupnum'} . '</td>' .                          '<td align="center">' . $backup->{'backupnum'} . '</td>' .
663                          '<td align="center">' . $backup->{'type'} . '</td>' .                          '<td align="center">' . $backup->{'type'} . '</td>' .
# Line 437  EOF3 Line 665  EOF3
665                          '<td align="center">' . $backup->{'age'} . '</td>' .                          '<td align="center">' . $backup->{'age'} . '</td>' .
666                          '<td align="right">' . $backup->{'size'} . '</td>' .                          '<td align="right">' . $backup->{'size'} . '</td>' .
667                          '<td align="right">' . $backup->{'fs_size'} .                          '<td align="right">' . $backup->{'fs_size'} .
668                          '<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";  
   
669    
670                            "</tr>\n";
671          }          }
672    
673          $retHTML .= "</table>";          $retHTML .= "</table>";
         $retHTML .= "total gzip size:<input type=\"text\" name=\"totalsize\"><br>";  
         $retHTML .= "Note:<input type=\"text\" name=\"note\">";  
674          $retHTML .= "</form>";          $retHTML .= "</form>";
675                
676          return $retHTML;          return $retHTML;

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

  ViewVC Help
Powered by ViewVC 1.1.26