Make page wait until something happens on the server

A

Aaron Fude

Hi,

I have report that takes about 5-10 seconds to generate depending on the
load. I want to show the user a progress bar while it is being generated and
when it's done, forward the browser to the report.

Any suggestions?

Thank you!

Aaron
 
H

Hywel

Hi,

I have report that takes about 5-10 seconds to generate depending on the
load. I want to show the user a progress bar while it is being generated and
when it's done, forward the browser to the report.

Any suggestions?

Don't bother. You'll need to get some information about the report
generation process to the client, which will probably involve refreshing
the entire page.

You could fudge it by just using an animated GIF, or use an animation
that doesn't indicate how far through the process the report is but does
give back some visual "feedback".
 
R

Robert

Aaron Fude said:
Hi,

I have report that takes about 5-10 seconds to generate depending on the
load. I want to show the user a progress bar while it is being generated and
when it's done, forward the browser to the report.

Any suggestions?

Thank you!

Aaron

I do not know how workable this idea is, but here it goes anyway.


The idea would be to have the report generate a graphic as it goes
along then have the client javascript download the graphic ever so
often.

You would need to use a unique file name for each instance of the
server program. You would have to figure out someway of telling the
client what the name was. You would have to be sure your were not
reading cached copy of the graphic. One way of doing this I think, is
to append ?date & time to the name of the graphic file. You would have
to figure out some way of deleting the graphics on the host.

Maybe a note that the process will take ten to fiften seconds is
enough. This isn't too long.

Robert
 
G

Grant Wagner

Aaron said:
Hi,

I have report that takes about 5-10 seconds to generate depending on the
load. I want to show the user a progress bar while it is being generated and
when it's done, forward the browser to the report.

Any suggestions?

Thank you!

Aaron

One of the ways of handling this is to open a window when the form is submitted,
and close it once the report is completely loaded. It relies client-side
JavaScript being enabled (of course) and on the browser's ability to respond
appropriately to window.open() which many browsers will not do due to popup
blockers.

-- on the page used to initate generation of the report:

<input type="submit" value="Generate Report" onclick="openStatusWindow();">
<script type="text/javascript">
function openStatusWindow() {
if (window.open) {
var throwAway = window.open(
'status.html',
'statusWindow',
'width=400,height=200'
);
}
}
</script>

-- status.html:

<html>
<head>
<title>Generating report... please wait</title>
<script type="text/javascript">
function holdFocus() {
var t = setTimeout(holdFocus, 1000);
window.focus();
holdFocus.toString = function() {
return 'holdFocus();';
}
}
</script>
</head>
<body onload="holdFocus();">
<p align="center">Generating report... please wait</p>
</body>
</html>

-- on the page containing the resulting report:

<body onload="closeStatusWindow();">
<script type="text/javascript">
function closeStatusWindow() {
if (window.open) {
var w = window.open(
'about:blank',
'statusWindow',
'width=400,height=200'
);
if (w && !w.closed) {
w.close();
}
}
}
</script>

It's necessary to call window.open() again on the window named "statusWindow".
If you do not, you will not have a reference (handle) to it, and will not be
able to close it. I tested it in IE6SP1, Netscape 4.78, Firefox 0.9.2 and Opera
7.53 and it allowed me to open and close the window without holding a reference
to it.
 
T

Thomas 'PointedEars' Lahn

Aaron said:
I have report that takes about 5-10 seconds to generate depending on the
load. I want to show the user a progress bar while it is being generated
and when it's done, forward the browser to the report.

Any suggestions?

Isn't that already done with the standard HTML form? The progress bar
will be that of the browser, if it has one (or a similar feature).

Or you use multi-document reponses like Bugzilla does.


PointedEars
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,680
Members
48,796
Latest member
Greg L.

Latest Threads

Top