1 package Webmin::DynamicBar;
4 =head2 new Webmin::DynamicBar(&start-function, max)
5 A page element for displaying progress towards some goal, like the download of
10 my ($self, $func, $max) = @_;
11 $self = { 'func' => $func,
12 'name' => "dynamic".++$dynamic_count,
19 =head2 set_message(text)
20 Sets the text describing what we are waiting for
24 my ($self, $message) = @_;
25 $self->{'message'} = $message;
31 return $self->{'message'};
35 Returns the HTML for the text field
41 if ($self->get_message()) {
42 $rv .= $self->get_message()."<p>\n";
44 $rv .= "<form name=form_$self->{'name'}>";
45 $rv .= "<input name=bar_$self->{'name'} size=$self->{'width'} disabled=true style='font-family: courier'>";
47 $rv .= "<input name=pc_$self->{'name'} size=3 disabled=true style='font-family: courier'>%";
53 Called by the page to begin the progress
58 &{$self->{'func'}}($self);
62 Called by the function to update the position of the bar.
66 my ($self, $pos) = @_;
67 my $pc = int(100*$pos/$self->{'max'});
68 if ($pc != $self->{'lastpc'}) {
69 my $xn = int($self->{'width'}*$pos/$self->{'max'});
71 print "<script>window.document.forms[\"form_$self->{'name'}\"].pc_$self->{'name'}.value = \"$pc\";</script>\n";
72 print "<script>window.document.forms[\"form_$self->{'name'}\"].bar_$self->{'name'}.value = \"$xes\";</script>\n";
73 $self->{'lastpc'} = $pc;
78 If called with a non-zero arg, generation of the page should wait until this
79 the progress is complete. Otherwise, the page will be generated completely before
80 the start function is called
84 my ($self, $wait) = @_;
85 $self->{'wait'} = $wait;
91 return $self->{'wait'};
94 =head2 set_page(Webmin::Page)
95 Called when this dynamic text box is added to a page
99 my ($self, $page) = @_;
100 $self->{'page'} = $page;
105 my ($self, $width) = @_;
106 $self->{'width'} = $width;
109 =head2 needs_unbuffered()
110 Must return 1 if the page needs to be in un-buffered and no-table mode