Date:  02/18/2013 11:04:07 PM Msg ID:  004570
From:  Joe Goldsmiith Thread:  004569
Subject:  Re: Progress Bar Conundrum (UPDATE)
I ran the ProgressBarDemo.fwx and got output but had the same problem as my application noted in the beginning of this thread. Specifically, the progress bar only shows up completed after the script has finished. It works when loading this forum so there much be a technique.
Any thoughts from anyone?
Sent by Joe Goldsmiith on 02/17/2013 10:17:15 PM:
 I incorporated the FoxWeb progress bar into a slow running script that fetches FedEx XML rates. The script runs slowly because FedEx requires a separate call for each service. So far I have 7 services requiring a call each. All the programming is on one page (fedex.fwx) with a form on top with action="fedex.fwx" to re-call the page. Once the script gets to Request.FormCount lower down the page, the progress bar code needs to run but it doesn't until the script reaches the bottom of the page. Needless to say, this is not the intended behavior.
What I need to know is how to have code below FormCount execute and show to screen while the loop for each service runs. I understand that how it would work for whole page loading but wish to start and stop it below Request.FormCount and within a loop. Here is some sample code for consideration.
*** Script File FedEx.fwx
<html xmlns="" lang="en" xml:lang="en">
import progress.css
import progress.js
<FORM METHOD="post" ACTION="FedEx.fwx" name="FedExRateFetch">
     Get information to calculate rate...
 IF Request.FormCount("Submit") > 0
    M.StartTime = SECONDS()
    response.write("<div id='progressOuterDiv'></div>")
    ***Initialize and show the toolbar
    response.write("<script language='JavaScript'>")
    response.write("var progressBar = new cProgressBar();")
    for x = 1 to m.nRowTotal
        M.TotalSteps = m.nRowTotal

       XML To Send FedEx Rate Request...
        XML Fetch Rate Response
        Send Rates To Screen
        response.write("<script language='JavaScript'>UpdateProgressBar(x / M.TotalSteps * 100, 'Completed step ' + Server.ToString(x) + ' of ' + Server.ToString(M.TotalSteps))</script>")
        WAIT '' TIMEOUT .5
      endfor   && loop through all services
<!-- Now hide the toolbar -->
<script language="JavaScript">;</script>
PROCEDURE UpdateProgressBar
* Generates JavaScript code, which calls progressBar.update() method to update
* the progress bar, for example:
* <script language="JavaScript">progressBar.update(47, 'Completed 47% of the process');</script>
    LPARAMETERS PercentComplete, StatusText
    * First of all extend the script timeout by 10 seconds if it will expire in less than 5 seconds
    IF (SECONDS() - StartTime) + 5 >= Server.ScriptTimeout
    IF TYPE('M.StatusText') <> 'C'
        * No status text was specified -- Let ProgressBar code generate the status text
        Response.Write([<script language="JavaScript">progressBar.update(] + Server.ToString(M.PercentComplete) + [);</script>] + CRLF)
        Response.Write([<script language="JavaScript">progressBar.update(] + Server.ToString(M.PercentComplete) + [, '] + M.StatusText + [');</script>] + CRLF)
    * Force output to be sent to browser
Any thoughts from anyone as to how to make the progress bar show up after Request.FormCount and update within the For Next loop?
Thanks much!!!