[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm lonhtmlcommon.pm
raeburn
raeburn at source.lon-capa.org
Thu Nov 16 08:31:29 EST 2017
raeburn Thu Nov 16 13:31:29 2017 EDT
Modified files:
/loncom/interface lonhtmlcommon.pm loncommon.pm
Log:
- jquery-ui progressbar -- use indeterminate progressbar display if the
maximum number of items to do is omitted from the call to Create_PrgWin().
- an optional HTML preamble can be included in the cal to Create_PrgWin()
to display before the progressbar.
Index: loncom/interface/lonhtmlcommon.pm
diff -u loncom/interface/lonhtmlcommon.pm:1.389 loncom/interface/lonhtmlcommon.pm:1.390
--- loncom/interface/lonhtmlcommon.pm:1.389 Mon Nov 6 03:08:40 2017
+++ loncom/interface/lonhtmlcommon.pm Thu Nov 16 13:31:29 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.389 2017/11/06 03:08:40 raeburn Exp $
+# $Id: lonhtmlcommon.pm,v 1.390 2017/11/16 13:31:29 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1025,11 +1025,15 @@
=item $number_to_do The total number of items being processed.
+=item $preamble Optional HTML to display before the progress bar.
+
=back
=back
Returns a hash containing the progress state data structure.
+If $number_to_do is zero or null, an indeterminate progress bar will
+be used.
=item &Update_PrgWin()
@@ -1118,20 +1122,20 @@
# Create progress
sub Create_PrgWin {
- my ($r,$number_to_do)=@_;
+ my ($r,$number_to_do,$preamble)=@_;
my %prog_state;
$prog_state{'done'}=0;
$prog_state{'firststart'}=&Time::HiRes::time();
$prog_state{'laststart'}=&Time::HiRes::time();
$prog_state{'max'}=$number_to_do;
- &Apache::loncommon::LCprogressbar($r);
+ &Apache::loncommon::LCprogressbar($r,$prog_state{'max'},$preamble);
return %prog_state;
}
# update progress
sub Update_PrgWin {
my ($r,$prog_state,$displayString)=@_;
- &Apache::loncommon::LCprogressbarUpdate($r,undef,$displayString);
+ &Apache::loncommon::LCprogressbarUpdate($r,undef,$displayString,$$prog_state{'max'});
$$prog_state{'laststart'}=&Time::HiRes::time();
}
@@ -1181,7 +1185,7 @@
if ($$prog_state{'max'}) {
$percent=int(100.*$current/$$prog_state{'max'});
}
- &Apache::loncommon::LCprogressbarUpdate($r,$percent,$timeinfo);
+ &Apache::loncommon::LCprogressbarUpdate($r,$percent,$timeinfo,$$prog_state{'max'});
$$prog_state{'laststart'}=&Time::HiRes::time();
}
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.1301 loncom/interface/loncommon.pm:1.1302
--- loncom/interface/loncommon.pm:1.1301 Sun Nov 12 13:15:25 2017
+++ loncom/interface/loncommon.pm Thu Nov 16 13:31:29 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.1301 2017/11/12 13:15:25 raeburn Exp $
+# $Id: loncommon.pm,v 1.1302 2017/11/16 13:31:29 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -8893,8 +8893,9 @@
}
sub LCprogressbar_script {
- my ($id)=@_;
- return(<<ENDPROGRESS);
+ my ($id,$number_to_do)=@_;
+ if ($number_to_do) {
+ return(<<ENDPROGRESS);
<script type="text/javascript">
// <![CDATA[
\$('#progressbar$id').progressbar({
@@ -8907,21 +8908,39 @@
// ]]>
</script>
ENDPROGRESS
+ } else {
+ return(<<ENDPROGRESS);
+<script type="text/javascript">
+// <![CDATA[
+\$('#progressbar$id').progressbar({
+ value: false,
+ create: function(event, ui) {
+ \$('.ui-widget-header', this).css({'background':'#F0F0F0'});
+ \$('.ui-progressbar-overlay', this).css({'margin':'0'});
+ }
+});
+// ]]>
+</script>
+ENDPROGRESS
+ }
}
sub LCprogressbarUpdate_script {
return(<<ENDPROGRESSUPDATE);
<style type="text/css">
.ui-progressbar { position:relative; }
+.progress-label {position: absolute; width: 100%; text-align: center; top: 1px; font-weight: bold; text-shadow: 1px 1px 0 #fff;margin: 0; line-height: 200%; }
.pblabel { position: absolute; width: 100%; text-align: center; line-height: 1.9em; }
</style>
<script type="text/javascript">
// <![CDATA[
var LCprogressTxt='---';
-function LCupdateProgress(percent,progresstext,id) {
+function LCupdateProgress(percent,progresstext,id,maxnum) {
LCprogressTxt=progresstext;
- if (percent === \$('#progressbar'+id).progressbar( "value" )) {
+ if ((maxnum == '') || (maxnum == undefined) || (maxnum == null)) {
+ \$('#progressbar'+id).find('.progress-label').text(LCprogressTxt);
+ } else if (percent === \$('#progressbar'+id).progressbar( "value" )) {
\$('#progressbar'+id).find('.pblabel').text(LCprogressTxt);
} else {
\$('#progressbar'+id).progressbar('value',percent);
@@ -8937,37 +8956,54 @@
my $LCcurrentid;
sub LCprogressbar {
- my ($r)=(@_);
+ my ($r,$number_to_do,$preamble)=@_;
$LClastpercent=0;
$LCidcnt++;
$LCcurrentid=$$.'_'.$LCidcnt;
- my $starting=&mt('Starting');
- my $content=(<<ENDPROGBAR);
+ my ($starting,$content);
+ if ($number_to_do) {
+ $starting=&mt('Starting');
+ $content=(<<ENDPROGBAR);
+$preamble
<div id="progressbar$LCcurrentid">
<span class="pblabel">$starting</span>
</div>
ENDPROGBAR
- &r_print($r,$content.&LCprogressbar_script($LCcurrentid));
+ } else {
+ $starting=&mt('Loading...');
+ $LClastpercent='false';
+ $content=(<<ENDPROGBAR);
+$preamble
+ <div id="progressbar$LCcurrentid">
+ <div class="progress-label">$starting</div>
+ </div>
+ENDPROGBAR
+ }
+ &r_print($r,$content.&LCprogressbar_script($LCcurrentid,$number_to_do));
}
sub LCprogressbarUpdate {
- my ($r,$val,$text)=@_;
- unless ($val) {
- if ($LClastpercent) {
- $val=$LClastpercent;
- } else {
- $val=0;
- }
+ my ($r,$val,$text,$number_to_do)=@_;
+ if ($number_to_do) {
+ unless ($val) {
+ if ($LClastpercent) {
+ $val=$LClastpercent;
+ } else {
+ $val=0;
+ }
+ }
+ if ($val<0) { $val=0; }
+ if ($val>100) { $val=0; }
+ $LClastpercent=$val;
+ unless ($text) { $text=$val.'%'; }
+ } else {
+ $val = 'false';
}
- if ($val<0) { $val=0; }
- if ($val>100) { $val=0; }
- $LClastpercent=$val;
- unless ($text) { $text=$val.'%'; }
$text=&js_ready($text);
&r_print($r,<<ENDUPDATE);
<script type="text/javascript">
// <![CDATA[
-LCupdateProgress($val,'$text','$LCcurrentid');
+LCupdateProgress($val,'$text','$LCcurrentid','$number_to_do');
// ]]>
</script>
ENDUPDATE
More information about the LON-CAPA-cvs
mailing list