link-checker commit: Add "progress bar" for estimating progress on checking links in one document.

changeset:   323:d574b99cc78a
user:        ville
date:        Thu Oct 01 16:06:00 2009 +0000
files:       bin/checklink docs/linkchecker.css
description:
Add "progress bar" for estimating progress on checking links in one document.


diff -r 3cb4c9024ad5 -r d574b99cc78a bin/checklink
--- a/bin/checklink	Thu Oct 01 16:01:29 2009 +0000
+++ b/bin/checklink	Thu Oct 01 16:06:00 2009 +0000
@@ -5,7 +5,7 @@
 # (c) 1999-2009 World Wide Web Consortium
 # based on Renaud Bruyeron's checklink.pl
 #
-# $Id: checklink,v 4.165 2009-10-01 16:01:29 ville Exp $
+# $Id: checklink,v 4.166 2009-10-01 16:06:00 ville Exp $
 #
 # This program is licensed under the W3C(r) Software License:
 #       http://www.w3.org/Consortium/Legal/copyright-software
@@ -275,7 +275,7 @@
   $PROGRAM     = 'W3C-checklink';
   $VERSION     = '4.5';
   $REVISION    = sprintf('version %s (c) 1999-2009 W3C', $VERSION);
-  my ($cvsver) = q$Revision: 4.165 $ =~ /(\d+[\d\.]*\.\d+)/;
+  my ($cvsver) = q$Revision: 4.166 $ =~ /(\d+[\d\.]*\.\d+)/;
   $AGENT       = sprintf('%s/%s [%s] %s',
                          $PROGRAM, $VERSION, $cvsver,
                          (W3C::UserAgent::USE_ROBOT_UA
@@ -343,20 +343,22 @@
 <meta name="generator" content="%s" />
 <link rel="stylesheet" type="text/css" href="%s" />
 <script type="text/javascript">
-function scroll_bottom(progress_pre_id)
+function show_progress(progress_id, progress_text, progress_percentage)
 {
-  var progressPre = document.getElementById(progress_pre_id);
-  progressPre.scrollTop = progressPre.scrollHeight;
-}
-function show_progress(progress_text, progress_head_id, progress_pre_id)
-{
-  var progressHead = document.getElementById(progress_head_id);
-  var txt = document.createTextNode(progress_text);
-  var oChild = progressHead.childNodes[1];
-  var oNewChild = document.createElement("span");
-  oNewChild.appendChild(txt);
-  progressHead.replaceChild(oNewChild, oChild);
-  scroll_bottom(progress_pre_id);
+    var div = document.getElementById("progress" + progress_id);
+
+    var head = div.getElementsByTagName("h3")[0];
+    var text = document.createTextNode(progress_text);
+    var span = document.createElement("span");
+    span.appendChild(text);
+    head.replaceChild(span, head.getElementsByTagName("span")[0]);
+
+    var bar = div.getElementsByTagName("div")[0];
+    bar.firstChild.style.width = progress_percentage;
+    bar.title = progress_percentage;
+
+    var pre = div.getElementsByTagName("pre")[0];
+    pre.scrollTop = pre.scrollHeight;
 }
 </script>
 EOF
@@ -994,8 +996,12 @@
              &encode(sprintf($Cfg{CSS_Validator_URI}, $esc_uri)),
              &encode($Opts{_Self_URI}));
 
-      printf ('<h3 class="status_progress" id="status_progress%s">Status: <span></span></h3>', $result_anchor);
-      printf("<pre class=\"progress\" id=\"pre_progress%s\">\n", $result_anchor);
+      printf(<<EOF, $result_anchor);
+<div class="progress" id="progress%s">
+<h3>Status: <span></span></h3>
+<div class="progressbar"><div></div></div>
+<pre>
+EOF
     }
   }
 
@@ -1069,9 +1075,14 @@
   }
 
   # Build the list of broken URI's
-  &hprintf("Checking %d links to build list of broken URI's\n", scalar (keys %links))
+
+  my $nlinks = scalar(keys(%links));
+
+  &hprintf("Checking %d links to build list of broken URI's\n", $nlinks)
     if ($Opts{Verbose});
+
   my %broken;
+  my $link_num = 0;
   while (my ($u, $ulinks) = each(%links)) {
 
     if ($Opts{Summary_Only}) {
@@ -1079,9 +1090,11 @@
       print ' ' if ($Opts{HTML} && !$Opts{Command_Line});
     } else {
       &hprintf("\nChecking link %s\n", $u);
-      printf('<script type="text/javascript">show_progress("Checking link %s", "status_progress%s", "pre_progress%s");</script>' , &encode($u), $result_anchor, $result_anchor)
+      my $progress = ($link_num/$nlinks) * 100;
+      printf('<script type="text/javascript">show_progress("%s", "Checking link %s", "%.1f%%");</script>', $result_anchor, &encode($u), $progress)
         if (!$Opts{Command_Line} && $Opts{HTML} && !$Opts{Summary_Only});
     }
+    $link_num++;
 
     # Check that a link is valid
     &check_validity($uri, $u,
@@ -1122,12 +1135,12 @@
   }
   &hprintf("\nProcessed in %s seconds.\n", &time_diff($start, &get_timestamp()))
    unless $Opts{Summary_Only};
-   printf('<script type="text/javascript">show_progress("Done. Document processed in %s seconds.", "status_progress%s", "pre_progress%s");</script>' , &time_diff($start, &get_timestamp()), $result_anchor, $result_anchor)
+   printf('<script type="text/javascript">show_progress("%s", "Done. Document processed in %s seconds.", "100%");</script>', $result_anchor, &time_diff($start, &get_timestamp()))
    if ($Opts{HTML} && !$Opts{Summary_Only});
 
   # Display results
   if ($Opts{HTML} && !$Opts{Summary_Only}) {
-    print("</pre>\n");
+    print("</pre>\n</div>\n");
     printf("<h2><a name=\"%s\">Results</a></h2>\n", $result_anchor);
   }
   print "\n" unless $Opts{Quiet};
diff -r 3cb4c9024ad5 -r d574b99cc78a docs/linkchecker.css
--- a/docs/linkchecker.css	Thu Oct 01 16:01:29 2009 +0000
+++ b/docs/linkchecker.css	Thu Oct 01 16:06:00 2009 +0000
@@ -4,7 +4,7 @@
    Copyright 2000-2009 W3C (MIT, INRIA, Keio). All Rights Reserved.
    See http://www.w3.org/Consortium/Legal/ipr-notice.html#Copyright
 
-   $Id: linkchecker.css,v 1.29 2009-02-10 18:10:29 ville Exp $
+   $Id: linkchecker.css,v 1.30 2009-10-01 16:06:00 ville Exp $
 */
 
 html, body {
@@ -56,7 +56,7 @@
   white-space: pre;
 }
 
-pre.progress {
+div.progress pre {
   height: 12em;
   font-size: small;
   overflow: auto;
@@ -65,7 +65,7 @@
 	margin-top: 0;
 }
 
-h3.status_progress {
+div.progress h3 {
   margin-bottom: 0;
   background: white;
 	border: 1px solid #DCDDE0;
@@ -73,6 +73,17 @@
 	padding: .4em .8em;
 	text-indent: 0;
 	overflow: hidden;
+}
+
+div.progressbar {
+    border: 1px solid #DCDDE0;
+    border-bottom: 0;
+}
+
+div.progressbar div {
+    height: .15em;
+    width: 0;
+    background-color: #55B05A;
 }
 
 fieldset {

Received on Thursday, 5 August 2010 14:47:46 UTC