source: trunk/grails-app/views/worker/process.gsp @ 70

Last change on this file since 70 was 70, checked in by robert@…, 8 years ago
  • Installed templates (in order to extend session lifetime to 2 hours)
  • Implemented background worker to do work outside the HTTP request
File size: 3.7 KB
Line 
1<html>
2<head>
3        <meta name="layout" content="main" />
4        <title>Processing | Mass Sequencing | dbNP</title>
5
6        <script type="text/javascript">
7                var progressInterval;
8               
9                $(function() {
10                        $( "#wait_dialog" ).dialog({
11                                height: 200,
12                                width: 400,
13                                title: 'Please wait while processing',
14                                modal: true,
15                                autoOpen: true,
16                                buttons: {},
17                                closeOnEscape: false,
18                                open: function(event, ui) { $(".ui-dialog-titlebar-close" ).hide(); },
19                                resizable: false       
20                        });
21
22                        // Show the progressbar and update the value every second
23                        $( "#progressbar" ).progressbar({
24                                value: 0
25                        });
26
27                        progressInterval = setTimeout(updateProgress, 250);
28
29                });
30
31                function updateProgress() {
32                        var stepDiv = $( '#step' );
33                        $.ajax({
34                        type: "GET",
35                                url: "${progressUrl?.encodeAsJavaScript()}",
36                                dataType: "json",
37                                success: function(progress) {
38                                        $( '#stepNum', stepDiv ).text( progress.stepNum );
39                                        $( '#numSteps', stepDiv ).text( progress.numSteps );
40                                        $( '#stepDescription', stepDiv ).text( progress.stepDescription );
41
42                                        stepDiv.show();
43
44                                        $("#progressbar").progressbar("value", progress.stepProgress / progress.stepTotal * 100 );
45
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." );
79                                }
80                        });
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();
91                }
92        </script>
93        <style type="text/css">
94                #wait_dialog {
95                        padding: 20px;
96                        text-align: center;
97                }
98               
99                #progressbar {
100                        margin-top: 10px;
101                }
102               
103                #return { display: none; margin-top: 30px;}
104                #error { display: none; color: red; margin-top: 15px; }
105        </style>
106</head>
107<body>
108        <div id="wait_dialog">
109                <span class="spinner" style="display: inline-block; zoom: 1; *display: inline;"></span>
110                <p id="pleasewait">Please wait while processing your data.</p>
111                <p id="step" style="display: none;">
112                        Step <span id="stepNum"></span> / <span id="numSteps"></span>: <span id="stepDescription"></span>
113                </p>
114                <div id="progressbar"></div>
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>
124        </div>
125</body>
126</html>
Note: See TracBrowser for help on using the repository browser.