Changeset 23137

Show
Ignore:
Timestamp:
14.10.2010 23:30:24 (9 years ago)
Author:
davidb
Message:

Preparation work to support monitoring of multiple files

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/cgi-bin/talkback-progressbar.pl

    r23089 r23137  
    3737     
    3838    my $per = 0;  
    39     if($ENV{CONTENT_LENGTH} >  0){  
     39    if ($ENV{CONTENT_LENGTH} > 0) {  
    4040        $per = int(($bytes_read * 100) / $ENV{CONTENT_LENGTH}); 
    4141    } 
     
    4545    # Useful debug to slow down a 'fast' upload 
    4646    # Sleep for 10 msecs 
    47     #select(undef, undef, undef, 0.01); 
     47    select(undef, undef, undef, 0.01); 
    4848} 
    4949 
     
    160160#===== 
    161161 
    162 # accessed from HTML web page through perlAjax  
    163  
    164 sub check_status {  
    165     
    166     my $filename = $gsdl_cgi->param('uploadedfile'); 
    167     $filename =~ s{^(.*)\/}{};  
    168  
     162 
     163 
     164sub inc_wait_dots 
     165{ 
    169166    my $wait_filename = &util::filename_cat($gsdl_tmp_dir,"wait.txt"); 
    170167    open(WIN,"<$wait_filename"); 
     
    179176    close(WOUT); 
    180177 
    181     my $monitor_filename = "$gsdl_tmp_dir/$filename-progress.txt"; 
     178    return $wait_dots; 
     179} 
     180 
     181sub check_status_single_file 
     182{ 
     183    my ($filename) = @_; 
     184    $filename =~ s{^(.*)\/}{};  
     185 
     186    my $monitor_filename = &util::filename_cat($gsdl_tmp_dir, 
     187                           "$filename-progress.txt"); 
    182188 
    183189    if (! -f  $monitor_filename ) { 
    184  
    185     return $wait_dots; 
    186     } 
    187          
    188          
     190    return ""; 
     191    } 
     192                 
    189193    open my $PROGRESS, '<', $monitor_filename or die $!; 
    190194    my $s = do { local $/; <$PROGRESS> }; 
    191195    close ($PROGRESS);  
    192196     
    193     my $small = 300 - ($s * 3);  
    194     my $big = $s * 3;  
    195     
    196     my $r = "$wait_dots "; 
    197     $r .= '<div style="width:' . $big . 'px;height:10px;background-color:#dddd00;float:left"></div>';  
    198     $r .= '<div style="width:' . $small . 'px;height:10px;background-color:#008000;float:left"></div>'; 
    199     $r .= '<div style="float:left;width: 80px">&nbsp;' . $s . '%</div>';  
     197    my $fgwidth = int($s * 1.5);  
     198    my $bgwidth = 150 - $fgwidth; 
     199   
     200    my $fgcol = "background-color:#dddd00;"; 
     201    my $bgcol = "background-color:#008000;"; 
     202 
     203    my $style_base = "height:10px; float:left;"; 
     204 
     205    my $r = ""; 
     206    $r .= "<div style=\"float:left;\">$filename:</div>"; 
     207    $r .= "<div style=\"width: ${fgwidth}px; $fgcol $style_base\"></div>";  
     208    $r .= "<div style=\"width: ${bgwidth}px; $bgcol $style_base\"></div>"; 
     209    $r .= "<div style=\"float:left; width: 80px\">&nbsp;$s%</div>";  
     210    $r .= "<br>"; 
    200211 
    201212    return $r;  
    202      
    203 } 
    204  
    205  
    206  
     213} 
     214 
     215 
     216sub check_status_all 
     217{ 
     218    my $file_central = &util::filename_cat($gsdl_tmp_dir,"file-central.txt"); 
     219 
     220    my $html = ""; 
     221 
     222    if (open my $FC, '<', $file_central) { 
     223    # Read entire file in all at once 
     224    my $file_list_str = do { local $/; <$FC> }; 
     225    my @file_list = split(/\n/,$file_list_str); 
     226 
     227    foreach my $f (@file_list) { 
     228        $html .= check_status_single_file($f); 
     229    } 
     230 
     231    close ($FC);  
     232    } 
     233    else { 
     234    # error 
     235    $html = "Failed to open $file_central: $!\n"; 
     236    } 
     237 
     238    return $html; 
     239 
     240} 
    207241 
    208242  
     243# Accessed from HTML web page through the majic of perlAjax  
     244 
     245sub check_status  
     246{     
     247 
     248    my $wait_dots = inc_wait_dots(); 
     249    my $html = "$wait_dots<br>"; 
     250 
     251    my $filename = $gsdl_cgi->param('uploadedfile'); 
     252    if (defined $filename) { 
     253    $html .= check_status_single_file($filename); 
     254    } 
     255    else { 
     256    $html .= check_status_all(); 
     257    } 
     258 
     259    return $html; 
     260}