|
|
@@ -7,6 +7,7 @@ var ctx = canvas.getContext('2d');
|
|
|
var hiddenFrame = document.getElementById("hiddenFrame");
|
|
|
// 用于显示正在加载的提示
|
|
|
var spinner;
|
|
|
+var spinnerContainer = document.getElementById('viewerContainer');
|
|
|
|
|
|
// 能打印的最大页数(页数超过,需要先下载pdf,再打印)
|
|
|
var PRINT_MAX_PAGE_SIZE = 200;
|
|
|
@@ -109,7 +110,7 @@ $("#downloadPdf").click(
|
|
|
console.log(new Date().format()
|
|
|
+ " ---- subscribed wholePdfGeneratedSignal");
|
|
|
$.subscribe("wholePdfGeneratedSignal", downloadPdf);
|
|
|
- showLoading();
|
|
|
+ spinner = showLoading(spinner,spinnerContainer);
|
|
|
waitWholePdfGenerated();
|
|
|
});
|
|
|
|
|
|
@@ -117,7 +118,7 @@ $("#downloadPdf").click(
|
|
|
* 下载文件
|
|
|
*/
|
|
|
function downloadPdf() {
|
|
|
- hideLoading();
|
|
|
+ spinner = hideLoading(spinner);
|
|
|
console.log(new Date().format()
|
|
|
+ " ---- received and unsubscribe wholePdfGeneratedSignal");
|
|
|
$.unsubscribe("wholePdfGeneratedSignal", downloadPdf);
|
|
|
@@ -181,7 +182,7 @@ function getWindowWidth() {
|
|
|
* 打印
|
|
|
*/
|
|
|
function printPdf() {
|
|
|
- hideLoading();
|
|
|
+ spinner = hideLoading(spinner);
|
|
|
if (pageSize > PRINT_MAX_PAGE_SIZE) {
|
|
|
alert(ALERT_FILE_TOO_LARGE);
|
|
|
return;
|
|
|
@@ -192,7 +193,7 @@ function printPdf() {
|
|
|
console.log(new Date().format()
|
|
|
+ " ---- subscribed wholePdfGeneratedSignal");
|
|
|
$.subscribe("wholePdfGeneratedSignal", print);
|
|
|
- showLoading();
|
|
|
+ spinner = showLoading(spinner,spinnerContainer);
|
|
|
waitWholePdfGenerated();
|
|
|
}
|
|
|
|
|
|
@@ -204,7 +205,7 @@ function print() {
|
|
|
+ " ---- received and unsubscribe wholePdfGeneratedSignal");
|
|
|
$.unsubscribe("wholePdfGeneratedSignal", print);
|
|
|
console.log(new Date().format() + " ---- start print...");
|
|
|
- setTimeout("hiddenFrame.contentWindow.print();hideLoading()", 1000);
|
|
|
+ setTimeout("hiddenFrame.contentWindow.print();spinner = hideLoading(spinner)", 1000);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -229,14 +230,14 @@ function loadPagedPdf(pagedPdfPath, ifPreloadWholePdf) {
|
|
|
if (printType == 'PRINT'
|
|
|
&& pageSize > PRINT_MAX_PAGE_SIZE) {
|
|
|
alert(ALERT_FILE_TOO_LARGE);
|
|
|
- hideLoading();
|
|
|
+ spinner = hideLoading(spinner);
|
|
|
} else {
|
|
|
console
|
|
|
.log(new Date().format()
|
|
|
+ " ---- subscribed wholePdfGeneratedSignal");
|
|
|
$.subscribe("wholePdfGeneratedSignal",
|
|
|
loadWholePdf);
|
|
|
- showLoading();
|
|
|
+ spinner = showLoading(spinner,spinnerContainer);
|
|
|
waitWholePdfGenerated();
|
|
|
}
|
|
|
}
|
|
|
@@ -254,7 +255,7 @@ function loadPagedPdf(pagedPdfPath, ifPreloadWholePdf) {
|
|
|
*/
|
|
|
function loadData(page) {
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
|
- showLoading();
|
|
|
+ spinner = showLoading(spinner,spinnerContainer);
|
|
|
pageIndex = page || 1;
|
|
|
var loadPdfDataUrl = "print/loadPdfData" + window.location.search;
|
|
|
loadPdfDataUrl = loadPdfDataUrl + "&pageIndex=" + pageIndex;
|
|
|
@@ -282,7 +283,7 @@ function loadData(page) {
|
|
|
},
|
|
|
error : function(XMLHttpRequest) {
|
|
|
$("#theCanvas").remove();
|
|
|
- hideLoading();
|
|
|
+ spinner = hideLoading(spinner);
|
|
|
$("#errorMessageContainer").removeAttr("hidden");
|
|
|
|
|
|
// 处理后台传输的自定义的换行标志
|
|
|
@@ -359,9 +360,9 @@ function getGeneratedPdfOrXlsInformation(fileType) {
|
|
|
* Get page info from document, resize canvas accordingly, and render page
|
|
|
*/
|
|
|
function renderPage() {
|
|
|
- hideLoading();
|
|
|
+ spinner = hideLoading(spinner);
|
|
|
if (firstRequest && printType == "PRINT" && pageSize <= PRINT_MAX_PAGE_SIZE) {
|
|
|
- showLoading();
|
|
|
+ spinner = showLoading(spinner,spinnerContainer);
|
|
|
}
|
|
|
if (!pdfDoc) {
|
|
|
return;
|
|
|
@@ -478,65 +479,3 @@ function downloadUrl(exportFileType) {
|
|
|
downloadUrl += "&exportFileType=" + exportFileType;
|
|
|
return downloadUrl;
|
|
|
}
|
|
|
-
|
|
|
-/**
|
|
|
- * 显示正在载入的动画
|
|
|
- */
|
|
|
-function showLoading() {
|
|
|
- if (spinner) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var opts = {
|
|
|
- lines : 9 // The number of lines to draw
|
|
|
- ,
|
|
|
- length : 17 // The length of each line
|
|
|
- ,
|
|
|
- width : 10 // The line thickness
|
|
|
- ,
|
|
|
- radius : 26 // The radius of the inner circle
|
|
|
- ,
|
|
|
- scale : 1 // Scales overall size of the spinner
|
|
|
- ,
|
|
|
- corners : 1 // Corner roundness (0..1)
|
|
|
- ,
|
|
|
- color : '#000' // #rgb or #rrggbb or array of colors
|
|
|
- ,
|
|
|
- opacity : 0.5 // Opacity of the lines
|
|
|
- ,
|
|
|
- rotate : 0 // The rotation offset
|
|
|
- ,
|
|
|
- direction : 1 // 1: clockwise, -1: counterclockwise
|
|
|
- ,
|
|
|
- speed : 1 // Rounds per second
|
|
|
- ,
|
|
|
- trail : 60 // Afterglow percentage
|
|
|
- ,
|
|
|
- fps : 20 // Frames per second when using setTimeout() as a fallback
|
|
|
- // for CSS
|
|
|
- ,
|
|
|
- zIndex : 2e9 // The z-index (defaults to 2000000000)
|
|
|
- ,
|
|
|
- className : 'spinner' // The CSS class to assign to the spinner
|
|
|
- ,
|
|
|
- top : '50%' // Top position relative to parent
|
|
|
- ,
|
|
|
- left : '50%' // Left position relative to parent
|
|
|
- ,
|
|
|
- shadow : false // Whether to render a shadow
|
|
|
- ,
|
|
|
- hwaccel : false // Whether to use hardware acceleration
|
|
|
- ,
|
|
|
- position : 'absolute' // Element positioning
|
|
|
- }
|
|
|
- var target = document.getElementById('viewerContainer');
|
|
|
- spinner = new Spinner(opts).spin(target);
|
|
|
-}
|
|
|
-/**
|
|
|
- * 关闭正在载入的动画
|
|
|
- */
|
|
|
-function hideLoading() {
|
|
|
- if (spinner) {
|
|
|
- spinner.stop();
|
|
|
- spinner = null;
|
|
|
- }
|
|
|
-}
|