Ignore:
Timestamp:
Jun 17, 2011, 1:54:56 PM (8 years ago)
Author:
robert@…
Message:
  • Installed templates (in order to extend session lifetime to 2 hours)
  • Implemented background worker to do work outside the HTTP request
Location:
trunk/grails-app/views/worker
Files:
1 added
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/views/worker/process.gsp

    r69 r70  
    22<head>
    33        <meta name="layout" content="main" />
    4         <title>Processing files | Mass Sequencing | dbNP</title>
     4        <title>Processing | Mass Sequencing | dbNP</title>
    55
    66        <script type="text/javascript">
     
    1111                                height: 200,
    1212                                width: 400,
    13                                 title: 'Please wait while processing files',
     13                                title: 'Please wait while processing',
    1414                                modal: true,
    1515                                autoOpen: true,
     
    2626
    2727                        progressInterval = setTimeout(updateProgress, 250);
    28                                                        
    29                         // Call processing URL
    30                         $.ajax({
    31                           type: 'POST',
    32                           url: "${processUrl.encodeAsJavaScript()}",
    33                           data: "${processParameters*.toString().join("&")}",
    34                           success: function(data) {
    35                                   // Stop update progress bar
    36                                   clearTimeout( progressInterval );
    3728
    38                                   window.location.replace( "${finishUrl.encodeAsJavaScript()}" );
    39                           },
    40                           error: function(xhr, textStatus, errorThrown) {
    41                                        
    42                                   // Stop update progress bar (but update it for the last time)
    43                                   updateProgress()
    44                                   clearTimeout( progressInterval );
    45 
    46                                   alert( "Error " + xhr.status + ": " + xhr.statusText + ". Please contact your system administrator." );
    47                                   window.location.replace( "${errorUrl?.encodeAsJavaScript()}" );
    48                         }
    49                         });
    5029                });
    5130
     
    6544                                        $("#progressbar").progressbar("value", progress.stepProgress / progress.stepTotal * 100 );
    6645
    67                                         // Make sure the next progress will be retrieved in 250 ms
    68                                         progressInterval = setTimeout(updateProgress, 250);                                     
     46                                        // If the executor is finished, we should finish this screen
     47                                        if( progress.finished ) {
     48                                                  // Stop update progress bar
     49                                                  clearTimeout( progressInterval );
     50
     51                                                  // Show a message and a link to the return url, in case the finishUrl results
     52                                                  // in a download.
     53                                                  if( "${returnUrl.encodeAsJavaScript()}" != "" ) {
     54                                                        // Set HTML title to inform the user
     55                                                        document.title = "Finished processing | Mass Sequencing | dbNP";
     56                                                        $( "#wait_dialog" ).dialog( 'option', 'title', "Finished processing" );
     57                                                       
     58                                                          $( '.spinner, #pleasewait, #step, #progressbar' ).hide();
     59                                                          $( '#return' ).show();
     60                                                  }
     61
     62                                                  if( progress.error ) {
     63                                                          showError( progress.errorMessage );
     64                                                  } else {
     65                                                          // Redirect the user to the finish url
     66                                                          window.location.replace( "${finishUrl.encodeAsJavaScript()}" );
     67                                                  }
     68                                        } else {
     69                                                // Make sure the next progress will be retrieved in 250 ms
     70                                                progressInterval = setTimeout(updateProgress, 250);
     71                                        }                                       
     72                                },
     73                                error: function(xhr, textStatus, errorThrown) {
     74                                          // Stop update progress bar (but update it for the last time)
     75                                          clearTimeout( progressInterval );
     76
     77                                          // Show an error message
     78                                          showError( xhr.status + ": " + xhr.statusText + ". Please contact your system administrator." );
    6979                                }
    7080                        });
     81                }
     82
     83                function showError( message ) {
     84                        // Set HTML title to inform the user
     85                        document.title = "Error processing | Mass Sequencing | dbNP";
     86                        $( "#wait_dialog" ).dialog( 'option', 'title', "Error processing" );
     87                       
     88                          $( '.spinner, #pleasewait, #step, #progressbar, #return' ).hide();
     89                          $( '.errorMessage' ).html( message );
     90                          $( '#error' ).show();
    7191                }
    7292        </script>
     
    80100                        margin-top: 10px;
    81101                }
     102               
     103                #return { display: none; margin-top: 30px;}
     104                #error { display: none; color: red; margin-top: 15px; }
    82105        </style>
    83106</head>
     
    85108        <div id="wait_dialog">
    86109                <span class="spinner" style="display: inline-block; zoom: 1; *display: inline;"></span>
    87                 <p>Please wait while processing your files.</p>
     110                <p id="pleasewait">Please wait while processing your data.</p>
    88111                <p id="step" style="display: none;">
    89112                        Step <span id="stepNum"></span> / <span id="numSteps"></span>: <span id="stepDescription"></span>
    90113                </p>
    91        
    92114                <div id="progressbar"></div>
    93        
     115               
     116                <p id="error">
     117                        <span class="errorMessage"></span>
     118                        <br /><br />
     119                        <a href="${errorUrl}">Click here to return</a>
     120                </p>
     121                <p id="return">
     122                        <a href="${returnUrl}">Click here to return</a>
     123                </p>
    94124        </div>
    95125</body>
Note: See TracChangeset for help on using the changeset viewer.