/[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 126 by dpavlin, Wed Sep 21 11:18:29 2005 UTC revision 140 by ravilov, Fri Oct 7 07:59:28 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 343  sub getBackupsNotBurned() { Line 343  sub getBackupsNotBurned() {
343  sub displayBackupsGrid() {  sub displayBackupsGrid() {
344    
345          my $retHTML .= q{          my $retHTML .= q{
346                  <form id="forma" method="POST" action=};                  <form id="forma" method="POST" action="}.$MyURL.q{?action=burn">
                 $retHTML .= "\"".$MyURL."\"";  
                 $retHTML .= q{?action=burn>  
347          };          };
348    
349          $retHTML .= <<EOF3;          $retHTML .= <<'EOF3';
350  <script language="javascript" type="text/javascript">  <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;  var debug_div = null;
456    var media_size = 4400 * 1024;
457    
458  function debug(msg) {  function debug(msg) {
459  //      return; // Disable debugging  //      return; // Disable debugging
# Line 384  function element_id(name,element) { Line 485  function element_id(name,element) {
485  function checkAll(location) {  function checkAll(location) {
486          var len = element_id('forma').elements.length;          var len = element_id('forma').elements.length;
487          var check_all = element_id('allFiles');          var check_all = element_id('allFiles');
488            var suma = 0;
489    
490          for (var i = 0; i < len; i++) {          for (var i = 0; i < len; i++) {
491    
492                  var e = element_id('forma').elements[i];                  var e = element_id('forma').elements[i];
493                  if ((e.checked || !e.checked) && e.name != \'all\') {                  if (e.name != 'all' && e.name.substr(0,3) == 'fcb') {
494                          if (check_all.checked) {                          if (check_all.checked) {
495                                  e.checked = true;                                  var el = element_id("fss" + e.name.substr(3));
496                                    var size = parseInt(el.value) || 0;
497                                    debug('suma: '+suma+' size: '+size);
498                                    if ((suma + size) < media_size) {
499                                            suma += size;
500                                            e.checked = true;
501                                    } else {
502                                            break;
503                                    }
504                          } else {                          } else {
505                                  e.checked = false;                                  e.checked = false;
506                          }                          }
507                  }                  }
508          }          }
509            update_sum(suma);
510    }
511    
512          sumiraj();  function update_sum(suma) {
513            element_id('forma').totalsize.value = suma;
514            pbar_set(suma, media_size);
515            debug('total size: '+suma);
516  }  }
517        
518  function sumiraj(e) {  function sumiraj(e) {
519          var suma = parseInt(element_id('forma').totalsize.value) || 0;          var suma = parseInt(element_id('forma').totalsize.value) || 0;
520          var len = element_id('forma').elements.length;          var len = element_id('forma').elements.length;
521          if (e) {          if (e) {
522                  var size = parseInt( element_id("fss" + e.name.substr(3)).value );                  var size = parseInt( element_id("fss" + e.name.substr(3)).value);
523                  if (e.checked) {                  if (e.checked) {
524                          suma += size;                          suma += size;
525                  } else {                  } else {
# Line 414  function sumiraj(e) { Line 529  function sumiraj(e) {
529                  suma = 0;                  suma = 0;
530                  for (var i = 0; i < len; i++) {                  for (var i = 0; i < len; i++) {
531                          var e = element_id('forma').elements[i];                          var e = element_id('forma').elements[i];
532                          if (e.name != \'all\' && e.checked && e.name.substr(0,3) == 'fcb') {                          if (e.name != 'all' && e.checked && e.name.substr(0,3) == 'fcb') {
533                                  var el = element_id("fss" + e.name.substr(3));                                  var el = element_id("fss" + e.name.substr(3));
534                                  if (el && el.value) suma += parseInt(el.value) || 0;                                  if (el && el.value) suma += parseInt(el.value) || 0;
535                          }                          }
536                  }                  }
537          }          }
538          element_id('forma').totalsize.value = suma;          update_sum(suma);
         debug('total size: '+suma);  
539          return suma;          return suma;
540  }  }
541    
542    /* progress bar */
543    
544    var _pbar_width = null;
545    var _pbar_warn = 10;    // change color in last 10%
546    
547    function pbar_reset() {
548            element_id("mask").style.left = "0px";
549            _pbar_width = element_id("mContainer").offsetWidth - 2;
550            element_id("mask").style.width = _pbar_width + "px";
551            element_id("mask").style.display = "block";
552            element_id("progressIndicator").style.zIndex  = 10;
553            element_id("progressIndicator").innerHTML = "0";
554    }
555    
556    function dec2hex(d) {
557            var hch = '0123456789ABCDEF';
558            var a = d % 16;
559            var q = (d - a) / 16;
560            return hch.charAt(q) + hch.charAt(a);
561    }
562    
563    function pbar_set(amount, max) {
564            debug('pbar_set('+amount+', '+max+')');
565    
566            if (_pbar_width == null) {
567                    var _mc = element_id("mContainer");
568                    if (_pbar_width == null) _pbar_width = parseInt(_mc.offsetWidth ? (_mc.offsetWidth - 2) : 0) || null;
569                    if (_pbar_width == null) _pbar_width = parseInt(_mc.clientWidth ? (_mc.clientWidth + 2) : 0) || null;
570                    if (_pbar_width == null) _pbar_width = 0;
571            }
572    
573            var pcnt = Math.floor(amount * 100 / max);
574            var p90 = 100 - _pbar_warn;
575            var pcol = pcnt - p90;
576            if (Math.round(pcnt) <= 100) {
577                    if (pcol < 0) pcol = 0;
578                    var e = element_id("submitBurner");
579                    debug('enable_button');
580                    e.disabled = false;
581                    var a = e.getAttributeNode('disabled') || null;
582                    if (a) e.removeAttributeNode(a);
583            } else {
584                    debug('disable button');
585                    pcol = _pbar_warn;
586                    var e = element_id("submitBurner");
587                    if (!e.disabled) e.disabled = true;
588            }
589            var col_g = Math.floor((_pbar_warn - pcol) * 255 / _pbar_warn);
590            var col = '#FF' + dec2hex(col_g) + '00';
591    
592            //debug('pcol: '+pcol+' g:'+col_g+' _pbar_warn:'+ _pbar_warn + ' color: '+col);
593            element_id("gradient").style.backgroundColor = col;
594    
595            element_id("progressIndicator").innerHTML = pcnt + '%';
596            //element_id("progressIndicator").innerHTML = amount;
597    
598            element_id("mask").style.clip = 'rect(' + Array(
599                    '0px',
600                    element_id("mask").offsetWidth + 'px',
601                    element_id("mask").offsetHeight + 'px',
602                    Math.round(_pbar_width * amount / max) + 'px'
603            ).join(' ') + ')';
604    }
605    
606  if (!self.body) self.body = new Object();  if (!self.body) self.body = new Object();
607  self.onload = self.document.onload = self.body.onload = function() {  self.onload = self.document.onload = self.body.onload = function() {
608            //pbar_reset();
609          sumiraj();          sumiraj();
610  }  };
611    
612  //-->  // -->
613  </script>  </script>
614  <div id="debug" style="position: absolute; top: 0; right: 0; width: 10em; border: 1px #ff0000 solid; background-color: #ffe0e0; -moz-opacity: 0.7;">  <div id="fixedBox">
615  Total size:  
616  <input type="text" name="totalsize" size="8">  Size: <input type="text" name="totalsize" size="7" readonly="readonly" style="text-align:right;" value="0" /> kB
617    
618    <div id="mContainer">
619            <div id="gradient">&nbsp;</div>
620            <div id="mask">&nbsp;</div>
621            <div id="progressIndicator">0%</div>
622    </div>
623  <br/>  <br/>
624    
625  Note:  Note:
626  <textarea name="note" cols="10" rows="5">  <textarea name="note" cols="10" rows="5" id="note"></textarea>
627  </textarea>  
628  <br/>  <input type="submit" id="submitBurner" value="Burn selected" name="submitBurner" />
629  <input type="submit" value="Burn selected backups" name="submitBurner">  
630    </div>
631    <!--
632    <div id="debug" style="float: right; width: 10em; border: 1px #ff0000 solid; background-color: #ffe0e0; -moz-opacity: 0.7;">
633    no debug output yet
634  </div>  </div>
635    -->
636  EOF3  EOF3
637          $retHTML .= q{          $retHTML .= q{
638                          <input type="hidden" value="burn" name="action">                          <input type="hidden" value="burn" name="action">
# Line 479  EOF3 Line 670  EOF3
670                          '<tr' . $color[$i %2 ] . '>                          '<tr' . $color[$i %2 ] . '>
671                          <td class="fview">';                          <td class="fview">';
672                  # FIXME                  # FIXME
673                  #$backup->{'fs_size'} = int($backup->{'size'} * 1024);                  $backup->{'fs_size'} = int($backup->{'size'} * 1024);
674                  if (($backup->{'fs_size'} || 0) > 0) {                  if (($backup->{'fs_size'} || 0) > 0) {
675                          $retHTML .= '                          $retHTML .= '
676                          <input type="checkbox" name="fcb' .                          <input type="checkbox" name="fcb' .

Legend:
Removed from v.126  
changed lines
  Added in v.140

  ViewVC Help
Powered by ViewVC 1.1.26