diff options
author | Ivan Kohler <ivan@freeside.biz> | 2015-10-27 09:40:45 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2015-10-27 09:42:03 -0700 |
commit | 1f1aaa835523e8c8a615f1d205c3cf2ca021c287 (patch) | |
tree | 533c06b6c9b7bad0ca46af5609d538cbed90ba20 /httemplate/misc | |
parent | 0fc5d1d091c076ed41355747198cefaa17ce52ff (diff) |
progressbar fix for elements/ exclusion, RT#38752
Diffstat (limited to 'httemplate/misc')
-rw-r--r-- | httemplate/misc/jsrsServer.html | 4 | ||||
-rw-r--r-- | httemplate/misc/progress-popup.html | 135 |
2 files changed, 139 insertions, 0 deletions
diff --git a/httemplate/misc/jsrsServer.html b/httemplate/misc/jsrsServer.html new file mode 100644 index 000000000..f37b0aaee --- /dev/null +++ b/httemplate/misc/jsrsServer.html @@ -0,0 +1,4 @@ +% +% my $server = new FS::UI::Web::JSRPC '', $cgi; +% +<% $server->process %> diff --git a/httemplate/misc/progress-popup.html b/httemplate/misc/progress-popup.html new file mode 100644 index 000000000..8e2d6760b --- /dev/null +++ b/httemplate/misc/progress-popup.html @@ -0,0 +1,135 @@ +% +% my $jobnum = $cgi->param('jobnum'); +% my $url = $cgi->param('url'); +% my $message = $cgi->param('message'); +% my $popup_url = $cgi->param('popup_url'); +% my $formname = scalar($cgi->param('formname')); +% my $error_url = $cgi->param('error_url'); +% + +<HTML> + <HEAD> + <TITLE></TITLE> + </HEAD> + <BODY BGCOLOR="#ccccff" onLoad="refreshStatus()"> + +<% include('/elements/xmlhttp.html', + 'url' => $p.'misc/jsrsServer.html', + 'subs' => [ 'job_status' ], + ) +%> +<SCRIPT TYPE="text/javascript" src="<%$fsurl%>elements/qlib/control.js"></SCRIPT> +<SCRIPT TYPE="text/javascript" src="<%$fsurl%>elements/qlib/imagelist.js"></SCRIPT> +<SCRIPT TYPE="text/javascript" src="<%$fsurl%>elements/qlib/progress.js"></SCRIPT> +<SCRIPT TYPE="text/javascript"> +function refreshStatus () { + //jsrsExecute( '<%$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<% $jobnum %>' ); + + job_status( '<% $jobnum %>', updateStatus ); +} +function updateStatus( status_statustext ) { + + //var Array = status_statustext.split("\n"); + var statusArray = eval('(' + status_statustext + ')'); + var status = statusArray[0]; + var statustext = statusArray[1]; + var actiontext = statusArray[2]; + + //if ( status == 'progress' ) { + //IE workaround, no i have no idea why + if ( status.indexOf('progress') > -1 ) { + document.getElementById("progress_message").innerHTML = actiontext + '...'; + document.getElementById("progress_percent").innerHTML = statustext + '%'; + bar1.set(statustext); + bar1.update; + //jsrsExecute( '<%$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<% $jobnum %>' ); + job_status( '<% $jobnum %>', updateStatus ); + } else if ( status.indexOf('complete') > -1 ) { +% if ( $message ) { +% +% my $onClick = $url +% ? "window.top.location.href = \\'$url\\';" +% : 'parent.nd(1);'; + + document.getElementById("progress_message").innerHTML = "<% $message %>"; + document.getElementById("progress_bar").innerHTML = ''; + document.getElementById("progress_percent").innerHTML = + '<INPUT TYPE="button" VALUE="OK" onClick="<% $onClick %>">'; + document.getElementById("progress_jobnum").innerHTML = ''; + +% unless ( $url ) { + if ( parent.document.<%$formname%>.submit.disabled == true ) { + parent.document.<%$formname%>.submit.disabled=false; + } +% } + +% } elsif ( $url ) { + parent.nd(1); + window.top.location.href = '<% $url %>'; +% } elsif ( $popup_url ) { + document.location.replace('<% $popup_url %>'); +% } else { + + + alert('job done but no url or message specified'); +% } + } else if ( status.indexOf('done') > -1 ) { + + document.getElementById("progress_message").innerHTML = "Loading report"; + document.getElementById("progress_bar").innerHTML = ''; + document.getElementById("progress_percent").innerHTML = ''; + document.getElementById("progress_jobnum").innerHTML = ''; + window.top.location.href = statustext.substr(8, statustext.length-18); + + } else if ( status.indexOf('error') > -1 ) { +% +% # default behavior: just close the popup +% my $onClick = 'parent.nd(1);'; +% if ( $error_url ) { # then on clicking to confirm, redirect somewhere +% $onClick = "window.top.location.href = \\'$error_url\\';"; +% } + + document.getElementById("progress_message").innerHTML = '<FONT SIZE="+1" COLOR="#FF0000">Error: ' + statustext + '</FONT>'; + document.getElementById("progress_bar").innerHTML = ''; + document.getElementById("progress_percent").innerHTML = '<INPUT TYPE="button" VALUE="OK" onClick="<% $onClick %>">'; + document.getElementById("progress_jobnum").innerHTML = ''; + if ( parent.document.<%$formname%>.submit.disabled == true ) { + parent.document.<%$formname%>.submit.disabled=false; + } + } else { + alert('XXX unknown status returned from server: ' + status); + } + +} +</SCRIPT> + + <TABLE WIDTH="100%"> + <TR> + <TD ALIGN="center" ID="progress_message"> + Server processing job... + </TD> + </TR><TR> + <TD ALIGN="center" ID="progress_bar"> + <SCRIPT TYPE="text/javascript"> + // Create imagelist + SEGS = new QImageList(4, 23, "<%$fsurl%>images/progressbar-empty.png", "<%$fsurl%>images/progressbar-full.png"); + // Create bars + bar1 = new QProgress(null, "bar1", SEGS, 100); + // bar1.set(0); + // bar1.update; + </SCRIPT> + </TD> + </TR><TR> + <TD ALIGN="center"> + <DIV ID="progress_percent">%</DIV> + </TD> + </TR><TR> + <TD ALIGN="center" ID="progress_jobnum"> + (progress of job #<% $jobnum %>) + </TD> + </TR> + </TABLE> + + </BODY> +</HTML> + |